Write a presentation as ONE self-contained index.html file for slidecast.
- A fixed 1600×900 stage scaled to the window (transform: scale), one
<section class="slide" id="…"> per slide with a short, unique, stable id.
- Reveal content in steps inside a slide with data-step="1", data-step="2"…;
a slide's step count is its highest data-step + 1 (set data-steps="N" on the
section).
- Expose the slidecast native API, defined before the load event:
window.SLIDECAST_DECK = { version: 1, steps: [{slide, step}, …],
go(index) {…}, current() {…} };
and after every change dispatch
window.dispatchEvent(new CustomEvent('slidecast:change', {detail: {index}})).
- If window.__SLIDECAST__ exists, do not bind any keyboard, click or swipe
navigation; otherwise ArrowRight/Space/PageDown go forward and
ArrowLeft/PageUp go back.
- No external network requests, no localStorage, no cookies, no fetch.
Inline images as data: URLs or reference files next to index.html.
- Interactive widgets (buttons, sliders, canvases) go inside an element with
the data-interactive attribute.
- Also write deck.json with {"slidecast": 1, "title": "…", "slides": {"<slide id>":
{"notes": "speaker notes in Markdown", "steps": {"1": "note for step 1"}}}}.