--- id: shell/a-spotlight-style-launcher-on-ctrl-space title: 'A Spotlight-style launcher, on `alt-space`' theme: shell status: done created: 2026-08-20 date_source: assumed order: 1 --- **A Spotlight-style launcher, on `ctrl-space`.** The dock is full and cannot grow; navigation already borrows from macOS (see `docs/navigation-audit.md`), so the launcher is the same borrowing taken one step further. Type a few letters, get routes, chats, files, plugins, settings sections — and hit enter. Dock settings already exist, so the other half is pruning the dock down to what is actually used and letting the launcher carry the rest. **Trigger to confirm:** `alt-space` is the owner's preferred chord but is already load-bearing for him elsewhere, so `ctrl-space` unless that clashes too. --- **Built 2026-08-21** (`81f32a1f`, retriggered in `a2cca526`). **`alt-space`** in the end, after two moves: `ctrl-space` focuses the address bar in Brave and never reached the app. It **indexes the dock** rather than keeping a list of its own — the dock is already the composed, permission-filtered answer to "what can this account open here", so a plugin appears in the launcher for the reason it appears in the dock, and nothing is edited when one is installed. Settings sections are added on top, hand-listed, which is a known cost written into the file. Matching is subsequence with weighted scoring in its own testable file: `chq` finds Command HQ, `apik` finds API keys, `fi` gives Files rather than Profile. Nine tests, all about ORDER rather than matching. The trigger moved twice, and both moves were the owner naming a real collision: `ctrl-space` is Brave's address bar, then `shift-space` types a space in every text field. The second was the worse one, because guarding against it meant standing down whenever focus was in an input — which is where focus usually is, the chat composer — so the launcher had to be prepared for rather than used. **`alt-space`** has no meaning in a text field, so the guard is now belt-and-braces rather than the thing holding the feature up. It stays anyway: two lines against a layout somewhere delivering alt-space as a character. The id of this item still says `ctrl-space`. Ids are stable by design — see `todo/README.md` — so it is left alone. **Still open, and the other half of this item:** pruning the dock, and dock auto-hide with effects. Those live in `shell/dock-effects-and-auto-hide`. Chats, files and actions are not in the index yet — routes and settings are known client-side, so this slice needed no API.