feat(desktop): Mac-style session switcher (^Tab / ^⇧Tab / ^1-9)#43111
Merged
Conversation
Contributor
🔎 Lint report:
|
b596c30 to
954e4a7
Compare
Bind session.next/prev to Control+Tab / Control+Shift+Tab with a distinct `ctrl` modifier token (literal Control on macOS — not Cmd, which the OS reserves). Add ^1…^9 positional jumps mirroring profile ⌘1…⌘9. Mac-style interaction: - Quick ^Tab tap jumps on keydown with no HUD (even if Ctrl stays down) - Hold Tab ~220ms, or tap Tab again while Ctrl is held → compact HUD - Ctrl↑ commits the highlight; Esc cancels; rows clickable (^+click safe) - Recency-ordered list snapshotted on open; cycles by stored session id Includes combo.test.ts + session-switcher.test.ts.
954e4a7 to
0e89211
Compare
wachoo
pushed a commit
to wachoo/hermes-agent
that referenced
this pull request
Jun 10, 2026
…Research#43111) Bind session.next/prev to Control+Tab / Control+Shift+Tab with a distinct `ctrl` modifier token (literal Control on macOS — not Cmd, which the OS reserves). Add ^1…^9 positional jumps mirroring profile ⌘1…⌘9. Mac-style interaction: - Quick ^Tab tap jumps on keydown with no HUD (even if Ctrl stays down) - Hold Tab ~220ms, or tap Tab again while Ctrl is held → compact HUD - Ctrl↑ commits the highlight; Esc cancels; rows clickable (^+click safe) - Recency-ordered list snapshotted on open; cycles by stored session id Includes combo.test.ts + session-switcher.test.ts.
changman
pushed a commit
to changman/hermes-agent
that referenced
this pull request
Jun 10, 2026
…Research#43111) Bind session.next/prev to Control+Tab / Control+Shift+Tab with a distinct `ctrl` modifier token (literal Control on macOS — not Cmd, which the OS reserves). Add ^1…^9 positional jumps mirroring profile ⌘1…⌘9. Mac-style interaction: - Quick ^Tab tap jumps on keydown with no HUD (even if Ctrl stays down) - Hold Tab ~220ms, or tap Tab again while Ctrl is held → compact HUD - Ctrl↑ commits the highlight; Esc cancels; rows clickable (^+click safe) - Recency-ordered list snapshotted on open; cycles by stored session id Includes combo.test.ts + session-switcher.test.ts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Mac-style session switching for the desktop app:
Implementation
ctrlmodifier token incombo.ts— literal Control on macOS; folds tomodelsewhere so one default works on every platformsession-switcherstore — Tab-hold reveal (matches macOS app switcher), immediate first-step navigation, frozen recency snapshotSessionSwitcheroverlay — compact centered panel (text-xs), not a fullscreen Dialog (Tab stays with global keybind listener)contextmenuafter Ctrl+click commit (Electron main-process menu)Test plan
combo.test.ts—ctrltoken across macOS/non-macOS (8 cases)session-switcher.test.ts— quick tap, Tab-hold reveal, second-Tab HUD, Ctrl↑ commit (7 cases)npm run type-check+ eslint on touched files