The board is the primary interface. It displays tasks in four fixed columns that map directly to task statuses.
| Column | Status | Description |
|---|---|---|
| Todo | todo |
Tasks waiting to be worked on |
| In Progress | in_progress |
Tasks currently being executed by an agent |
| Done | done |
Completed tasks (may include a PR link) |
| Cancelled | cancelled |
Tasks stopped mid-execution or manually cancelled |
Columns are not renameable or reorderable.
Tasks can be dragged between columns to change their status. The board uses @hello-pangea/dnd for drag-and-drop. Dropping a task into a different column updates its status in the database and broadcasts a task:updated SSE event.
Each card shows:
- Title
- Priority indicator (low / medium / high)
- Assigned labels (colored badges)
- Due date with overdue indicator (if set)
- Execution status (when running: cloning, executing, committing, etc.)
- PR link (when execution is complete)
Clicking a card opens the task detail view in a side panel.
Tasks can be selected with checkboxes for batch operations:
- Click individual checkboxes to select specific tasks
- Use column-level select-all to select all tasks in a column
- When tasks are selected, a floating control bar appears at the bottom with options:
- Execute Parallel -- run all selected tasks simultaneously
- Execute Queue -- run selected tasks one at a time
- Move to In Progress
- Clear selection
The board subscribes to the SSE endpoint (/api/events) and handles these events:
task:created-- adds a new cardtask:updated-- moves card between columns, updates status/labelstask:deleted-- removes card (archives it)execution:progress-- updates execution status on the cardexecution:log-- appends to the task's live logbatch:*events -- updates batch progress indicators
No manual refresh is needed. All changes from the API, agent execution, or other clients appear instantly.
When a project is selected in the sidebar, the board filters to show only tasks assigned to that project. The filter is applied via a projectId query parameter to the tasks API.