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 CommandRegistry lives in App state with a register(id, title, handler) API
  • A palette overlay opens via a global key (recommend Ctrl-Space for 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
#3 by n8k99 was closed 2026-05-19 15:24:47 -04:00 0 / 14