feat: add Cmd+, keyboard shortcut to toggle settings (#319)

Add settings.toggle action with Cmd+, (Mac) / Ctrl+, (non-Mac) bindings.
When on a settings route, pressing the shortcut navigates back; otherwise
it pushes to the host settings route. Also adds comma to the shortcut
key map so the combo string parses correctly.
This commit is contained in:
Mohamed Boudra
2026-04-13 16:16:23 +08:00
committed by GitHub
parent 8aa1833e2b
commit f0c59ec534
4 changed files with 41 additions and 1 deletions
@@ -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();
+1
View File
@@ -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"
@@ -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",
@@ -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" };