Files
hyperframes/docs
Miguel Ángel cf765947ba 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.
2026-08-08 16:29:27 +00:00
..
2026-08-07 19:50:48 -07:00