diff --git a/packages/app/src/app/_layout.tsx b/packages/app/src/app/_layout.tsx index f317da69d..a3cb25a8c 100644 --- a/packages/app/src/app/_layout.tsx +++ b/packages/app/src/app/_layout.tsx @@ -403,6 +403,12 @@ function AppContainer({ const isCompactLayout = useIsCompactFormFactor(); const chromeEnabled = chromeEnabledOverride ?? daemons.length > 0; + const pathname = usePathname(); + // TODO: stop matching pathname here as a branch. `chromeEnabled` should not + // conflate workspace/project-specific chrome (sidebar, mobile gesture) with + // global concerns like keyboard shortcuts. Split those out so settings (and + // other non-workspace routes) don't need a special-case to keep shortcuts alive. + const keyboardShortcutsEnabled = chromeEnabled || pathname.startsWith("/settings"); useEffect(() => { const bp = UnistylesRuntime.breakpoint; @@ -434,7 +440,7 @@ function AppContainer({ }, [isCompactLayout, chromeEnabled, isFocusModeEnabled, agentListOpen, sidebarWidth]); useKeyboardShortcuts({ - enabled: chromeEnabled, + enabled: keyboardShortcutsEnabled, isMobile: isCompactLayout, toggleAgentList, toggleFileExplorer,