frameyard 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +101 -0
- package/GLOSSARY.md +156 -24
- package/README.md +103 -31
- package/dist/cli.js +112 -19
- package/dist/cli.js.map +1 -1
- package/dist/composition/adapter.d.ts +30 -0
- package/dist/composition/adapter.d.ts.map +1 -0
- package/dist/composition/adapter.js +2 -0
- package/dist/composition/adapter.js.map +1 -0
- package/dist/composition/animation.d.ts +19 -0
- package/dist/composition/animation.d.ts.map +1 -0
- package/dist/composition/animation.js +55 -0
- package/dist/composition/animation.js.map +1 -0
- package/dist/composition/attributes.d.ts +7 -0
- package/dist/composition/attributes.d.ts.map +1 -0
- package/dist/composition/attributes.js +24 -0
- package/dist/composition/attributes.js.map +1 -0
- package/dist/composition/descriptor.d.ts +30 -0
- package/dist/composition/descriptor.d.ts.map +1 -0
- package/dist/composition/descriptor.js +188 -0
- package/dist/composition/descriptor.js.map +1 -0
- package/dist/composition/diagnostics.d.ts +12 -0
- package/dist/composition/diagnostics.d.ts.map +1 -0
- package/dist/composition/diagnostics.js +38 -0
- package/dist/composition/diagnostics.js.map +1 -0
- package/dist/composition/index.d.ts +12 -0
- package/dist/composition/index.d.ts.map +1 -0
- package/dist/composition/index.js +7 -0
- package/dist/composition/index.js.map +1 -0
- package/dist/composition/media.d.ts +27 -0
- package/dist/composition/media.d.ts.map +1 -0
- package/dist/composition/media.js +162 -0
- package/dist/composition/media.js.map +1 -0
- package/dist/composition/paths.d.ts +5 -0
- package/dist/composition/paths.d.ts.map +1 -0
- package/dist/composition/paths.js +16 -0
- package/dist/composition/paths.js.map +1 -0
- package/dist/composition/transcripts.d.ts +19 -0
- package/dist/composition/transcripts.d.ts.map +1 -0
- package/dist/composition/transcripts.js +57 -0
- package/dist/composition/transcripts.js.map +1 -0
- package/dist/composition/walk.d.ts +10 -0
- package/dist/composition/walk.d.ts.map +1 -0
- package/dist/composition/walk.js +32 -0
- package/dist/composition/walk.js.map +1 -0
- package/dist/contracts.d.ts +14 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/html/document-adapter.d.ts +5 -0
- package/dist/html/document-adapter.d.ts.map +1 -0
- package/dist/html/document-adapter.js +17 -0
- package/dist/html/document-adapter.js.map +1 -0
- package/dist/html/parse.d.ts +2 -6
- package/dist/html/parse.d.ts.map +1 -1
- package/dist/html/parse.js.map +1 -1
- package/dist/html/validate.d.ts.map +1 -1
- package/dist/html/validate.js +92 -375
- package/dist/html/validate.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/preview/main.d.ts.map +1 -1
- package/dist/preview/main.js +93 -13
- package/dist/preview/main.js.map +1 -1
- package/dist/preview/timeline-data.d.ts +85 -0
- package/dist/preview/timeline-data.d.ts.map +1 -0
- package/dist/preview/timeline-data.js +2 -0
- package/dist/preview/timeline-data.js.map +1 -0
- package/dist/preview/timeline-host.d.ts +19 -0
- package/dist/preview/timeline-host.d.ts.map +1 -0
- package/dist/preview/timeline-host.js +297 -0
- package/dist/preview/timeline-host.js.map +1 -0
- package/dist/preview/timeline-main.d.ts +17 -0
- package/dist/preview/timeline-main.d.ts.map +1 -0
- package/dist/preview/timeline-main.js +364 -0
- package/dist/preview/timeline-main.js.map +1 -0
- package/dist/project.d.ts +16 -1
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +81 -26
- package/dist/project.js.map +1 -1
- package/dist/renderer/browser.d.ts +2 -0
- package/dist/renderer/browser.d.ts.map +1 -1
- package/dist/renderer/browser.js +38 -6
- package/dist/renderer/browser.js.map +1 -1
- package/dist/renderer/ffmpeg.d.ts +61 -0
- package/dist/renderer/ffmpeg.d.ts.map +1 -1
- package/dist/renderer/ffmpeg.js +198 -0
- package/dist/renderer/ffmpeg.js.map +1 -1
- package/dist/renderer/index.d.ts.map +1 -1
- package/dist/renderer/index.js +18 -7
- package/dist/renderer/index.js.map +1 -1
- package/dist/renderer/timeline.d.ts +109 -0
- package/dist/renderer/timeline.d.ts.map +1 -0
- package/dist/renderer/timeline.js +984 -0
- package/dist/renderer/timeline.js.map +1 -0
- package/dist/runtime/document-adapter.d.ts +4 -0
- package/dist/runtime/document-adapter.d.ts.map +1 -0
- package/dist/runtime/document-adapter.js +19 -0
- package/dist/runtime/document-adapter.js.map +1 -0
- package/dist/runtime/host.d.ts +2 -0
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/host.js +78 -183
- package/dist/runtime/host.js.map +1 -1
- package/dist/runtime/media.d.ts.map +1 -1
- package/dist/runtime/media.js +19 -50
- package/dist/runtime/media.js.map +1 -1
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +93 -23
- package/dist/scaffold.js.map +1 -1
- package/dist/server/preview-html.d.ts.map +1 -1
- package/dist/server/preview-html.js +15 -1
- package/dist/server/preview-html.js.map +1 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +39 -1
- package/dist/server/server.js.map +1 -1
- package/dist/server/timeline-preview-data.d.ts +4 -0
- package/dist/server/timeline-preview-data.d.ts.map +1 -0
- package/dist/server/timeline-preview-data.js +97 -0
- package/dist/server/timeline-preview-data.js.map +1 -0
- package/dist/server/timeline-preview-html.d.ts +4 -0
- package/dist/server/timeline-preview-html.d.ts.map +1 -0
- package/dist/server/timeline-preview-html.js +227 -0
- package/dist/server/timeline-preview-html.js.map +1 -0
- package/dist/timeline/plan.d.ts +32 -0
- package/dist/timeline/plan.d.ts.map +1 -0
- package/dist/timeline/plan.js +68 -0
- package/dist/timeline/plan.js.map +1 -0
- package/dist/timeline/resolve.d.ts +60 -0
- package/dist/timeline/resolve.d.ts.map +1 -0
- package/dist/timeline/resolve.js +523 -0
- package/dist/timeline/resolve.js.map +1 -0
- package/dist/timeline/schema.d.ts +71 -0
- package/dist/timeline/schema.d.ts.map +1 -0
- package/dist/timeline/schema.js +425 -0
- package/dist/timeline/schema.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/adr/0002-make-frame-and-props-the-only-animation-state.md +2 -0
- package/docs/adr/0005-keep-parallel-rendering-opt-in-and-frame-ordered.md +2 -0
- package/docs/adr/0006-seek-embedded-media-from-the-frame-clock.md +4 -0
- package/docs/adr/0007-make-html-documents-the-composition-unit.md +1 -1
- package/docs/adr/0008-share-the-composition-document-grammar.md +18 -0
- package/docs/adr/0009-composite-production-frames-in-software.md +37 -0
- package/docs/adr/0010-make-timelines-the-render-unit.md +24 -0
- package/docs/adr/0011-compose-timeline-frames-in-a-live-browser-host.md +22 -0
- package/docs/adr/0012-render-timelines-with-segmented-lossless-clip-intermediates.md +31 -0
- package/docs/v0.1-design.md +135 -85
- package/examples/demo/README.md +11 -4
- package/examples/demo/timelines/demo.timeline.json +12 -0
- package/examples/demo/video.config.js +4 -0
- package/examples/video/README.md +105 -0
- package/examples/video/assets/clip.mp4 +0 -0
- package/examples/video/assets/clip.webm +0 -0
- package/examples/video/compositions/video-mp4.html +362 -0
- package/examples/video/compositions/video-overlay.html +350 -0
- package/examples/video/compositions/video.html +362 -0
- package/examples/video/props/video-timeline.json +10 -0
- package/examples/video/props/video.json +8 -0
- package/examples/video/scripts/make-clip.sh +109 -0
- package/examples/video/timelines/video-timeline-mp4.timeline.json +44 -0
- package/examples/video/timelines/video-timeline.timeline.json +44 -0
- package/examples/video/video.config.js +12 -0
- package/examples/webgl/README.md +30 -0
- package/examples/webgl/compositions/webgl.controller.js +200 -0
- package/examples/webgl/compositions/webgl.html +215 -0
- package/examples/webgl/props/webgl.json +6 -0
- package/examples/webgl/video.config.js +5 -0
- package/package.json +4 -2
- package/skills/frameyard/SKILL.md +18 -13
- package/skills/frameyard/references/json-results.md +2 -2
- package/skills/frameyard/references/timelines.md +141 -0
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,103 @@ Frameyard uses `0.x` versions until the composition, configuration, CLI,
|
|
|
8
8
|
JSON-result, transcript, and skill contracts stabilize. Before `1.0.0`, a
|
|
9
9
|
contract change may ship in a minor release and is called out explicitly below.
|
|
10
10
|
|
|
11
|
+
## [0.6.0] - 2026-11-01
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- JSON timelines with project-fixed format, video/audio tracks, composition,
|
|
16
|
+
media, and nested-timeline clips, source ranges, per-clip props, static
|
|
17
|
+
transforms, audio settings, and derived or overridden duration.
|
|
18
|
+
- Timeline validation: strict schema, references, composition static
|
|
19
|
+
validation, media probing, frame-rate checks, source bounds, overlaps,
|
|
20
|
+
nested cycles, and structured diagnostics.
|
|
21
|
+
- Segmented timeline rendering: Chromium captures composition and
|
|
22
|
+
nested-timeline clips to alpha-preserving FFV1 intermediates; FFmpeg
|
|
23
|
+
composites and encodes segments; segments are concatenated in order; audio
|
|
24
|
+
is mixed once and muxed.
|
|
25
|
+
- Transparent composition capture and nested timeline groups with recursive
|
|
26
|
+
visual, still, check, and audio handling.
|
|
27
|
+
- Timeline preview in `dev`: composition and timeline selectors, program
|
|
28
|
+
monitor, read-only tracks and clips, playhead, playback, frame stepping, and
|
|
29
|
+
one-second jumps with buttons or arrow keys, audio controls, and diagnostics.
|
|
30
|
+
- Timeline visual transforms accept `width`/`height` as an explicit clip box,
|
|
31
|
+
mutually exclusive with `scale`.
|
|
32
|
+
- `render`, `check`, and `still` accept timeline IDs alongside composition
|
|
33
|
+
IDs. Timeline renders add `--workers` and `--scratch`; timeline `--props`
|
|
34
|
+
is a map keyed by composition clip ID.
|
|
35
|
+
- `video.config.js` supports an optional project `format` and explicit
|
|
36
|
+
`timelines` map. `project.json` publishes `format` and `timelines`.
|
|
37
|
+
- Timeline-first `init` scaffold with a composition clip, timeline override
|
|
38
|
+
props, and `main` commands.
|
|
39
|
+
- The video example adds WebM and MP4 timelines that place video clips under a
|
|
40
|
+
transparent HTML overlay.
|
|
41
|
+
- Official skill reference for timelines, clips, tracks, nested timelines,
|
|
42
|
+
props overrides, commands, preview, and determinism.
|
|
43
|
+
- Timeline config, schema, resolution, planning, rendering, preview, and
|
|
44
|
+
runtime preview tests.
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
|
|
48
|
+
- `render` defaults to `out/<id>.mp4` for timelines and compositions.
|
|
49
|
+
- `check` and `still` use timeline clip capture and composite behavior for
|
|
50
|
+
timeline targets.
|
|
51
|
+
- Timeline audio mixing pads short inputs to the full timeline duration.
|
|
52
|
+
- Timed timeline layers are normalized to the project frame rate before
|
|
53
|
+
compositing.
|
|
54
|
+
- The design baseline, glossary, and architecture decision records describe
|
|
55
|
+
timelines as the render unit and compositions as clip sources.
|
|
56
|
+
|
|
57
|
+
### Fixed
|
|
58
|
+
|
|
59
|
+
- Composition audio, embedded video audio, and nested timeline audio are
|
|
60
|
+
trimmed and shifted by clip source ranges and groups.
|
|
61
|
+
- Selecting a different composition in the preview picker reloads the iframe
|
|
62
|
+
instead of leaving the previous composition loaded.
|
|
63
|
+
|
|
64
|
+
[0.6.0]: https://github.com/vladiantio/frameyard/compare/v0.5.0...v0.6.0
|
|
65
|
+
|
|
66
|
+
## [0.5.0] - 2026-10-31
|
|
67
|
+
|
|
68
|
+
### Added
|
|
69
|
+
|
|
70
|
+
- `examples/webgl/` demonstrates a frame-seeked WebGL shader driven by an
|
|
71
|
+
external controller.
|
|
72
|
+
- `examples/video/` demonstrates two-pass embedded video with the same
|
|
73
|
+
composition rendered from WebM and MP4 sources, plus a script that
|
|
74
|
+
regenerates both clips with FFmpeg.
|
|
75
|
+
- `test/examples.test.ts` captures a still from every bundled example.
|
|
76
|
+
- `pnpm compare-stills <a.png> <b.png>` reports an exact decoded-pixel diff and
|
|
77
|
+
exits nonzero on any difference, for checking determinism at the capture
|
|
78
|
+
boundary.
|
|
79
|
+
- The benchmark adds WebGL and embedded-video fixtures, `--concurrency`, and
|
|
80
|
+
bench-only `--browser-arg`/`--no-browser-arg` A/B runs. `bench/README.md`
|
|
81
|
+
documents the measurement recipe.
|
|
82
|
+
|
|
83
|
+
### Changed
|
|
84
|
+
|
|
85
|
+
- `render` no longer requires `--out`. The default output is
|
|
86
|
+
`out/<composition-id>.mp4` inside the project root, and scaffolded projects
|
|
87
|
+
ignore `out/` in `.gitignore`.
|
|
88
|
+
- Production capture composites frames in software while WebGL remains on
|
|
89
|
+
SwiftShader, and opens and closes parallel browser sessions concurrently.
|
|
90
|
+
Sequential and `--concurrency 4` renders are substantially faster; capture
|
|
91
|
+
timing and pixels can change for existing projects. Determinism remains at
|
|
92
|
+
the capture boundary for the same pinned runtime and inputs. See
|
|
93
|
+
[ADR 0009](./docs/adr/0009-composite-production-frames-in-software.md).
|
|
94
|
+
- Static validation, the composition host, and preview share one browser-safe
|
|
95
|
+
composition descriptor for metadata, props, controller, animation, media, and
|
|
96
|
+
transcript declarations. This is an internal refactor with no authoring
|
|
97
|
+
contract change.
|
|
98
|
+
|
|
99
|
+
### Fixed
|
|
100
|
+
|
|
101
|
+
- Embedded video seeks 1 ms past the frame time so millisecond-rounded WebM
|
|
102
|
+
timestamps select the intended source frame.
|
|
103
|
+
- Capture sessions stay hidden until the first seek, so an animated ancestor
|
|
104
|
+
cannot leave the load frame on screen in the captured still.
|
|
105
|
+
|
|
106
|
+
[0.5.0]: https://github.com/vladiantio/frameyard/compare/v0.4.0...v0.5.0
|
|
107
|
+
|
|
11
108
|
## [0.4.0] - 2026-10-30
|
|
12
109
|
|
|
13
110
|
### Breaking
|
|
@@ -63,6 +160,10 @@ contract change may ship in a minor release and is called out explicitly below.
|
|
|
63
160
|
- Preview loads each composition document in a same-origin iframe; `check`,
|
|
64
161
|
`still`, and `render` navigate directly to the composition URL. The separate
|
|
65
162
|
preview-page render path is removed.
|
|
163
|
+
- Static validation and the composition host read metadata, default props,
|
|
164
|
+
controller declarations, animation, media, and transcript rules through one
|
|
165
|
+
browser-safe composition document reader. Controller `src` is project-relative
|
|
166
|
+
in host output; the authoring value is retained as `rawSrc`.
|
|
66
167
|
- `check` fails fast on static errors without launching Chromium; warnings
|
|
67
168
|
still allow frame evaluation. Nested `data-fy-repeat` is rejected with a
|
|
68
169
|
clear diagnostic; nested data uses the controller.
|
package/GLOSSARY.md
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
1
|
# Frameyard
|
|
2
2
|
|
|
3
|
-
Frameyard is a local-first framework for creating short, parameterized videos with HTML, CSS, and JavaScript. Its domain separates reusable compositions from the fixed inputs and deterministic renders that turn
|
|
3
|
+
Frameyard is a local-first framework for creating short, parameterized videos with HTML, CSS, and JavaScript. Its domain separates reusable compositions from the timelines that assemble them into a video, and from the fixed inputs and deterministic renders that turn those timelines into output.
|
|
4
4
|
|
|
5
5
|
## Language
|
|
6
6
|
|
|
7
7
|
### Authoring
|
|
8
8
|
|
|
9
9
|
**Project**:
|
|
10
|
-
A collection of related compositions and the assets and configuration they share.
|
|
10
|
+
A collection of related compositions, timelines, and the assets and configuration they share.
|
|
11
11
|
_Avoid_: Video, render
|
|
12
12
|
|
|
13
|
+
**Project format**:
|
|
14
|
+
The fixed width, height, and frame rate shared by every timeline in a project.
|
|
15
|
+
_Avoid_: Composition metadata, render options
|
|
16
|
+
|
|
13
17
|
**Composition**:
|
|
14
|
-
A uniquely identified, reusable video
|
|
18
|
+
A uniquely identified, reusable video source with fixed dimensions, frame rate, duration in frames, and content parameterized by props.
|
|
15
19
|
_Avoid_: Scene, template, video
|
|
16
20
|
|
|
17
21
|
**Composition metadata**:
|
|
18
|
-
The fixed dimensions, frame rate, and duration in frames that define a composition's
|
|
22
|
+
The fixed dimensions, frame rate, and duration in frames that define a composition's source contract.
|
|
19
23
|
_Avoid_: Render options, props
|
|
20
24
|
|
|
25
|
+
**Composition descriptor**:
|
|
26
|
+
The fixed facts read from an HTML composition before frame production: composition metadata, default props, and the controller declaration. It excludes per-load declarations such as audio clips, transcripts, and animation schedules.
|
|
27
|
+
_Avoid_: Composition config, parsed document
|
|
28
|
+
|
|
21
29
|
**Composition lifecycle**:
|
|
22
30
|
The host-driven sequence that loads an HTML composition, seeks it to frames, and releases it.
|
|
23
31
|
_Avoid_: Render loop, playback lifecycle
|
|
@@ -34,6 +42,10 @@ _Avoid_: Build, release
|
|
|
34
42
|
A composition whose source is an HTML document.
|
|
35
43
|
_Avoid_: HTML template, page
|
|
36
44
|
|
|
45
|
+
**Transparent composition**:
|
|
46
|
+
A composition that does not paint a background, so a timeline clip can reveal the layers below it.
|
|
47
|
+
_Avoid_: Alpha composition, overlay
|
|
48
|
+
|
|
37
49
|
**Composition controller**:
|
|
38
50
|
An optional JavaScript controller, either inline in the composition document or in an external module, that performs per-frame computation an HTML composition's declarative HTML and CSS cannot express.
|
|
39
51
|
_Avoid_: Composition module, plugin
|
|
@@ -51,25 +63,113 @@ An HTML attribute that maps a prop into text, an attribute, a class, or element
|
|
|
51
63
|
_Avoid_: Template expression, interpolation
|
|
52
64
|
|
|
53
65
|
**Props**:
|
|
54
|
-
The immutable, JSON-serializable inputs supplied to a composition for one
|
|
66
|
+
The immutable, JSON-serializable inputs supplied to a composition for one load; a timeline clip can fix the props for its instance of the composition.
|
|
55
67
|
_Avoid_: Options, settings, mutable state
|
|
56
68
|
|
|
57
69
|
**Asset**:
|
|
58
|
-
A local file required by a composition, whether static or generated.
|
|
70
|
+
A local file required by a composition or timeline, whether static or generated.
|
|
59
71
|
_Avoid_: Resource, media file
|
|
60
72
|
|
|
73
|
+
**Timeline**:
|
|
74
|
+
A top-level edit that assembles tracks and clips into one video under the project format, with a duration derived from its clips or explicitly overridden.
|
|
75
|
+
_Avoid_: Sequence, composition, project
|
|
76
|
+
|
|
77
|
+
**Timeline document**:
|
|
78
|
+
The project-local JSON document that declares a timeline's tracks, clips, optional duration, and background.
|
|
79
|
+
_Avoid_: Composition, config
|
|
80
|
+
|
|
81
|
+
**Track**:
|
|
82
|
+
An ordered layer in a timeline. Video tracks composite; audio tracks mix.
|
|
83
|
+
_Avoid_: Channel, lane
|
|
84
|
+
|
|
85
|
+
**Video track**:
|
|
86
|
+
A track whose clips contribute visual layers, ordered from bottom to top.
|
|
87
|
+
_Avoid_: Visual lane
|
|
88
|
+
|
|
89
|
+
**Audio track**:
|
|
90
|
+
A track whose clips are audio-only and contribute additively to the timeline audio mix.
|
|
91
|
+
_Avoid_: Soundtrack
|
|
92
|
+
|
|
93
|
+
**Clip**:
|
|
94
|
+
A placement of a clip source on a track, with a timeline start, source in-point, duration, and presentation settings.
|
|
95
|
+
_Avoid_: Segment, item, block
|
|
96
|
+
|
|
97
|
+
**Clip source**:
|
|
98
|
+
The composition, nested timeline, or local media asset that a clip presents.
|
|
99
|
+
_Avoid_: Media, asset
|
|
100
|
+
|
|
101
|
+
**Composition clip**:
|
|
102
|
+
A clip whose source is a composition, with fixed props for that instance.
|
|
103
|
+
_Avoid_: Composition instance, nested composition
|
|
104
|
+
|
|
105
|
+
**Media clip**:
|
|
106
|
+
A clip whose source is a local video, image, or audio asset.
|
|
107
|
+
_Avoid_: Asset clip, raw clip
|
|
108
|
+
|
|
109
|
+
**Nested timeline clip**:
|
|
110
|
+
A clip whose source is another timeline.
|
|
111
|
+
_Avoid_: Nested sequence, compound clip
|
|
112
|
+
|
|
113
|
+
**Source in-point**:
|
|
114
|
+
The first source frame a clip uses.
|
|
115
|
+
_Avoid_: Trim start, offset
|
|
116
|
+
|
|
117
|
+
**Timeline frame**:
|
|
118
|
+
An integer-addressed position on a timeline's master frame grid.
|
|
119
|
+
_Avoid_: Composition frame, timestamp
|
|
120
|
+
|
|
121
|
+
**Composition frame**:
|
|
122
|
+
An integer-addressed position within a composition; the frame a controller receives.
|
|
123
|
+
_Avoid_: Timeline frame
|
|
124
|
+
|
|
125
|
+
**Timeline duration**:
|
|
126
|
+
The number of timeline frames a timeline produces, derived from its clips or explicitly overridden.
|
|
127
|
+
_Avoid_: Composition duration, length
|
|
128
|
+
|
|
129
|
+
**Timeline background**:
|
|
130
|
+
The optional color behind all layers of a timeline; it is transparent by default and the final video composites it over black.
|
|
131
|
+
_Avoid_: Canvas, backdrop
|
|
132
|
+
|
|
133
|
+
**Fit policy**:
|
|
134
|
+
How a clip source's natural frame is fitted into the project frame or an explicit clip box: contained, covering, or stretched.
|
|
135
|
+
_Avoid_: Resize mode, object-fit
|
|
136
|
+
|
|
137
|
+
**Clip transform**:
|
|
138
|
+
The static size, position, rotation, and opacity applied to a visual clip. Size is either an explicit `width`/`height` box or a `scale` multiplier.
|
|
139
|
+
_Avoid_: Effect, animation
|
|
140
|
+
|
|
141
|
+
**Nested timeline**:
|
|
142
|
+
A timeline used as a clip source inside another timeline.
|
|
143
|
+
_Avoid_: Compound composition
|
|
144
|
+
|
|
61
145
|
### Deterministic execution
|
|
62
146
|
|
|
63
147
|
**Frame**:
|
|
64
|
-
An integer-addressed position on a composition
|
|
148
|
+
An integer-addressed position on a timeline or composition frame range; use timeline frame or composition frame when the distinction matters.
|
|
65
149
|
_Avoid_: Timestamp, animation tick
|
|
66
150
|
|
|
151
|
+
**Active clip**:
|
|
152
|
+
A clip whose timeline range contains the current timeline frame.
|
|
153
|
+
_Avoid_: Visible clip
|
|
154
|
+
|
|
155
|
+
**Clip capture**:
|
|
156
|
+
The pixel frames a composition produces for a timeline clip before the timeline compositor combines layers.
|
|
157
|
+
_Avoid_: Screenshot, render
|
|
158
|
+
|
|
159
|
+
**Timeline composite**:
|
|
160
|
+
The deterministic combination of a timeline's layers into output frames.
|
|
161
|
+
_Avoid_: Browser composite, preview
|
|
162
|
+
|
|
163
|
+
**Render segment**:
|
|
164
|
+
A bounded span of a timeline that is rendered and encoded independently, then joined in timeline order.
|
|
165
|
+
_Avoid_: Chunk, part
|
|
166
|
+
|
|
67
167
|
**Deterministic execution**:
|
|
68
|
-
The rule that a
|
|
168
|
+
The rule that a timeline frame's visual state depends only on that timeline frame, its clip sources and their props, and pre-loaded data and assets; a composition frame depends only on its composition frame, props, and pre-loaded data and assets.
|
|
69
169
|
_Avoid_: Playback-driven animation
|
|
70
170
|
|
|
71
171
|
**Frame clock**:
|
|
72
|
-
The single source of animation time, derived from
|
|
172
|
+
The single source of animation time within a composition, derived from its composition frame and frame rate; the preview host or the production segment renderer drives it by seeking each active composition clip.
|
|
73
173
|
_Avoid_: Wall clock, playback timer
|
|
74
174
|
|
|
75
175
|
**Frame-state variable**:
|
|
@@ -77,7 +177,7 @@ A CSS custom property whose value is derived from the current composition frame.
|
|
|
77
177
|
_Avoid_: Animation variable, clock variable
|
|
78
178
|
|
|
79
179
|
**Seek safety**:
|
|
80
|
-
The property that any frame can be produced correctly without depending on previously produced frames.
|
|
180
|
+
The property that any timeline frame can be produced correctly without depending on previously produced timeline frames, by seeking each active clip to its source frame.
|
|
81
181
|
_Avoid_: History-dependent updates
|
|
82
182
|
|
|
83
183
|
**Deterministic randomness**:
|
|
@@ -85,15 +185,15 @@ Random values derived statelessly from a key so they do not depend on call order
|
|
|
85
185
|
_Avoid_: Unseeded randomness
|
|
86
186
|
|
|
87
187
|
**Frame production**:
|
|
88
|
-
The phase in which the runtime produces the visual state of a requested frame, without network access or model inference.
|
|
188
|
+
The phase in which the runtime produces the visual state of a requested timeline frame, without network access or model inference.
|
|
89
189
|
_Avoid_: Real-time playback
|
|
90
190
|
|
|
91
191
|
**Loading phase**:
|
|
92
|
-
The phase before frame production when
|
|
192
|
+
The phase before frame production when all clip sources, compositions, media, data, and assets become available.
|
|
93
193
|
_Avoid_: Per-frame fetching
|
|
94
194
|
|
|
95
195
|
**Embedded media**:
|
|
96
|
-
A local video file placed
|
|
196
|
+
A local video file placed inside a composition whose presentation time is derived from the composition frame, with optional frame offset and source trim.
|
|
97
197
|
_Avoid_: Live stream, video track
|
|
98
198
|
|
|
99
199
|
**Media settle**:
|
|
@@ -106,42 +206,74 @@ _Avoid_: GPU animation, live render
|
|
|
106
206
|
|
|
107
207
|
### Audio
|
|
108
208
|
|
|
109
|
-
**
|
|
110
|
-
An audio source
|
|
111
|
-
_Avoid_: Audio track
|
|
209
|
+
**Composition audio clip**:
|
|
210
|
+
An audio source declared inside a composition and placed by composition frames; it joins the timeline mix when the composition is used as a clip.
|
|
211
|
+
_Avoid_: Audio clip, audio track
|
|
212
|
+
|
|
213
|
+
**Timeline audio clip**:
|
|
214
|
+
An audio-only clip placed on a timeline audio track.
|
|
215
|
+
_Avoid_: Audio clip, soundtrack
|
|
112
216
|
|
|
113
217
|
**Audio mix**:
|
|
114
|
-
The single offline mix of a
|
|
218
|
+
The single offline mix of a timeline's audible clips for one render.
|
|
115
219
|
_Avoid_: Soundtrack, audio track, final cut
|
|
116
220
|
|
|
221
|
+
**Embedded audio**:
|
|
222
|
+
The audio track of an embedded video, contributed to the mix unless the video or clip is muted.
|
|
223
|
+
_Avoid_: Live audio
|
|
224
|
+
|
|
117
225
|
### Rendering
|
|
118
226
|
|
|
119
227
|
**Composition host**:
|
|
120
228
|
The injected runtime that loads an HTML composition, applies its bindings, and exposes its frame clock to preview and render.
|
|
121
229
|
_Avoid_: Preview runtime, render runtime
|
|
122
230
|
|
|
231
|
+
**Timeline host**:
|
|
232
|
+
The preview runtime that loads a timeline, drives a bounded pool of active clip sources, and exposes the timeline frame clock to the preview.
|
|
233
|
+
_Avoid_: Timeline runtime, production renderer, editor
|
|
234
|
+
|
|
235
|
+
**Timeline renderer**:
|
|
236
|
+
The Node-side segmented renderer that captures composition clips, composites and encodes timeline segments, and joins them into one video.
|
|
237
|
+
_Avoid_: Timeline host, browser renderer
|
|
238
|
+
|
|
123
239
|
**Preview**:
|
|
124
|
-
An interactive, frame-accurate inspection of a composition using the same
|
|
240
|
+
An interactive, frame-accurate inspection of a timeline or composition using the same behavior as a render, including a program monitor and a read-only timeline view.
|
|
125
241
|
_Avoid_: Visual editor
|
|
126
242
|
|
|
243
|
+
**Playhead**:
|
|
244
|
+
The current timeline frame in preview.
|
|
245
|
+
_Avoid_: Cursor, scrubber
|
|
246
|
+
|
|
247
|
+
**Program monitor**:
|
|
248
|
+
The preview surface that shows the timeline at the playhead.
|
|
249
|
+
_Avoid_: Stage, canvas
|
|
250
|
+
|
|
127
251
|
**Check**:
|
|
128
|
-
A validation operation that first runs static
|
|
252
|
+
A validation operation that first runs static validation, then loads a timeline or composition and evaluates every frame without capturing or encoding.
|
|
129
253
|
_Avoid_: Test render, dry run
|
|
130
254
|
|
|
131
255
|
**Static composition validation**:
|
|
132
256
|
The Node-side validation of a composition document's metadata, bindings, controller declaration, scripts, and asset references before browser frame production.
|
|
133
257
|
_Avoid_: Lint, preflight
|
|
134
258
|
|
|
259
|
+
**Static timeline validation**:
|
|
260
|
+
The Node-side validation of a timeline document's tracks, clips, references, nested timelines, media, and referenced compositions before browser frame production.
|
|
261
|
+
_Avoid_: Lint, preflight
|
|
262
|
+
|
|
135
263
|
**Composition diagnostic**:
|
|
136
264
|
A structured error or warning about a composition's source, metadata, bindings, controller, assets, or frame production, with a stable code and optional source location.
|
|
137
265
|
_Avoid_: Log message, error string
|
|
138
266
|
|
|
267
|
+
**Timeline diagnostic**:
|
|
268
|
+
A structured error or warning about a timeline's source, tracks, clips, references, media, or frame production, with a stable code and optional source location.
|
|
269
|
+
_Avoid_: Log message, error string
|
|
270
|
+
|
|
139
271
|
**Render**:
|
|
140
|
-
The production of one complete video from a
|
|
272
|
+
The production of one complete video from a timeline or a standalone composition with fixed inputs.
|
|
141
273
|
_Avoid_: Recording, export
|
|
142
274
|
|
|
143
275
|
**Render concurrency**:
|
|
144
|
-
The optional number of independent browser sessions used to seek and capture frames during a render. Frames are still encoded in timeline order, and concurrency must not change visual state.
|
|
276
|
+
The optional number of independent browser sessions used to seek and capture frames during a composition render; timeline rendering is sequential in 0.6. Frames are still encoded in timeline order, and concurrency must not change visual state.
|
|
145
277
|
_Avoid_: Parallel composition, out-of-order output
|
|
146
278
|
|
|
147
279
|
**Video**:
|
|
@@ -149,11 +281,11 @@ The finished audiovisual output of a successful render.
|
|
|
149
281
|
_Avoid_: Composition, project
|
|
150
282
|
|
|
151
283
|
**Still**:
|
|
152
|
-
A single frame captured as a PNG through the production rendering path for
|
|
284
|
+
A single frame captured as a PNG through the production rendering path for a timeline or composition.
|
|
153
285
|
_Avoid_: Frame export, image sequence
|
|
154
286
|
|
|
155
287
|
**Reproducibility**:
|
|
156
|
-
The guarantee that, for the same composition revision, props, assets, and frame under a pinned runtime/browser environment, the visual state is identical. It does not imply identical encoded bytes, even on the same machine; encoded output depends on the encoder and its runtime.
|
|
288
|
+
The guarantee that, for the same timeline or composition revision, props, assets, and frame under a pinned runtime/browser environment, the visual state is identical. It does not imply identical encoded bytes, even on the same machine; encoded output depends on the encoder and its runtime.
|
|
157
289
|
_Avoid_: Bit-for-bit encoding equality
|
|
158
290
|
|
|
159
291
|
### Agent operation
|
|
@@ -169,7 +301,7 @@ _Avoid_: Agent runtime, MCP server
|
|
|
169
301
|
### Local asset production
|
|
170
302
|
|
|
171
303
|
**Generated asset**:
|
|
172
|
-
A frozen local input produced by speech synthesis or transcription before a composition is loaded or rendered.
|
|
304
|
+
A frozen local input produced by speech synthesis or transcription before a timeline or composition is loaded or rendered.
|
|
173
305
|
_Avoid_: Per-frame generation
|
|
174
306
|
|
|
175
307
|
**Provenance manifest**:
|