Skip to content

feat(kanban): archive finished tasks#15

Merged
alamops merged 2 commits into
mainfrom
feat/task-archive
May 29, 2026
Merged

feat(kanban): archive finished tasks#15
alamops merged 2 commits into
mainfrom
feat/task-archive

Conversation

@alamops
Copy link
Copy Markdown
Owner

@alamops alamops commented May 20, 2026

Adds a two-step wind-down for completed work: a "Done" button on review cards promotes the task to the Done column, and a new Archive button (card + run-panel header) stamps archivedAt and tears down the task's tmux session so background claude REPLs don't outlive the user's interest in them. The default filter hides archived tasks; "All" and "Archived only" reveal them. Archived rows render read-only — no composer, no drag, no PATCH — until the user clicks Unarchive.

Server-side: dedicated POST /tasks/:id/archive + /unarchive endpoints (kept off the PATCH allow-list so the tmux side-effect stays coupled to archival). archiveTask refuses non-Done rows and refuses while a run is still active, so the exit handler can't race the timestamp flip and leave the row in a contradictory column. PATCH refuses any mutation on archived rows, matching the UI invariant.

Adds a two-step wind-down for completed work: a "Done" button on review
cards promotes the task to the Done column, and a new Archive button
(card + run-panel header) stamps `archivedAt` and tears down the task's
tmux session so background claude REPLs don't outlive the user's
interest in them. The default filter hides archived tasks; "All" and
"Archived only" reveal them. Archived rows render read-only — no
composer, no drag, no PATCH — until the user clicks Unarchive.

Server-side: dedicated POST /tasks/:id/archive + /unarchive endpoints
(kept off the PATCH allow-list so the tmux side-effect stays coupled to
archival). archiveTask refuses non-Done rows and refuses while a run is
still active, so the exit handler can't race the timestamp flip and
leave the row in a contradictory column. PATCH refuses any mutation on
archived rows, matching the UI invariant.
@alamops alamops self-assigned this May 20, 2026
@alamops alamops added the enhancement New feature or request label May 20, 2026
# Conflicts:
#	src/bun/approvals-endpoint.test.ts
#	src/mainview/App.tsx
#	src/mainview/components/kanban/KanbanFilters.tsx
#	src/mainview/components/kanban/RunPanel.tsx
@alamops alamops merged commit 261ddf3 into main May 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant