Frame sheets
--max-dimension bounds the longer side, and 320 is enough to judge composition and motion.
One exact frame:
--tick is in ticks, not frames or seconds. At the conventional 240 ticks per second and 30 fps, one frame is 8 ticks.
Both commands print JSON to stdout with the output path, the ticks rendered, the dimensions and a diagnostics count. A diagnostics count above zero is worth a look: a frame that renders is not a frame that rendered correctly.
The preview server
The preview is the fastest way to export anything with glass, refraction or a custom shader, because frames are rendered on your GPU instead of interpreted per pixel in Node. The rest of the pipeline is the same. See Exporting media.
The server holds a port until it’s stopped, and prints its process id for exactly that:
--port to listen on a fixed port.
Loops
The review packet
review.json, a contact-sheet.png, and a frames/ folder. Frames are sampled across the timeline and rendered on checker, light and dark backgrounds (--backgrounds changes the set), then checked for blank frames, clipping, contrast and motion. Heavier than a frame sheet; worth running before shipping rather than on every edit.
In review.json, analysis.diagnostics is the list that matters. Per-frame renderer messages such as missing fonts live under frames[].rendererDiagnostics. The packet records the document revision it reviewed, so a review is a statement about one exact document.
Coverage for the WebGL player
If your site uses@clayzo/webgl-player, confirm it can draw what you authored. Mattes, nested clips and colour-space intrinsics in custom shaders need the CanvasKit player.

