todo: configurable shortcuts, a shortcut modal, and the omarchy menu revamp
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
---
|
||||
id: shell/all-keyboard-shortcuts-configurable
|
||||
title: "All keyboard shortcuts configurable"
|
||||
theme: shell
|
||||
status: open
|
||||
created: 2026-08-22
|
||||
date_source: stated
|
||||
order: 3
|
||||
---
|
||||
|
||||
**All keyboard shortcuts configurable.** Stated 2026-08-22 as coming soon. Every binding in the app
|
||||
should be something the owner sets, not something the code decides.
|
||||
|
||||
**There is nothing central to configure today.** Nine separate `keydown` listeners are registered across
|
||||
the app — the code editor, the file browser and its grid and dialogs, the terminal, the chat launcher,
|
||||
the embeddable chat, the file viewer's editor, and Spotlight — each owning its own keys, in its own
|
||||
component, with no registry and no way to see the set at once. So the first half of this is an
|
||||
inventory, and the second is a registry the bindings are read FROM rather than written INTO the
|
||||
components.
|
||||
|
||||
Spotlight is the cautionary tale and it is already written down in `Spotlight.tsx:14`: the launcher went
|
||||
`ctrl-space` → `shift-space` → `alt-space`, three changes in a day, because each chord turned out to
|
||||
collide with something — `shift-space` types a space, which is why that version needed a focus check
|
||||
that `alt-space` does not. **A hard-coded chord costs a code change and a release every time it is
|
||||
wrong**, which is the argument for this item in one sentence.
|
||||
|
||||
Worth deciding with the config format: a binding that conflicts with another must be refused or flagged
|
||||
at the moment it is set, since the failure otherwise is silent and shows up as "that key does nothing".
|
||||
And a browser cannot claim every chord — some are the browser's or the window manager's — so the UI has
|
||||
to be able to say a binding was rejected by something above it.
|
||||
|
||||
Storage lands on `todo/settings/` — this is exactly the kind of preference that should be a portable
|
||||
file rather than a row.
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
id: shell/ctrl-shows-every-keyboard-shortcut-in-a-modal
|
||||
title: "Ctrl+? shows every keyboard shortcut in a modal"
|
||||
theme: shell
|
||||
status: open
|
||||
created: 2026-08-22
|
||||
date_source: stated
|
||||
order: 4
|
||||
---
|
||||
|
||||
**Ctrl+? shows every keyboard shortcut in a modal.** Stated 2026-08-22, alongside making the bindings
|
||||
configurable. One chord, and the whole set is on screen.
|
||||
|
||||
It is the same work seen from the other end, and the order matters: **the modal is trivial once a
|
||||
registry exists and impossible to keep honest before that.** Today the bindings live in nine separate
|
||||
`keydown` listeners across the app, so a hand-written list of shortcuts would be a second copy of
|
||||
something nobody updates — a help screen that lies is worse than none. Build it as a render of the
|
||||
registry from `shell/all-keyboard-shortcuts-configurable`, never as its own list.
|
||||
|
||||
Two things to get right when it is built: the modal should show which bindings apply **here** versus
|
||||
everywhere, since most of the nine are scoped to one app or panel; and it is the natural place to
|
||||
surface a conflict or a chord the browser refused, because that is when someone is looking.
|
||||
@@ -0,0 +1,26 @@
|
||||
---
|
||||
id: shell/revamp-the-menus-toward-an-omarchy-like-shape
|
||||
title: "Revamp the menus — spotlight, themes — toward an Omarchy-like shape"
|
||||
theme: shell
|
||||
status: open
|
||||
created: 2026-08-22
|
||||
date_source: stated
|
||||
order: 5
|
||||
---
|
||||
|
||||
**Revamp the menus — spotlight, themes — toward an Omarchy-like shape.** Flagged 2026-08-22 as a plan
|
||||
the owner has and has deliberately not worked out yet: *"i have plans… i think some time soon we will
|
||||
take a more Omarchy like approach but i am too happy right now to think about that."*
|
||||
|
||||
**Recorded so it is not lost, not so someone can start it.** The shape is his and does not exist on
|
||||
paper yet — ask him before designing anything here.
|
||||
|
||||
What is already true and will be the raw material: Spotlight exists and opens on `alt-space`
|
||||
(`Spotlight.tsx`), the dock is full and cannot grow, and all 22 themes are generated from Omarchy's own
|
||||
palettes by `scripts/generate-themes.ts` — so the borrowing has already started on the colour side and
|
||||
this is the same borrowing extended to the menus. `shell/dock-effects-and-auto-hide` and the launcher
|
||||
item are both part of whatever this becomes rather than separate work.
|
||||
|
||||
Note the two keyboard items in this theme are probably prerequisites rather than neighbours: an
|
||||
Omarchy-like shell is keyboard-driven first, and that needs bindings to be configurable and discoverable
|
||||
before the menus are rebuilt around them.
|
||||
Reference in New Issue
Block a user