Implement the keyboard grammar and full command map
The board's fixed grammar keys and the menu-backed chords of 04-interactions.md § Keyboard, per the Command Nexus inventory: - Spatial arrow navigation (NavigationMath.nearest over the marquee registry's frames — one geometry source), walking across interior masonry columns, lanes, and into the shown trash; ⇧-arrows extend via the same range function as ⇧-click and go inert at the liveness and kind boundaries; ⌥-jumps with the ⌥↑ lane-domain escalation and ↓ descent; the empty selection seeds at the first lane's first card; selection scrolls into view. - selectionHead — the navigation cursor beside the anchor, set by every click, moved by every arrow, dropped by the reload vanish rule. - Board ▸ Open Card ⌘↩ (the one command enabled mid-edit: commits the placeholder or rename and opens), Move Up/Move Down ⌥⌘↑/⌥⌘↓ (within-lane sort, gather-then-step, rank-permuting writes in one bracket), Move Left/Move Right ⌘←/⌘→ (sole lane, one slot, never the trash) — all validating and acting off one shared answer. - Delete now selects the Finder-style successor sibling from the pre-write snapshot, so repeated ⌫ walks down a lane; external vanishing still only shrinks the selection. - handleReturn rejects modified Returns; the trash column renders eagerly so every row stays registered for navigation and the marquee. 686 unit tests (27 new). Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
This commit is contained in:
@@ -166,16 +166,22 @@ struct KanbanApp: App {
|
||||
ShowTrashCommand()
|
||||
}
|
||||
|
||||
// The Board menu (11-command-nexus.md), in its inventoried order — Rename, then Style…,
|
||||
// then the width pair, with Open Card and the Move items still owed. Its items act on the
|
||||
// The Board menu (11-command-nexus.md), complete and in its inventoried row order — Open
|
||||
// Card, Rename, Style…, the card moves, the lane moves, the width pair. Its items act on the
|
||||
// frontmost board window, which they reach through the focus system rather than through the
|
||||
// app model — see `BoardCommands.swift`, which also owns their validation.
|
||||
CommandMenu("Board") {
|
||||
OpenCardCommand()
|
||||
BoardRenameCommand()
|
||||
BoardStyleCommand()
|
||||
|
||||
Divider()
|
||||
|
||||
MoveCardCommands()
|
||||
MoveLaneCommands()
|
||||
|
||||
Divider()
|
||||
|
||||
LaneWidthCommands()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user