Engine

Time, motion, music, reading and transitions, imported from @intentface-launch/core.

import { … } from "@intentface-launch/core". Everything is a pure function of the frame, so any frame renders alone.

Video and time

ToolWhat it does
defineVideoDeclares a video: shots end to end, overlapped by their transitions, with audio, formats and variants.
useFrameThe current frame, counted from the enclosing shot or Sequence ({ from: "ask" } counts from another shot).
useSecondsSeconds since the start of the enclosing shot or Sequence.
useVideoInfoThe video's fps, size, format on screen and variant, and duration: the length of the enclosing shot in frames.
useVariantThe variant on screen and its data.
SequenceShows its children for a range of frames, with the clock restarting at 0.
waitForHolds the frame until a promise settles (image decode, data load). Pass a label to name it in stall reports.
withVariant, withFormatThe video as one of its variants or formats.

Motion

ToolWhat it does
interpolateMaps a value through piecewise segments, eased per segment.
progress0 to 1 over a duration from a start frame. The workhorse for reveals.
ease, bezierNamed easing curves, and CSS cubic-bezier easing.
overshootEaseAn entrance that passes its target once and settles, landing on time.
spring, springsA closed-form damped spring, and named presets.
springToA value that changes target many times, keeping its speed through each change. Also takes points.
springEaseA spring as an easing that still arrives when the key says.
springVelocity, springToVelocityA spring's speed at a frame: what a move hands to the next shot at a cut.
settleFramesFrames until a spring stays near its target: when the next beat can start.
landedA spring-driven position that lands on whole pixels: fractional while it moves, the rounded target once within 0.2 px. Rounding every frame makes the slow tail step.
springFeel, springsAtSprings as { duration, bounce } in frames.
motion, personalitiesOne easing family, spring, duration and stagger per video: premium, energetic, playful.
durations, staggersNamed durations and staggers, scaled to the frame rate or a tempo.
randomSeeded random numbers, the same in every worker.
lerpLinear interpolation.
toOklch, mixColor, formatOklchColours in OKLCH, mixed the short way round the hue.
springColorspringTo for a colour, in OKLCH. From or to a near neutral it moves straight in OKLab, so it never passes through other hues.

Music and sound

ToolWhat it does
tempoMusical time: t.beats(16) in frames. Pick a BPM whose beat is a whole number of frames.
beatGridDetected beats from beats.json as frames, for tracks that drift from their tempo.
findBreathsQuiet stretches in a track, for the silence before a reveal.
editBeatsBeat times after an audio.edit replays passages.
audioLevelsReads a levels file: at, smooth, pulse, accumulate, phraseAt. For things that move with the sound.

Text, captions and formats

ToolWhat it does
readingTimeHow long a text must hold to be read.
readingTimeOnBeatsThe same, rounded up to whole beats.
wordTimingsThe frame each word appears at, for kinetic type without a voice-over.
lintTextFlags headlines over 6 words and lines over 42 characters.
declareTextTells check what text a canvas or WebGL stage paints, so it is checked like DOM text.
resolveCaptions, cueAt, wrapLinesCaption cues as frames, wrapped and kept from overlapping.
clearArea, platformZonesWhere text can go in a vertical cut, clear of TikTok, Reels and Shorts UI (what check holds 9:16 text to).
safeZone, SAFE_ZONESOne rectangle for laying out a vertical cut that works on every app: organic (790 × 1200 at 1080 × 1920) or ads (660 × 980). Dated October 2026.

Transitions

import { transitions } from "@intentface-launch/core", set as a shot's transition.

TransitionWhat it does
fadeA plain cross-dissolve. Safe over 3D.
blurDissolve with the outgoing shot blurring away. The house transition.
zoomThe outgoing shot falls back while the next rises in front.
pushBoth shots travel together, like a pan.
whipA fast whip pan, blurred along the move. 12 to 18 frames.
wipeA straight, feathered edge at any angle.
irisA circle opening from a point.
shapeAny SVG shape (a star, the product's mark) growing from a point.
clockA clock hand sweeping round.
sweepA band of light crosses the frame and the cut happens under it.
zoomIntoPushes into an element that becomes the next scene.
matchCutPlaces the incoming element where the outgoing one was, then springs it home at the speed it had.
displaceDissolve through a liquid distortion.
lumaThe next shot appears through noise, darkest first, like ink.
chromaticA glitchy RGB split. 12 to 20 frames.
honestA short dissolve where the edit skips time, so a slow result does not look instant.
wipeMask, circleMask, clockMaskThe same reveals as CSS masks, for any layer.

Capture scripts and config

ToolWhat it does
defineCaptureFrom @intentface-launch/core/capture: a script that drives the running product, frame-stepped, with snapshots and marks.
secretAn API key or demo login from the environment or the env file secrets names. Never printed, and replaced in snapshots and manifests.
defineConfigFrom @intentface-launch/core/config: launch.config.ts, with the product, linked products, secrets and check thresholds.