Skip to content

Keyboard Shortcuts

All global keyboard shortcuts are driven by the commandRegistry. Each CommandContribution with a keybinding field is automatically wired by useKeyboardShortcuts — a single hook mounted in App.tsx.

To add a shortcut, register a command with a keybinding. No changes to useKeyboardShortcuts are needed.

Current Bindings

Built-in commands are defined in src/commands/coreCommandContributions.ts:

ShortcutCommand IDAction
⌘K / Ctrl+Kcore.openCommandPaletteOpen command palette
⌘, / Ctrl+,core.openSettingsOpen settings
⌘J / Ctrl+Jcore.toggleBottomPanelToggle bottom panel
⌘T / Ctrl+Tcore.newConversationNew conversation
⌘N / Ctrl+Ncore.newConversationAltNew conversation (alias)
⌘W / Ctrl+Wcore.closeTabClose active tab

Tab bar context menu shortcuts:

ShortcutAction
⌘WClose tab (shown as hint in context menu)
⌘TNew conversation (shown as hint in context menu)

Adding a Shortcut

Register a command with a keybinding in your contribution file:

ts
import { commandRegistry } from '@openconduit/core';

commandRegistry.register({
  id: 'my-ext.exportConversation',
  label: 'Export conversation',
  shortcut: '⌘⇧E',
  keybinding: { key: 'e', mod: true, shift: true },
  action: () => { /* ... */ },
});

The shortcut is active immediately after registration — no restart required.

Released under the AGPLv3 License.