Repository navigation
fix(web): closing a pane no longer blacks out the panes beside it - #29078
Conversation
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This fixes pane-closing visuals by preserving the closing pane’s previous width and limiting animation donors to adjacent panes. The changes are confined to transient rendering and introduce no material data or operational exposure. You can add or adjust custom eligibility rules. Learn more. |
|
Note Written by Verified in a real dev environmentverified head created a project pointing at a real git repository through the app. two real codex
before, during close on the parent: after, during close on the pr: Not verified
native electron, ios/android, macos/windows, and remote/relay/tunnel clients were not exercised on this linux web setup. other provider adapters were not exercised; this change is in shared web pane rendering. |
e950175
into
pingdotgg:maria/redesign/6-workspace-panes


Fix for the redesign stack, targets layer 6 (#28845).
Problem
Close the right pane of three (say thread, thread, Diff) and most of the workspace goes black for the length of the close animation. The middle thread disappears and only the first pane and a sliver on the right stay visible. Then it snaps into the right two-pane layout. Closing a thread that has its own surface pane open shows a smaller black band the same way.
The black is the chrome-coloured "moving edge" that pane motion draws between a closing pane and the pane that takes its room (its donor). Two things gave it the wrong donor:
Fix
The close animation is unchanged. The neighbour still grows into the room while the ghost slides off over it.
Before / after
Dark mode, Replay showcase threads, A | B | Diff. Window widths are 1300px and 1600px; captures are cropped to the workspace. Web Animations durations are multiplied 15× so the close is visible.
At 1300px the strip overflows and is scrolled: the middle thread blacks out before the fix and stays visible after it. The 1600px case is a wider-layout regression check; neither ref blacks out there. Replay threads were recreated with the same scenario after restarting the server.
1300px window
Before video (15× slower):
https://gh-file-drop-api-prod-galwoqjslzlnws6s.oliver-boorstein.workers.dev/f/788c66a0f7df7482/before-1300.mp4
After video (15× slower):
https://gh-file-drop-api-prod-galwoqjslzlnws6s.oliver-boorstein.workers.dev/f/4625b85a051599aa/after-1300.mp4
1600px window
Before video (15× slower):
https://gh-file-drop-api-prod-galwoqjslzlnws6s.oliver-boorstein.workers.dev/f/a997c7ec8d1f5f45/before-1600.mp4
After video (15× slower):
https://gh-file-drop-api-prod-galwoqjslzlnws6s.oliver-boorstein.workers.dev/f/f59a75ea0df33e6b/after-1600.mp4
Validation
paneMotion.browser.test.ts: a donor with a pane between it and the closing pane is rejected. Fails on the layer branch.vp run check:changed origin/maria/redesign/6-workspace-panespasses.Made with Claude Opus 5.5 in Claude Code.