Generators
Generators
The built-in asset types and how to choose between them.
Every asset names a generator. Options come from settings.defaults["<id>"] merged beneath
the asset's own options (the asset wins). Each generator validates its own option shape.
| Generator | Output | Needs url? | Key options |
|---|---|---|---|
scroll-reel | mp4 (+ gif/webp/poster) | Yes | width/height/fps/duration, capture, choreography, autoSections, kenBurns, loop, clean-capture, colorScheme/viewports, aspect, outputs, intro/outro, annotations, actions, focus, routes |
screenshots | png / jpeg | Yes | breakpoints[], fullPage, format, elements[], deviceScaleFactor |
wall | mp4 | No | columns[] (tiles + per-column motion), pulses, loops, pan, gap/tileAspect, test |
image | (passthrough) | No | src, fileName |
specimen | mp4 | No | font, template, pulses, colors, seed |
palette | png | No | colors[], layout, corner fields |
palette-reel | mp4 | No | colors[], details, timing |
URL-based vs local generators
- URL-based (
scroll-reel,screenshots) capture a live page, so the asset needs aurl(and a running site or a managed server). With a managed server, an omittedurldefaults to the server root. - Local (
wall,image,specimen,palette,palette-reel) render from a font file, a colour list, or other assets — nourlrequired. Awallcomposites the assets its columns name (deriving its dependencies from them);imageregisters a file for reuse.
Video fidelity
The video generators capture frame-stepped by default: a virtual clock is driven, each
frame is screenshotted, and frames are piped to ffmpeg — so output is frame-accurate,
supersampled by deviceScaleFactor, parallelised across workers, and byte-identical
run-to-run. scroll-reel can fall back to capture: "realtime" for time-based hero
animations and scripted interactions; see the scroll-reel page.