feat(ui): redesign the default shortcut layout around a mod+k leader
Single chords stay for everyday actions; open/go actions move to two-step mod+k sequences; held mod+digit switches header session tabs and held mod+alt+digit switches context panel surfaces. Rare actions leave the shortcut schema for the command palette, every remaining action ships with a default binding, and stored overrides from the old layout reset once. Key matching now follows the physical key on non-Latin layouts and for Option-modified digits on macOS, including in the recording dialog.
This commit is contained in:
@@ -26,6 +26,21 @@ export const useSessionSearchEffects = ({
|
||||
return () => window.cancelAnimationFrame(raf);
|
||||
}, [enabled, isSessionSearchOpen, sessionSearchInputRef]);
|
||||
|
||||
// The open_session_list shortcut lands here when the sidebar is visible:
|
||||
// the session list is already on screen, so the shortcut opens its search.
|
||||
React.useEffect(() => {
|
||||
if (!enabled || typeof window === 'undefined') {
|
||||
return;
|
||||
}
|
||||
const handleOpenRequest = () => {
|
||||
setIsSessionSearchOpen(true);
|
||||
sessionSearchInputRef.current?.focus();
|
||||
sessionSearchInputRef.current?.select();
|
||||
};
|
||||
window.addEventListener('openchamber:sidebar-session-search', handleOpenRequest);
|
||||
return () => window.removeEventListener('openchamber:sidebar-session-search', handleOpenRequest);
|
||||
}, [enabled, setIsSessionSearchOpen, sessionSearchInputRef]);
|
||||
|
||||
React.useEffect(() => {
|
||||
if (!enabled || !isSessionSearchOpen || typeof document === 'undefined') {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user