fix(settings): prevent titlebar content bleed - #3315
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex review: needs maintainer review before merge. Reviewed September 3, 2026, 12:34 AM ET / 04:34 UTC. ClawSweeper reviewWhat this changesThe PR adds AppKit material views to the Settings detail column and sizes a titlebar cover from the window layout inset so scrolled form content no longer appears behind the native title. Merge readiness✅ Ready for maintainer review Keep open: this is a focused, proof-backed fix for the still-open Settings titlebar overlap, and current main lacks the shared detail backing it adds. Priority: P2 Review scores
Verification
How this fits togetherCodexBar’s Settings window presents a sidebar and a detail pane of grouped SwiftUI forms. The window’s transparent titlebar overlays those panes, so the detail pane needs its own backing material to keep scrolled content legible. flowchart LR
A[Settings window] --> B[Detail form pane]
B --> C[Transparent titlebar]
C --> D[Titlebar inset measurement]
D --> E[Material cover]
E --> F[Legible native title]
B --> G[Detail background material]
Before mergeNone. Agent review detailsSecurityNone. Review metrics
Root-cause clusterRelationship: Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Technical reviewBest possible solution: Land the shared detail-boundary material repair after normal maintainer review, preserving the transparent-titlebar sidebar design while preventing form content from obscuring the Settings title. Do we have a high-confidence way to reproduce the issue? Yes: current source establishes a transparent full-size titlebar over detail forms with hidden scroll backgrounds, and the supplied VM before/after comparison exercises the affected General-pane scroll state. Is this the best way to solve the issue? Yes: applying the backing at PreferencesView’s shared detail boundary is the narrowest maintainable repair because it covers affected panes without changing provider, settings, or persistence behavior. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 01da8fc6ea2d. LabelsLabel justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
History |
8d42c07 to
eff608c
Compare
eff608c to
325b494
Compare
|
Maintainer closeout: the Settings detail column now owns a material backing through the full-size titlebar safe area. Scrolled Form content frosts beneath that strip while the native title stays above it; provider behavior and the edge-to-edge sidebar are unchanged. Proof on exact head
Merged as |
Summary
Fixes #3235. The Settings window uses a transparent full-size titlebar while each detail pane hides its grouped-Form scroll background. The sidebar already supplies material behind the titlebar, but the detail column did not, so scrolled content composited through the native title and controls.
Fix
Apply the repair once at the shared
PreferencesViewdetail boundary:windowBackgroundvisual-effect backing that extends through the safe area;headerViewmaterial so scrolling content frosts underneath it while the native title remains above it;NSWindow.frame.height - contentLayoutRect.height. AGeometryReaderinside the detail column observes zero because SwiftUI converts the top safe area into the scroll view's content inset.This keeps the edge-to-edge transparent-titlebar sidebar design and changes no provider behavior.
The implementation and commit authorship remain @LeoLin990405's; maintainer work here is limited to rebase, review, automated coverage, and signed VM proof.
No changelog entry is included; release notes are generated at release time.
Verification
swift test --filter SettingsWindowAppearanceTests— 13/13 passed.make check— passed, including SwiftFormat and strict SwiftLint.PreferencesViewimplementation at the same General-pane scroll offset and dark appearance: current main shows “Preferred Currency” bleeding through “General”; the candidate keeps the native title clean above a 32-pt detail material strip.