Skip to content

fix(splits): dim terminals and chats on the unfocused side like editors - #28952

Merged
brennanb2025 merged 8 commits into
mainfrom
brennankb5/native-chat-pane-dimming
Oct 21, 2026
Merged

brennanb2025 merged 8 commits into
mainfrom
brennankb5/native-chat-pane-dimming

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

ELI5

Terminals and chats in an unfocused side-by-side group stayed bright while editors and tab bars dimmed. That made the selected side harder to see. Terminals, chats and editors now use the same light 0.95 opacity on the unfocused side; the focused side and a lone group stay fully visible. Splits inside a single terminal tab keep their existing Inactive Pane Opacity setting.

What Changed

One shared opacity is applied to the group panel and to the terminal and chat hosts that render outside that panel. Each mounted content body receives the group dim once. Hidden retained hosts stay invisible, and activity-portal terminals keep their existing rendering.

Why

Applying the same selected-group state to every content type follows the common pattern. It fixes the missing treatment at the overlay hosts without adding a setting, saved state, focus action or cross-process message.

Linked Issue

Approved split-pane appearance correction. The shared focus correction in #28987 has landed on main.

Visual Proof

Matched full-window captures: main 920a0339287 versus this head a881dcf84db, on the admitted M4Air, 1200 × 850, the same repository fixture and default light appearance. Each actual content body was measured through every opacity-bearing ancestor.

Chat beside terminal — both focus directions
Selected side Main This PR
Left baseline-chat-terminal-left candidate-chat-terminal-left
Right baseline-chat-terminal-right candidate-chat-terminal-right
Two terminals — both focus directions
Selected side Main This PR
Left baseline-terminal-terminal-left candidate-terminal-terminal-left
Right baseline-terminal-terminal-right candidate-terminal-terminal-right
Two chats — both focus directions
Selected side Main This PR
Left baseline-chat-chat-left candidate-chat-chat-left
Right baseline-chat-chat-right candidate-chat-chat-right
Editor beside terminal — both focus directions
Selected side Main This PR
Left baseline-editor-terminal-left candidate-editor-terminal-left
Right baseline-editor-terminal-right candidate-editor-terminal-right
Inner terminal split, lone chat and floating terminal
Check Main This PR
Inner left active baseline-inner-left candidate-inner-left
Inner right active baseline-inner-right candidate-inner-right
Lone chat baseline-lone-chat candidate-lone-chat
Floating lone terminal baseline-floating-terminal candidate-floating-terminal

The newer main comparison has separate chat spacing and reasoning-control differences outside this opacity change. Generated titles, timestamps and cursor blink also vary between real runs. Browser, emulator and activity-portal exclusions were checked in source; they are not claimed as rendered coverage.

Testing

  • All 20 targeted renderer tests passed on this exact head.
  • Independent whole-diff finishing review, readiness checklist and final mechanism comparison completed; no P0/P1 findings.
  • Full PR workflow and its aggregate passed on this exact head; separate WSL workflow also passed.
  • All four pane combinations passed with each side selected: actual transcript, composer, terminal canvas and editor bodies measured 1 focused and 0.95 unfocused, without double dimming.
  • Inner terminal leaves measured 1/0.9 and 0.9/1 with the group focused; default setting stayed 0.9. Lone chat and floating lone terminal stayed 1; hidden retained bodies stayed 0.
  • Real Codex native chat reply through the load balancer, submitted through the composer by the Codex QA driver. Draft and terminal input routing checked in both focus directions.
  • All owned test processes stopped and assigned listeners cleared; admitted QA ticket released.

Review

Uniform 0.95 group opacity is intended. The terminal tab's inner split setting remains separate. One cosmetic item is deferred: the existing “Restoring terminal…” placeholder stays fully visible until the terminal mounts, then takes the group opacity. The placeholder behaves as on main; no opacity acceptance evidence uses a loading placeholder. The merge-base diff includes formatter-required Codex function signature formatting; current main already has that form, with no behavior change.

Rendered coverage is local macOS. Other platforms, SSH hosts and non-git folder workspaces were considered in source rather than exercised in this targeted appearance run. No ownership, lifecycle, saved-data, wire or agent-behavior change is introduced.

Agent skill upstream boundary

  • Not applicable; no upstream skill source copied.

Notes

Author X: @BrennanKB5.

Checklist

  • Small, focused change; problem, user-facing result, mechanism and rationale explained.
  • Cross-platform and SSH/remote impact considered.
  • Current-head review, full CI and rendered comparison complete.

@brennanb2025
brennanb2025 marked this pull request as ready for review October 15, 2026 05:06
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 1120d65f-7f20-430f-89b1-fc5180bfef13
📥 Commits

Reviewing files that changed from the base of the PR and between 767f0dd and e5e387f.

📒 Files selected for processing: 2
  • src/renderer/src/components/native-chat/StructuredAgentSessionPaneOverlayLayer.test.tsx
  • src/renderer/src/components/native-chat/StructuredAgentSessionPaneOverlayLayer.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review.

📝 Walkthrough

The overlay layer now resolves pane-style settings and applies active- or inactive-pane opacity when split groups exist. It adds a configured opacity transition when the duration is truthy. Tests verify the opacity values and their change when the active group changes.

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to e5e38

The split-chat opacity change has no identified issue requiring resolution before merge. It is mergeable after normal checks.

Pre-merge checks: Passed 3 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 2 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check Warning The description clearly explains the change, rationale, visual behavior, testing, review notes, and checklist items. However, the required Linked Issue section does not contain an actual issue link or… Add the actual issue link or populate Fixes #<issue-number>. Explicitly confirm that automated tests were added or updated, or explain why no test changes were needed.
Passed Passed checks: 3 passed
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly describes the main change: dimming terminals and chats on the unfocused side of splits.
Full details: Description check

