A product tour that drives your real app, then steps aside.
Below is a small, working release-notes board. Press play and a narrated cursor adds, edits and publishes real notes through the board's own code. Nothing is faked, so nothing has to be undone.
Recording saves the “Point at a thing” step as a timing file (.ltt.json). Replaying plays it back with exactly the same timing, which is how a narrated export stays in step.
Every verb the engine performed, timestamped from the run's first frame. The gap column is where the pacing model shows itself — switch Pacing above and play the same beat twice.
| t (ms) | gap | verb | detail |
|---|
Nothing yet — play a beat.
scene() is a recorder, not a runtime: it compiles to a plain Step[] that storyboard() plays. That array is the wire format — inspectable, generatable, diffable. Below is the selected beat's, verbatim (ƒ marks a callback, which is the one thing that does not serialize).
Pick a beat to see its steps.
This page runs the real library over a working board: add a note, click one to edit it, delete it, publish. The tour calls the same functions you do. Learn how Vetrina works, and how to use it →