fix(desktop): terminal pane no longer traps the window when you switch tabs - #90351
Merged
Conversation
The persistent terminal is a position:fixed overlay that chases its slot's rect, and the whole tracker — visibility included — was gated behind the renderer pause. Switching tabs while the window is unfocused therefore left the overlay parked over the zone at full opacity with pointerEvents:auto, so the chat underneath was unreachable until something refocused the window. Visibility is correctness rather than perf, so sample it on every wake even while paused; the rect chase, which is the part that forces layout, stays gated.
Contributor
૮ >ﻌ< ა ci reviewran on 7f3d255 — test(desktop): cover the terminal overlay hiding on an unfoc
|
OutThisLife
enabled auto-merge
August 19, 2026 23:40
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.
Opening the terminal and then clicking another tab could leave you stuck: the tab switch registered, but the terminal kept covering the pane and swallowing clicks, so the chat was unreachable until the app was restarted.
The persistent terminal is a
position: fixedoverlay that chases its slot's rect instead of moving in the DOM (moving it detaches xterm's WebGL renderer). That tracker is paused while the renderer is idle — sensible for the rect chase, which forces layout, but visibility was gated behind the same check. Switch tabs while the window is unfocused, or right as it blurs, and the overlay never learns its slot went inactive: it stays parked over the zone at full opacity withpointer-events: auto.The
hiddenflag is a cheap attribute walk and it is correctness, not perf, so it is now sampled on every wake — paused or not — while the measurement half stays gated. The PTY is untouched: only the overlay stands down.Verified against a live build over CDP. With the terminal stacked as a tab in the main zone, switching away while unfocused previously left
active: workspacewith the overlay still hit-testing over the pane; it now reports hidden with the chat reachable, and the terminal workspace stays mounted. The regression test fails onmainand passes here.This is scoped to the terminal overlay. It does not address the Bot Mode open failures tracked in #89617 / #90111 / #89556 / #89834, which are backend hydration and workspace-tab problems rather than occlusion.
Closes #82315
Closes #72590