Skip to content

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

Open
miguel-heygen wants to merge 14 commits into
mainfrom
feat/vfx-liquid-glass-v2
Open

feat(registry): Apple Liquid Glass components — iOS 26 + macOS Tahoe#1045
miguel-heygen wants to merge 14 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 to feel like real Apple surfaces instead of a static mock: the iOS block had too much dead space, the notification behavior was not native enough, the old geometric Liquid Glass catalog entry was still visible, and the docs previews needed real uploaded video assets.

What This Fixes

  • Rebuilds the iOS 26 block around a normal black home screen with status bar, app grid, badges, dock, search pill, and shader wallpaper.
  • Replaces the previous widget/control-center layout with a fluid top-to-bottom notification stack rendered as live liquid glass over the phone canvas.
  • Draws the notification cards directly into the captured phone texture so the rendered MP4 shows real refraction/blur instead of stale DOM overlay behavior.
  • Keeps the macOS/iOS app visuals on original app icon assets already packaged in the block.
  • Removes the stale geometric Liquid Glass catalog entry so only the actual Liquid Glass blocks remain.
  • Uploads refreshed catalog preview videos/posters to the docs CDN, including the final one-worker iOS render.

Root Cause

The iOS composition was relying on DOM state that looked acceptable in still preview but did not render the notification interaction richly enough once the screen was captured to a Three.js device texture. The catalog also still had a legacy block whose visual language did not match the new Liquid Glass set, and the docs page was showing static/stale preview assets until the rendered videos were uploaded.

Verification

Local

  • bunx oxfmt --check registry/blocks/ios26-liquid-glass/ios26-liquid-glass.html registry/blocks/ios26-liquid-glass/registry-item.json docs/catalog/blocks/ios26-liquid-glass.mdx docs/public/catalog-index.json
  • HYPERFRAMES_BROWSER_PATH="/Applications/Brave Browser.app/Contents/MacOS/Brave Browser" 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.
  • HYPERFRAMES_BROWSER_PATH="/Applications/Brave Browser.app/Contents/MacOS/Brave Browser" PRODUCER_HEADLESS_SHELL_PATH="/Applications/Brave Browser.app/Contents/MacOS/Brave Browser" PRODUCER_BROWSER_GPU_MODE=hardware bunx tsx packages/cli/src/cli.ts validate /tmp/hf-liquid-glass-renders/projects/ios26-liquid-glass
    • 0 errors, GLTF loader warnings, and contrast warnings from the glass/dark UI.
  • HYPERFRAMES_BROWSER_PATH="/Applications/Brave Browser.app/Contents/MacOS/Brave Browser" PRODUCER_HEADLESS_SHELL_PATH="/Applications/Brave Browser.app/Contents/MacOS/Brave Browser" PRODUCER_BROWSER_GPU_MODE=hardware bunx tsx packages/cli/src/cli.ts render /tmp/hf-liquid-glass-renders/projects/ios26-liquid-glass --output /tmp/hf-liquid-glass-renders/videos/ios26-liquid-glass.mp4 --workers 1 --browser-gpu
    • Completed: 8.2 MB, 14.9s, 1 worker.
  • ffprobe /tmp/hf-liquid-glass-renders/videos/ios26-liquid-glass.mp4
    • 1920x1080, 30 fps, 15.0s, 450 frames.

Browser

  • Local Mintlify preview: http://localhost:3333/catalog/blocks/ios26-liquid-glass
  • agent-browser verified the page video element is using the uploaded CDN MP4/poster, is not paused, has readyState: 4, and reports 1920x1080 video dimensions.
  • Browser screenshot: /tmp/hf-liquid-glass-renders/browser-shots/iphone-normal-screen/mintlify-ios26-final-reloaded.png
  • Browser recording: /tmp/hf-liquid-glass-renders/records/ios26-docs-preview.webm

CDN

  • Uploaded with AWS CLI to s3://heygen-public/hyperframes-oss/docs/images/catalog/blocks/ios26-liquid-glass.mp4 and .png.
  • curl -I -L https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ios26-liquid-glass.mp4 returns HTTP/2 200 with content-type: video/mp4.
  • curl -I -L https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ios26-liquid-glass.png returns HTTP/2 200 with content-type: image/png.

Notes

  • The hosted Mintlify Deployment check is currently reported as SKIPPED on the latest PR head, so the browser proof above is from local Mintlify running from docs/.
  • The composition still emits non-blocking GLTF loader warnings from the bundled device model and contrast warnings from intentionally glassy/dark UI surfaces.

…-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).
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