diff --git a/packages/app/src/hooks/use-keyboard-shortcuts.ts b/packages/app/src/hooks/use-keyboard-shortcuts.ts index cf7cf4312..9031d2b0c 100644 --- a/packages/app/src/hooks/use-keyboard-shortcuts.ts +++ b/packages/app/src/hooks/use-keyboard-shortcuts.ts @@ -1,10 +1,11 @@ import { useEffect, useMemo, useRef } from "react"; -import { usePathname } from "expo-router"; +import { usePathname, useRouter } from "expo-router"; import { getIsElectronRuntime } from "@/constants/layout"; import { useHosts } from "@/runtime/host-runtime"; import { useKeyboardShortcutsStore } from "@/stores/keyboard-shortcuts-store"; import { setCommandCenterFocusRestoreElement } from "@/utils/command-center-focus-restore"; import { + buildHostSettingsRoute, parseHostAgentRouteFromPathname, parseServerIdFromPathname, parseHostWorkspaceRouteFromPathname, @@ -47,6 +48,7 @@ export function useKeyboardShortcuts({ cycleTheme?: () => void; }) { const pathname = usePathname(); + const router = useRouter(); const hosts = useHosts(); const resetModifiers = useKeyboardShortcutsStore((s) => s.resetModifiers); const { overrides } = useKeyboardShortcutOverrides(); @@ -244,6 +246,16 @@ export function useKeyboardShortcuts({ case "sidebar.toggle.left": toggleAgentList(); return true; + case "settings.toggle": + if (pathname.endsWith("/settings")) { + router.back(); + return true; + } + if (!activeServerId) { + return false; + } + router.push(buildHostSettingsRoute(activeServerId)); + return true; case "sidebar.toggle.both": if (toggleBothSidebars) { toggleBothSidebars(); diff --git a/packages/app/src/keyboard/actions.ts b/packages/app/src/keyboard/actions.ts index dd0816712..32916f8ed 100644 --- a/packages/app/src/keyboard/actions.ts +++ b/packages/app/src/keyboard/actions.ts @@ -37,6 +37,7 @@ export type KeyboardActionId = | "sidebar.toggle.left" | "sidebar.toggle.right" | "sidebar.toggle.both" + | "settings.toggle" | "command-center.toggle" | "shortcuts.dialog.toggle" | "workspace.terminal.new" diff --git a/packages/app/src/keyboard/keyboard-shortcuts.ts b/packages/app/src/keyboard/keyboard-shortcuts.ts index 7e6e265c1..b356c8473 100644 --- a/packages/app/src/keyboard/keyboard-shortcuts.ts +++ b/packages/app/src/keyboard/keyboard-shortcuts.ts @@ -712,6 +712,32 @@ const SHORTCUT_BINDINGS: readonly ShortcutBinding[] = [ }, }, + // --- Settings toggle --- + { + id: "settings-toggle-cmd-comma-mac", + action: "settings.toggle", + combo: "Cmd+,", + when: { mac: true, commandCenter: false }, + help: { + id: "toggle-settings", + section: "panels", + label: "Toggle settings", + keys: ["mod", ","], + }, + }, + { + id: "settings-toggle-ctrl-comma-non-mac", + action: "settings.toggle", + combo: "Ctrl+,", + when: { mac: false, commandCenter: false, terminal: false }, + help: { + id: "toggle-settings", + section: "panels", + label: "Toggle settings", + keys: ["mod", ","], + }, + }, + // --- Focus mode --- { id: "view-toggle-focus-cmd-shift-f-mac", diff --git a/packages/app/src/keyboard/shortcut-string.ts b/packages/app/src/keyboard/shortcut-string.ts index 0d5e8e669..bef1bbf39 100644 --- a/packages/app/src/keyboard/shortcut-string.ts +++ b/packages/app/src/keyboard/shortcut-string.ts @@ -31,6 +31,7 @@ KEY_MAP["Digit"] = { code: "Digit" }; KEY_MAP["\\"] = { code: "Backslash" }; KEY_MAP["["] = { code: "BracketLeft", key: "[" }; KEY_MAP["]"] = { code: "BracketRight", key: "]" }; +KEY_MAP[","] = { code: "Comma", key: "," }; KEY_MAP["."] = { code: "Period", key: "." }; KEY_MAP["`"] = { code: "Backquote", key: "`" }; KEY_MAP["/"] = { code: "Slash" };