Skip to content

feat(registry): Apple Liquid Glass components — iOS 26 + macOS Tahoe#1045

Merged
miguel-heygen merged 19 commits into
mainfrom
feat/vfx-liquid-glass-v2
May 24, 2026
Merged

feat(registry): Apple Liquid Glass components — iOS 26 + macOS Tahoe#1045
miguel-heygen merged 19 commits into
mainfrom
feat/vfx-liquid-glass-v2

Conversation

@miguel-heygen
Copy link
Copy Markdown
Collaborator

@miguel-heygen miguel-heygen commented May 23, 2026

Problem

The Liquid Glass catalog refresh needed the Apple-inspired blocks to behave like coherent UI, not just pretty still frames. The iOS dock had the wrong 282-badge app, the context-menu pointer flow did not make sense, the media/context glass surfaces had heavy dark backing, the widgets preview still read as black cards instead of frosted glass, the macOS Tahoe block used a weak abstract desktop instead of a native Mac-feeling wallpaper/UI, and local Mintlify needed the refreshed CDN preview videos.

What this fixes

  • Polishes Liquid Glass Media Controls by removing the dark backing slabs and letting the liquid-glass panels refract the shader background directly.
  • Reworks Liquid Glass Context Menu into a coherent interaction: click the file card, hover New Tab, reveal the submenu, then click Open in New Tab.
  • Keeps the context-menu end state coherent instead of fading text away while cached glass panels remain visible.
  • Updates Liquid Glass Widgets so the stat cards, showcase panel, and pill chips are translucent frosted/liquid surfaces instead of opaque black boxes.
  • Updates the iOS 26 home screen so the 282 badge belongs to WhatsApp in both the grid and dock.
  • Adds the original WhatsApp icon asset to the iOS block manifest while keeping the Messages notification icon separate for the notification stack.
  • Reworks macOS Tahoe Liquid Glass Desktop around the Golden Gate wallpaper asset, native desktop widgets, a compact Finder window, the real dock icon assets, and a top-right Messages notification that matches the standalone Liquid Glass Notification right-in, overshoot, and settle motion.
  • Uploads refreshed high-quality CDN preview videos/posters for iOS 26, context menu, media controls, widgets, and macOS Tahoe.

Root cause

The liquid-glass canvas renderer can keep glass surfaces visually present even when paired DOM text is faded with CSS opacity, so purely opacity-based exits could leave empty glass forms in the final frames. The context-menu pointer timeline also opened the submenu before the pointer had clearly selected the row, which made the interaction read as arbitrary. The widgets block had opaque content layers over the liquid-glass panels, which visually defeated the frosted-glass effect. The iOS dock reused the Messages icon where the referenced phone screen actually showed WhatsApp. The macOS Tahoe block relied on DOM-only glass captured through the 3D MacBook material, which washed out the UI; the final pass draws the native Mac glass UI directly into the captured desktop texture so it survives tone mapping.

Verification

Local checks

  • bunx oxfmt --check registry/blocks/liquid-glass-context-menu/liquid-glass-context-menu.html registry/blocks/liquid-glass-media-controls/liquid-glass-media-controls.html registry/blocks/ios26-liquid-glass/ios26-liquid-glass.html registry/blocks/ios26-liquid-glass/registry-item.json
  • bunx oxfmt --check registry/blocks/liquid-glass-widgets/liquid-glass-widgets.html registry/blocks/liquid-glass-widgets/registry-item.json docs/catalog/blocks/liquid-glass-widgets.mdx docs/public/catalog-index.json
  • bunx oxfmt --check registry/blocks/macos-tahoe-liquid-glass/macos-tahoe-liquid-glass.html registry/blocks/macos-tahoe-liquid-glass/registry-item.json
  • git diff --check
  • git diff --cached --check
  • bunx tsx packages/cli/src/cli.ts lint /tmp/hf-liquid-glass-renders/projects/liquid-glass-context-menu
    • 0 errors, 1 existing composition_file_too_large warning.
  • bunx tsx packages/cli/src/cli.ts validate /tmp/hf-liquid-glass-renders/projects/liquid-glass-context-menu
    • 0 errors, 5 contrast warnings on Share from the intentionally bright glass surface.
  • bunx tsx packages/cli/src/cli.ts lint /tmp/hf-liquid-glass-renders/projects/liquid-glass-media-controls
    • 0 errors, 1 existing composition_file_too_large warning.
  • bunx tsx packages/cli/src/cli.ts validate /tmp/hf-liquid-glass-renders/projects/liquid-glass-media-controls
    • No console errors.
  • bunx tsx packages/cli/src/cli.ts lint /tmp/hf-liquid-glass-renders/projects/ios26-liquid-glass
    • 0 errors, 1 existing composition_file_too_large warning.
  • bunx tsx packages/cli/src/cli.ts validate /tmp/hf-liquid-glass-renders/projects/ios26-liquid-glass
    • 0 errors, existing GLTF loader warnings, and contrast warnings from glass/dark iOS UI surfaces.
  • bunx tsx packages/cli/src/cli.ts lint /tmp/hf-liquid-glass-renders/projects/liquid-glass-widgets
    • 0 errors, 1 existing composition_file_too_large warning.
  • bunx tsx packages/cli/src/cli.ts validate /tmp/hf-liquid-glass-renders/projects/liquid-glass-widgets
    • No console errors.
  • bunx tsx packages/cli/src/cli.ts lint /tmp/hf-liquid-glass-renders/projects/macos-tahoe-liquid-glass
    • 0 errors, 1 existing composition_file_too_large warning.
  • bunx tsx packages/cli/src/cli.ts validate /tmp/hf-liquid-glass-renders/projects/macos-tahoe-liquid-glass
    • 0 errors, 0 warnings, 130 contrast warnings from hidden/texture DOM and translucent glass UI.

High-quality renders

All final renders used one worker and high quality with browser GPU:

  • liquid-glass-context-menu: --workers 1 --quality high --browser-gpu
    • 1920x1080, 30fps, 8.0s, 240 frames, 5,702,860 bytes.
  • liquid-glass-media-controls: --workers 1 --quality high --browser-gpu
    • 1920x1080, 30fps, 8.0s, 240 frames, 6,297,234 bytes.
  • ios26-liquid-glass: --workers 1 --quality high --browser-gpu
    • 1920x1080, 30fps, 15.0s, 450 frames, 12,367,935 bytes.
  • liquid-glass-widgets: --workers 1 --quality high --browser-gpu
    • 1920x1080, 30fps, 8.0s, 240 frames, 6,718,816 bytes.
  • macos-tahoe-liquid-glass: --workers 1 --quality high --browser-gpu
    • 1920x1080, 30fps, 15.0s, 450 frames, 15,508,334 bytes.

Browser verification

Local Mintlify was verified with agent-browser at http://localhost:3333:

  • http://localhost:3333/catalog/blocks/liquid-glass-context-menu
    • Video loaded from https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/liquid-glass-context-menu.mp4, 1920x1080; screenshot at /tmp/hf-liquid-glass-renders/browser-proof/context-menu-final-page.png; recording at /tmp/hf-liquid-glass-renders/browser-proof/context-menu-final-flow.webm.
  • http://localhost:3333/catalog/blocks/liquid-glass-media-controls
    • Video loaded from https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/liquid-glass-media-controls.mp4, readyState: 4, 1920x1080; screenshot at /tmp/hf-liquid-glass-renders/browser-proof/media-controls-page.png.
  • http://localhost:3333/catalog/blocks/ios26-liquid-glass
    • Video loaded from https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ios26-liquid-glass.mp4, readyState: 4, 1920x1080; screenshot at /tmp/hf-liquid-glass-renders/browser-proof/ios26-page.png.
  • http://localhost:3333/catalog/blocks/liquid-glass-widgets
    • Video loaded from https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/liquid-glass-widgets.mp4, readyState: 4, 1920x1080; screenshot at /tmp/hf-liquid-glass-renders/browser-proof/liquid-glass-widgets-video-page-latest.png; recording at /tmp/hf-liquid-glass-renders/browser-proof/liquid-glass-widgets-frosted-preview-latest.webm.
  • http://localhost:3333/catalog/blocks/macos-tahoe-liquid-glass
    • Video loaded from https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/macos-tahoe-liquid-glass.mp4, readyState: 4, 1920x1080, duration: 15, autoplaying; screenshot at /tmp/hf-liquid-glass-renders/browser-proof/macos-tahoe-notification-match-page.png; recording at /tmp/hf-liquid-glass-renders/browser-proof/macos-tahoe-notification-match-flow.webm.
  • Raw rendered MP4 opened in agent-browser from file:///tmp/hf-liquid-glass-renders/videos/macos-tahoe-liquid-glass.mp4; screenshot at /tmp/hf-liquid-glass-renders/browser-proof/macos-tahoe-notification-match-render-preview.png.
  • Multi-page docs preview recording: /tmp/hf-liquid-glass-renders/browser-proof/liquid-glass-docs-preview.webm.

