Bump version to 1.25.0 (#33)

Fix blank terminal on macOS 26 and macOS 15:
- Add macOS 26 guard to two additional code paths that set window non-opaque
- Fix NSVisualEffectView z-order: add to themeFrame instead of contentView
- Align sidebarBlendMode defaults between @AppStorage and UserDefaults
- Add read_screen socket command and blank screen regression test
- Add reloads.sh staging script
This commit is contained in:
Lawrence Chen 2026-02-11 16:24:31 -08:00 committed by GitHub
parent 2013be43ef
commit 2db074b03b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 593 additions and 17 deletions

View file

@ -44,9 +44,9 @@ enum WindowGlassEffect {
return
}
// Older macOS: insert blur as a background subview instead of replacing contentView.
// Replacing contentView on macOS 13-15 breaks traffic light rendering when the
// window uses fullSizeContentView + titlebarAppearsTransparent.
// Older macOS: insert blur below the contentView in the window's internal view
// hierarchy. Adding to contentView directly gets reordered by SwiftUI, causing
// the blur view to cover the terminal content.
let blurView = NSVisualEffectView(frame: bounds)
blurView.blendingMode = .behindWindow
blurView.material = .hudWindow
@ -54,7 +54,11 @@ enum WindowGlassEffect {
blurView.wantsLayer = true
blurView.autoresizingMask = [.width, .height]
contentView.addSubview(blurView, positioned: .below, relativeTo: contentView.subviews.first)
if let themeFrame = contentView.superview {
themeFrame.addSubview(blurView, positioned: .below, relativeTo: contentView)
} else {
contentView.addSubview(blurView, positioned: .below, relativeTo: contentView.subviews.first)
}
// Tint overlay on top of blur, still behind content
if let color = tintColor {
@ -62,7 +66,11 @@ enum WindowGlassEffect {
tintOverlay.autoresizingMask = [.width, .height]
tintOverlay.wantsLayer = true
tintOverlay.layer?.backgroundColor = color.cgColor
contentView.addSubview(tintOverlay, positioned: .above, relativeTo: blurView)
if let themeFrame = contentView.superview {
themeFrame.addSubview(tintOverlay, positioned: .above, relativeTo: blurView)
} else {
contentView.addSubview(tintOverlay, positioned: .above, relativeTo: blurView)
}
objc_setAssociatedObject(window, &tintOverlayKey, tintOverlay, .OBJC_ASSOCIATION_RETAIN)
}