Board tab
The Board (tab 1) is the kanban view of the current repo's issues. One column per state, cards stacked top-down, focus moves with the arrow-style keys.
┌─ Todo ─────┬─ In Progress ─┬─ Needs Action ─┬─ In Review ─┬─ Done ─────┬─ Cancelled ─┐
│ [ 7] Login │ [ 3] Refactor │ [ 8] Awaiting │ [ 1] Render │ [ 2] Wire │ [11] Drop │
│ broke │ session… │ copy │ cards │ audit │ legacy │
│ [ 5] Empty │ [ 4] Tag │ │ │ [ 6] Seed │ │
│ state │ colours │ │ │ docs │ │
└─ 2 ────────┴─ 2 ───────────┴─ 1 ────────────┴─ 1 ─────────┴─ 2 ────────┴─ 1 ────────┘The column title sits inside the top border; the issue count (and a ↑ / ↓ / ↕ arrow if the column scrolls beyond the visible window) sits inside the bottom border. Cards drop the repo prefix — it's already visible in the tab strip's top-right chip — and show only the issue number, padded to two characters so columns of mixed-width numbers stay aligned: [ 1], [ 2], [10], [123]. The brackets around the number are tinted with the per-feature colour; selected cards keep the brackets plain so nested styling doesn't punch holes in the selection background.
needs_action is for issues where an LLM agent is paused waiting on the user (the assignee stays, the column flags that the next move is the human's). For the full state semantics see data model — Issue.
Bindings (default view)
| Key | Action |
|---|---|
h / l (or left / right) | Previous / next column. |
j / k (or down / up) | Previous / next card in the focused column. |
g / home | Jump to the first card in the focused column. |
G / end | Jump to the last card in the focused column. |
enter | Open the focused card's detail overlay. |
c | Open the column-visibility picker. |
f | Open the feature filter picker. |
H | Hide the focused column (refuses if it's the last visible one). |
d | Toggle the inline detail pane. |
r | Reload from the database. |
q | Quit. |
The full surface — including the three overlays the Board owns — is on the keybindings cheat sheet.
The card overlay (enter)
A full-screen view of one card with three inner panes:
- Description — the issue's body, rendered with glamour.
- Comments — the threaded comment list.
- Attachments — linked documents and attached PR URLs.
tab / shift+tab cycles between panes. j/k (or arrow keys) scrolls within the active pane (or moves selection on Attachments). g/home and G/end jump top/bottom on every pane. pgdown/space and pgup jump 10 lines on the Description and Comments panes.
Pane-specific enter:
- Description — closes the overlay.
- Comments — opens every comment in a fullscreen scrollable view (
escreturns to the overlay). - Attachments — opens the focused attachment. For a document, that jumps to the Docs tab with the file open;
escfrom there returns you to this card.
esc (from any pane) closes the overlay and returns focus to the card on the board.
The column picker (c)
A modal that lets you toggle which state columns are visible. Useful for hiding done and cancelled on a busy board.
| Key | Action |
|---|---|
j / k | Move selection. |
space | Toggle the focused column (refuses to hide the last visible one). |
a | Show all columns. |
n | Minimal — keep only the first state column visible (the in-app footer reads n minimal). |
esc | Close. |
Hidden columns persist per-repo (in tui_settings(repo_id, key, value)), so the next time you open the TUI you're back where you left off.
The feature picker (f)
A modal that lets you filter the board by feature. Each row shows a feature name and its issue count; toggling hides that feature's issues from the board.
| Key | Action |
|---|---|
j / k | Move selection. |
space | Toggle the focused feature. |
a | Show all features. |
n | Isolate — hide every feature except the focused one. |
esc | Close. |
Background refresh
The Board auto-reloads from the DB every few seconds — the timestamp in the footer's right-hand chip shows the last refresh. Useful when an agent is filing issues in another terminal and you want to watch them land.
Source of truth
This page mirrors internal/tui/board.go in the upstream repo. If the footer's help text disagrees with this page, the footer wins.
