keys: one table drives dispatch, help, footers, the rail and the wiki

keymap.ts lists every key with its context, action and help line.
actions.ts holds what each one does, typed against the table so a key
without an action, or an action without a key, does not compile.
modes.ts stacks the contexts (always > sheet > drawer > workspace >
writing > focused tile > special > global) and writes the two-key
pending logic once. App.svelte's 480-line onkeydown is now one call.

Help, the panel footers (a shared Keys component), the rail's keycaps
and Commands.md all read the table; the wiki gains the card and
scratchpad key tables.

One fix on the way: Ctrl-S in the editor no longer saves twice, which
could make the second save fail as "changed somewhere else".
This commit is contained in:
nvrl committed 2026-10-22 03:42:19 +02:00
1 parent 7f8a3816d3
commit 0eabcb2333
23 files changed
+1215 -1523

No files matched your search

+1
View File
@@ -14,6 +14,7 @@ on:
- .env.example
- web/src/lib/commands.ts
- web/src/lib/Help.svelte
- web/src/lib/keymap.ts
- scripts/wiki.ts
- .github/workflows/wiki.yml
workflow_dispatch: