Skip to content

settings: in-app glass has a material of its own - #687

Merged
foxnne merged 3 commits into
mainfrom
settings/in-app-material
Oct 20, 2026
Merged

foxnne merged 3 commits into
mainfrom
settings/in-app-material

Conversation

@foxnne

@foxnne foxnne commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Stacked on #685. Follow-up to #621, #664.

What changes

A new In-app material setting (Window settings, below Window material) says what the glass fizzy draws itself is made of — dialogs, menus, floats, toasts — apart from what the OS windows are made of.

  • Same as window (the default, in_app_material = null): as today, the window material as drawn, so the look stays one.
  • A kind of its own: drawn wherever fizzy's renderer can, whatever the windows are made of. On Linux a person on Clear or Opaque windows can pick Frost, Blur or Liquid Glass for the in-app glass (the SDF glass through the glass program), which settings: materials the platform can't draw are listed but disabled #685 otherwise can't give them.
  • Kinds the renderer cannot draw are listed, disabled, with a tooltip (core.material.inAppMissing: Liquid Glass needs the glass program; every fizzy backend has it, so today nothing is disabled outside a backend without programs). A saved kind it cannot draw falls back by settings: materials the platform can't draw are listed but disabled #685's rule and stays saved.
  • core.material publishes two values each frame: get (the window material: the backend and the OS windows) and inApp (the dialog style, LiquidField.publishEnabled, and whether the OS draws the app's glass for it on macOS 26, Popout.nativeGlass). inApp reads the window material until the app publishes.
  • FIZZY_GLASS, and a demo holding the window material, make the in-app glass follow the window again, so the tour's Materials chapter shows one look.
  • Both rows share one dropdown (materialDropdown). Settings.fieldEqual compares optionals, so an untouched in_app_material isn't written to settings.zon (integration test).

Left as it is: Apple's lens look (glass_look.inApp) is still macOS-only, so Liquid Glass in-app elsewhere is the glass program's frost with its bend, not the macOS lens.

SDK impact

  • None (test-sdk-version passes; core.material gains functions, the boundary's shape doesn't move)

Verified

Unit test in core/material.zig, and tests/integration.zig for the serialized default, (which kinds the in-app renderer draws, and the fallback without the glass program). Gates, locally on macOS: scripts/check-fmt.sh, zig build, zig build test, zig build test-integration (81/81 steps), zig build check-web, zig build test-sdk-version.

  • macOS: built and tested; not looked at in a running fizzy
  • Windows: CI cross-compile only
  • Linux: not run
  • Web: check-web only

Follow-ups

  • No fizzy.inAppMaterial command yet; tapes and agents reach only the window material.

  • The in-app availability is comptime (program_api on the backend), true on every fizzy backend, so nothing is disabled in shipped builds; a glass program that fails to compile still offers Liquid Glass.

  • The macOS lens look for in-app Liquid Glass on other OSes, if wanted.

🤖 Generated with Claude Code

foxnne and others added 2 commits October 19, 2026 20:41
On Linux the Window material setting offered Frost, Blur and Liquid Glass and then drew them
as a clear window ("shown as Clear"). A material the platform cannot draw is now listed,
greyed and not selectable, with a tooltip saying why. One place answers which materials a
platform draws and why not the others (backend/src/materials.zig); the backend's
materialKinds and the setting both read it, so the coming Linux blur only flips that answer.

A saved kind that cannot be drawn here falls back to the richest glass below it, else to an
opaque window, never to a clear one; the saved value is left as it is.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A new In-app material setting says what the glass fizzy draws itself is made of (dialogs,
menus, floats, toasts), apart from the OS window material. Same as window by default; a kind
of its own is drawn wherever fizzy's renderer can draw it, so on Linux a clear or opaque
window can still have frosted or Liquid Glass menus. Kinds the renderer cannot draw are
listed but disabled, saying why (core.material.inAppMissing).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@foxnne
foxnne force-pushed the settings/in-app-material branch from cc50146 to 8bf5222 Compare October 20, 2026 02:01
@foxnne
foxnne marked this pull request as ready for review October 20, 2026 02:12
Base automatically changed from settings/materials-available to main October 20, 2026 03:52
@foxnne
foxnne enabled auto-merge October 20, 2026 03:59
@foxnne
foxnne added this pull request to the merge queue Oct 20, 2026
Merged via the queue into main with commit 478baa9 Oct 20, 2026
11 checks passed
@foxnne
foxnne deleted the settings/in-app-material branch October 20, 2026 04:20
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.

1 participant