Problem
Atlas’s current tab shortcuts are Cmd+Shift+[ / ] (previous/next) and Cmd+1–9 (jump to an indexed tab in the focused split). There is no Cmd/Ctrl+Tab switcher, nor any modifier-held visual affordance that tells users what to press next.
Add a compact, cmux-inspired keyboard navigation overlay: while Command on macOS or Control on other platforms is held, show tiny labels near relevant tabs/panels so users can see the available follow-up keys and switch confidently.
Investigation
src/App.tsx registers tab navigation only for Cmd+Shift+[ / ] and Cmd+1–9.
useLayoutStore.cycleTab() cycles within the focused split column.
src/hooks/use-hotkey.ts only reacts to complete key chords; it has no modifier keydown/keyup state or transient overlay mechanism.
Scope and acceptance criteria
- Define platform-appropriate tab/panel switch bindings, preserving existing shortcuts and browser/native reservations.
- Holding the configured modifier reveals a small, non-obstructive hint beside each eligible tab/panel target; releasing it immediately dismisses the hints.
- Pressing the labelled key switches the intended target, including within split views; focus/active-column semantics are explicit.
- The overlay is keyboard-accessible, respects reduced motion, avoids stealing focus, and does not flash from modifier usage for unrelated shortcuts.
- Add tests for modifier lifecycle and target mapping, plus manual coverage across macOS and non-macOS key conventions.
Problem
Atlas’s current tab shortcuts are Cmd+Shift+[ / ] (previous/next) and Cmd+1–9 (jump to an indexed tab in the focused split). There is no Cmd/Ctrl+Tab switcher, nor any modifier-held visual affordance that tells users what to press next.
Add a compact, cmux-inspired keyboard navigation overlay: while Command on macOS or Control on other platforms is held, show tiny labels near relevant tabs/panels so users can see the available follow-up keys and switch confidently.
Investigation
src/App.tsxregisters tab navigation only for Cmd+Shift+[ / ] and Cmd+1–9.useLayoutStore.cycleTab()cycles within the focused split column.src/hooks/use-hotkey.tsonly reacts to complete key chords; it has no modifier keydown/keyup state or transient overlay mechanism.Scope and acceptance criteria