Commit Graph
82 Commits
Author SHA1 Message Date
ukimsanov 79c4056a3f docs: make Catalog visual and reproducible 2026-08-04 03:06:31 -07:00
Miguel Angel Simon Sierra ce7d75dbaa fix(registry): animate mk card offsets with transforms, not top/left
mk-background and mk-clone-wall-transition tween the card's `top`/`left`.
Layout properties snap to integer device pixels, so the move stutters under
the seek-by-frame capture engine (lint: gsap_non_transform_motion). Both
cards sit at top:0/left:0 in CSS, so the values carry straight over to x/y,
and in clone-wall the later scale composes cleanly with the translate.
Re-rendered both and diffed frames against the previous output — identical,
as intended: this changes how the motion is computed, not how it looks.

Adds scripts/lint-registry-items.mjs (bun run lint:registry-items), which
mounts each item into a throwaway project and lints it. Registry items ship
as `<name>.html`, so `hyperframes lint <dir>` fails with "No composition
found" and these items had never actually been linted — which is how both
errors reached main. Verified the script reproduces the original failure on
the pre-fix source.

Left as a local command rather than a CI gate for now; wiring it up needs
two prior fixes, noted in the PR.
2026-08-03 10:14:37 +02:00
Miguel Angel Simon Sierraandakiyoshisan1218 d3d286a1a5 feat(registry): add beat-freeze-cut
Beat-driven speed ramp, freeze-frame hit, and hard cut for music-led
promos and montages. Contributed as #2957; applied here as content so the
whole catalog set lands together.

Verified by rendering: 6s, clean, deterministic (the one Math.random hit
is a comment above a fixed pattern array). Opaque root, so no demo.html
is needed for its catalog preview.

Co-authored-by: akiyoshisan1218 <akiyoshisan1218@users.noreply.github.com>
2026-08-03 09:32:12 +02:00
Miguel Angel Simon Sierra 35231e964d fix(registry): connector geometry, family accent, and demo legibility
Found by stepping through motion contact sheets rather than single frames.

- hw-pipeline: arrowheads were two asymmetric barbs (l -30 -14 / l -26 18)
  fixed to horizontal, so they detached from a curve that arrives on a
  descending tangent. Barbs now derive from the quadratic's end tangent
  (end - control) with symmetric length and spread.
- hw-pipeline, hw-scribble-transition, hw-callout-circle: the family carried
  two accents — #ffb020 in hw-frame/hw-title/hw-underline and #6d6dff here.
  Unified on the warm marker accent; the blue read as a default UI colour.
- hw-callout-circle: the scribble hatch rendered as stacked bars over the
  labelled subject. More rows so the zigzag reads as a scribble, lighter
  weight and alpha so it sits behind the label.
- yt-camera-move: the stage grid was too faint to reveal the move, so the
  preview of a camera-move component looked static. Stronger grid; zoom,
  slide and tilt now read.

Demos resynced from source — demo.html is a plate-swapped copy, so a source
fix does not reach the catalog preview until it is regenerated.
2026-08-01 01:36:18 +02:00
Miguel Angel Simon Sierra a98c120383 style(registry): format mk / yt / hw family HTML with oxfmt
The contributed HTML predates any oxfmt pass, so format:check failed for
42 files in both the Format and Preflight jobs. All 29 items re-rendered
after formatting and verified against frames — no visual change.
2026-08-01 01:19:58 +02:00
Miguel Angel Simon Sierraandjbernard077 f252ec6d99 feat(registry): mk / yt / hw theme families — 29 items
Adds three themed registry families contributed by @jbernard077:

- mk-*  minimal presentation  (7 blocks, 3 components)
- yt-*  retro-broadcast creator (5 blocks, 4 components)
- hw-*  hand-drawn scribble   (6 blocks, 5 components)

Consolidates PRs #1933, #1992, #1993 and #1994, cuts 5 of the original 34
items, and fixes the defects that CI never got to report.

Cut (5), each covered by something we already ship or trivial to inline:
- yt-doc-lower-third — would be the 12th name/role lower third next to the
  10 lt-* variants and lower-third-bild
- mk-logo-sting — logo-outro exists, and yt-logo-intro is the richer version
- mk-cta-button, mk-pill-callout, yt-avatar-pip — a styled button, a styled
  chip and a masked circle

Fixes:
- hw-path-text rendered as a solid black blob. #hw-pt-path is the textPath
  carrier and had no rule, so it inherited SVG's default black fill while
  only #hw-pt-guide set fill:none.
