Skip to content

Fix traffic lights and titlebar overlap on older macOS - #13

Merged
lawrencecchen merged 1 commit into
mainfrom
fix/traffic-lights-older-macos
Feb 6, 2026
Merged

lawrencecchen merged 1 commit into
mainfrom
fix/traffic-lights-older-macos

Conversation

@lawrencecchen

Copy link
Copy Markdown
Contributor

Summary

  • Fix traffic lights disappearing on macOS 13-15: WindowGlassEffect.apply() was replacing the window's contentView with the glass/blur view on all macOS versions. On pre-Tahoe macOS, this breaks the titlebar view hierarchy when the window uses fullSizeContentView + titlebarAppearsTransparent, causing traffic light buttons to vanish behind the content. Now only macOS 26+ (NSGlassEffectView) does the full contentView replacement; older versions insert the blur as a background subview instead.
  • Fix titlebar content overlapping buttons when sidebar is hidden: The custom titlebar (folder icon + command text) had a fixed 12pt leading padding, causing it to render behind the traffic lights and left titlebar accessories (sidebar/bell/+ buttons) when the sidebar was closed. Added TitlebarLeadingInsetReader to dynamically measure the actual width of traffic lights + left accessories and use that as leading padding.

Test plan

  • On macOS 26: verify Liquid Glass effect still works, traffic lights visible
  • On macOS 13-15: verify traffic lights are visible with glass enabled
  • Toggle sidebar open/closed: verify folder icon + title text don't overlap traffic lights or sidebar/bell/+ buttons
  • Resize window and toggle sidebar to confirm dynamic inset updates correctly

WindowGlassEffect.apply() replaced the window's contentView with the
glass/blur view on all macOS versions. On macOS 13-15, swapping the
contentView on a window with fullSizeContentView + transparent titlebar
breaks the titlebar view hierarchy, causing traffic light buttons to
disappear behind the content.

Split into two paths:
- macOS 26+ (NSGlassEffectView): full contentView replacement (safe)
- macOS 13-15: insert NSVisualEffectView as a background subview of the
  existing contentView, preserving the titlebar hierarchy

Also fix the custom titlebar overlay overlapping the traffic lights and
left titlebar accessories (sidebar/bell/+ buttons) when the sidebar is
hidden. Use TitlebarLeadingInsetReader to dynamically measure the actual
width of traffic lights + left accessories and apply it as leading padding.
@vercel

vercel Bot commented Feb 6, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmuxterm-docs Ready Ready Preview, Comment Feb 6, 2026 3:06am

@lawrencecchen
lawrencecchen merged commit fe0b33f into main Feb 6, 2026
4 checks passed
@lawrencecchen
lawrencecchen deleted the fix/traffic-lights-older-macos branch February 6, 2026 03:16
josphk added a commit to josphk/cmux that referenced this pull request Mar 3, 2026
- #1: (wait mode stale picks addressed separately by extension)
- #2: Use in-memory connectedSurfaceIds instead of filesystem check
- #3: Static ISO8601DateFormatter instead of allocating per pick
- #4: Remove hardcoded ~/Code/cmux fallback path
- manaflow-ai#8: Only write active-target when inspection is active
- manaflow-ai#11: Fix force unwrap on .data(using: .utf8)
- manaflow-ai#13: Clean up active-target file on disable
bn-l pushed a commit to bn-l/cmux that referenced this pull request Apr 3, 2026
WindowGlassEffect.apply() replaced the window's contentView with the
glass/blur view on all macOS versions. On macOS 13-15, swapping the
contentView on a window with fullSizeContentView + transparent titlebar
breaks the titlebar view hierarchy, causing traffic light buttons to
disappear behind the content.

Split into two paths:
- macOS 26+ (NSGlassEffectView): full contentView replacement (safe)
- macOS 13-15: insert NSVisualEffectView as a background subview of the
  existing contentView, preserving the titlebar hierarchy

