Repository navigation
feat(ui): W leader chords and palette commands for tabs and panes (RIG-4445) - #1770
Merged
trunk-io[bot] merged 3 commits intoOct 7, 2026
Merged
Conversation
…G-4445) Co-authored-by: Matt Wilkinson <matt@rigel.build>
…IG-4445) Co-authored-by: Matt Wilkinson <matt@rigel.build>
This was referenced Oct 5, 2026
|
Compass engineering docs preview: https://compass-ui-rig-4445-tab-chor.compass-eng-docs.pages.dev Deployed from |
…s (RIG-4445) Pane focus commands move DOM focus into the target pane, and focus moving into a pane makes it the focused pane. One store closeTab path keeps focus on the new active tab for both the strip and the Close tab command. Spine tests now assert layout outcomes on a real store instead of emitted actions. Co-authored-by: Matt Wilkinson <matt@rigel.build>
rigel-mintaka
marked this pull request as ready for review
October 6, 2026 08:56
This was referenced Oct 6, 2026
mattwilkinsonn
added this pull request to stack #1838
October 7, 2026 00:43
mattwilkinsonn
approved these changes
Oct 7, 2026
|
This pull request was merged into |
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.
This PR is part of a stack containing 7 PRs:
mainTabs T5 of
docs/designs/ui/compass-in-window-tabs/design.md§T5 (RIG-4445), stacked on T4 #1755. It adds the §A6Wleader chords (OQ-1: leaderWin both hosts, focus-gated likeG).keyboard/keymap.ts: the §A6 table rows, exactly as listed:W Nnew tab,W XcloseW ]andW [next and previousW 1–W 9go to tab NW VandW Ssplit right and downW Ocloses the other paneW HandW Lfocus the first and second panetab.moveLeftandtab.moveRighthave no chord, because §A6 lists none; they are palette commands only.keyboard/spine.ts: registers the commands below againstdispatchLayout.tab.new,tab.close,tab.next,tab.prev,tab.goto.1–tab.goto.9,tab.moveLeft,tab.moveRight.pane.splitRight,pane.splitDown,pane.closeOther,pane.focusFirst,pane.focusSecond.store.ts: passes the layout accessor anddispatchLayoutto the spine. Two shared paths serve both the strip and the commands:closeTabkeeps focus on the new active tab button when the closed tab's button had focus.focusPanemoves DOM focus into the target pane when focus is outside both panes.App.tsx: focus moving into a pane makes that pane the focused one, so layout focus follows DOM focus.view-panel.tsholds the panel ids and panel focus helper that App and the store share.Readings:
W Nopens/, using the §A3 open dedupe: on a tab already showing Bridge, it focuses that tab. RIG-4676 asks Matt whether "New tab" should always open a new tab.Tests
keymap.test.ts: the fullWchord-to-command map. The existing authoring-invariant test covers the new rows.spine.test.tsandtab-keep-alive.test.tsx: outcomes on a real store, not emitted actions. Covered: New tab from Bridge and from a topic tab, New tab at the tab cap (notice), closing the last tab (goes to/), wrap, go-to past the end, move bounds, split and close-other, and pane focus moving DOM focus both ways.dispatch.test.ts:w nrunstab.newon a non-editable target and runs nothing in a focused composer.TabStrip.test.tsx: Close tab from a focused tab button, and from the palette, leaves focus on the new active tab.Palette.test.tsx: lists every command.ShortcutsOverlay.test.tsx: the "Bridge" filter now expects 3 rows, becausetab.newcarries abridgekeyword.tab-strip.spec.ts:W Nopens a tab andW Xcloses it, and composer text is untouched.moon run compass-ui:test: 1285 pass, 0 fail. Typecheck, stylelint and biome are clean.visual-smoke+dev-boot+tab-strip: 16 passed, with no baseline change.Spec-impact: none.
Ledger-impact: none
Co-authored-by: Matt Wilkinson matt@rigel.build