- mk-line-graph value labels collided with their own dots and each other.
  Series after the first now label downward, and the offset moved off a CSS
  transform because the entrance tween animates y and GSAP rewrote it.
- Added demo.html for the 11 components and the 3 transparent-root blocks.
  Without it generate-catalog-previews.ts skips components entirely, so the
  catalog-previews job failed for every component in the original PRs.
- Tagged hw-title, hw-pipeline and hw-path-text as overlays.

Also registers all catalog pages in docs.json, which the original PRs left
orphaned, and picks up 4 pre-existing blocks that had no catalog page
(camcorder-hud, editorial-flash-overlay, freeze-frame-dressing,
organic-light-leak-overlay) because the regenerated nav now links them.

Every item was verified by rendering it and looking at the frames.

Co-authored-by: jbernard077 <jbernard077@users.noreply.github.com>
2026-08-01 01:03:39 +02:00
Miguel Angel Simon Sierra 58ef6aca67 Merge branch 'pr-1994' into review/registry-families
# Conflicts:
#	registry/registry.json
2026-07-31 22:18:42 +02:00
Miguel Angel Simon Sierra be76a932c9 Merge branch 'pr-1993' into review/registry-families
# Conflicts:
#	registry/registry.json
2026-07-31 22:18:26 +02:00
Miguel Angel Simon Sierra 4c54f45f46 Merge branch 'pr-1992' into review/registry-families
# Conflicts:
#	registry/registry.json
2026-07-31 22:17:05 +02:00
Miguel Angel Simon Sierra 012f4f8f48 Merge branch 'pr-1933' into review/registry-families 2026-07-31 22:11:45 +02:00
tianma-if 2bb6205177 fix(registry): register device timeline synchronously (#2546) 2026-07-28 10:10:39 +00:00
ukimsanov b0d3164ddb feat(registry): add media treatment overlays 2026-07-24 18:42:23 -07:00
Paweł b44bc4ffaf fix(registry): position flowchart typing beats with label-relative offsets (#2549)
The flowchart and flowchart-vertical blocks read tl.labels["hold5"] back
from the timeline to schedule the "Pythom" -> "Python" typing correction.
The render compiler executes composition scripts under a GSAP proxy whose
timeline exposes no readable .labels map, so this line throws
("Composition script failed ... Cannot read properties of undefined
(reading 'hold5')") before window.__timelines is assigned. The block is
never registered: renders show only the dotted-grid background and every
render pays the 45s sub_timeline_readiness_timeout.

Use GSAP's own label-relative position syntax ("hold5+=<offset>") instead,
matching every other step in these files. Identical timing, no .labels read.

Verified with hyperframes@0.7.60 render: block was blank before, animates
after; the readiness timeout disappears.
2026-07-16 23:17:15 -04:00
WaterrrForever c8d13af9b2 docs(registry,skills): surface code-highlight 0-based indexing and opacity-reveal sweep guidance (#2418)
* docs(registry,skills): surface code-highlight 0-based indexing and opacity-reveal sweep guidance

From the 2026-07-14 CLI feedback digest (skills-owner action): a user
building code teaching videos hit two authoring gaps.

1. code-highlight's `line` is intentionally zero-based (`line: 1` =
   second displayed line) but the warning lived only in pr-to-video's
   code-vocabulary reference — nowhere an author actually touches the
   value. Call it out at the block-use sites: the `__BLOCK` declaration
   itself, the registry-item description, and the motion-graphics
   catalog map.

2. Opacity-only code-typing tripped `sweep_static` for that user, who
   worked around it with a slow host y-drift. The sweep fingerprint
   does include per-element opacity, so document the actual trap (a
   reveal that settles before the sampled window, then holds a static
   frame) and the idiomatic fixes (spread the reveal / keep a blinking
   caret alive) in the check reference — and pin the fingerprint's
   opacity sensitivity with a regression test covering both the
   visibility-floor crossing and a mid-fade value change.


* docs(catalog): regenerate code-highlight page from updated registry-item description

Only the code-highlight page is committed: a full generate-catalog-pages
run also surfaces ~34 blocks missing from the git-tracked catalog index
(pre-existing drift on main), which belongs in its own chore PR.
2026-07-16 00:27:18 +08:00
Miguel Ángel 26eb5956e5 fix(registry): install liquid-glass runtimes (#2451)
* fix(registry): install liquid-glass runtime

* fix(registry): cover liquid-glass sibling runtimes

* test(registry): satisfy manifest audit
2026-07-14 19:09:41 -04:00
jbernard077andClaude Fable 5 264f2f1401 feat(registry): add hw-scribble-transition — scribble transition
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:59 -04:00
jbernard077andClaude Fable 5 4467a8d61c feat(registry): add hw-frame — sketched frame
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:59 -04:00
jbernard077andClaude Fable 5 6624023374 feat(registry): add hw-path-text — text along a path
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:59 -04:00
jbernard077andClaude Fable 5 b77a163845 feat(registry): add hw-pipeline — hand-drawn flowchart
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:59 -04:00
jbernard077andClaude Fable 5 fae6560766 feat(registry): add hw-title — handwritten title
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:59 -04:00
jbernard077andClaude Fable 5 3beed70e56 feat(registry): add hw-text-cloud — speech bubble
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:59 -04:00
jbernard077 e9d2792824 feat(registry): add yt-doc-lower-third — documentary lower third 2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 44cd520253 feat(registry): add mk-logo-sting — outline logo sting
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 ba774de05c feat(registry): add yt-vertical-fill — vertical media filler
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 4ce35b7cba feat(registry): add mk-line-graph — minimal line graph
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 2039bf5f44 feat(registry): add mk-progress-stat — count-up stat card
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 8948612359 feat(registry): add yt-logo-intro — logo intro sequence
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 9036e3c76c feat(registry): add yt-prism-title — chromatic fringe title
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 fc40c882e1 feat(registry): add mk-clone-wall-transition — text clone wall transition
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 ac8d34fb9d feat(registry): add mk-placeholder-grid — rounded media grid
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 a4ef52fcb0 feat(registry): add yt-comment-card — comment cards
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 9be7a6415c feat(registry): add mk-callout-highlight — word-sweep highlight
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 a7f83f6fc6 feat(registry): add yt-lcd-background — scanline board background
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 3e4a4042e5 feat(registry): add mk-specs-list — specs checklist
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:58 -04:00
jbernard077andClaude Fable 5 61c82135f3 feat(registry): add mk-background — minimal procedural gradient background
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:50:36 -04:00
Vance IngallsandClaude Opus 4.8 b95f2ca25e fix(ci): format migrated comps with oxfmt, sync skills manifest
CI failures were two root causes (preview-regression was a cascade — its gate
mirrors preview-parity, which was skipped because the Preflight lint+format job
failed):

- Preflight (lint + format): the migrated registry comps (flowchart,
  flowchart-vertical, liquid-glass-notification, vignette demo) were committed
  unformatted — the lefthook format step only ran oxfmt on staged TS, not HTML,
  so `oxfmt --check .` failed in CI. Ran oxfmt on all four. The vignette title's
  per-glyph spans use oxfmt's `</span>`-split form, which keeps the glyphs
  adjacent (no inter-element whitespace), so rendering is unchanged.
- Skills: manifest in sync: the pre-commit hook's manifest generator and CI's
  canonical `gen-skills-manifest.ts` produced different content hashes for the
  same skill; regenerated with the canonical generator so the committed manifest
  matches what CI computes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 14:46:49 -07:00
Vance IngallsandClaude Opus 4.8 619a603eab feat(lint): add gsap_non_transform_motion rule, migrate registry comps to transforms
Animating layout properties (left/right/top/bottom/margin*) or using
roundProps snaps motion to integer device pixels. Under the seek-by-frame
capture engine this is invisible at high per-frame deltas (fast tweens) but
visibly stutters at low deltas (slow tweens / ease-out tails): sub-pixel
movement rounds to the same pixel for several frames, then jumps a whole
pixel. Transforms (x/y/scale) interpolate sub-pixel and stay smooth.

New rule gsap_non_transform_motion (error):
- Sources timeline tweens from the acorn parser's full animation list, so
  label- and relative-positioned tweens (tl.to(..., "label") / "+=1") are
  covered and real AST keys avoid phantom-prop / nested-brace misreads.
- Exempts html-in-canvas elements (a <canvas layoutsubtree> ancestor): they
  are rasterized from sub-pixel getComputedStyle and do not integer-snap.
  Per-element resolution, so a grouped glass+text tween still flags the
  plain-DOM half. roundProps is never exempt (it rounds before the style).
- Uses Object.hasOwn for the layout-prop lookup, skips set(), and merges
  standalone gsap.* calls.

Migrated 9 registry compositions off layout-prop animation onto transforms,
each render-verified visually identical:
- liquid-glass-{notification,widgets,media-controls,context-menu}: plain-DOM
  text overlays -> transforms; glass panels stay on left/top (canvas-exempt).
- vignelli: curtain wipes left:% -> xPercent.
- lt-mask-reveal: sweep left:% -> x px.
- flowchart, flowchart-vertical, decision-tree: cursor paths left/top -> x/y.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 09:46:02 -07:00
ab818a2f1d feat(registry): add lower thirds catalog blocks (#1134)
Adds news ticker from #1134, the podcast/interview lower-thirds pack from #1689,
and the BILD-style lower third from #1276.

Also adds generated catalog pages for flowchart-vertical and vfx-liquid-glass
from #1525, plus a Lower Thirds catalog group for discovery.

Co-authored-by: Miguel Ángel <miguel.sierra@heygen.com>
Co-authored-by: Kiyeon Jeon <kiyeonjeon21@users.noreply.github.com>
Co-authored-by: sunlesshalo <198846711+sunlesshalo@users.noreply.github.com>
Co-authored-by: Moritz <moritz.wedel@axelspringer.com>
Co-authored-by: Claude Sonnet <noreply@anthropic.com>
Co-authored-by: Dashsoap <42135402+Dashsoap@users.noreply.github.com>
2026-06-25 16:53:44 -04:00
WaterrrForeverandClaude Opus 4.8 4db708eb4a fix(core): register sub-composition timelines after async build + lint rule (#1638)
* fix(core): register sub-composition timelines after async build + lint rule

When a composition builds its GSAP timeline inside document.fonts.ready (or any
async callback), registering window.__timelines[id] BEFORE the build leaves an
EMPTY timeline registered. The runtime's sub-composition readiness gate treats
"key present" as "ready" and nests the child once — an empty timeline gets
nested empty and is never re-nested, so the frame renders blank when used as a
sub-composition.

- registry/blocks/code-{diff,highlight,morph,scroll,typing}: register the
  timeline AFTER the fonts.ready build completes, then call
  window.__hfForceTimelineRebind() to re-nest now that it is populated.
- core lint: add rule gsap_timeline_registered_before_async_build to flag the
  early-registration anti-pattern, with tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* test(studio): import commitGsapPositionFromDrag from its actual module

The function was split out into gsapDragPositionCommit.ts in #1605, but the
test kept importing it from ./gsapDragCommit, which no longer exports it —
yielding 'is not a function' at runtime. Import from the correct module.

Inherited main breakage (same fix as #1631/#1635); fixes the Test CI check on
this branch independently of merge order.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 22:50:04 +08:00
Miguel Ángel 07030294e0 feat(registry): add Code Animations catalog section (9 blocks, incl. GPU)
Adds a Code Animations catalog section — 9 self-contained, installable blocks:
morph, snippet-flight, typing, diff, highlight, scroll (DOM/GSAP) and 3d-extrude,
shader-dissolve, particle-assemble (WebGL). Each block ships only its own effect and
renders deterministically (paused GSAP timeline seeked per frame, seeded RNG, no
render-time data fetch). Wires the catalog nav, registry.json, a new code-animation
Studio category, and preview assets.
2026-06-15 21:32:45 -04:00
James RussoandClaude Opus 4.8 e845793ce1 chore: shrink repo — untrack failure frames, recompress backgrounds, harden LFS (#1326)
No-coordination repo-size cleanup (no history rewrite — SHAs unchanged):

- Untrack 158 producer regression-test failure artifacts (~27 MB); already
  gitignored, on-disk copies kept.
- Recompress 13 byte-identical code-snippet block backgrounds (5120x2880/3.3MB
  -> 2560x1440 q78/~428KB): 42 MB -> 5.4 MB. Per-block files kept for portability.
- Recursive LFS patterns (packages/producer/tests/**/*.{mp4,mov,webm,png}) +
  globalized *.onnx — closes the nested-path leak.
- Recursive .gitignore for tests/**/failures/ at any depth.
- scripts/check-large-files.sh + lefthook `largefiles` gate (>500KB non-LFS
  fails commit; excludes registry/). Review fixes: ceiling division, skip
  symlinks, space-safe staged-file read.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 16:05:45 -07:00
Miguel ÁngelandClaude Sonnet 4.6 689deaf4b8 feat(registry): add Apple Terminal theme code snippet blocks (#1161)
* feat(registry): add Apple Terminal theme code snippet blocks

Adds 12 Apple Terminal built-in profile visualizer blocks to the
Code Snippets catalog section, following the same pattern as the
VS Code theme blocks (commit 5245e190).

Themes: Basic, Clear Dark, Clear Light, Grass, Homebrew, Man Page,
Novel, Ocean, Pro, Red Sands, Silver Aerogel, Solid Colors.

Each block is a self-contained 1920×1080 composition showing a
macOS Terminal.app window in the matching profile colors, with
per-character GSAP typing animation and window.__timelines contract.

Install individually:
  npx hyperframes add code-snippet-apple-terminal-basic

Install all Apple Terminal themes:
  npx hyperframes add apple-terminal

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(registry): remove placeholder preview URLs for unrendered Apple Terminal themes

The 8 themes without rendered videos (clear-dark, homebrew, novel,
ocean, pro, red-sands, silver-aerogel, solid-colors) had preview.video
URLs pointing to non-existent S3 objects, returning 403. Removed the
preview field from their registry-item.json and the video embed from
their MDX pages until renders are available.

The 4 themes with uploaded videos (basic, clear-light, grass, man-page)
retain their preview URLs and are live on CDN.

* fix(registry): add apple-terminal tag so npx hyperframes add apple-terminal works

* feat(registry): render + upload all 12 Apple Terminal preview videos to CDN

Rendered the 8 missing themes (clear-dark, homebrew, novel, ocean, pro,
red-sands, silver-aerogel, solid-colors) using npx hyperframes@latest
render and uploaded to the hyperframes CDN. All 12 themes now have
live preview.video URLs and video embeds in their MDX pages.

All 12 CDN URLs return 200.

* style: format Apple Terminal HTML and JSON files with oxfmt

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 12:12:46 -04:00
Miguel Ángel 5245e19062 feat(registry): add code snippet blocks with VS Code workbench (#1113)
* feat(registry): add VS Code theme visualizer example

Full VS Code workbench recreation with per-character typing animation
across 12 built-in themes. Includes activity bar, sidebar, tabs,
editor with line-by-line cursor tracking, terminal panel, and status
bar — all driven by official VS Code theme JSON files.

Themes: Dark Modern, Dark 2026, Dark+, Light Modern, Light 2026,
Light+, Visual Studio Dark, Visual Studio Light, High Contrast,
High Contrast Light, Solarized Light, Monokai.

Includes build scripts to regenerate compositions from theme JSON.

* feat(registry): add 12 code snippet blocks for hyperframes add code

Individual blocks for each VS Code built-in theme, all tagged "code"
so `npx hyperframes add code` installs the full set.

Each block is a self-contained VS Code workbench with per-character
typing animation, activity bar, sidebar, tabs, terminal, and status
bar driven by official theme JSON data.

* docs: add mdx pages for code snippet blocks and example

- 12 block doc pages under catalog/blocks/code-snippet-*
- "Code Snippets" nav group in docs.json
- vscode-theme-visualizer entry in examples.mdx

* docs: revert examples.mdx — code snippets belong in catalog only

* docs: drop redundant 'Code Snippet' prefix from sidebar titles

* docs: add video previews to code snippet catalog pages

* style: format HTML, CSS, and MJS files for CI

* fix: address review feedback — build pipeline, LICENSE, dead code, nav order

1. Build script now regenerates both example compositions AND published
   blocks in registry/blocks/code-snippet-*/, keeping them in sync.
2. Add MIT LICENSE for vendored VS Code theme JSONs (microsoft/vscode).
3. Remove dead `chars` variable from runtime, build script, all blocks,
   and all example compositions.
4. Alphabetize Code Snippets nav group in docs.json to match catalog
   convention.

* style: format all build-generated files (render-entries, CSS, index)
2026-05-28 16:02:44 -04:00
Miguel Ángel b37236ed97 fix(registry): match Tahoe notification motion 2026-05-24 01:19:24 -04:00
Miguel Ángel 4819d84786 feat(registry): polish macOS Tahoe liquid glass 2026-05-24 00:44:21 -04:00
Miguel Ángel 83dc57ad77 feat(registry): frost liquid glass widgets 2026-05-23 23:25:44 -04:00
Miguel Ángel f9fcf33c08 feat(registry): polish liquid glass previews 2026-05-23 22:37:37 -04:00
Miguel Ángel 4913bf3782 feat(registry): refine iOS Liquid Glass home screen 2026-05-23 20:52:30 -04:00
Miguel Ángel 3224a5d581 feat(registry): polish Liquid Glass catalog blocks 2026-05-23 19:34:00 -04:00
Miguel Ángel eb7ca3c1c0 fix: fully remove glass lens, zoom camera closer to iPhone screen 2026-05-23 16:51:50 -04:00