Skip to content

feat(web): resize workspace panes from either edge - #34355

Open
screen-gd wants to merge 499 commits into
pingdotgg:maria/redesign/6-workspace-panesfrom
screen-gd:fix/pane-edge-resizing
Open

screen-gd wants to merge 499 commits into
pingdotgg:maria/redesign/6-workspace-panesfrom
screen-gd:fix/pane-edge-resizing

Conversation

@screen-gd

@screen-gd screen-gd commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Problem

In scrolling workspaces, a shared divider only resized the pane on its left. Widening the last pane was awkward, Shift + mouse wheel could scroll terminal history, and switching threads could discard a pane’s expanded width or Fill window state.

Change

  • Resize a pane from either edge without changing neighboring widths, with a subtle highlight showing which edge will move.
  • Continue growing near the window edge, then reveal the full resized pane on release. Width is limited to one visible workspace.
  • Restore resized column widths and Fill window when switching back to a thread. Fill window is remembered for the current app session.
  • Double-click an empty gap to focus the previous or next pane, with a brief click highlight.
  • Handle Shift + wheel consistently across the workspace and terminal. Embedded webpages and content with its own horizontal scrolling keep their own wheel behavior.

The split sizing policies for “Shrink, then scroll,” “Scroll only,” and fit-to-window are unchanged. Web and desktop share these changes; native mobile is unaffected.

Scope and approval

Targets the workspace-pane redesign in #28845. This groups resizing and navigation changes for the overflowing pane strip. The new left-edge resize, auto-scroll and double-click interactions need maintainer direction; no approval comment is linked yet.

Verification

The release regression was reproduced before fixing it: an already-focused pane stayed 60 px clipped after a left-edge resize. The existing browser test now checks that its full width is revealed. Interaction tests also cover real hit locations, independent growth and shrinking, edge auto-scroll, double-click focus without resizing, and Shift + wheel.

Thread switching reproduced two further failures before the fix: a resized chat returned at half-width when its terminal reopened, and Fill window was forgotten after leaving its tab. Regression tests now cover restoring widths with terminals and side panes, returning to a filled thread, switching content in the same tab, and explicitly leaving Fill window.

vp run check:changed HEAD passed format, lint, both knip passes, typechecks, 64 focused tests and React Compiler checks for six source files. vp run build:desktop passed. The rebuilt Windows app was reloaded; the thread-switch fix has automated regression coverage but no new live recording.

The supplied Windows recording demonstrates the new interactions. The stills below show two points in that recording, not a comparison against the base build.

Watch the 55-second demo.

Drag start Drag result
Pane widths at the start of the drag The neighboring pane keeps its width as the other pane grows

Not checked: native mobile, macOS/Linux, and live frame timing. The outer window-margin double-click uses the same navigation handler as the tested inter-pane gaps but is not covered by the component fixture. Each enlarged drag target covers the outer 4 px of its own pane, which can compete with an edge scrollbar.

Created with Claude Opus 5.5 in Claude Code and GPT-6.1 Sol in the Codex harness, through T3 Code.

flamboh and others added 30 commits November 11, 2026 08:56
…9568)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The pane strip, extra workspaces, the overview and the layout tour are off by default. Settings > Labs > Scrolling workspaces turns them back on; splits, tabs and layout templates stay on for everyone.
@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Nov 11, 2026
@macroscopeapp

macroscopeapp Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs Human Approval

Macroscope's review found this PR requires human approval — The change adds either-edge resizing and workspace navigation gestures. New lint-suppression directives in ColumnResizeHandle.tsx and SurfaceHost.tsx require human review.

Needs human approval because:

  • Macroscope's correctness review did not reach a verdict

Notes:

  • The correctness review was unavailable. Eligibility was assessed without its result.

You can add or adjust custom eligibility rules. Learn more.

@screen-gd

Copy link
Copy Markdown
Contributor Author

Note

🤖 GPT-6.1 Sol responding on behalf of screen-gd

Trimmed test-only cruft in fbed7aa287: removed the wheel-helper table already covered by the real Shift+wheel interaction, hover-opacity assertions, a fixture-count assertion, and unused drag-helper branching. The changes are confined to SurfaceHost.browser.test.tsx and gesture.browser.test.ts; runtime code is unchanged.

Kept the regressions for independent resize/shrink, the clipped focused pane, active edge auto-scroll, Shift+wheel, and double-click navigation without resizing. check:changed passed format, lint, both knip passes, typechecks, 55 tests and React Compiler checks.

@maria-rcks
maria-rcks force-pushed the maria/redesign/6-workspace-panes branch from dc7da25 to d58378f Compare November 11, 2026 20:02
@github-actions github-actions Bot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Nov 11, 2026
@screen-gd

Copy link
Copy Markdown
Contributor Author

Note

🤖 GPT-6.1 Sol responding on behalf of screen-gd

104bd54 fixes pane expansion being lost when switching threads. layoutStore.ts remembers Fill window for each tab’s content; openRules.ts restores column widths when a thread’s hidden terminal or side pane returns.

Both reset paths failed before the fix and now pass. Changed-file checks passed, including 64 focused tests, typechecks and React Compiler checks. The desktop build also passed. The existing video predates this thread-switch fix; it has automated regression coverage but no new live recording.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants