Files
ukimsanov af5ebf09ce docs: four more the source contradicts, one of them mine
**`declareVariable`'s field is `declaration`, not `decl`.** Documented wrong in
three places across two SDK reference pages. This one fails *silently* — the
handler reads `op.declaration`, gets undefined, and returns EMPTY at
sdk/src/engine/mutate.ts:991. No throw, no patch, no error. A reader copies the
example and nothing happens. types.mdx opens by claiming it was verified against
types.ts, which is where the correct name is (line 134).

**Colour grading says eighteen presets; the Grade panel has thirteen.** Eighteen
is the combined total. The other five carry effects and live in the Effects
panel — colorGrading.ts derives GRADE_PRESETS by filtering EFFECT_PRESETS out,
and colorGrading.test.ts:25 asserts VHS Playback is *not* in Grade. I wrote that
sentence today and used VHS Playback as the example, so the page sent a reader to
Grade looking for something that is not there. The visual brief further down had
the same error baked in; fixed before anyone shoots it.

**`hyperframes render` on a slideshow does not fail — it lies.** The page said
export "is not currently supported", which reads like the command errors. The
skill is emphatic: a deck has no master root composition, so render resolves only
the first slide and writes a silently truncated MP4 — six seconds of a
forty-second deck, no warning. That is now a Warning saying exactly that.

I also swept every documented edit-operation field against sdk/src/types.ts.
Six looked wrong and five were my regex not stripping the `?` optional marker;
`easeEach` and `resolvedSelector` are real, at types.ts:178-179. One genuine
error out of that sweep, the one above.
2026-08-04 14:27:52 -07:00

92 lines
3.8 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Create an interactive presentation"
sidebarTitle: "Presentation"
description: "Build a navigable deck with reveals, notes, optional branches, hotspots, and presenter mode."
---
import { DocsVideo } from "/snippets/docs-video.jsx";
A HyperFrames slideshow stays interactive. The result is a live, navigable deck—not a linear MP4.
<DocsVideo
title="A real deck being navigated — fragments, a branch, and presenter mode"
src="https://static.heygen.ai/hyperframes-oss/docs/images/showcase/slideshow-demo-v1.mp4"
poster="https://static.heygen.ai/hyperframes-oss/docs/images/showcase/slideshow-demo-v1.jpg"
/>
This is a live capture of a running deck, not a video of slides. Watch the
fragments arrive one key-press at a time, a hotspot jump to a branch slide, the
back control return to the exact fragment it left, and presenter mode open with
real speaker notes and a running timer.
## Make the request
Give the agent the material and the decision the presentation should support:
```text
Using /hyperframes, turn this product strategy outline into a presentation for
our leadership review: [paste outline]
```
The agent confirms the audience, main outcome, and whether the deck needs
reveals, optional branches, or presenter notes. You do not need to prescribe
every slide before seeing the proposed structure.
If the result should play from beginning to end without a presenter, use a normal [video workflow](/workflows). A slideshow cannot be exported as one linear MP4 yet.
<Warning>
Do not run `hyperframes render` on a deck. It does not fail — a deck has no
master root composition, so the render resolves only the **first** slide and
writes a silently truncated MP4. You can get six seconds of a forty-second
deck and no warning that anything is missing.
Use `hyperframes present` for the live deck, or `hyperframes snapshot` for
per-slide stills.
</Warning>
## What control does the presenter need?
- **Present a clear story** — give every slide one claim, one useful visual, and concise speaker notes.
- **Reveal points as you speak** — use progressive reveals where the presenter should control the explanation.
- **Offer optional detail** — keep the main story direct and place deeper material behind clear branches and hotspots.
- **Convert an interactive page** — preserve its visual language and translate its motion into deliberate slide and reveal states.
Attach the source notes, document, page, or existing deck. Name the audience and what should change after the presentation.
## Keep the main story clear
- **Slides** carry one complete claim and one useful visual.
- **Reveals** let the presenter add part of an idea at a time.
- **Branches** hold optional detail without interrupting the story everyone sees.
- **Speaker notes** help the presenter; they should not repeat the slide.
The main story should still make sense when no optional branch is opened.
## Review it as a presenter
- Each slide makes one clear point.
- Reveals help the explanation.
- Hotspots are obvious without distracting.
- Embedded media stops when its slide is left.
- Presenter notes and the audience view stay separate.
- The complete deck works with keyboard, touch, and its visible controls.
Use [Studios Slideshow panel](/studio/slideshows) to adjust order, notes, reveals, and branches.
## Present the deck
```bash
npx hyperframes present <project-directory>
```
Open the local URL, then click **Present** or press **P**. The audience gets a clean full-screen view while the presenter keeps the current slide, next slide, notes, and timer.
In Google Meet, share the audience **tab**. In Zoom, move the audience tab into its own window and share that window.
## Related topics
- [Build and revise a slideshow in Studio](/studio/slideshows)
- [Use variables and templates](/studio/variables)
- [Create a linear video instead](/workflows)