v0.1.13 everywhere: version badge, pin examples, landing page, release request - #158
Merged
Conversation
`Alt+?` already drew every binding grouped and labelled, F9 already gave it a `/` type-ahead over both columns, and F1 already made each row declare the *actions* it documents rather than a compiled-in spelling. That is a command palette in every respect but one — it could not press the button. This is that one keystroke: while the filter is open, `↵` runs the row under the cursor. No new chord, no new mode, no second list. A separate palette on its own chord was the obvious build and it was the wrong one: a second list of commands is a second thing to keep true, and this table is already the one roost sweeps against `Action` for coverage. The palette's command list *is* the keymap. Only the filtering state is a palette. Un-filtered, C15's overlay is unchanged — any key dismisses it, no row is marked, `↵` closes it like anything else. `/` is what turns it into a picker, and that is the state whose title and hint bar advertise `↵`. **A row is runnable only when it documents exactly one action**, and the rows that resist are precisely the ones nobody would drive this way. A multi-action row — `Family` (`Alt+←↓↑→`, `Alt+Shift+←↓↑→`) or a multi-action `Chords` (`previous / next tab`) — is a direction set: there is no answer to which one `↵` runs, and picking one would be the wrong feature anyway, since those are the chords you press five times running and a palette that performs one step then closes is worse than the chord it stands in for. The ambiguity and the uselessness coincide, so one rule covers both. What survives is what a palette is for: flip split, cycle layout, zoom, undo, rename, mark/pull, the raw/float/feed/roster toggles. The cursor indexes commands rather than drawn lines, so it can never park where `↵` has no answer; it clamps at both ends rather than wrapping (C27's rule, and the stakes are a rung higher here — the row it lands on is one keystroke from running); and it is read from the flat table *before* `help_layout` pours it into one column or two, so a resize under an open palette cannot move what `↵` points at. Editing the query resets it to the first command, which is what makes the core gesture land without an arrow key: type until the row is there, press `↵`. The mark is `❯` — C14's picker marker and C27's roster marker in its third overlay — drawn into the leading space `help_key_prefix` already opens every key column with. A marker column of its own would widen every row by one, re-tripping `elide_key` and moving `HELP_COL_FLOOR`: the accounting C38 and C39 each had to correct once already. Gated by measuring the laid-out column width with the cursor on and off rather than by restating the glyph's width. The title offers `↵ runs` only when the query actually has a command under the cursor — a query isolating the CONTROL CLI block matches rows but no commands, and there `↵` does what it did before this change. F1's rule applied to the heading. Found while building: walking the cursor back to the first command left the view scrolled to row 1, pushing the `PANES` heading off the top so the dialog opened on a bare chord. Scroll-up now keeps one line of context above the cursor; in this table that line is usually the group heading that says what the command is for. Gated by 8 unit tests in app.rs, 3 in render.rs, and two PTY tests driving the real overlay end to end — including one that had to wait on the overlay's own title rather than the C9 mode word, because the command it runs removes the bar that word lives in. DESIGN-ui.md gains the C41 contract; §8 row 20 and the README keymap row are amended.
This was referenced Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
One change landed since v0.1.12 (#157).
C41 — the keymap overlay runs what it teaches.
Alt+?already drewevery binding grouped and labelled, F9 already gave it a
/type-ahead overboth columns, and F1 already made each row declare the actions it
documents rather than a compiled-in spelling. That is a command palette in
every respect but one — it could not press the button. This is that one
keystroke: while the filter is open,
↵runs the row under the cursor.No new chord, no new mode, no second list. A separate palette on its own
chord was the obvious build and it was the wrong one: a second list of
commands is a second thing to keep true, and this table is already the one
roost sweeps against
Actionfor coverage. Un-filtered, C15's overlay isunchanged — any key dismisses it, no row is marked.
/is what turns itinto a picker, and that is the state whose title and hint bar advertise
↵.A row is runnable only when it documents exactly one action, and the
rows that resist are precisely the ones nobody would drive this way. A
multi-action row —
Family(Alt+←↓↑→,Alt+Shift+←↓↑→) or a multi-actionChords(previous / next tab) — is a direction set: there is no answer towhich one
↵runs, and picking one would be the wrong feature anyway, sincethose are the chords you press five times running and a palette that
performs one step then closes is worse than the chord it stands in for. The
ambiguity and the uselessness coincide, so one rule covers both. What
survives is what a palette is for: flip split, cycle layout, zoom, undo,
rename, mark/pull, the raw/float/feed/roster toggles.
The cursor indexes commands rather than drawn lines, clamps at both ends
rather than wrapping (C27's rule — the row it lands on is one keystroke from
running), and is read from the flat table before
help_layoutpours itinto one column or two, so a resize under an open palette cannot move what
↵points at. Editing the query resets it to the first command, which iswhat makes the core gesture land without an arrow key.
The mark is
❯— C14's picker marker and C27's roster marker in its thirdoverlay — drawn into the leading space
help_key_prefixalready opens everykey column with, so it costs no width. A marker column of its own would
widen every row by one, re-tripping
elide_keyand movingHELP_COL_FLOOR:the accounting C38 and C39 each had to correct once already.
Found while building: walking the cursor back to the first command left the
view scrolled to row 1, pushing the
PANESheading off the top so thedialog opened on a bare chord. Scroll-up now keeps one line of context above
the cursor.
The landing page's key count is unchanged at 19 — C41 adds no chord, so only
what the
Alt+?row promises moves.Touching
.github/release-requestdispatches Release, which builds fourtargets, creates the
v0.1.13tag from Cargo.toml itself, and publisheswith SHA256SUMS.txt.
Verified before cutting: 992 unit tests and all 35 integration binaries
green,
cargo +1.96.1 clippy --all-targets -- -D warningsandfmt --checkclean.
Not done: the design-supervisor audit CLAUDE.md requires for
src/ui/**changes — this session was configured not to launch agents.
Note for after the merge:
HOMEBREW_TAP_TOKENis still unset, so release.ymlwill skip the tap sync again (it did for v0.1.10, v0.1.11 and v0.1.12). The
formula needs the usual hand-sync —
RENDER_ONLY=1 RELEASE_TAG=v0.1.13 scripts/update-homebrew-formula.sh,PR'd to navbytes/homebrew-tap.