Also fix the custom titlebar overlay overlapping the traffic lights and
left titlebar accessories (sidebar/bell/+ buttons) when the sidebar is
hidden. Use TitlebarLeadingInsetReader to dynamically measure the actual
width of traffic lights + left accessories and apply it as leading padding.
MasonStation added a commit to ashlrai/ashlr-mux that referenced this pull request Jul 8, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
MasonStation added a commit to ashlrai/ashlr-mux that referenced this pull request Jul 8, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ejc3 added a commit to ejc3/cmux that referenced this pull request Jul 15, 2026
…anaflow-ai#13)

A window live-resize whose final geometry arrived before mouse-up left a
parked oversized reading with no edge to consume it: onGeometryChange fires
only on value change, and the parked-reading consumer holds while
inLiveResize is true. Fire setNeedsSizingPass from the probe view's
viewDidEndLiveResize — by the time the coalesced pass runs inLiveResize is
false, so the consume proceeds.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 3, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-09-03T21:28:53.326759Z ef74e31 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai coderabbitai Bot mentioned this pull request Sep 22, 2026
3 of 6 tasks
lawrencecchen added a commit that referenced this pull request Oct 8, 2026
Security review findings: write CR as &#13; so the output stays a fixed
point; prefix every id with cmux-icon- and drop url(#id) attributes that
name no id of the same icon; drop pathLength and dash patterns; drop the
root width/height; drop mask/clip-path inside a mask or clipPath; refuse
U+FFFE/U+FFFF and bidi overrides in text. icons.md states the rendering
contract (isolated image, never inlined) (bd cx-44j.17).
lawrencecchen added a commit that referenced this pull request Oct 8, 2026
Security review findings: write CR as &#13; so the output stays a fixed
point; prefix every id with cmux-icon- and drop url(#id) attributes that
name no id of the same icon; drop pathLength and dash patterns; drop the
root width/height; drop mask/clip-path inside a mask or clipPath; refuse
U+FFFE/U+FFFF and bidi overrides in text. icons.md states the rendering
contract (isolated image, never inlined) (bd cx-44j.17).
lawrencecchen added a commit that referenced this pull request Oct 8, 2026
Security review findings: write CR as &#13; so the output stays a fixed
point; prefix every id with cmux-icon- and drop url(#id) attributes that
name no id of the same icon; drop pathLength and dash patterns; drop the
root width/height; drop mask/clip-path inside a mask or clipPath; refuse
U+FFFE/U+FFFF and bidi overrides in text. icons.md states the rendering
contract (isolated image, never inlined) (bd cx-44j.17).
rustybret pushed a commit to rustybret/bmux that referenced this pull request Oct 10, 2026
rustybret pushed a commit to rustybret/bmux that referenced this pull request Oct 10, 2026
e63ec95 fix(build): drop the app import from the remote tmux CLI test (manaflow-ai#18945)
edfc09c Merge pull request manaflow-ai#18950 from manaflow-ai/codex/revert-coderouter-handoff
608722c Revert "Merge pull request manaflow-ai#10194 from manaflow-ai/task/coderouter-native-handoff"
5cca480 Merge pull request manaflow-ai#10194 from manaflow-ai/task/coderouter-native-handoff
c867c77 fix: preserve CodeRouter peer context through async loop
7bb42ac Merge origin/main into CodeRouter handoff
16ae2a6 feat: open CodeRouter guide as a pane
5f98c98 feat: open CodeRouter guide as a pane
c7dd9ea feat: add CodeRouter help guide
1f026c7 CodeRouter handoff: meet current CI and package conventions
e231560 Merge remote-tracking branch 'origin/main' into native-handoff-merge
0f273d5 Merge main into the CodeRouter native handoff
f60f20e Merge main and preserve CodeRouter and Cloud diagnostic strings
b193fb8 Merge current main and preserve CodeRouter handoff transport
cf6a2a4 Merge main into CodeRouter native handoff
39f48e8 Move CodeRouter launch contract into shared package
e6f9d38 Fix CodeRouter release and naked alias contracts
b0ce78a Harden CodeRouter dogfood and OAuth callbacks
94e0a6d Make CodeRouter probe timeout test deterministic
d06b73d Fix CodeRouter Linux clippy gate
db4a2ec Fix CodeRouter workflow runner policy
7edbfcd Merge remote-tracking branch 'origin/main' into task/coderouter-native-handoff
4131be6 Publish CodeRouter source and release workflows
a9f05c7 Add 'coderouter/' from commit '6f63614e36ddf91b457eb3c25d8430a7875c750d'
6f63614 Fix interactive login terminal lifecycle
09b1462 Add secure native CodeRouter handoff
130ff4e Add secure CodeRouter handoff v2
cebaf60 Fix CodeRouter release test coverage
757897c Harden handoff descriptor and origin trust
c98aac3 Set coordinated handoff exchange timeout
6a7b9ba Harden handoff expiry and credential isolation
da6f3b2 Require EOF for handoff frames
46d7273 Tighten handoff child environment
311d27a Disable redirects during handoff exchange
f4dde33 Reject closed-pipe handoff trailing bytes
672f5b0 Add hosted CodeRouter handoff client
e3b205d Harden CodeRouter handoff authorization boundaries
2bb80ab Add native CodeRouter handoff from cmux
6da3e94 Add credential-free capabilities contract (manaflow-ai#50)
4910fde Use coderouter in CLI help and errors (manaflow-ai#49)
169be31 Add privacy-safe CodeRouter CLI analytics (manaflow-ai#48)
64da26c Add durable CodeRouter organization switching (manaflow-ai#46)
3dae4f0 Align public package provenance metadata (manaflow-ai#44)
2799924 Fix stable clippy and cut 0.2.1 (manaflow-ai#42)
d0e1915 Prepare verified public CLI distribution (manaflow-ai#41)
e15c881 Record live annual Pro and Team validation (manaflow-ai#39)
efe2d10 Snapshot CLI fault guidance matrix (manaflow-ai#34)
e9a1bc0 Harden coderouter retries and diagnostics (manaflow-ai#32)
fd00e47 Support self-hosted servers and TUI cancellation (manaflow-ai#24)
ea6b259 Use Codex-compatible Pi serialization safely (manaflow-ai#22)
7d0aa73 Force cr opencode through routed models (manaflow-ai#21)
c4748bc Fix Pi model discovery and cache wording (manaflow-ai#20)
f75d9e7 Complete coderouter private beta CLI and runbooks (manaflow-ai#19)
ada2d5a Use the coderouter tagline consistently (manaflow-ai#14)
931a79b Use route tokens for fast lowercase coderouter status (manaflow-ai#13)
a589857 Show progress throughout remote operations (manaflow-ai#12)
0c60e61 Show delayed status spinner and Spark usage (manaflow-ai#11)
47d0755 Render CodeRouter status like Subrouter (manaflow-ai#10)
ad75b92 Use the official Codex OAuth callback ports (manaflow-ai#9)
197345c Match Codex OAuth percent encoding exactly (manaflow-ai#8)
bc1c8e8 Match the official Codex OAuth request (manaflow-ai#7)
e782840 Add an interactive enter-code login flow (manaflow-ai#6)
19a479a Keep timing diagnostics out of CodeRouter output (manaflow-ai#5)
9e73f49 Use Ratatui and route directly through Vercel (manaflow-ai#4)
e386396 Isolate CodeRouter auth and agent state (manaflow-ai#3)
828751b Make bare CodeRouter show quota usage (manaflow-ai#2)
70c631c Focus CodeRouter on hosted Codex subscriptions (manaflow-ai#1)

This branch was successfully deployed

1 active deployment
Preview — ef74e312 Deployed Feb 6, 2026 by vercel[bot]
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