-
Notifications
You must be signed in to change notification settings - Fork 0
[Frontend][UX] Documented bare-letter shortcuts (H/T/B/I/R, G T, board C/R) have no handler, and Settings has no Keyboard page #1968
Copy link
Copy link
Open
Labels
Priority IIThe active direction's next tranche: wedge capabilities, significant defects, near-term hardening.The active direction's next tranche: wedge capabilities, significant defects, near-term hardening.dogfoodingFrom real personal/beta use; evidence-grade product feedback (exempt from intake severity bar).From real personal/beta use; evidence-grade product feedback (exempt from intake severity bar).featureUser-facing functionality delivery slices (new capabilities or clear product-surface enhancements).User-facing functionality delivery slices (new capabilities or clear product-surface enhancements).frontendPrimary implementation impact in Vue/TypeScript UI and client runtime.Primary implementation impact in Vue/TypeScript UI and client runtime.uxDiscoverability, accessibility, interaction model, and user workflow quality.Discoverability, accessibility, interaction model, and user workflow quality.
Description
Metadata
Metadata
Assignees
Labels
Priority IIThe active direction's next tranche: wedge capabilities, significant defects, near-term hardening.The active direction's next tranche: wedge capabilities, significant defects, near-term hardening.dogfoodingFrom real personal/beta use; evidence-grade product feedback (exempt from intake severity bar).From real personal/beta use; evidence-grade product feedback (exempt from intake severity bar).featureUser-facing functionality delivery slices (new capabilities or clear product-surface enhancements).User-facing functionality delivery slices (new capabilities or clear product-surface enhancements).frontendPrimary implementation impact in Vue/TypeScript UI and client runtime.Primary implementation impact in Vue/TypeScript UI and client runtime.uxDiscoverability, accessibility, interaction model, and user workflow quality.Discoverability, accessibility, interaction model, and user workflow quality.
Projects
StatusShow more project fields
Pending
The defect
The
?keyboard map (HELP · KEYBOARD MAP — The full keystroke ledger) documents bindings that have nohandler anywhere in the codebase. Every modifier binding works; the bare-letter navigation set does
nothing.
HTBIRNAVIGATE · WORKSPACEmainfocusedG TGo to Today · ANYWHEREC/Ron a board badgeCapture here C/Review RPToggle provenance pane · DURING REVIEWJ/K/H/L,Alt+arrows,spaceJ)Working:
?,Ctrl+K,Ctrl+;,Ctrl+Shift+C,⏎.Source trace
frontend/taskdeck-web/src/components/paper/PaperShortcutsOverlay.vue:32-69—H/T/B/I/Rat:36-40,G Tat:42,Pat:52.frontend/taskdeck-web/src/components/shell/AppShell.vue:135-153— it registersCtrl/Cmd+K,Ctrl/Cmd+Shift+Cand?, and nothing else. There is no bare-letter navigation handler and nog-chord state anywhere insrc/.useKeyboardShortcuts.tsis registered in exactly one place,src/views/BoardView.vue:328(the legacy board).PaperBoardView.vueregisters no keydown listener at all; theC/Rbadges atPaperBoardView.vue:265-266are decorativekbdprops onPaperHLBtn.Pis the exception: it is registered, atsrc/composables/useReviewKeymap.ts:157-161(wired atPaperReviewView.vue:1151-1165). Likely explanation for it testing dead, stated as a hypothesis to confirm, not as fact: the whole review keymap is gatedenabled: () => !busy.value(PaperReviewView.vue:1164), and the run clickedRequest editon that page earlier — which setsbusyand silences every review shortcut at once (see the siblingRequest editissue). If that is right,Pneeds no new handler, only the lock fixed and re-verification.PaperShortcutsOverlay.vue:146), butsrc/router/index.ts:253-291defines only profile / access / export-import / preferences / appearance / api-keys.Why it matters
The product presents itself as keyboard-first — letter hints in the sidebar, letter badges on every board,
and a dedicated help dialog billed as "the full keystroke ledger" — while the majority of those hints do
nothing. A help dialog that documents non-existent bindings is worse than no dialog: it costs the user
time proving each one dead, which is exactly what this run spent.
This is the #1949 dead-affordance class applied to keystrokes, which no DOM-based dead-control guard
would catch — the affordance is a
kbdglyph and a help-table row, not a button.Acceptance criteria
?map either works or is not shown. No row documents a binding with no handler.H/T/B/I/Rand theG Tchord navigate as documented, and are suppressed while a text input, textarea, or contenteditable has focus.C/Reither activate capture / review or lose theirkbdglyph —PaperBoardView.vue:265-266stops advertising a binding that does not exist.Ptoggles the provenance pane during review, verified after theRequest editlock is fixed; if the lock was the cause, that is recorded on this issue rather than a new handler being added.PaperShortcutsOverlay.vue's data and asserts each documented binding has a registered handler — so a future doc row without an implementation fails CI. This is the assertion that makes the class of bug non-recurring.keydownon the rendered shell, asserting the route changed.tin the capture box must not navigate to Today).Refs
⌘glyphs shown on Windows, same help surface.