Editor exposes 12+ keyboard shortcuts (n/a/d/c/p/s/m/z tool letters, Ctrl+Z/Y/A, Tab, Enter, Escape, Space, Delete/Backspace) but Help page documents zero #178

Closed
opened 2026-10-03 18:54:06 +00:00 by Mark · 1 comment
Owner

Finding

src/components/editor/useKeyboardShortcuts.ts:54-65 registers 8 single-letter tool shortcuts (n→select_nodes, a→add_node, d→delete_node, c→convert_node, p→draw_path, s→scissors, m→smooth, z→zoom) plus:

  • Ctrl+Z / Ctrl+Shift+Z (undo / redo)
  • Ctrl+A (select all)
  • Tab (cycle nodes)
  • Enter (finish path draw)
  • Escape (cancel)
  • Space (zoom mode toggle)
  • Delete / Backspace (delete selection)

src/pages/Help.tsx has zero documentation of any of these. grep -n 'Ctrl\|shortcut\|keyboard' src/pages/Help.tsx returns no matches.

A power user who discovers the editor's shortcuts has no reference. A new user who wants to learn the shortcuts has no help page entry. The shortcuts exist; the documentation doesn't.

Where

  • Shortcut hook: src/components/editor/useKeyboardShortcuts.ts (12+ bindings)
  • Help page: src/pages/Help.tsx (no keyboard section)

Suggested fix shape

Add a "Keyboard shortcuts" section to the Help page that lists the editor's bindings in a two-column layout (key | action):

Key Action
n Select tool
a Add node tool
d Delete node tool
c Convert node tool
p Draw path tool
s Scissors tool
m Smooth/corner cycle
z Zoom tool
Space Toggle zoom mode
Ctrl+Z Undo
Ctrl+Shift+Z Redo
Ctrl+A Select all
Tab Cycle through nodes
Enter Finish path draw
Escape Cancel current action
Delete / Backspace Delete selection

The same table (or a smaller subset) should be surfaced in the EditorHeader as a "?" help icon that opens a popover with the shortcuts.

Severity

Low. The shortcuts are wired; the user can discover them by hovering the toolbar (which shows them in the tooltips per the LeftToolbar) or by reading the source. Documentation would help.

Discovered by

Gap analysis (2026-10-02) of help page coverage.

  • #109 (closed) — fixed the "Steil Stitch" typo. The Help page's missing shortcuts documentation is the same family of help page gaps.
  • #158 (open) — Help page fabrications. The missing shortcuts table is the inverse: missing rather than wrong.
## Finding `src/components/editor/useKeyboardShortcuts.ts:54-65` registers 8 single-letter tool shortcuts (`n`→select_nodes, `a`→add_node, `d`→delete_node, `c`→convert_node, `p`→draw_path, `s`→scissors, `m`→smooth, `z`→zoom) plus: - `Ctrl+Z` / `Ctrl+Shift+Z` (undo / redo) - `Ctrl+A` (select all) - `Tab` (cycle nodes) - `Enter` (finish path draw) - `Escape` (cancel) - `Space` (zoom mode toggle) - `Delete` / `Backspace` (delete selection) `src/pages/Help.tsx` has zero documentation of any of these. `grep -n 'Ctrl\|shortcut\|keyboard' src/pages/Help.tsx` returns no matches. A power user who discovers the editor's shortcuts has no reference. A new user who wants to learn the shortcuts has no help page entry. The shortcuts exist; the documentation doesn't. ## Where - Shortcut hook: `src/components/editor/useKeyboardShortcuts.ts` (12+ bindings) - Help page: `src/pages/Help.tsx` (no keyboard section) ## Suggested fix shape Add a "Keyboard shortcuts" section to the Help page that lists the editor's bindings in a two-column layout (key | action): | Key | Action | | --- | --- | | n | Select tool | | a | Add node tool | | d | Delete node tool | | c | Convert node tool | | p | Draw path tool | | s | Scissors tool | | m | Smooth/corner cycle | | z | Zoom tool | | Space | Toggle zoom mode | | Ctrl+Z | Undo | | Ctrl+Shift+Z | Redo | | Ctrl+A | Select all | | Tab | Cycle through nodes | | Enter | Finish path draw | | Escape | Cancel current action | | Delete / Backspace | Delete selection | The same table (or a smaller subset) should be surfaced in the EditorHeader as a "?" help icon that opens a popover with the shortcuts. ## Severity Low. The shortcuts are wired; the user can discover them by hovering the toolbar (which shows them in the tooltips per the LeftToolbar) or by reading the source. Documentation would help. ## Discovered by Gap analysis (2026-10-02) of help page coverage. ## Related - #109 (closed) — fixed the "Steil Stitch" typo. The Help page's missing shortcuts documentation is the same family of help page gaps. - #158 (open) — Help page fabrications. The missing shortcuts table is the inverse: missing rather than wrong.
Author
Owner

Fixed in commit c3c9e8e6 on origin/main. Added an "Editor Keyboard Shortcuts" Reference section to the Help page that lists every binding from src/components/editor/useKeyboardShortcuts.ts: 8 tool letters (n/a/d/c/p/s/m/z), history (Ctrl+Z, Ctrl+Shift+Z), selection (Ctrl+A, Delete/Backspace), navigation (Tab, Space), and path-draw (Enter, Escape). Renders as a kbd/action two-column grid that collapses to single-column under the md breakpoint, mirroring the visual style of the workspace Help modal.

Verification:

  • tsc -b exits 0
  • eslint src/pages/Help.tsx exits 0
  • vitest run src/pages/Help.test.tsx passes 15/15

Note: Forgejo Actions CI run #7450 for this commit is status=waiting with no runner claiming it — this matches the broken-runner pattern documented in the repo (all 20+ recent runs show cancelled or waiting). The change itself is a docs-only patch that passed local type-check and lint, so the green gate is just blocked by the runner, not the work.

Fixed in commit c3c9e8e6 on origin/main. Added an "Editor Keyboard Shortcuts" Reference section to the Help page that lists every binding from `src/components/editor/useKeyboardShortcuts.ts`: 8 tool letters (n/a/d/c/p/s/m/z), history (Ctrl+Z, Ctrl+Shift+Z), selection (Ctrl+A, Delete/Backspace), navigation (Tab, Space), and path-draw (Enter, Escape). Renders as a kbd/action two-column grid that collapses to single-column under the md breakpoint, mirroring the visual style of the workspace Help modal. Verification: - `tsc -b` exits 0 - `eslint src/pages/Help.tsx` exits 0 - `vitest run src/pages/Help.test.tsx` passes 15/15 Note: Forgejo Actions CI run #7450 for this commit is `status=waiting` with no runner claiming it — this matches the broken-runner pattern documented in the repo (all 20+ recent runs show `cancelled` or `waiting`). The change itself is a docs-only patch that passed local type-check and lint, so the green gate is just blocked by the runner, not the work.
Mark closed this issue 2026-10-03 19:57:55 +00:00
Sign in to join this conversation.
No description provided.