Skip to content

Bind the thirteen most-used unbound commands#611

Merged
Juliusolsson05 merged 2 commits into
mainfrom
feat/usage-derived-keybindings
Jul 26, 2026
Merged

Bind the thirteen most-used unbound commands#611
Juliusolsson05 merged 2 commits into
mainfrom
feat/usage-derived-keybindings

Conversation

@Juliusolsson05

Copy link
Copy Markdown
Owner

Adds default keybindings for the 13 most-invoked commands that had none.

Why now

The governance PR (#608) kept the defaults table scarce on purpose — every chord in it except ⌘, already ran before that change, and the plan refused to derive defaults from palette-usage counts.

That refusal was right at the time. The evidence has changed: the recent-command cache holds 2,674 recorded invocations, and these 13 commands are 1,703 of them (~64%) while having no chord at all.

The clearest case is Reader ModeEscape already closes it, nothing opened it. 156 palette round-trips for a half-bound toggle.

The bindings

Family Chord Command Uses
layout ⌘D Tiled Dispatch 164
⌘⇧M Dispatch Mode 52
⌘⇧G Dispatch Scope (dispatch ctx) 34
⌘⇧U Open Usage 177
⌘⌥ dev ⌘⌥D Debug Panel 352
verbs ⌥R Reader Mode 156
⌥S Spotlight 125
⌥F Auto-follow Focused Agent 43
⌥V Agent View for This Session… 315
⌥P Prompt Template… 121
⌥⇧ heavier ⌥A / ⌥⇧A Soft Reload / Reload Agent 62 / 136
⌥⇧P View Prompts 71

/⌥⇧ tracks blast radius, not frequency — soft reload takes the lighter chord despite lower usage, because the cost of hitting the wrong one is asymmetric.

Two caveats, both recorded in the source

The counts are palette selections. Before the execution gateway, only the palette recorded a use, so bound commands are systematically under-counted (close-pane shows 1). That biases the data in the safe direction here — every command listed is unbound, so its count is complete.

⌘⇧D was the natural pair for ⌘D and is not used. It's the voice dictation hotkey. check:keybindings refused it — and notably, the probe that selected these chords called findBindingOwners directly and missed it, because dictationBinding is optional on the options object and was omitted. The gate caught a collision that a hand-rolled call to the same function did not.

Verification

  • tsc -b clean (after rm -rf .tsc-out)
  • check:keybindings OK — 38 binding sets (was 25), 13 reserved, 5 approved overlaps
  • 246/246 test files passing

🤖 Generated with Claude Code

Juliusolsson05 and others added 2 commits July 26, 2026 22:45
The governance work kept the defaults table deliberately scarce: every
chord in it except Cmd+, already ran before the change, and the plan
explicitly refused to mint defaults from palette-usage counts on the
grounds that the history "came from one development profile" and proves a
command is USEFUL, not that it deserves a scarce global chord.

This is a considered departure from that, on evidence the plan did not
have. The recent-command cache now holds 2,674 recorded invocations. The
thirteen commands below account for 1,703 of them -- about 64% of
everything invoked -- with no chord at all. Scarcity was protecting
against speculative bindings; these are the opposite.

The clearest case is Reader Mode. Escape already closes it, and nothing
opened it: 156 palette round-trips for a toggle that was half-bound.

Assigned in families so the set is learnable rather than memorized:

  Cmd  + letter   layout and app panels     Cmd+D tiled dispatch,
                                            Cmd+Shift+M dispatch mode,
                                            Cmd+Shift+U usage,
                                            Cmd+Shift+G dispatch scope
  Cmd+Alt + letter developer tooling        Cmd+Alt+D debug panel
  Alt  + letter   pane and session verbs    Alt+R reader, Alt+S spotlight,
                                            Alt+F auto-follow, Alt+V agent
                                            view, Alt+P prompt template
  Alt+Shift       the heavier sibling       Alt+Shift+A reload agent
                                            (Alt+A soft), Alt+Shift+P view
                                            prompts (Alt+P template)

Alt/Alt+Shift tracks BLAST RADIUS, not frequency -- soft reload takes the
lighter chord despite being used less, because the cost of hitting the
wrong one is asymmetric.

Two things recorded in the file rather than lost here. The counts are
palette selections, since only the palette recorded a use before the
execution gateway; that under-counts already-bound commands, which is the
safe direction because every command here is unbound. And Cmd+Shift+D was
the natural pair for Cmd+D until `check:keybindings` refused it -- it is
the voice dictation hotkey. The probe that picked these chords called
`findBindingOwners` directly and missed it, because `dictationBinding` is
optional and was omitted. The gate caught a collision a hand-rolled call
to the same function did not.

check:keybindings: 38 command binding sets, 13 reserved, 5 approved
overlaps. tsc -b clean, 246/246 test files passing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…md+Shift+/

A shortcut list you can only reach by remembering a shortcut is a joke.
Reaching it by opening the palette and typing "keyboard" is nearly as bad,
because the palette is exactly what you fall back to WHEN you have
forgotten the chord. So this ships bound, on Cmd+Shift+/ -- Cmd+? on a US
layout, which is where Slack, GitHub, Gmail and macOS Help all put it.

WHY NOT Settings -> Keybindings, which already lists every chord. That
screen exists to CHANGE a binding: it lists all 99 commands including the
~72 with no chord at all, it has live key capture, conflict resolution and
per-row reset, and it sits several clicks deep behind Cmd+,. Every one of
those is wrong for "what was the chord for Reader Mode again?" -- the
answer is buried among dozens of rows that have no answer, on a screen that
can rebind something if you fumble a keystroke while it is capturing.

So this shows only commands that HAVE a binding, grouped by category,
sorted for scanning, searchable by command name or by the chord itself
(the other half of the question is "what does Alt+R do?"), and mutates
nothing.

It reads the same `resolveEffectiveKeybindings` the router does, so a user
who rebound something sees THEIR chord. A cheat sheet that printed shipped
defaults would be confidently wrong for exactly the people who customized
-- who are the people most likely to have forgotten.

Catalog goes 98 -> 99. The baseline characterization test moved by hand,
which is what it is for: 102 original - 5 retirements + 2 additions = 99.

check:keybindings: 39 command binding sets. tsc -b clean, 246/246 test
files passing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Juliusolsson05
Juliusolsson05 merged commit 426841e into main Jul 26, 2026
1 check passed
@Juliusolsson05
Juliusolsson05 deleted the feat/usage-derived-keybindings branch July 26, 2026 20:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant