Skip to content

mac: keep terminal chrome in sync with surface colors - #185

Merged
khoi merged 2 commits into
mainfrom
fix/ghostty-surface-config-parity
Aug 8, 2026
Merged

mac: keep terminal chrome in sync with surface colors#185
khoi merged 2 commits into
mainfrom
fix/ghostty-surface-config-parity

Conversation

@khoi

@khoi khoi commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Why

OSC 11 could change the renderer background while Supaterm's top bar and chrome retained the global config color. Surface config callbacks also could not refresh target-specific scrollbar and progress state.

What changed

Each surface now owns derived background, opacity, scrollbar, and progress values. OSC background remains a separate override and clears when a later config background differs. The selected surface drives host chrome, including configured opacity. Scrollbars follow config background, not OSC 11, and resync when SwiftUI replaces their host view. Disabled progress reports no longer reach pane, sidebar, or tab state.

Foreground, cursor, and palette color actions remain consumed without changing native chrome.

Verification

  • make mac-check
  • make mac-test
  • make mac-test-e2e (45 tests)
  • make mac-scan-dead-code
  • Full pre-push repository checks

Fixes SUP-123.

@khoi khoi added the bug Something isn't working label Aug 8, 2026
@github-actions

This comment has been minimized.

@khoi
khoi force-pushed the fix/ghostty-surface-config-parity branch from 599bbfc to f46109e Compare August 8, 2026 12:17
@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown

SupaReview

On it, AI code review will be updated here once ready.

View action run

Terminal chrome, scrollbars, and progress used the app config after the
terminal had derived a surface config. OSC 11 changes also stayed inside
the renderer and left native chrome stale.

Own the small derived config on each surface and keep its OSC background
separate. A config refresh can then drop a stale OSC value while the
selected pane drives native chrome.
@khoi
khoi force-pushed the fix/ghostty-security branch from d5f4b79 to 1fe3e2d Compare August 8, 2026 20:34
@khoi
khoi force-pushed the fix/ghostty-surface-config-parity branch from f46109e to b79feb8 Compare August 8, 2026 20:35
@khoi khoi closed this Aug 8, 2026
@khoi khoi reopened this Aug 8, 2026
@khoi
khoi changed the base branch from fix/ghostty-security to main August 8, 2026 21:27
@khoi khoi closed this Aug 8, 2026
@khoi khoi reopened this Aug 8, 2026
Surface config changes could leave replacement scroll wrappers stale,
keep disabled progress visible in tab chrome, and drop configured opacity
from the selected pane header.

Resync wrapper ownership, filter progress at receipt, and carry opacity
with the derived background.
@tuist

tuist Bot commented Aug 8, 2026

Copy link
Copy Markdown

🛠️ Tuist Run Report 🛠️

Tests 🧪

Scheme Status Cache hit rate Tests Skipped Ran Commit
supatermUITests 0 % 76 0 76 e6d255bb2

Builds 🔨

Scheme Status Duration Commit
supatermUITests 1m 16s e6d255bb2

@khoi
khoi force-pushed the fix/ghostty-surface-config-parity branch from 1e2d404 to b3a489a Compare August 8, 2026 21:34
@khoi
khoi merged commit ae8e925 into main Aug 8, 2026
36 of 38 checks passed
@khoi
khoi deleted the fix/ghostty-surface-config-parity branch August 8, 2026 21:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant