Skip to content

feat: add optional frosted and liquid glass window styles - #30504

Closed
MuhammAli786 wants to merge 3 commits into
stablyai:mainfrom
MuhammAli786:MuhammAli786/feat-window-glass
Closed

MuhammAli786 wants to merge 3 commits into
stablyai:mainfrom
MuhammAli786:MuhammAli786/feat-window-glass

Conversation

@MuhammAli786

@MuhammAli786 MuhammAli786 commented Oct 19, 2026 •

Copy link
Copy Markdown

ELI5

Adds an optional glass appearance to Orca. The desktop window supplies the blur, while the app draws tinted surfaces with opaque text. Users can choose Frosted or Liquid Glass style and adjust background opacity. Standard mode stays solid.

This is a draft because visible native blur and GPU/power behavior still need isolated-display verification. Hidden renderer screenshots are not native compositor evidence.

What Changed

  • Reuse windowBackgroundBlur and terminalBackgroundOpacity; add the optional windowGlassStyle preference. Controls remain in Settings → Appearance → Terminal → Window.
  • Enable macOS under-window vibrancy without transparent: true or an opaque renderer backing. Uncover acrylic on Windows build 22621+. Keep Linux and unsupported windows opaque.
  • Let the local native window publish effective material availability through a narrow preload bridge. Older/browser clients safely lack that optional capability.
  • Tint the canvas, cards, and sidebars through existing theme tokens. Liquid Glass style adds static edge highlights; it is not Apple's native NSGlassEffectView or refraction.
  • Keep editors, chat, floating menus, dialogs, and security prompts solid and text opaque. Initialize terminal alpha before opening xterm and reapply appearance on native/accessibility changes.
  • Restore solid surfaces for reduced transparency, high contrast, and unavailable/disabled GPU composition. Preserve macOS background throttling and clean up window listeners.

Enabling glass from fully opaque backgrounds selects opacity 0.8 so the effect is visible. Users can then choose any opacity, including 1. Style/opacity changes apply immediately; toggling the native material requires a restart.

Why

The existing opacity control cannot reveal desktop blur when an opaque native or renderer layer covers it. This connects native material availability to the renderer rather than applying whole-window opacity or layering blur filters on every pane.

Existing related PRs: #12470 and #3972. Their visual findings conflict. This draft adds capability publication, accessibility fallbacks, terminal lifecycle coverage, and rendered alpha checks; it does not claim those native visual uncertainties are resolved.

Linked Issue

#8797

Also considers the GPU regression reported in #8482. Do not close #8797 until native visual and power evidence supports it.

Visual Proof

Captured through Playwright from an isolated hidden Electron renderer. Glass screenshots retain their alpha channel; there is no simulated wallpaper. They show surface treatment, not the OS desktop blur. Assets are uploaded against the contributor's public fork because upstream attachment uploads require repository write permission.

Standard Frosted Liquid Glass style
Standard appearance Frosted surfaces with renderer alpha Liquid Glass style with renderer alpha

Testing

  • 183 focused tests passed across 14 suites covering window policy/lifecycle, preload, appearance, terminal rendering, OSC publication, and existing settings behavior.
  • Hidden Electron E2E passed: both styles, solid fallback under forced colors, and chat text alpha 255 in light/dark mode at zero surface opacity.
  • Full application typecheck passed across all four configured projects.
  • Full pnpm lint passed, including type-aware lint, compatibility ratchets, and localization gates.
  • Full unit suite was stopped after failures in untouched config/scripts/process-host-dev-rebuild.test.ts (six development watcher/rebuild cases) and src/main/cli/packaged-cli-assets.test.ts (macOS launcher case). The full suite is not claimed as passed.
  • Desktop main/preload/renderer, CLI, web projection, and mobile-web build stages completed.
  • Full pnpm build: stops in the untouched native computer helper's lipo step because the expected arm64/x86_64 executable paths do not exist after Swift reports successful builds.
  • Broad E2E typecheck: reports errors in untouched cloud/fixture files, including missing @orca-cloud/relay-contract; no errors reported in the new glass spec.
  • Native desktop blur, GPU/power, packaged launch, resize/fullscreen, sleep/wake, and Windows hardware checks on an isolated display.

Local platform: macOS, Electron 43.7.8. Windows/Linux native appearance was not manually verified.

AI Disclosure

Implemented and reviewed with OpenAI Codex assistance. Commits use the contributor's Git identity with no AI coauthor trailers.

Review

Independent review caught and corrected a chat foreground-alpha leak. A rendered regression check now verifies opaque normal, strong, and faint chat text in both themes. Native constructor tests use a deterministic OS release so their Windows assertions do not depend on the test machine.

Agent skill upstream boundary

  • Not applicable: no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation are copied or translated.

Notes

  • Cross-platform: native materials are explicitly gated; unsupported windows keep solid surfaces.
  • SSH/remote/local: local window capability controls composition. No PTY execution, host status, RPC protocol, provider, agent, or Git behavior changes.
  • Mobile/web: optional bridge methods are absent, so desktop glass is not enabled there.
  • Performance: no per-pane backdrop filters, animation loops, forced background redraw, or new native dependency. Native composition still has a cost; [Bug]: Window Blur causes sustained high GPU power and heat on macOS #8482 makes measured GPU/power validation a merge requirement.
  • Security: sandbox/context isolation are unchanged. Preload exposes boolean availability and strips the IPC event before notifying renderer callbacks.
  • Backwards compatibility: existing preference keys retain their stored values; the style preference and preload methods are optional.

Checklist

  • Focused on window appearance and its terminal/accessibility integration
  • Explained the user-facing change, mechanism, and approach
  • Before/after renderer screenshots provided, with native evidence limitations stated
  • Self-reviewed correctness, security, and performance risks
  • Cross-platform, SSH/remote, and path/shortcut impact considered
  • All broad checks and native visual/performance validation pass before marking ready

@nwparker

nwparker commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Closing as superseded — the linked issue (#8797) has been resolved on main by #10682 (627cde33d5), #36580 (4b4c833e10). Thanks for the contribution!

@nwparker nwparker closed this Nov 5, 2026
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.

[Bug]: "Background Opacity" and "Window Blur" have no visible effect on macOS

2 participants