>ActionsFilters to commands only. The full registry minus ui.toggleCommandPalette (no point in toggling the palette from the palette). Each command's when() predicate still runs, so pane-only actions stay hidden on the landing screen.
One input for everything in Kadro ADE. ⌘K opens the palette; without a prefix it searches actions, panes, and workspaces together. With > @ or # it narrows to one section. Every keybinding here can be overridden in Settings → Keybindings.
The palette command id is ui.toggleCommandPalette, scope global, default binding ⌘K. It is one of the few commands that stays available even when no workspace is active — you should be able to jump into a workspace without first creating one.
While the palette is open, the global dispatcher blocks every other keystroke from firing commands. The palette itself handles ↑, ↓, ↵, and Esc; ordinary typing goes into its input.
Entries are rebuilt on every keystroke from live store state, not cached, so panes you closed in another modal or workspaces activated elsewhere stay accurate. The cost is negligible at this scale.
Prefix the query with one of three characters to narrow to a single section. Without a prefix, all three sections render with headers; with a prefix, the section header is hidden because the list is homogeneous.
>ActionsFilters to commands only. The full registry minus ui.toggleCommandPalette (no point in toggling the palette from the palette). Each command's when() predicate still runs, so pane-only actions stay hidden on the landing screen.
@PanesLists panes in the active workspace only, in natural top-to-bottom, left-to-right order. Cross-workspace pane entries are intentionally omitted — they would require activating one workspace then focusing inside it, a two-step surprise.
#WorkspacesLists every non-draft workspace ranked by lastOpenedAt. Selecting one activates it. Draft workspaces (mid-creation, no layout yet) are skipped.
Every entry has a haystack — its title plus any keywords — scored against the trimmed query by fuzzyScore. Non-matching entries are dropped; the rest are sorted by score descending.
Equal scores tie-break on rank: actions use their usage count (commandUsageById), workspaces use lastOpenedAt, panes keep natural order. So a command you run frequently floats above one you've never used when both match equally.
JavaScript sort is stable across all modern engines, so the final order is deterministic between renders for the same input.
Defaults registered against the platform-neutral mod modifier — ⌘ on macOS, Ctrl elsewhere. Resolved at dispatch via resolveKeybindings(), which merges user overrides from keybindingsStore on top of defaults. Collisions resolve last-written-wins; conflicts surface in the Keybindings settings UI.
⌘Kui.toggleCommandPaletteToggle command palette
⌘Nworkspace.newNew workspace
⌘1..⌘9workspace.jumpTo1..9Jump to workspace 1..9
⌘⇧]workspace.focusNextFocus next workspace
⌘⇧[workspace.focusPrevFocus previous workspace
⌘Tpane.newNew pane (with provider picker)
⌘Dpane.splitHorizontalSplit pane horizontally
⌘⇧Dpane.splitVerticalSplit pane vertically
⌘⌥Dpane.splitWithPickerSplit pane with provider picker
⌘Wpane.closeClose pane
⌘←/→/↑/↓pane.focusLeft/Right/Up/DownDirectional focus
⌘⌥]pane.focusNextFocus next pane
⌘⌥[pane.focusPrevFocus previous pane
⌘⇧↵pane.toggleFullscreenToggle pane fullscreen
⌘⌥Rpane.renameRename pane
Pane focus, swap, and edge-move actions exist as commands without default bindings — they're invoked programmatically from drag-and-drop on the workspace surface, but you can bind them in Settings → Keybindings if you want a keyboard equivalent.
In the Team Dashboard cockpit, the bottom-of-screen composer accepts messages addressed to a specific agent (a target chip on the left) or broadcast. It is a separate input from the command palette and uses its own keys: ⌘L focuses the composer from anywhere on the dashboard, ⌘↵ submits the current draft.
Plain ↵ behaves contextually: when the mention autocomplete popover is open it selects the highlighted agent; otherwise it submits. ⌘↵ always submits regardless of popover state — that's the canonical send key.
Slash commands (/status, /replan, /review) are parsed but not wired yet; only /stop currently has a handler. The composer reports the unwired ones as "not wired yet" instead of pretending to dispatch them.
Stop reaching for the mouse.
⌘K, type, press ↵. Everything in Kadro ADE is one input away.