CDN

Uploaded with AWS CLI to s3://heygen-public/hyperframes-oss/docs/images/catalog/blocks/ and invalidated CloudFront distribution E2BSLVSZ7FG3U0.

  • liquid-glass-context-menu.mp4: HTTP/2 200, content-type: video/mp4, content-length: 5702860, etag: "df985852ae294934a6ab674039ad534f".
  • liquid-glass-media-controls.mp4: HTTP/2 200, content-type: video/mp4, content-length: 6297234, etag: "8178e45f47c0755e75def587e252c2d3".
  • ios26-liquid-glass.mp4: HTTP/2 200, content-type: video/mp4, content-length: 12367935, etag: "baab125681755d8996777e377259f17e-2".
  • liquid-glass-widgets.mp4: HTTP/2 200, content-type: video/mp4, content-length: 6718816, etag: "1b969b7464b342c1e6297cbfb8cba0a7".
  • liquid-glass-widgets.png: HTTP/2 200, content-type: image/png, content-length: 1327407, etag: "abd2613887511eaa33ef76261c0317ba".
  • macos-tahoe-liquid-glass.mp4: HTTP/2 200, content-type: video/mp4, content-length: 15508334, etag: "07d8a4cab5da41e40327d3ff8939114a-2".
  • macos-tahoe-liquid-glass.png: HTTP/2 200, content-type: image/png, content-length: 913892, etag: "f0d485773cbe3bc18067c2a5cc0ef6a9".

Notes

  • The hosted Mintlify Deployment check was previously reported as SKIPPED, so preview proof is from local Mintlify plus uploaded CDN assets.
  • The final macOS Tahoe MP4 was also copied to /Users/miguel07code/Downloads/hyperframes-liquid-glass-renders/macos-tahoe-liquid-glass.mp4.
  • The remaining warnings are non-blocking: composition-size warnings on large single-file demos, GLTF loader UV warnings from the bundled iPhone model, and contrast warnings caused by intentionally translucent glass over animated backgrounds.

…-canvas

Complete rewrite of all 4 liquid glass registry blocks using
jeantimex/liquid-glass-html-in-canvas for real WebGPU glass rendering.

Architecture: Three.js aurora shader (z:0) + empty glass panels in
layoutsubtree canvas (z:1) + CSS text overlay (z:2). Text is crisp
and never passes through the glass shader.

- Renders via Brave with WebGPU + drawElementImage flags
- Continuous motion throughout — panels sweep across the screen
- liquid-glass.iife.js bundle (25KB) replaces liquid-dom (88KB)
@miguel-heygen miguel-heygen force-pushed the feat/vfx-liquid-glass-v2 branch from 0f0dbd6 to 77588b0 Compare May 23, 2026 19:10
rel="stylesheet"
/>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
rel="stylesheet"
/>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
rel="stylesheet"
/>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
rel="stylesheet"
/>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
- 4 liquid glass component blocks with WebGPU glass via
  liquid-glass-html-in-canvas (25KB): notification, context menu,
  media controls, widgets
- iOS 26 liquid glass home screen block (WIP): 3D iPhone with
  layoutsubtree canvas showing app grid with glass icons
- All blocks use 3-layer architecture: Three.js shader (z:0),
  glass panels in layoutsubtree canvas (z:1), CSS text overlay (z:2)
- Renders via Brave with WebGPU + drawElementImage flags
@miguel-heygen miguel-heygen changed the title feat(registry): add 4 liquid glass blocks with Liquid DOM feat(registry): Apple Liquid Glass components — iOS 26 + macOS Tahoe May 23, 2026
Replaces the phone screen content in vfx-iphone-device with an iOS 26
home screen: glass app icons (Weather, Stocks, ChatGPT, Slack, X, etc.),
status bar with battery/signal, search pill, dock with badges. All on a
real GLTF iPhone model with camera choreography.
Adds WebGPU support to the Chrome launch args alongside the existing
CanvasDrawElement flag. Use PRODUCER_HEADLESS_SHELL_PATH to point to
Brave for full WebGPU + drawElementImage support.

Also fixes flicker in liquid glass blocks by removing onpaint/requestPaint
callbacks that conflicted with GSAP's deterministic onUpdate rendering.

Adds macos-tahoe-liquid-glass block (WIP).
@miguel-heygen miguel-heygen merged commit b8d521e into main May 24, 2026
45 checks passed
@miguel-heygen miguel-heygen deleted the feat/vfx-liquid-glass-v2 branch May 24, 2026 16:33
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.

2 participants