From 1337265dd7d7b3cbf5e1332391c00dce7efddd06 Mon Sep 17 00:00:00 2001 From: rzen Date: Sun, 26 Jul 2026 16:10:37 -0400 Subject: [PATCH] =?UTF-8?q?Menu=20item=20mandatory,=20default=20chord=20wh?= =?UTF-8?q?ere=20warranted=20=E2=80=94=20contract=20reworded?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves the contract-vs-practice contradiction: 04/10/11 now state the menu home is what makes every board function keyboard-reachable and remappable; 11's no-default rows are deliberate, not violations. Claude-Session: https://claude.ai/code/session_01HJ7PhFNmQ19bvy9RMD6GSb --- DESIGN/04-interactions.md | 2 +- DESIGN/10-accessibility.md | 2 +- DESIGN/11-command-nexus.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DESIGN/04-interactions.md b/DESIGN/04-interactions.md index e7390ce..14c9bce 100644 --- a/DESIGN/04-interactions.md +++ b/DESIGN/04-interactions.md @@ -29,7 +29,7 @@ Selection, drag & drop, keyboard, clipboard, search. This is where the old app s ## Keyboard -**Keyboard navigation is a first-class UX concern** — the board must be fully operable without the mouse: creating, navigating, renaming, moving, deleting, and opening items all need keyboard paths, and **every board function must have a menu item + shortcut** (toolbar-hosted functions included — toolbars are pure enhancement, 03-board-ui.md ▸ Toolbar). The pathfinder covered creation, navigation, rename, and delete; the keyboard-map iteration's outcome — settled as a coherent whole — is inventoried in 11-command-nexus.md, with its behavioral rules below. +**Keyboard navigation is a first-class UX concern** — the board must be fully operable without the mouse: creating, navigating, renaming, moving, deleting, and opening items all need keyboard paths, and **every board function must have a menu item** — the menu home is what makes a function keyboard-reachable (full keyboard access) and remappable (Configurable bindings below) — **with a default chord where one earns its keyspace**: 11-command-nexus.md's "— (no default)" rows are deliberate, not gaps, and remap like any other (toolbar-hosted functions included — toolbars are pure enhancement, 03-board-ui.md ▸ Toolbar). The pathfinder covered creation, navigation, rename, and delete; the keyboard-map iteration's outcome — settled as a coherent whole — is inventoried in 11-command-nexus.md, with its behavioral rules below. ### Grammar (fixed keys — deliberately not remappable) diff --git a/DESIGN/10-accessibility.md b/DESIGN/10-accessibility.md index 8c51b75..cfa5f34 100644 --- a/DESIGN/10-accessibility.md +++ b/DESIGN/10-accessibility.md @@ -4,7 +4,7 @@ The stance is committed in 00-vision.md: **accessibility is a requirement of "na ## Principles -- **The keyboard path is the accessibility path.** Every function's drag-free guarantee is its keyboard/menu path (04-interactions.md's contract: every board function has a menu item + shortcut), and VoiceOver rides those same paths. Bespoke accessibility-only UI is a last resort — if a function needs a drag-free alternative, it belongs in the context menu or menu bar, where *all* users get it. Concretely: **card movement is the clipboard** (⌘X, select target, ⌘V — 04's paste-lands-after-anchor/appends-to-lane rules make cut/paste a complete move story), not a parallel set of "Move to lane" accessibility actions. +- **The keyboard path is the accessibility path.** Every function's drag-free guarantee is its keyboard/menu path (04-interactions.md's contract: every board function has a menu item — the menu home is the keyboard path, with or without a default chord), and VoiceOver rides those same paths. Bespoke accessibility-only UI is a last resort — if a function needs a drag-free alternative, it belongs in the context menu or menu bar, where *all* users get it. Concretely: **card movement is the clipboard** (⌘X, select target, ⌘V — 04's paste-lands-after-anchor/appends-to-lane rules make cut/paste a complete move story), not a parallel set of "Move to lane" accessibility actions. - **Logical order over visual geometry.** Assistive traversal follows the board's semantic order (lane `order`, then card `order`), never rendering artifacts like masonry column position. - **Announce what the files do.** A live board that changes under external writers must say so — silence about a mutating board is a lie to a VoiceOver user. diff --git a/DESIGN/11-command-nexus.md b/DESIGN/11-command-nexus.md index 694fd99..09f5651 100644 --- a/DESIGN/11-command-nexus.md +++ b/DESIGN/11-command-nexus.md @@ -1,6 +1,6 @@ # Command Nexus -The single source of truth for **every command and action the app can perform** — what exists, the context it applies in, its default binding, and whether it can be customized. Behavior is specified in the home docs (cross-referenced per row); this inventory is normative for *existence, context, and bindings*: a command absent here doesn't exist, and adding one means adding a row here first. 04-interactions.md's contract underwrites the tables — every board function has a menu item + shortcut, with configuration as the one carve-out (04 ▸ The map) — and 04 remains normative for the behavior behind the rows. +The single source of truth for **every command and action the app can perform** — what exists, the context it applies in, its default binding, and whether it can be customized. Behavior is specified in the home docs (cross-referenced per row); this inventory is normative for *existence, context, and bindings*: a command absent here doesn't exist, and adding one means adding a row here first. 04-interactions.md's contract underwrites the tables — every board function has a menu item, keyboard-reachable and remappable, with a default chord only where one earns its keyspace — the "— (no default)" rows below are deliberate — and configuration as the one carve-out (04 ▸ The map) — and 04 remains normative for the behavior behind the rows. ## Customizability classes