feat(tui)!: mnemonic keys, g sequences and key.<action> overrides #83

Merged
jwarykowski merged 3 commits from feat/keymap into master 2026-10-25 10:16:29 +00:00
Owner

Summary

Board keys now match their letters, rare screen-level actions sit behind a g sequence, and every key can be rebound in config.toml.

action before now
detail d enter
edit u e
undo U u
add subtask S A
archive item C X
clear done c C
category g c
tags T t
due t d
boards / all boards / archive b / A / e gb / ga / gh
settings / theme / footer , / ctrl+t / F gs (and ,) / gt / gf
top / bottom none gg / G
  • After g the footer lists what can follow; esc cancels.
  • key.<action> = "<keys>" overrides: commas for several keys, a space for a sequence ("g b, B"), prio takes three. Overrides are checked together, so two actions can swap keys. Unknown actions, esc/q/ctrl+c, and clashes are ignored with a footer notice until the next key.
  • The footer, ? help and empty-board hints read their labels from the bindings; mouse double-click and wheel go through them too.
  • README: new key table, a "key bindings" section with every action name, and a block that restores the old layout (a test applies it).

Breaking: default board keys changed. Pickers, settings, archive and text prompts keep their fixed keys.

Testing

  • golangci-lint fmt, go vet, go test ./..., golangci-lint run clean.
  • New keymap tests: default clashes, sequences and cancel, overrides and swaps, notices, the README old-layout block. Existing tests moved to the new keys.
  • Checked in tmux with a temp HOME: g menu, gb, a key.due = "D" override and an ignored-override notice.
## Summary Board keys now match their letters, rare screen-level actions sit behind a `g` sequence, and every key can be rebound in `config.toml`. | action | before | now | |---|---|---| | detail | `d` | `enter` | | edit | `u` | `e` | | undo | `U` | `u` | | add subtask | `S` | `A` | | archive item | `C` | `X` | | clear done | `c` | `C` | | category | `g` | `c` | | tags | `T` | `t` | | due | `t` | `d` | | boards / all boards / archive | `b` / `A` / `e` | `gb` / `ga` / `gh` | | settings / theme / footer | `,` / `ctrl+t` / `F` | `gs` (and `,`) / `gt` / `gf` | | top / bottom | none | `gg` / `G` | - After `g` the footer lists what can follow; `esc` cancels. - `key.<action> = "<keys>"` overrides: commas for several keys, a space for a sequence (`"g b, B"`), `prio` takes three. Overrides are checked together, so two actions can swap keys. Unknown actions, `esc`/`q`/`ctrl+c`, and clashes are ignored with a footer notice until the next key. - The footer, `?` help and empty-board hints read their labels from the bindings; mouse double-click and wheel go through them too. - README: new key table, a "key bindings" section with every action name, and a block that restores the old layout (a test applies it). Breaking: default board keys changed. Pickers, settings, archive and text prompts keep their fixed keys. ## Testing - `golangci-lint fmt`, `go vet`, `go test ./...`, `golangci-lint run` clean. - New keymap tests: default clashes, sequences and cancel, overrides and swaps, notices, the README old-layout block. Existing tests moved to the new keys. - Checked in tmux with a temp HOME: `g` menu, `gb`, a `key.due = "D"` override and an ignored-override notice.
feat(tui)!: mnemonic keys, g sequences and key.<action> overrides
All checks were successful
pull-request / lint-and-test (pull_request) Successful in 1m14s
b0eb1c3c98
Board keys now match their letters (d due, t tags, c category, e edit,
u undo, enter detail) and rare screen-level actions move under g (gb
boards, ga all boards, gh archive, gs settings, gt theme, gf footer,
gg/G top/bottom). Any key can be rebound in config.toml with
key.<action>; bad or clashing overrides fall back with a footer notice.

BREAKING CHANGE: the default board keys changed; the README has a block
that restores the old layout.
Merge branch 'master' into feat/keymap
All checks were successful
pull-request / lint-and-test (pull_request) Successful in 1m13s
b9f6842111
docs: re-record the demo gifs for the new keys and theme picker
All checks were successful
pull-request / lint-and-test (pull_request) Successful in 1m14s
e3f55f91c6
jwarykowski deleted branch feat/keymap 2026-10-25 10:16:30 +00:00
Sign in to join this conversation.
No description provided.