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:
@@ -20,10 +20,10 @@ the owner's OS user and can never be granted. Indirection there really is accide
|
|||||||
|
|
||||||
## Themes
|
## Themes
|
||||||
|
|
||||||
**84 open, 25 closed**, across 29 themes.
|
**87 open, 25 closed**, across 29 themes.
|
||||||
|
|
||||||
| Theme | Open | Closed |
|
| Theme | Open | Closed |
|
||||||
| --- | --- | --- |
|
| ------------------------------------------------------------------------------------------ | ---- | ------ |
|
||||||
| [Affordances](todo/affordances/) | 1 | 0 |
|
| [Affordances](todo/affordances/) | 1 | 0 |
|
||||||
| [Speaking into a session from the backend](todo/agent-delivery/) | 2 | 0 |
|
| [Speaking into a session from the backend](todo/agent-delivery/) | 2 | 0 |
|
||||||
| [Backburner](todo/backburner/) | 2 | 0 |
|
| [Backburner](todo/backburner/) | 2 | 0 |
|
||||||
@@ -45,7 +45,7 @@ the owner's OS user and can never be granted. Indirection there really is accide
|
|||||||
| [Plugin system — gaps the email extraction found (2026-08-18)](todo/plugin-system/) | 3 | 0 |
|
| [Plugin system — gaps the email extraction found (2026-08-18)](todo/plugin-system/) | 3 | 0 |
|
||||||
| [Prompt library](todo/prompt-library/) | 1 | 0 |
|
| [Prompt library](todo/prompt-library/) | 1 | 0 |
|
||||||
| [Settings — portable, and readable by an agent](todo/settings/) | 2 | 0 |
|
| [Settings — portable, and readable by an agent](todo/settings/) | 2 | 0 |
|
||||||
| [Shell — spotlight and the dock](todo/shell/) | 1 | 1 |
|
| [Shell — spotlight and the dock](todo/shell/) | 4 | 1 |
|
||||||
| [Sub-agents — agents spawning agents](todo/sub-agents/) | 1 | 1 |
|
| [Sub-agents — agents spawning agents](todo/sub-agents/) | 1 | 1 |
|
||||||
| [Sudo terminal modal](todo/sudo-terminal-modal/) | 1 | 0 |
|
| [Sudo terminal modal](todo/sudo-terminal-modal/) | 1 | 0 |
|
||||||
| [Tooling — the list about the list](todo/tooling/) | 1 | 0 |
|
| [Tooling — the list about the list](todo/tooling/) | 1 | 0 |
|
||||||
@@ -66,10 +66,10 @@ the owner's OS user and can never be granted. Indirection there really is accide
|
|||||||
- `2026-08-22` **A plugin's permission should be on for every role by default, off only on request** — [multi-user/a-plugin-s-permission-should-be-on-for-every](todo/multi-user/a-plugin-s-permission-should-be-on-for-every.md)
|
- `2026-08-22` **A plugin's permission should be on for every role by default, off only on request** — [multi-user/a-plugin-s-permission-should-be-on-for-every](todo/multi-user/a-plugin-s-permission-should-be-on-for-every.md)
|
||||||
- `2026-08-22` **A user's settings should export and import as a plain file** — [settings/a-user-s-settings-should-export-and-import-as](todo/settings/a-user-s-settings-should-export-and-import-as.md)
|
- `2026-08-22` **A user's settings should export and import as a plain file** — [settings/a-user-s-settings-should-export-and-import-as](todo/settings/a-user-s-settings-should-export-and-import-as.md)
|
||||||
- `2026-08-22` **The same for system settings, owned by the Super Admin** — [settings/the-same-for-system-settings-owned-by-the](todo/settings/the-same-for-system-settings-owned-by-the.md)
|
- `2026-08-22` **The same for system settings, owned by the Super Admin** — [settings/the-same-for-system-settings-owned-by-the](todo/settings/the-same-for-system-settings-owned-by-the.md)
|
||||||
|
- `2026-08-22` **All keyboard shortcuts configurable** — [shell/all-keyboard-shortcuts-configurable](todo/shell/all-keyboard-shortcuts-configurable.md)
|
||||||
|
- `2026-08-22` **Ctrl+? shows every keyboard shortcut in a modal** — [shell/ctrl-shows-every-keyboard-shortcut-in-a-modal](todo/shell/ctrl-shows-every-keyboard-shortcut-in-a-modal.md)
|
||||||
|
- `2026-08-22` **Revamp the menus — spotlight, themes — toward an Omarchy-like shape** — [shell/revamp-the-menus-toward-an-omarchy-like-shape](todo/shell/revamp-the-menus-toward-an-omarchy-like-shape.md)
|
||||||
- `2026-08-21` **No way to see which affordances are reaching your agents, or to turn one off** — [affordances/no-way-to-see-which-affordances-are-reaching](todo/affordances/no-way-to-see-which-affordances-are-reaching.md)
|
- `2026-08-21` **No way to see which affordances are reaching your agents, or to turn one off** — [affordances/no-way-to-see-which-affordances-are-reaching](todo/affordances/no-way-to-see-which-affordances-are-reaching.md)
|
||||||
- `2026-08-21` **Generalise it: deliver a turn to a named session, from anywhere in the backend** — [agent-delivery/generalise-it-deliver-a-turn-to-a-named](todo/agent-delivery/generalise-it-deliver-a-turn-to-a-named.md)
|
- `2026-08-21` **Generalise it: deliver a turn to a named session, from anywhere in the backend** — [agent-delivery/generalise-it-deliver-a-turn-to-a-named](todo/agent-delivery/generalise-it-deliver-a-turn-to-a-named.md)
|
||||||
- `2026-08-21` **The cost of resuming grows with the transcript** — [agent-delivery/the-cost-of-resuming-grows-with-the-transcript](todo/agent-delivery/the-cost-of-resuming-grows-with-the-transcript.md)
|
- `2026-08-21` **The cost of resuming grows with the transcript** — [agent-delivery/the-cost-of-resuming-grows-with-the-transcript](todo/agent-delivery/the-cost-of-resuming-grows-with-the-transcript.md)
|
||||||
- `2026-08-21` **'An agent spawned by a background job is invisible in the interface'** — [background-jobs/a-spawned-agent-is-invisible-in-the-interface](todo/background-jobs/a-spawned-agent-is-invisible-in-the-interface.md)
|
- `2026-08-21` **'An agent spawned by a background job is invisible in the interface'** — [background-jobs/a-spawned-agent-is-invisible-in-the-interface](todo/background-jobs/a-spawned-agent-is-invisible-in-the-interface.md)
|
||||||
- `2026-08-21` **Show how long a turn took, beside its cost and tokens** — [chat/show-how-long-a-turn-took-beside-its-cost](todo/chat/show-how-long-a-turn-took-beside-its-cost.md)
|
|
||||||
- `2026-08-21` **Map every custom component, centralise it, and let a theme override it** — [components/map-every-custom-component-and-centralise-it](todo/components/map-every-custom-component-and-centralise-it.md)
|
|
||||||
- `2026-08-21` **Watch a directory, and attach actions to what lands in it** — [file-watchers/watch-a-directory-and-attach-actions-to-what](todo/file-watchers/watch-a-directory-and-attach-actions-to-what.md)
|
|
||||||
|
|||||||
@@ -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