Skip to main content
The runtime is one file with no dependencies, and most pages should include it. A page built with a framework of its own can implement the contract instead. This page lists what the recorder and the screenshot tool need, and shows a small page that honors all of it.
The recorder opens a page with t0=signal and starts the narration clock by calling window.DeckTalk.startClock(). A page that starts its own clock at load fires every cue early by the settle time and the recorder’s lead, and the video’s reveals land before their words. Wait for the call.

What the recorder needs

The magenta cover that hides the page until t=0 is the recorder’s, so a page needs no cover of its own. How it works explains what the cover is for.

What the screenshot tool needs

decktalk shots opens the page with no query and reads window.__decktalk.catalog, a list of { scene, name, steps } objects, and then opens ?step=ID for each step id. A page that has no catalog is skipped with a warning. Frame mode, shots --section N --at S, opens the page as the recorder does and reads window.__decktalk.fired for the log.

A minimal page

This page honors the whole contract in about forty lines. It has one scene with one step, and each cue reveals the element with the matching data-cue.
deck/plain.html
Point a section at it with page = "deck/plain.html" and scene = 1, and cue 1.1a and 1.1b in cues.json. The page has no autoplay timing, so a browser preview with ?scene=1 fires nothing until beats are given, and ?step=1.1 shows everything.

What the runtime adds

The runtime also gives a page an index of scenes and steps, autoplay from hold and data-at, the reveal effects, count-ups, typewriting, KaTeX typesetting with a wait for the library, a camera push, and the warning list. The runtime reference lists all of it, and a page by hand can grow any of it as needed.