Command Dispatcher and Palette
🏔️ Command Dispatcher and Palette
Objective
Every plugin will want to expose actions the user can invoke (create-daily-note,
toggle-hidden, jump-to-today, etc.). Hardcoding each as a global key is a dead
end. The Command Dispatcher is a single in-memory registry of
(command_id, title, handler) that plugins populate at startup; the Palette is
a modal overlay (invoked by a hotkey) that fuzzy-matches typed input against
the registry and dispatches the chosen command.
This Milestone is the first place the plugin contract is load-bearing: the
LHSB CRUD commands (already implemented) get re-routed through the registry to
prove the shape works before the Big Refactor in M5.
Success Criteria
- A
CommandRegistrylives in App state with aregister(id, title, handler)API - A palette overlay opens via a global key (recommend
Ctrl-Spacefor Citadel parity) - Palette accepts typed input, shows fuzzy-matched commands in a list, dispatches on
Enter - Existing LHSB commands (
create file, `create di
No due date
100% Completed