specs/019-task-board/spec.md
Feature specification: Task Board View in GUI
Feature Branch: orch/board
Status: Implemented
Spec: 019
Goal
Provide a native GTK4/libadwaita Task Board dialog in the signaltty GUI that groups orchestrated worker tasks into kanban-style columns by what they need from the user.
Column Derivation Rules
Tasks are purely mapped into four columns based on their state and disposition outcome:
Working:
TaskState::PendingorTaskState::Workingwith disposition outcomeNone.- Represents tasks actively executing or waiting for worker agent readiness.
Needs you:
TaskState::InputRequired,TaskState::Failed, orTaskState::Rejectedwith disposition outcomeNone.- Unfinished tasks that require human attention or intervention.
In review:
TaskState::Completedwith disposition outcomeNone.- Finished tasks awaiting human diff review and finish decision (
mergeordiscard).
Done:
- Any task with disposition outcome
MergedorDiscarded. - Any task with
TaskState::Canceled. - Archive column, sorted latest-first, displaying up to the latest 20 tasks while indicating the total count.
- Any task with disposition outcome
UI Presentation
- Dialog: Presented via
adw::Dialogwith content width 960 and content height 600. - Empty State: Displays an
adw::StatusPagewith "No Tasks Yet" when no tasks exist. - Columns: 4 side-by-side columns, each with a header (
"<Column> · <N>") and a scrolled list of task cards. - Cards:
- Title: Bold task label (falls back to short id tail if empty).
- Subtitle:
agent · branch · age(formatted as dim text, e.g."codex · orch/board · 3m"). - State pill: Native styled pill with
task-*class and state word.
- Interaction: Clicking a card with an associated
pane_idcloses the board dialog and focuses that pane in the workspace. - Action & Shortcuts:
- Action name:
win.show-board - Menu label:
"Show Task Board"(in primary menu and searchable in command palette) - Shortcut:
<Control><Shift>b
- Action name:
Out of Scope (Deferred)
- PR push / GitHub CI status / Pull Request review cycle: Deferred to a subsequent specification because it requires an upstream decision and ADR on GitHub CLI (
gh) integration, token handling, and remote provider credentials.