Explanation

The description clearly explains the change, rationale, visual behavior, testing, review notes, and checklist items. However, the required Linked Issue section does not contain an actual issue link or a populated Fixes #... reference. The testing section also does not explicitly complete the template's automated-tests checkbox.

Resolution

Add the actual issue link or populate Fixes #&lt;issue-number&gt;. Explicitly confirm that automated tests were added or updated, or explain why no test changes were needed.

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@brennanb2025
brennanb2025 force-pushed the brennankb5/native-chat-pane-dimming branch from e5e387f to 21ebf83 Compare October 15, 2026 05:48
@brennanb2025
brennanb2025 changed the base branch from main to brennankb5/native-chat-focus-transfer October 15, 2026 05:49
@brennanb2025
brennanb2025 force-pushed the brennankb5/native-chat-pane-dimming branch from 21ebf83 to 9c129bd Compare October 15, 2026 06:38
@brennanb2025
brennanb2025 force-pushed the brennankb5/native-chat-pane-dimming branch from 9c129bd to ee29164 Compare October 15, 2026 06:46
@brennanb2025
brennanb2025 changed the base branch from brennankb5/native-chat-focus-transfer to main October 19, 2026 07:49
@brennanb2025

brennanb2025 commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor Author

Terminals and chats in an unfocused side-by-side group stayed bright while editors and tab bars dimmed because their bodies render outside the group panel. This change applies one shared 0.95 opacity to those hosts, matching editors. Focused content and lone groups remain at 1; inner terminal splits keep their existing setting.

Finishing review and readiness checks at a881dcf found no P0/P1. All 20 targeted renderer tests passed. The exact-head full PR workflow and aggregate passed, as did the separate WSL workflow. Final mechanism comparison is recorded in the private ledger.

Real QA on the admitted M4Air passed all four combinations with each side selected. Actual content bodies measured 1 focused and 0.95 unfocused, with no double dimming. Inner terminal leaves stayed at 1/0.9 and 0.9/1; lone chat and floating lone terminal stayed 1; hidden bodies stayed 0. A real Codex reply completed through the composer using the load balancer and Codex QA driver. Distinct drafts and terminal output verified input routing. All owned test processes are stopped, listeners clear, and the machine ticket released.

Deferred P2 cosmetic item: “Restoring terminal…” stays at full opacity until the real terminal mounts, unchanged from main. Browser, emulator and activity-portal exclusions were source-checked; this targeted rendered run covered macOS. The newer main baseline has unrelated chat spacing/control differences; the screenshots disclose them.

For Brennan’s review: the shared opacity value and terminal overlay application express the intended treatment. Matched captures for every changed flow follow.

Matched full-window captures: main 920a0339287 versus this head a881dcf84db, on the admitted M4Air, 1200 × 850, the same repository fixture and default light appearance. Each actual content body was measured through every opacity-bearing ancestor.

Chat beside terminal — both focus directions
Selected side Main This PR
Left baseline-chat-terminal-left candidate-chat-terminal-left
Right baseline-chat-terminal-right candidate-chat-terminal-right
Two terminals — both focus directions
Selected side Main This PR
Left baseline-terminal-terminal-left candidate-terminal-terminal-left
Right baseline-terminal-terminal-right candidate-terminal-terminal-right
Two chats — both focus directions
Selected side Main This PR
Left baseline-chat-chat-left candidate-chat-chat-left
Right baseline-chat-chat-right candidate-chat-chat-right
Editor beside terminal — both focus directions
Selected side Main This PR
Left baseline-editor-terminal-left candidate-editor-terminal-left
Right baseline-editor-terminal-right candidate-editor-terminal-right
Inner terminal split, lone chat and floating terminal
Check Main This PR
Inner left active baseline-inner-left candidate-inner-left
Inner right active baseline-inner-right candidate-inner-right
Lone chat baseline-lone-chat candidate-lone-chat
Floating lone terminal baseline-floating-terminal candidate-floating-terminal

The newer main comparison has separate chat spacing and reasoning-control differences outside this opacity change. Generated titles, timestamps and cursor blink also vary between real runs. Browser, emulator and activity-portal exclusions were checked in source; they are not claimed as rendered coverage.

…rminal

A split chat was dimmed with the terminal's inner-pane opacity (0.9 by
default) while terminals and editors in an unfocused split group get the
group's 0.95, so chats looked dimmer than terminals beside them. The chat
layer now takes the same shared group dim and nothing more.
Editors and tab bars in an unfocused split group were dimmed to 0.95, but
terminals and chats are drawn in a layer outside the group, so they stayed
at full opacity. One shared opacity now dims the group panel and the
retained terminal and chat hosts alike, so all three look the same.
@brennanb2025 brennanb2025 changed the title fix(chat): dim the unfocused split chat pane fix(splits): dim terminals and chats on the unfocused side like editors Oct 21, 2026
@brennanb2025
brennanb2025 merged commit fd8b2dc into main Oct 21, 2026
54 of 57 checks passed
@brennanb2025
brennanb2025 deleted the brennankb5/native-chat-pane-dimming branch October 21, 2026 13:25
stasmarkin added a commit to stasmarkin/orca that referenced this pull request Oct 25, 2026
…tablyai#28952

stablyai#28952 moved the root's opacity-95 into a style prop with a shared
constant; the rebase kept it alongside this branch's child-level dim, so
unfocused groups dimmed twice and the root's stacking context trapped the
revealed strip under the pane overlays again.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant