B1 — Planner board: drop-to-unassign (close the loop) #409
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#409
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
As an operator,
I want to drag a card back into the Unassigned column,
so that I can clear a wrong assignment in one gesture without flipping to the Forgejo UI.
Today the synthetic Unassigned column is read-only —
apps/web/src/components/board/board-column.tsx:42setsisDropTarget = column.type !== "unassigned", andapps/web/src/components/board/board.tsx:79rejects drops onto it. Operators must either re-drag onto a different agent column or open Forgejo to clear the assignee. This story closes the loop.Acceptance criteria
Frontend
isDropTargetguard inboard-column.tsxso the Unassigned column accepts drops.handleDropinboard.tsxcalls the existingassignCardmutation withassignee: nullwhen the target column is the Unassigned synthetic.onError) restores the source column on failure.AlertDialog) before completing the drop. Dialog copy:Cancel running task on @{previousAgent} and unassign?withConfirm/Keep assignmentactions.POST /board/assign { assignee: null, cancel_running: true }(extend body — see backend section).Backend
POST /board/assignacceptsassignee: nulland clears the Forgejo assignee viaPATCH /repos/:owner/:name/issues/:indexwith{ assignees: [] }.cancel_running: true, cancel the in-flight task on the previous agent (mirror/board/reroute's cancellation logic) and post an audit comment on the issue:Unassigned by @{actor} via board (running task cancelled).cancel_runningbut the issue has a running task, return409 { error: "running_task_present", running_agent: "<login>" }so the frontend can prompt.Tests
board.test.tsx: drag fromdevcolumn toUnassigned→assignCardcalled withassignee: null+ cache patch.board.test.tsx: same drag with running task → 409 → confirm dialog → second call withcancel_running: true.board.test.tsx: drag-from-Unassigned-onto-Unassigned → no API call./board/assign:assignee: nullclears Forgejo assignee + (whencancel_running) cancels task + posts audit comment.Out of scope
type:user-story(server filter unchanged).References
docs/specs/board-rework.md§5 B1.apps/web/src/routes/planner.board.tsx.apps/web/src/components/board/board-column.tsx,board.tsx.apps/server/src/domain/views/board.ts(POST /board/assign,POST /board/reroute).Suggested first commit
feat(board): drop-to-unassign clears assignee in one gesture