B4 — Planner board: keyboard navigation + letter shortcuts #412
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#412
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
j/kto move focus between cards and single-letter keys to mutate the focused card,so that I can triage without touching the mouse — matching the rest of the app (drawer, monitor, agents pages).
The board is mouse-only today. Linear's per-card letter-shortcut model is the reference; Trello pioneered the pattern. This story establishes the focus + keymap infra.
Acceptance criteria
Card focus
j/kmove focus between cards within the focused column (down / up).h/lmove focus between columns (left / right). Focus carries over to the same vertical index when possible; otherwise to the nearest card.outline-accentring withoutline-offset-2. Distinguishable from B3'sborder-accentselection ring.Letter shortcuts on focused card
aopens an agent picker popover anchored to the card. Popover lists all agent types (boss, dev, reviewer, designer, design-reviewer) plus an "Unassign" item. Pick → callassignCard.sopens a stage picker popover (same anchor). Lists the pipeline stage enum. Pick → callrestageCard(B2 endpoint). If B2 has not landed yet, hide this shortcut behind a?placeholder ("Stage change requires B2").ropens the existing reroute confirm dialog (/board/reroute).Enteropens the issue detail (route or drawer — match whatever pattern the rest of the app uses today).Esccloses any open popover or dialog. Falls through to clear B3 selection if no popover open.Keymap overlay
?shows a keymap overlay listing all board shortcuts (j/k/h/l,a/s/r,Enter,Esc,cmd-a).Dialog.Popupwithshadow-overlay, dismissable withEscor click-outside.Scope + cleanup
/planner/boardroute — registered in auseEffectwith cleanup on unmount.Esc(which closes it).Tests
board.test.tsx:j/kcycles focus within a column.board.test.tsx:h/lmoves focus between columns.board.test.tsx:aopens picker → selectingdevcallsassignCardwith the focused card.board.test.tsx:?opens keymap overlay;Escdismisses.board.test.tsx: shortcuts suppressed when focus is in the filter input.Out of scope
cmd-k). Separate spec.w,b,gg,G). Overkill for one operator.References
docs/specs/board-rework.md§5 B4.apps/web/src/components/...(search foraddEventListener("keydown"to find the convention).Escandcmd-a— coordinate the keymap.Suggested first commit
feat(board): j/k card focus + a/s/r letter shortcuts + ? keymap overlay