Document format
Pages, objects, notes and playback settings.

A document contains YAML settings, page separators and objects. Markdown in Source is the saved representation.
The first pair of --- lines encloses settings. Later standalone --- lines separate slides. New documents use textFormat: markdown.
<!= textbox id="claim" type=text font="Noto Sans SC Variable" size=36 pos="8,20" width=1300 textSizing=auto-height >
An **important** claim with $x^2$.Sizing is auto-width, auto-height or fixed. Position uses percentages; dimensions use canvas pixels. Fixed height must be explicit.
$…$ is inline math; $$…$$ is display math. Removing dollar delimiters restores text.
<!-- presenter-notes
A speaking cue for this slide.
-->Notes are stored after slide content and excluded from the audience view. A timing budget is in page settings as timing: { budgetMs: 30000 }.
Duplicating a slide preserves cross-slide object IDs. Duplicating within a slide creates new IDs. Mathematical motion uses identity, glyphs and explicit anchors.
Shapes use explicit shape fields. Table text stays Markdown, with optional relative column widths. Media objects use type=media; their metadata includes media type, title and playback options. The body holds an attachment URL or embedded file.
A media playback interval uses playback fields start, end, volume and progress. Start/end are seconds; null end means full duration. Prefer inserting in Canvas, then inspecting Source.
Invalid source reports an error and preserves the last valid model. Unknown protocol fields are preserved through the central parser and serializer.
Workbench fields are written when creating a slide or explicitly using a feature. Historical documents, browser records and snapshots are not batch-migrated.
| Location | Field | Meaning |
|---|---|---|
| Document settings | attachments | Original PDF ID, name, MIME type and resource URL; projects collect the original bytes |
| Slide settings | pageId, section | Stable slide identity and section heading; duplication creates a new page identity |
| Slide settings | guides, snapGrid | Guide axes/positions and explicit grid settings |
| Slide settings | comments | Text, object ID or slide position, and resolution state |
| Object declaration | layer, rotation | Name, visibility, lock and rotation angle |
| Object declaration | imageEditing | Corner resize mode, percentage crop, crop shape, exposure and temperature |
| Object declaration | effects, mask | Explicit effects and a polygon in normalized image coordinates |
The interface generates complex fields and the central parser validates them. Inspect an example in Source before editing its declaration. Hidden layers disappear from Canvas, thumbnails and playback; locking only constrains editing. Presentation ink is saved separately as SVG rather than added to these fields.