M18-7: Assignment board (Kanban, drag-to-assign) #168

Closed
opened 2026-04-20 16:03:02 +00:00 by code-lead · 0 comments
Collaborator

As an operator, I want a Kanban-style view on /app/planner/board showing the fleet's workload — one column per agent type, each row an issue card, drag-and-drop or click-to-assign — so that assigning work is visual and live rather than a series of MCP calls.

Acceptance criteria

Layout

  • Columns: one per agent type (boss / dev / reviewer / designer / design-reviewer); header shows pool saturation (e.g. boss · 1/2 busy)
  • Within each column, stacked cards group by status: Running, Queued, Idle-assigned, Unassigned (issues with type:user-story and no assignee)
  • Card content: repo#issue, title, milestone, labels, current agent instance (for running), elapsed time or age

Interactions

  • Drag a card between columns → updates the Forgejo assignee (via update_issue) and triggers a dispatch per existing webhook routing. Optimistic UI with rollback on error
  • Click a card → side panel with full issue body + quick actions (Open in Forgejo, Re-dispatch, Cancel if running)
  • Filters: repo, milestone, labels, only-unassigned
  • Live updates: SSE refresh when any task status changes; card transitions between Running/Queued/Idle animate

Tests

  • Component test: drag-and-drop between columns invokes the mock mutation
  • Contract test: optimistic UI rolls back when the mutation rejects

Out of scope

  • Per-instance (non-type) columns — future
  • Swimlanes per repo — flip via filter; separate UI mode is overkill
  • Custom WIP limits per column

Dependencies

  • Blocks on #M18-5 (shares the chat/detail panel and SSE plumbing).
  • Can parallel with #M18-6 + #M18-8.

References

  • Spec: specs/m18-ui-rewrite-and-architect.md §Story M18-7
As an operator, I want a Kanban-style view on `/app/planner/board` showing the fleet's workload — one column per agent type, each row an issue card, drag-and-drop or click-to-assign — so that assigning work is visual and live rather than a series of MCP calls. ## Acceptance criteria ### Layout - [ ] Columns: one per agent type (boss / dev / reviewer / designer / design-reviewer); header shows pool saturation (e.g. `boss · 1/2 busy`) - [ ] Within each column, stacked cards group by status: **Running**, **Queued**, **Idle-assigned**, **Unassigned** (issues with `type:user-story` and no assignee) - [ ] Card content: repo#issue, title, milestone, labels, current agent instance (for running), elapsed time or age ### Interactions - [ ] Drag a card between columns → updates the Forgejo assignee (via `update_issue`) and triggers a dispatch per existing webhook routing. Optimistic UI with rollback on error - [ ] Click a card → side panel with full issue body + quick actions (Open in Forgejo, Re-dispatch, Cancel if running) - [ ] Filters: repo, milestone, labels, only-unassigned - [ ] Live updates: SSE refresh when any task status changes; card transitions between Running/Queued/Idle animate ### Tests - [ ] Component test: drag-and-drop between columns invokes the mock mutation - [ ] Contract test: optimistic UI rolls back when the mutation rejects ## Out of scope - Per-instance (non-type) columns — future - Swimlanes per repo — flip via filter; separate UI mode is overkill - Custom WIP limits per column ## Dependencies - **Blocks on #M18-5** (shares the chat/detail panel and SSE plumbing). - **Can parallel with #M18-6 + #M18-8.** ## References - Spec: `specs/m18-ui-rewrite-and-architect.md` §Story M18-7
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/claude-hooks#168
No description provided.