feat(tabs): implement maximize/reset-split chord shortcuts + cross-group tab movement - #237
Merged
Merged
Conversation
…oup tab movement Phase 5.1 (ref .claude/plans/tech-debt-remediation.md § 5.1). - Reducer: TOGGLE_MAXIMIZE_GROUP snapshots current layout, collapses tree to a single leaf on the active group, restores on second toggle. - Reducer: RESET_SPLIT_RATIOS recursively rewrites every SplitLayout node's ratio to 0.5. - State: isMaximized + preMaximizeLayout fields wired into TabSystemState. - Hook: ⌘K ⇧→ / ⌘K ⇧← now dispatch MOVE_TAB across adjacent groups (wraps). - Hook: ⌘K M toggles maximize, ⌘K O resets split ratios. - Tests: reducer unit tests cover both new actions; new use-chord-shortcuts hook tests cover the four chord paths; tabs.e2e.ts extended with Playwright coverage for move-tab + maximize + reset.
h4yfans
added a commit
that referenced
this pull request
May 6, 2026
…oup tab movement (#237) Phase 5.1 (ref .claude/plans/tech-debt-remediation.md § 5.1). - Reducer: TOGGLE_MAXIMIZE_GROUP snapshots current layout, collapses tree to a single leaf on the active group, restores on second toggle. - Reducer: RESET_SPLIT_RATIOS recursively rewrites every SplitLayout node's ratio to 0.5. - State: isMaximized + preMaximizeLayout fields wired into TabSystemState. - Hook: ⌘K ⇧→ / ⌘K ⇧← now dispatch MOVE_TAB across adjacent groups (wraps). - Hook: ⌘K M toggles maximize, ⌘K O resets split ratios. - Tests: reducer unit tests cover both new actions; new use-chord-shortcuts hook tests cover the four chord paths; tabs.e2e.ts extended with Playwright coverage for move-tab + maximize + reset.
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
Part of Phase 5 (UI stubs + polish) in the tech-debt-remediation plan — see
.claude/plans/tech-debt-remediation.md § 5.1.Closes four TODOs in
apps/desktop/src/renderer/src/hooks/use-chord-shortcuts.ts(lines 90, 104, 128, 133).Reducer changes
TOGGLE_MAXIMIZE_GROUP: snapshotsstate.layoutintopreMaximizeLayout, collapses the tree to a single leaf on the active group, and setsisMaximized: true. Second dispatch restores from the snapshot.RESET_SPLIT_RATIOS: recursively rewrites everySplitLayoutnode'sratioto0.5.State changes
TabSystemState.isMaximized?: booleanTabSystemState.preMaximizeLayout?: SplitLayoutHook changes
⌘K ⇧→/⌘K ⇧←— move the active tab across adjacent groups (wraps) via existingMOVE_TABaction.⌘K M— dispatchTOGGLE_MAXIMIZE_GROUP.⌘K O— dispatchRESET_SPLIT_RATIOS.Tests
use-chord-shortcuts.test.tsxcovering the four chord paths with a mockeduseTabscontext.tabs.e2e.tsPlaywright spec exercising cross-group move + maximize + reset in a real Electron window.Test plan
pnpm exec tsc -p tsconfig.web.json --noEmitclean in the worktreepnpm test --filter @memry/desktopgreen on reducer + hook testspnpm test:e2e --grep chordgreen against a built bundlepnpm dev, exercise⌘K ⇧→,⌘K M,⌘K O