From 4f1e18e6de7ba05e3c4228bf9adf206c49f23122 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Sat, 8 Aug 2026 06:22:40 +0000 Subject: [PATCH 1/4] feat(registry): add the lt-neon-border lower third Two arcs of light travel the edge of a rounded panel and snap corner to corner, trailing a three-layer bloom. We ship eleven lower thirds and none of them has a travelling light. The traversal is closed form rather than accumulated, which is what makes it seekable: total = t/beat, corner = floor(total), and the arc head is the eased interpolation between two corner positions, each a pure function of an integer. Seeking to frame N and playing to frame N produce the same bytes, verified by hash across two separate browser launches with a control frame to rule out a static image. Arcs are SVG dash offsets rather than sampled polylines, which is exact along a path and removes the need for a minimum-arc clamp. The bloom widens the stroke before blurring, since blur alone reads as haze rather than emitted light. Nine variables, every number carrying explicit min, max and step. --- .../blocks/lt-neon-border/lt-neon-border.html | 390 ++++++++++++++++++ .../blocks/lt-neon-border/registry-item.json | 98 +++++ registry/registry.json | 4 + 3 files changed, 492 insertions(+) create mode 100644 registry/blocks/lt-neon-border/lt-neon-border.html create mode 100644 registry/blocks/lt-neon-border/registry-item.json diff --git a/registry/blocks/lt-neon-border/lt-neon-border.html b/registry/blocks/lt-neon-border/lt-neon-border.html new file mode 100644 index 0000000000..6e1f966b3d --- /dev/null +++ b/registry/blocks/lt-neon-border/lt-neon-border.html @@ -0,0 +1,390 @@ + + + + + + + + +
+
+
+ +
+ Dr. Maya Chen + Host · Neuroscientist +
+
+
+
+ + + + diff --git a/registry/blocks/lt-neon-border/registry-item.json b/registry/blocks/lt-neon-border/registry-item.json new file mode 100644 index 0000000000..1dbca11aa4 --- /dev/null +++ b/registry/blocks/lt-neon-border/registry-item.json @@ -0,0 +1,98 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "cosmic-orb", + "type": "hyperframes:block", + "title": "Cosmic Orb", + "description": "An iridescent soap-bubble planet: a slowly spinning sphere of nebula bands, dust lanes and twinkling stars wrapped in a refracting glass limb with chromatic aberration at the edge.", + "stability": "experimental", + "dimensions": { + "width": 1920, + "height": 1080 + }, + "duration": 10, + "tags": ["webgl", "shader", "background", "showcase", "3d"], + "files": [ + { + "path": "cosmic-orb.html", + "target": "compositions/cosmic-orb.html", + "type": "hyperframes:composition" + } + ], + "params": [ + { + "key": "hue", + "label": "Nebula hue", + "type": "number", + "default": "268", + "min": 0, + "max": 360, + "step": 1 + }, + { + "key": "accent", + "label": "Accent hue", + "type": "number", + "default": "196", + "min": 0, + "max": 360, + "step": 1 + }, + { + "key": "spin", + "label": "Spin rate (turns per second)", + "type": "number", + "default": "0.035", + "min": 0, + "max": 0.5, + "step": 0.005 + }, + { + "key": "stars", + "label": "Star density", + "type": "number", + "default": "1", + "min": 0, + "max": 2, + "step": 0.05 + }, + { + "key": "glow", + "label": "Glow intensity", + "type": "number", + "default": "1", + "min": 0, + "max": 2, + "step": 0.05 + }, + { + "key": "size", + "label": "Orb size (fraction of frame height)", + "type": "number", + "default": "0.86", + "min": 0.2, + "max": 1.2, + "step": 0.01 + }, + { + "key": "pulse", + "label": "Beat pulse (0-1, flat value when no envelope is set)", + "type": "number", + "default": "0", + "min": 0, + "max": 1, + "step": 0.01 + }, + { + "key": "pulseEnvelope", + "label": "Beat pulse envelope: comma-separated 0-1 samples spread evenly across the clip", + "type": "text", + "default": "" + }, + { + "key": "backdrop", + "label": "Backdrop", + "type": "color", + "default": "#04040a" + } + ] +} diff --git a/registry/registry.json b/registry/registry.json index bff47f2948..00be03768f 100644 --- a/registry/registry.json +++ b/registry/registry.json @@ -223,6 +223,10 @@ "name": "lt-mask-reveal", "type": "hyperframes:block" }, + { + "name": "lt-neon-border", + "type": "hyperframes:block" + }, { "name": "lt-side-rule", "type": "hyperframes:block" From cf765947bad6f720dd408095b07e0bb6515ff5a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Sat, 8 Aug 2026 16:29:27 +0000 Subject: [PATCH 2/4] feat(registry): add five video primitives Five blocks aimed at the gaps in the catalog rather than at what was easiest to build. We are thick in passes, wipes, kinetic type and lower thirds, and thin in hero objects, depth and texture. cosmic-orb, a nebula sphere behind a refracting glass limb. A hero object, a shape the catalog had almost none of; it carries a title card alone. Analytic rather than raymarched, so cost is flat per pixel. gallery-tunnel, a corridor of panels flying toward camera. The cheapest real depth win available, and the only one whose panels are content slots, so it carries a shot rather than decorating one. lt-neon-border, two arcs of light travelling a rounded panel and snapping corner to corner. We ship eleven lower thirds and none had a travelling light. weight-wave, a crest of thickness moving along a headline. Every other kinetic type move animates transform, opacity or a mask; this animates the letterforms themselves. Ships Recursive subset to the two axes it uses. Requires the sweep-fingerprint fix, since font axes were not part of the layout audit and a duplexed font removes the last trace of motion. halftone-field, a dot grid tracking a flowing noise field. The catalog had no texture register, and this runs under type without competing with it. All five are closed form: state at frame N is computed from N, never from frame N-1. That is what makes them seekable, and it is verified per block by hashing a direct seek against stepped playback and against an out-of-order scrub, with a control frame to rule out a vacuously static pass. Frames were rendered and looked at rather than inferred from a passing check, which is not a visual gate. Two framework defects surfaced while building these and are fixed in the blocks that hit them. A timeline onUpdate callback does not fire on seek, because GSAP suppresses events there by default, so a canvas driven that way freezes on frame 0; the repaint hangs off a property setter instead. And a CSS-sized image uploads a 1x1 texture, because the browser samples the laid-out size rather than the natural one. --- docs/catalog/blocks/cosmic-orb.mdx | 57 ++ docs/catalog/blocks/gallery-tunnel.mdx | 58 +++ docs/catalog/blocks/halftone-field.mdx | 59 +++ docs/catalog/blocks/weight-wave.mdx | 43 ++ docs/docs.json | 5 + docs/public/catalog-index.json | 76 +++ registry/blocks/cosmic-orb/cosmic-orb.html | 416 +++++++++++++++ registry/blocks/cosmic-orb/registry-item.json | 98 ++++ .../blocks/gallery-tunnel/gallery-tunnel.html | 454 ++++++++++++++++ .../blocks/gallery-tunnel/registry-item.json | 101 ++++ .../blocks/halftone-field/halftone-field.html | 378 ++++++++++++++ .../blocks/halftone-field/registry-item.json | 108 ++++ .../blocks/weight-wave/assets/fonts/OFL.txt | 93 ++++ .../fonts/Recursive-wght-slnt-latin.woff2 | Bin 0 -> 76340 bytes .../blocks/weight-wave/registry-item.json | 116 +++++ registry/blocks/weight-wave/weight-wave.html | 299 +++++++++++ registry/registry.json | 492 +++++++++--------- 17 files changed, 2615 insertions(+), 238 deletions(-) create mode 100644 docs/catalog/blocks/cosmic-orb.mdx create mode 100644 docs/catalog/blocks/gallery-tunnel.mdx create mode 100644 docs/catalog/blocks/halftone-field.mdx create mode 100644 docs/catalog/blocks/weight-wave.mdx create mode 100644 registry/blocks/cosmic-orb/cosmic-orb.html create mode 100644 registry/blocks/cosmic-orb/registry-item.json create mode 100644 registry/blocks/gallery-tunnel/gallery-tunnel.html create mode 100644 registry/blocks/gallery-tunnel/registry-item.json create mode 100644 registry/blocks/halftone-field/halftone-field.html create mode 100644 registry/blocks/halftone-field/registry-item.json create mode 100644 registry/blocks/weight-wave/assets/fonts/OFL.txt create mode 100644 registry/blocks/weight-wave/assets/fonts/Recursive-wght-slnt-latin.woff2 create mode 100644 registry/blocks/weight-wave/registry-item.json create mode 100644 registry/blocks/weight-wave/weight-wave.html diff --git a/docs/catalog/blocks/cosmic-orb.mdx b/docs/catalog/blocks/cosmic-orb.mdx new file mode 100644 index 0000000000..a78d5c671e --- /dev/null +++ b/docs/catalog/blocks/cosmic-orb.mdx @@ -0,0 +1,57 @@ +--- +title: "Cosmic Orb" +description: "An iridescent soap-bubble planet: a slowly spinning sphere of nebula bands, dust lanes and twinkling stars wrapped in a refracting glass limb with chromatic aberration at the edge." +--- + +