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();