Tahoe 26 Liquid Glass integration: theme picker hooks, layer-background mode, focus-report leak fix

RO
6mo ago
+141-32

Companion to cmux #2647 (Adopt macOS 26 Liquid Glass design) and cmux #2646 (sidebar sections). Both cmux PRs pin to this ghostty SHA; merging here lets them bump pointer back to manaflow-ai/ghostty#main.

Summary

Three logical groups, combined into one PR because cmux tests them together:

cmux theme picker integration

  • Add cmux theme picker helper hooks
  • Fix cmux theme picker preview writes
  • Improve cmux theme picker footer contrast
  • Respect system theme in cmux picker
  • Skip theme detection in cmux picker
  • Match Ghostty theme picker startup
  • Harden cmux theme override writes

macos-background-from-layer config (needed for Liquid Glass translucent backgrounds)

  • Add macos-background-from-layer config flag
  • Skip fullscreen bg draw call in layer-background mode

Focus-report leak fix (ghostty-org/ghostty #2446)

  • Seed initial focus state and avoid startup focus-report leak
  • Merge of origin/main into the focus-reporting-leak branch (11th commit)

Test plan

  • zig build clean
  • cmux theme picker opens, renders cmux-owned theme list, preview writes land without stomping user config
  • With macos-background-from-layer = true, Ghostty skips the fullscreen background draw — required for the SwiftUI .glass material in cmux Liquid Glass mode to show through
  • Boot Ghostty with mode 2031 enabled; verify no spurious focus-out report at startup (issue #2446)
  • cmux PRs #2647 and #2646 green after pointer bumps to merged SHA

Summary by cubic

Adds macOS layer-provided background support for Tahoe 26 Liquid Glass, integrates cmux theme picker hooks, and fixes a startup focus-report leak. The renderer can now skip its fullscreen background pass on macOS, and surfaces seed initial focus so DECSET 1004 doesn't emit at startup.

  • New Features

    • macos-background-from-layer (macOS): lets the host CALayer provide the background; renderer zeros bg alpha and skips the fullscreen fill. Enables Liquid Glass behavior.
    • Theme picker hooks for cmux: picker renders cmux theme data with safe preview writes, startup parity, and system theme respect.
  • Bug Fixes

    • Focus-report leak: surfaces accept an initial focused state and seed the terminal before IO. Enabling DECSET 1004 no longer sends an immediate focus sequence.