frameyard 0.7.0 → 0.9.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.
Files changed (334) hide show
  1. package/CHANGELOG.md +164 -7
  2. package/GLOSSARY.md +152 -18
  3. package/README.md +328 -285
  4. package/dist/assets/integrations.d.ts +8 -4
  5. package/dist/assets/integrations.d.ts.map +1 -1
  6. package/dist/assets/integrations.js +8 -4
  7. package/dist/assets/integrations.js.map +1 -1
  8. package/dist/assets/provenance.d.ts +2 -2
  9. package/dist/assets/provenance.d.ts.map +1 -1
  10. package/dist/assets/provenance.js +5 -3
  11. package/dist/assets/provenance.js.map +1 -1
  12. package/dist/assets/tts-supertonic.d.ts +28 -0
  13. package/dist/assets/tts-supertonic.d.ts.map +1 -0
  14. package/dist/assets/tts-supertonic.js +156 -0
  15. package/dist/assets/tts-supertonic.js.map +1 -0
  16. package/dist/assets/tts.d.ts +18 -6
  17. package/dist/assets/tts.d.ts.map +1 -1
  18. package/dist/assets/tts.js +219 -97
  19. package/dist/assets/tts.js.map +1 -1
  20. package/dist/cli.js +1705 -106
  21. package/dist/cli.js.map +1 -1
  22. package/dist/composition/descriptor.d.ts +17 -3
  23. package/dist/composition/descriptor.d.ts.map +1 -1
  24. package/dist/composition/descriptor.js +51 -28
  25. package/dist/composition/descriptor.js.map +1 -1
  26. package/dist/composition/format.d.ts +12 -0
  27. package/dist/composition/format.d.ts.map +1 -0
  28. package/dist/composition/format.js +28 -0
  29. package/dist/composition/format.js.map +1 -0
  30. package/dist/composition/index.d.ts +2 -1
  31. package/dist/composition/index.d.ts.map +1 -1
  32. package/dist/composition/index.js +1 -0
  33. package/dist/composition/index.js.map +1 -1
  34. package/dist/context.d.ts +82 -0
  35. package/dist/context.d.ts.map +1 -0
  36. package/dist/context.js +277 -0
  37. package/dist/context.js.map +1 -0
  38. package/dist/contracts.d.ts +80 -6
  39. package/dist/contracts.d.ts.map +1 -1
  40. package/dist/contracts.js +3 -0
  41. package/dist/contracts.js.map +1 -1
  42. package/dist/doctor.d.ts +14 -1
  43. package/dist/doctor.d.ts.map +1 -1
  44. package/dist/doctor.js +166 -7
  45. package/dist/doctor.js.map +1 -1
  46. package/dist/errors.d.ts +1 -1
  47. package/dist/errors.d.ts.map +1 -1
  48. package/dist/errors.js.map +1 -1
  49. package/dist/fonts/add.d.ts +41 -0
  50. package/dist/fonts/add.d.ts.map +1 -0
  51. package/dist/fonts/add.js +259 -0
  52. package/dist/fonts/add.js.map +1 -0
  53. package/dist/fonts/binary.d.ts +4 -0
  54. package/dist/fonts/binary.d.ts.map +1 -0
  55. package/dist/fonts/binary.js +21 -0
  56. package/dist/fonts/binary.js.map +1 -0
  57. package/dist/fonts/css.d.ts +4 -0
  58. package/dist/fonts/css.d.ts.map +1 -0
  59. package/dist/fonts/css.js +50 -0
  60. package/dist/fonts/css.js.map +1 -0
  61. package/dist/fonts/fontsource.d.ts +107 -0
  62. package/dist/fonts/fontsource.d.ts.map +1 -0
  63. package/dist/fonts/fontsource.js +565 -0
  64. package/dist/fonts/fontsource.js.map +1 -0
  65. package/dist/fonts/index.d.ts +11 -0
  66. package/dist/fonts/index.d.ts.map +1 -0
  67. package/dist/fonts/index.js +11 -0
  68. package/dist/fonts/index.js.map +1 -0
  69. package/dist/fonts/install.d.ts +24 -0
  70. package/dist/fonts/install.d.ts.map +1 -0
  71. package/dist/fonts/install.js +145 -0
  72. package/dist/fonts/install.js.map +1 -0
  73. package/dist/fonts/manifest.d.ts +21 -0
  74. package/dist/fonts/manifest.d.ts.map +1 -0
  75. package/dist/fonts/manifest.js +96 -0
  76. package/dist/fonts/manifest.js.map +1 -0
  77. package/dist/fonts/options.d.ts +9 -0
  78. package/dist/fonts/options.d.ts.map +1 -0
  79. package/dist/fonts/options.js +66 -0
  80. package/dist/fonts/options.js.map +1 -0
  81. package/dist/fonts/schema.d.ts +4 -0
  82. package/dist/fonts/schema.d.ts.map +1 -0
  83. package/dist/fonts/schema.js +316 -0
  84. package/dist/fonts/schema.js.map +1 -0
  85. package/dist/fonts/summary.d.ts +16 -0
  86. package/dist/fonts/summary.d.ts.map +1 -0
  87. package/dist/fonts/summary.js +22 -0
  88. package/dist/fonts/summary.js.map +1 -0
  89. package/dist/fonts/types.d.ts +56 -0
  90. package/dist/fonts/types.d.ts.map +1 -0
  91. package/dist/fonts/types.js +8 -0
  92. package/dist/fonts/types.js.map +1 -0
  93. package/dist/fonts/verify.d.ts +33 -0
  94. package/dist/fonts/verify.d.ts.map +1 -0
  95. package/dist/fonts/verify.js +200 -0
  96. package/dist/fonts/verify.js.map +1 -0
  97. package/dist/html/document-adapter.d.ts +3 -3
  98. package/dist/html/document-adapter.d.ts.map +1 -1
  99. package/dist/html/document-adapter.js +1 -1
  100. package/dist/html/document-adapter.js.map +1 -1
  101. package/dist/html/index.d.ts +1 -1
  102. package/dist/html/index.d.ts.map +1 -1
  103. package/dist/html/parse.d.ts +10 -2
  104. package/dist/html/parse.d.ts.map +1 -1
  105. package/dist/html/parse.js +14 -5
  106. package/dist/html/parse.js.map +1 -1
  107. package/dist/html/validate.d.ts +12 -1
  108. package/dist/html/validate.d.ts.map +1 -1
  109. package/dist/html/validate.js +292 -61
  110. package/dist/html/validate.js.map +1 -1
  111. package/dist/index.d.ts +4 -4
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +2 -2
  114. package/dist/index.js.map +1 -1
  115. package/dist/inspect.d.ts +61 -0
  116. package/dist/inspect.d.ts.map +1 -0
  117. package/dist/inspect.js +325 -0
  118. package/dist/inspect.js.map +1 -0
  119. package/dist/lint.d.ts +63 -0
  120. package/dist/lint.d.ts.map +1 -0
  121. package/dist/lint.js +265 -0
  122. package/dist/lint.js.map +1 -0
  123. package/dist/policy.d.ts +69 -0
  124. package/dist/policy.d.ts.map +1 -0
  125. package/dist/policy.js +361 -0
  126. package/dist/policy.js.map +1 -0
  127. package/dist/preview/main.d.ts +2 -2
  128. package/dist/preview/main.d.ts.map +1 -1
  129. package/dist/preview/main.js +35 -14
  130. package/dist/preview/main.js.map +1 -1
  131. package/dist/preview/timeline-data.d.ts +17 -65
  132. package/dist/preview/timeline-data.d.ts.map +1 -1
  133. package/dist/preview/timeline-host.d.ts.map +1 -1
  134. package/dist/preview/timeline-host.js +73 -38
  135. package/dist/preview/timeline-host.js.map +1 -1
  136. package/dist/preview/timeline-main.d.ts.map +1 -1
  137. package/dist/preview/timeline-main.js +47 -3
  138. package/dist/preview/timeline-main.js.map +1 -1
  139. package/dist/project.d.ts +13 -8
  140. package/dist/project.d.ts.map +1 -1
  141. package/dist/project.js +20 -17
  142. package/dist/project.js.map +1 -1
  143. package/dist/renderer/browser.d.ts +2 -2
  144. package/dist/renderer/browser.d.ts.map +1 -1
  145. package/dist/renderer/browser.js +10 -4
  146. package/dist/renderer/browser.js.map +1 -1
  147. package/dist/renderer/ffmpeg.d.ts +44 -1
  148. package/dist/renderer/ffmpeg.d.ts.map +1 -1
  149. package/dist/renderer/ffmpeg.js +371 -73
  150. package/dist/renderer/ffmpeg.js.map +1 -1
  151. package/dist/renderer/index.d.ts +40 -4
  152. package/dist/renderer/index.d.ts.map +1 -1
  153. package/dist/renderer/index.js +100 -25
  154. package/dist/renderer/index.js.map +1 -1
  155. package/dist/renderer/keyframe-expressions.d.ts +39 -0
  156. package/dist/renderer/keyframe-expressions.d.ts.map +1 -0
  157. package/dist/renderer/keyframe-expressions.js +180 -0
  158. package/dist/renderer/keyframe-expressions.js.map +1 -0
  159. package/dist/renderer/timeline.d.ts +2 -0
  160. package/dist/renderer/timeline.d.ts.map +1 -1
  161. package/dist/renderer/timeline.js +168 -106
  162. package/dist/renderer/timeline.js.map +1 -1
  163. package/dist/runtime/host.d.ts.map +1 -1
  164. package/dist/runtime/host.js +159 -31
  165. package/dist/runtime/host.js.map +1 -1
  166. package/dist/scaffold.d.ts +3 -0
  167. package/dist/scaffold.d.ts.map +1 -1
  168. package/dist/scaffold.js +48 -317
  169. package/dist/scaffold.js.map +1 -1
  170. package/dist/server/composition-html.d.ts +15 -7
  171. package/dist/server/composition-html.d.ts.map +1 -1
  172. package/dist/server/composition-html.js +72 -16
  173. package/dist/server/composition-html.js.map +1 -1
  174. package/dist/server/server.d.ts.map +1 -1
  175. package/dist/server/server.js +56 -6
  176. package/dist/server/server.js.map +1 -1
  177. package/dist/server/timeline-preview-data.d.ts.map +1 -1
  178. package/dist/server/timeline-preview-data.js +12 -23
  179. package/dist/server/timeline-preview-data.js.map +1 -1
  180. package/dist/server/timeline-preview-html.d.ts.map +1 -1
  181. package/dist/server/timeline-preview-html.js +20 -3
  182. package/dist/server/timeline-preview-html.js.map +1 -1
  183. package/dist/templates.d.ts +16 -0
  184. package/dist/templates.d.ts.map +1 -0
  185. package/dist/templates.js +186 -0
  186. package/dist/templates.js.map +1 -0
  187. package/dist/timeline/easing.d.ts +36 -0
  188. package/dist/timeline/easing.d.ts.map +1 -0
  189. package/dist/timeline/easing.js +225 -0
  190. package/dist/timeline/easing.js.map +1 -0
  191. package/dist/timeline/keyframes.d.ts +23 -0
  192. package/dist/timeline/keyframes.d.ts.map +1 -0
  193. package/dist/timeline/keyframes.js +95 -0
  194. package/dist/timeline/keyframes.js.map +1 -0
  195. package/dist/timeline/plan.d.ts +6 -12
  196. package/dist/timeline/plan.d.ts.map +1 -1
  197. package/dist/timeline/plan.js +17 -30
  198. package/dist/timeline/plan.js.map +1 -1
  199. package/dist/timeline/resolve.d.ts +16 -3
  200. package/dist/timeline/resolve.d.ts.map +1 -1
  201. package/dist/timeline/resolve.js +119 -13
  202. package/dist/timeline/resolve.js.map +1 -1
  203. package/dist/timeline/scene.d.ts +126 -0
  204. package/dist/timeline/scene.d.ts.map +1 -0
  205. package/dist/timeline/scene.js +109 -0
  206. package/dist/timeline/scene.js.map +1 -0
  207. package/dist/timeline/schema.d.ts +38 -0
  208. package/dist/timeline/schema.d.ts.map +1 -1
  209. package/dist/timeline/schema.js +290 -9
  210. package/dist/timeline/schema.js.map +1 -1
  211. package/dist/timeline/transitions.d.ts +21 -0
  212. package/dist/timeline/transitions.d.ts.map +1 -0
  213. package/dist/timeline/transitions.js +23 -0
  214. package/dist/timeline/transitions.js.map +1 -0
  215. package/dist/version.d.ts +1 -1
  216. package/dist/version.js +1 -1
  217. package/docs/adr/0007-make-html-documents-the-composition-unit.md +2 -2
  218. package/docs/adr/0008-share-the-composition-document-grammar.md +1 -1
  219. package/docs/adr/0010-make-timelines-the-render-unit.md +3 -2
  220. package/docs/adr/0011-compose-timeline-frames-in-a-live-browser-host.md +1 -1
  221. package/docs/adr/0012-render-timelines-with-segmented-lossless-clip-intermediates.md +1 -1
  222. package/docs/adr/0014-compose-timeline-clips-with-css-blend-modes.md +38 -0
  223. package/docs/adr/0015-inherit-composition-format-from-the-project.md +28 -0
  224. package/docs/adr/0016-author-compositions-as-html-fragments.md +32 -0
  225. package/docs/adr/0017-render-timeless-compositions-as-stills.md +99 -0
  226. package/docs/adr/0018-animate-timeline-clips-with-keyframes.md +35 -0
  227. package/docs/adr/0019-make-same-track-overlap-the-transition-window.md +36 -0
  228. package/docs/adr/0020-crossfade-audio-clips-on-audio-tracks.md +27 -0
  229. package/docs/adr/0021-project-timeline-scenes-once.md +32 -0
  230. package/docs/adr/0022-gate-heavy-operations-with-a-workspace-resource-policy.md +35 -0
  231. package/docs/adr/0023-pin-fonts-as-project-assets.md +98 -0
  232. package/docs/migration-0.4.md +5 -3
  233. package/docs/migration-0.8.md +163 -0
  234. package/docs/preview-testing.md +23 -3
  235. package/docs/{v0.1-design.md → v0.x-design.md} +86 -53
  236. package/examples/blend/README.md +106 -0
  237. package/examples/blend/assets/ink.mp4 +0 -0
  238. package/examples/blend/compositions/aurora.html +55 -0
  239. package/examples/blend/compositions/backdrop.html +74 -0
  240. package/examples/blend/compositions/labels.html +149 -0
  241. package/examples/blend/fy.config.js +11 -0
  242. package/examples/blend/scripts/make-ink.sh +26 -0
  243. package/examples/blend/timelines/blend.timeline.json +155 -0
  244. package/examples/demo/README.md +2 -2
  245. package/examples/demo/compositions/demo.html +243 -251
  246. package/examples/intro/README.md +71 -0
  247. package/examples/intro/assets/fonts/figtree/LICENSE.txt +93 -0
  248. package/examples/intro/assets/fonts/figtree/figtree-latin-wght-normal.woff2 +0 -0
  249. package/examples/intro/assets/fonts/instrument-serif/LICENSE.txt +93 -0
  250. package/examples/intro/assets/fonts/instrument-serif/instrument-serif-latin-400-italic.woff2 +0 -0
  251. package/examples/intro/assets/fonts/space-mono/LICENSE.txt +93 -0
  252. package/examples/intro/assets/fonts/space-mono/space-mono-latin-400-normal.woff2 +0 -0
  253. package/examples/intro/assets/fonts/space-mono/space-mono-latin-700-normal.woff2 +0 -0
  254. package/examples/intro/assets/grain.png +0 -0
  255. package/examples/intro/assets/score.ogg +0 -0
  256. package/examples/intro/compositions/brand.html +412 -0
  257. package/examples/intro/compositions/chrome.controller.js +63 -0
  258. package/examples/intro/compositions/chrome.html +256 -0
  259. package/examples/intro/compositions/lattice.controller.js +148 -0
  260. package/examples/intro/compositions/lattice.html +308 -0
  261. package/examples/intro/compositions/opening.html +504 -0
  262. package/examples/intro/compositions/studio.html +930 -0
  263. package/examples/intro/compositions/theme.css +218 -0
  264. package/examples/intro/fy.config.js +13 -0
  265. package/examples/intro/fy.fonts.json +100 -0
  266. package/examples/intro/scripts/make-grain.mjs +79 -0
  267. package/examples/intro/scripts/make-score.mjs +702 -0
  268. package/examples/intro/timelines/intro.timeline.json +60 -0
  269. package/examples/keyframes/README.md +76 -0
  270. package/examples/keyframes/compositions/backdrop.html +60 -0
  271. package/examples/keyframes/compositions/card.html +99 -0
  272. package/examples/keyframes/fy.config.js +10 -0
  273. package/examples/keyframes/timelines/keyframes.timeline.json +60 -0
  274. package/examples/nested/README.md +112 -0
  275. package/examples/nested/assets/pulse.wav +0 -0
  276. package/examples/nested/compositions/backdrop.html +84 -0
  277. package/examples/nested/compositions/card.html +275 -0
  278. package/examples/nested/compositions/overlay.html +307 -0
  279. package/examples/nested/fy.config.js +13 -0
  280. package/examples/nested/scripts/make-pulse.sh +20 -0
  281. package/examples/nested/timelines/chapter-a.timeline.json +39 -0
  282. package/examples/nested/timelines/chapter-b.timeline.json +39 -0
  283. package/examples/nested/timelines/nested-reel.timeline.json +52 -0
  284. package/examples/static/README.md +17 -0
  285. package/examples/static/compositions/still.html +37 -0
  286. package/examples/static/fy.config.js +9 -0
  287. package/examples/static/timelines/still.timeline.json +13 -0
  288. package/examples/transitions/README.md +128 -0
  289. package/examples/transitions/assets/alpha.wav +0 -0
  290. package/examples/transitions/assets/beta.wav +0 -0
  291. package/examples/transitions/assets/gamma.wav +0 -0
  292. package/examples/transitions/compositions/alpha.html +56 -0
  293. package/examples/transitions/compositions/beta.html +56 -0
  294. package/examples/transitions/compositions/gamma.html +56 -0
  295. package/examples/transitions/fy.config.js +12 -0
  296. package/examples/transitions/timelines/audio-crossfade.timeline.json +44 -0
  297. package/examples/transitions/timelines/transitions.timeline.json +31 -0
  298. package/examples/video/README.md +4 -4
  299. package/examples/video/compositions/video-mp4.html +349 -357
  300. package/examples/video/compositions/video-overlay.html +337 -345
  301. package/examples/video/compositions/video.html +349 -357
  302. package/examples/webgl/README.md +1 -1
  303. package/examples/webgl/compositions/webgl.html +205 -213
  304. package/package.json +13 -5
  305. package/scaffolds/init/AGENTS.md +131 -0
  306. package/scaffolds/init/README.md +56 -0
  307. package/scaffolds/init/compositions/hello.html +79 -0
  308. package/scaffolds/init/fy.config.js +9 -0
  309. package/scaffolds/init/gitignore.template +1 -0
  310. package/scaffolds/init/package.json +11 -0
  311. package/scaffolds/init/props/hello.json +4 -0
  312. package/scaffolds/init/props/main.json +6 -0
  313. package/scaffolds/init/timelines/main.timeline.json +20 -0
  314. package/scaffolds/local-models/LOCAL-MODELS.md +77 -0
  315. package/scaffolds/local-models/fy.policy.json +5 -0
  316. package/scaffolds/local-models/opencode/opencode.jsonc +17 -0
  317. package/scaffolds/local-models/pi/APPEND_SYSTEM.md +21 -0
  318. package/scaffolds/local-models/pi/sandbox.json +15 -0
  319. package/scaffolds/local-models/pi/settings.json +15 -0
  320. package/skills/frameyard/README.md +1 -0
  321. package/skills/frameyard/SKILL.md +59 -59
  322. package/skills/frameyard/references/audio-assets.md +32 -3
  323. package/skills/frameyard/references/common-mistakes.md +81 -7
  324. package/skills/frameyard/references/controllers.md +5 -4
  325. package/skills/frameyard/references/deterministic-authoring.md +49 -37
  326. package/skills/frameyard/references/diagnostics.md +42 -4
  327. package/skills/frameyard/references/failure-recovery.md +56 -10
  328. package/skills/frameyard/references/fonts.md +132 -0
  329. package/skills/frameyard/references/json-results.md +165 -10
  330. package/skills/frameyard/references/quick-reference.md +222 -0
  331. package/skills/frameyard/references/timelines.md +109 -15
  332. /package/examples/demo/{video.config.js → fy.config.js} +0 -0
  333. /package/examples/video/{video.config.js → fy.config.js} +0 -0
  334. /package/examples/webgl/{video.config.js → fy.config.js} +0 -0
@@ -218,7 +218,7 @@ async function resolveCompositionSource(options) {
218
218
  nesting,
219
219
  };
220
220
  if (!composition) {
221
- addError(diagnostics, "TIMELINE_REFERENCE_NOT_FOUND", `Composition "${sourceId}" is not listed in video.config.js.`, details);
221
+ addError(diagnostics, "TIMELINE_REFERENCE_NOT_FOUND", `Composition "${sourceId}" is not listed in fy.config.js.`, details);
222
222
  return null;
223
223
  }
224
224
  const propsKey = JSON.stringify(clip.props ?? null);
@@ -229,6 +229,7 @@ async function resolveCompositionSource(options) {
229
229
  projectRoot: project.root,
230
230
  entry: composition.entry,
231
231
  ...(clip.props !== undefined ? { props: clip.props } : {}),
232
+ ...(project.format ? { format: project.format } : {}),
232
233
  });
233
234
  cache.set(cacheKey, validation);
234
235
  }
@@ -245,16 +246,21 @@ async function resolveCompositionSource(options) {
245
246
  addError(diagnostics, "TIMELINE_CLIP_INVALID", `Composition "${sourceId}" could not be loaded for clip "${clip.id}".`, details);
246
247
  return null;
247
248
  }
248
- if (validation.info.metadata.fps !== project.format?.fps) {
249
- addError(diagnostics, "TIMELINE_FPS_MISMATCH", `Composition "${sourceId}" runs at ${validation.info.metadata.fps} fps, but the project format is ${project.format?.fps} fps.`, details);
249
+ const declaredFps = validation.info.declaredFormat.fps;
250
+ if (declaredFps !== null && declaredFps !== project.format?.fps) {
251
+ addError(diagnostics, "TIMELINE_FPS_MISMATCH", `Composition "${sourceId}" runs at ${declaredFps} fps, but the project format is ${project.format?.fps} fps.`, details);
252
+ }
253
+ const metadata = validation.info.metadata;
254
+ if (metadata.static === true && clip.audio !== undefined && (clip.audio.muted || clip.audio.gain !== 1)) {
255
+ addWarning(diagnostics, `Static composition "${sourceId}" has no audio; audio settings on clip "${clip.id}" are ignored.`, details);
250
256
  }
251
257
  return {
252
258
  kind: "composition",
253
259
  id: sourceId,
254
260
  entry: composition.entry,
255
- metadata: validation.info.metadata,
261
+ metadata,
256
262
  controller: validation.info.controller,
257
- durationInFrames: validation.info.metadata.durationInFrames,
263
+ ...(metadata.static === true ? {} : { durationInFrames: metadata.durationInFrames }),
258
264
  audioClips: validation.info.audioClips,
259
265
  embeddedAudioClips: validation.info.embeddedAudioClips,
260
266
  transcriptClips: validation.info.transcriptClips,
@@ -271,7 +277,7 @@ async function resolveTimelineSource(options) {
271
277
  nesting: context.nesting,
272
278
  };
273
279
  if (!nested) {
274
- addError(diagnostics, "TIMELINE_REFERENCE_NOT_FOUND", `Timeline "${sourceId}" is not listed in video.config.js.`, details);
280
+ addError(diagnostics, "TIMELINE_REFERENCE_NOT_FOUND", `Timeline "${sourceId}" is not listed in fy.config.js.`, details);
275
281
  return null;
276
282
  }
277
283
  if (context.stack.includes(sourceId)) {
@@ -381,6 +387,10 @@ function resolveClipDuration(clip, source, diagnostics, timelineId, nesting) {
381
387
  nesting,
382
388
  jsonPath: "$.clips",
383
389
  };
390
+ if (source.kind === "composition" && source.metadata.static === true && clip.sourceIn !== 0) {
391
+ addError(diagnostics, "TIMELINE_CLIP_OUT_OF_RANGE", `Clip "${clip.id}" uses sourceIn ${clip.sourceIn}, but static composition "${source.id}" has no frames. Use sourceIn 0 and declare the clip duration.`, details);
392
+ return null;
393
+ }
384
394
  const sourceDuration = source.kind === "image" ? undefined : source.durationInFrames;
385
395
  if (clip.duration === undefined) {
386
396
  if (sourceDuration === undefined) {
@@ -400,6 +410,26 @@ function resolveClipDuration(clip, source, diagnostics, timelineId, nesting) {
400
410
  }
401
411
  return clip.duration;
402
412
  }
413
+ function validateKeyframeBounds(options) {
414
+ const { clip, duration, clipIndex, timelineId, nesting, diagnostics } = options;
415
+ for (const [channel, track] of Object.entries(clip.keyframes ?? {})) {
416
+ for (const [keyIndex, key] of (track ?? []).entries()) {
417
+ if (key.frame > duration) {
418
+ addError(diagnostics, "TIMELINE_CLIP_OUT_OF_RANGE", `Clip "${clip.id}" keyframes.${channel}[${keyIndex}] uses frame ${key.frame}, beyond the clip duration ${duration}.`, {
419
+ timeline: timelineId,
420
+ clip: clip.id,
421
+ track: clip.track,
422
+ nesting,
423
+ channel,
424
+ keyframe: keyIndex,
425
+ frame: key.frame,
426
+ jsonPath: `$.clips[${clipIndex}].keyframes.${channel}[${keyIndex}].frame`,
427
+ suggestion: "Keyframe frames must stay within the clip's 0..duration range.",
428
+ });
429
+ }
430
+ }
431
+ }
432
+ }
403
433
  async function resolveTimelineInternal(options) {
404
434
  const { project, timeline, context, signal, probeCache, compositionCache, propsOverrides } = options;
405
435
  const diagnostics = [];
@@ -417,7 +447,7 @@ async function resolveTimelineInternal(options) {
417
447
  }
418
448
  const clips = [];
419
449
  const usedOverrides = new Set();
420
- for (const rawClip of document.clips) {
450
+ for (const [clipIndex, rawClip] of document.clips.entries()) {
421
451
  let clip = rawClip;
422
452
  if (propsOverrides && rawClip.source.kind === "composition" && propsOverrides[rawClip.id] !== undefined) {
423
453
  try {
@@ -448,6 +478,14 @@ async function resolveTimelineInternal(options) {
448
478
  if (duration === null) {
449
479
  continue;
450
480
  }
481
+ validateKeyframeBounds({
482
+ clip,
483
+ duration,
484
+ clipIndex,
485
+ timelineId: context.timelineId,
486
+ nesting: context.nesting,
487
+ diagnostics,
488
+ });
451
489
  clips.push({
452
490
  ...clip,
453
491
  source,
@@ -467,18 +505,85 @@ async function resolveTimelineInternal(options) {
467
505
  if (document.durationInFrames !== undefined && document.durationInFrames < maxEnd) {
468
506
  addError(diagnostics, "TIMELINE_DURATION_INVALID", `Timeline durationInFrames ${document.durationInFrames} is shorter than the resolved clip end ${maxEnd}.`, { timeline: timeline.id, nesting: context.nesting, jsonPath: "$.durationInFrames" });
469
507
  }
508
+ const clipById = new Map(clips.map((clip) => [clip.id, clip]));
509
+ const trackById = new Map(document.tracks.map((track) => [track.id, track]));
510
+ const transitions = [];
511
+ const declaredPairs = new Set();
512
+ for (const [index, transition] of (document.transitions ?? []).entries()) {
513
+ const jsonPath = `$.transitions[${index}]`;
514
+ const details = {
515
+ timeline: timeline.id,
516
+ nesting: context.nesting,
517
+ jsonPath,
518
+ from: transition.from,
519
+ to: transition.to,
520
+ };
521
+ const from = clipById.get(transition.from);
522
+ const to = clipById.get(transition.to);
523
+ if (!from || !to || from.id === to.id) {
524
+ addError(diagnostics, "TIMELINE_TRANSITION_UNKNOWN_CLIP", `Transition from "${transition.from}" to "${transition.to}" must reference two distinct clips in this timeline.`, details);
525
+ continue;
526
+ }
527
+ if (from.track !== to.track) {
528
+ addError(diagnostics, "TIMELINE_TRANSITION_WRONG_TRACK", `Transition "${from.id}" → "${to.id}" must keep both clips on one track; "${from.track}" and "${to.track}" differ.`, details);
529
+ continue;
530
+ }
531
+ const track = trackById.get(from.track);
532
+ if (!track) {
533
+ continue;
534
+ }
535
+ if (transition.kind === "dissolve" && track.kind !== "video") {
536
+ addError(diagnostics, "TIMELINE_TRANSITION_AUDIO_TRACK", `Dissolve "${from.id}" → "${to.id}" is on audio track "${from.track}"; use kind "crossfade" for audio clips.`, { ...details, track: from.track, suggestion: 'Use "kind": "crossfade".' });
537
+ continue;
538
+ }
539
+ if (transition.kind === "crossfade" && track.kind !== "audio") {
540
+ addError(diagnostics, "TIMELINE_TRANSITION_VIDEO_TRACK", `Crossfade "${from.id}" → "${to.id}" is on video track "${from.track}"; use kind "dissolve" for visual clips.`, { ...details, track: from.track, suggestion: 'Use "kind": "dissolve".' });
541
+ continue;
542
+ }
543
+ declaredPairs.add(`${from.track}\u0000${from.id}\u0000${to.id}`);
544
+ declaredPairs.add(`${from.track}\u0000${to.id}\u0000${from.id}`);
545
+ if (to.start <= from.start) {
546
+ addError(diagnostics, "TIMELINE_TRANSITION_GEOMETRY", `Transition "${from.id}" → "${to.id}" requires "${to.id}" to start after "${from.id}" starts.`, { ...details, track: from.track, suggestion: `Move "${to.id}" later or "${from.id}" earlier.` });
547
+ continue;
548
+ }
549
+ if (to.start >= from.end) {
550
+ addError(diagnostics, "TIMELINE_TRANSITION_NOT_OVERLAPPING", `Transition "${from.id}" → "${to.id}" declares no overlap: "${to.id}" starts at ${to.start}, after "${from.id}" ends at ${from.end}.`, { ...details, track: from.track, suggestion: `Start "${to.id}" before frame ${from.end}.` });
551
+ continue;
552
+ }
553
+ if (to.end <= from.end) {
554
+ addError(diagnostics, "TIMELINE_TRANSITION_GEOMETRY", `Transition "${from.id}" → "${to.id}" requires "${to.id}" to end after "${from.id}" ends at ${from.end}.`, { ...details, track: from.track, suggestion: `Extend "${to.id}" beyond frame ${from.end}.` });
555
+ continue;
556
+ }
557
+ transitions.push({
558
+ from: from.id,
559
+ to: to.id,
560
+ kind: transition.kind,
561
+ ...(transition.easing !== undefined ? { easing: transition.easing } : {}),
562
+ track: from.track,
563
+ start: to.start,
564
+ end: from.end,
565
+ });
566
+ }
470
567
  for (const track of document.tracks) {
471
- const trackClips = clips.filter((clip) => clip.track === track.id).sort((left, right) => left.start - right.start);
472
- for (let index = 1; index < trackClips.length; index += 1) {
473
- const previous = trackClips[index - 1];
474
- const current = trackClips[index];
475
- if (current.start < previous.end) {
568
+ const trackClips = clips
569
+ .filter((clip) => clip.track === track.id)
570
+ .sort((left, right) => left.start - right.start || left.end - right.end);
571
+ for (let index = 0; index < trackClips.length; index += 1) {
572
+ const previous = trackClips[index];
573
+ for (let next = index + 1; next < trackClips.length; next += 1) {
574
+ const current = trackClips[next];
575
+ if (current.start >= previous.end) {
576
+ break;
577
+ }
578
+ if (declaredPairs.has(`${track.id}\u0000${previous.id}\u0000${current.id}`)) {
579
+ continue;
580
+ }
476
581
  addError(diagnostics, "TIMELINE_CLIP_OVERLAP", `Clip "${current.id}" overlaps "${previous.id}" on track "${track.id}".`, {
477
582
  timeline: timeline.id,
478
583
  track: track.id,
479
584
  clip: current.id,
480
585
  nesting: context.nesting,
481
- suggestion: "No two clips on one track may overlap in 0.6.",
586
+ suggestion: "No two clips on one track may overlap without a declared transition.",
482
587
  });
483
588
  }
484
589
  }
@@ -504,6 +609,7 @@ async function resolveTimelineInternal(options) {
504
609
  durationInFrames,
505
610
  tracks: document.tracks,
506
611
  clips,
612
+ transitions,
507
613
  },
508
614
  diagnostics: uniqueDiagnostics,
509
615
  };
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/timeline/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/timeline/resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ import type { Props } from "../contracts.js";
2
+ import { type BlendMode, type TimelineClipAudio, type TimelineKeyframes, type TimelineTrack, type TimelineTransform, type TransitionKind } from "./schema.js";
3
+ import type { TransitionRole, TransitionWindow } from "./transitions.js";
4
+ /** The fixed dimensions and frame rate a timeline scene is projected against. */
5
+ export interface TimelineSceneFormat {
6
+ width: number;
7
+ height: number;
8
+ fps: number;
9
+ }
10
+ /** The fields a timeline scene needs from a composition clip source. */
11
+ export interface TimelineSceneCompositionSource {
12
+ kind: "composition";
13
+ id: string;
14
+ metadata: {
15
+ width: number;
16
+ height: number;
17
+ fps?: number;
18
+ durationInFrames?: number;
19
+ static?: boolean;
20
+ };
21
+ }
22
+ /** The fields a timeline scene needs from a nested-timeline clip source. */
23
+ export interface TimelineSceneNestedSource {
24
+ kind: "timeline";
25
+ id: string;
26
+ durationInFrames: number;
27
+ timeline: {
28
+ format: TimelineSceneFormat;
29
+ durationInFrames: number;
30
+ background?: string;
31
+ };
32
+ }
33
+ /** The fields a timeline scene needs from a media clip source. */
34
+ export interface TimelineSceneMediaSource {
35
+ kind: "video" | "image" | "audio";
36
+ src: string;
37
+ width?: number;
38
+ height?: number;
39
+ durationInFrames?: number;
40
+ hasAudio?: boolean;
41
+ }
42
+ export type TimelineSceneSource = TimelineSceneCompositionSource | TimelineSceneNestedSource | TimelineSceneMediaSource;
43
+ /**
44
+ * A resolved timeline clip as the scene projection sees it. The preview payload
45
+ * is the same shape with a `url` added to each source, so both sides share one
46
+ * clip model instead of maintaining a second one.
47
+ */
48
+ export interface TimelineSceneClip<S extends TimelineSceneSource = TimelineSceneSource> {
49
+ id: string;
50
+ track: string;
51
+ source: S;
52
+ start: number;
53
+ duration: number;
54
+ end: number;
55
+ sourceIn: number;
56
+ props?: Props;
57
+ transform?: TimelineTransform;
58
+ keyframes?: TimelineKeyframes;
59
+ blend?: BlendMode;
60
+ audio?: TimelineClipAudio;
61
+ }
62
+ export interface TimelineSceneTransition {
63
+ from: string;
64
+ to: string;
65
+ kind: TransitionKind;
66
+ easing?: string;
67
+ track: string;
68
+ start: number;
69
+ end: number;
70
+ }
71
+ /** The minimal resolved-timeline shape the scene projection reads. */
72
+ export interface TimelineSceneInput<S extends TimelineSceneSource = TimelineSceneSource> {
73
+ format: TimelineSceneFormat;
74
+ durationInFrames: number;
75
+ tracks: readonly TimelineTrack[];
76
+ clips: readonly TimelineSceneClip<S>[];
77
+ transitions: readonly TimelineSceneTransition[];
78
+ }
79
+ /** What the capture path does to turn a scene layer's source into pixels. */
80
+ export type TimelineCaptureMode = "frames" | "still" | "video" | "image" | "nested";
81
+ /**
82
+ * One active visual clip at a timeline frame or over a render range. Array order
83
+ * is composite order: later layers paint above earlier ones.
84
+ */
85
+ export interface TimelineSceneLayer<S extends TimelineSceneSource = TimelineSceneSource> {
86
+ clip: TimelineSceneClip<S>;
87
+ capture: TimelineCaptureMode;
88
+ /** The source frame at the projected range's first timeline frame. */
89
+ sourceStart: number;
90
+ sourceWidth: number;
91
+ sourceHeight: number;
92
+ transform: TimelineTransform;
93
+ keyframes?: TimelineKeyframes;
94
+ blend: BlendMode;
95
+ transition?: {
96
+ window: TransitionWindow;
97
+ role: TransitionRole;
98
+ };
99
+ }
100
+ export interface TimelineScene<S extends TimelineSceneSource = TimelineSceneSource> {
101
+ timeline: TimelineSceneInput<S>;
102
+ /** Inclusive first timeline frame. */
103
+ start: number;
104
+ /** Exclusive last timeline frame. */
105
+ end: number;
106
+ /** Visual layers from bottom to top. */
107
+ layers: TimelineSceneLayer<S>[];
108
+ }
109
+ /** One side of a declared transition, in absolute timeline frames. */
110
+ export interface TimelineTransitionSpan extends TransitionWindow {
111
+ role: TransitionRole;
112
+ }
113
+ /**
114
+ * Pairs each transition with its outgoing and incoming clip. Visual scenes and
115
+ * timeline audio both consume this so the window and roles are defined once.
116
+ */
117
+ export declare function transitionSpans(timeline: Pick<TimelineSceneInput, "transitions">): Map<string, TimelineTransitionSpan[]>;
118
+ /**
119
+ * Projects a resolved timeline onto one render range. Every returned layer is
120
+ * active for the whole range; a single frame is a one-frame range. Nested
121
+ * timelines stay sources and are projected recursively when they are captured.
122
+ */
123
+ export declare function projectScene<S extends TimelineSceneSource>(timeline: TimelineSceneInput<S>, start: number, end: number): TimelineScene<S>;
124
+ /** Projects one timeline frame. */
125
+ export declare function projectSceneAtFrame<S extends TimelineSceneSource>(timeline: TimelineSceneInput<S>, frame: number): TimelineScene<S>;
126
+ //# sourceMappingURL=scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../src/timeline/scene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import { FrameyardError } from "../errors.js";
2
+ import { DEFAULT_TIMELINE_TRANSFORM, } from "./schema.js";
3
+ /**
4
+ * Pairs each transition with its outgoing and incoming clip. Visual scenes and
5
+ * timeline audio both consume this so the window and roles are defined once.
6
+ */
7
+ export function transitionSpans(timeline) {
8
+ const spans = new Map();
9
+ for (const transition of timeline.transitions) {
10
+ const window = {
11
+ start: transition.start,
12
+ end: transition.end,
13
+ ...(transition.easing !== undefined ? { easing: transition.easing } : {}),
14
+ };
15
+ const outgoing = spans.get(transition.from) ?? [];
16
+ outgoing.push({ role: "out", ...window });
17
+ spans.set(transition.from, outgoing);
18
+ const incoming = spans.get(transition.to) ?? [];
19
+ incoming.push({ role: "in", ...window });
20
+ spans.set(transition.to, incoming);
21
+ }
22
+ return spans;
23
+ }
24
+ function projectLayer(clip, start, end, spans) {
25
+ const source = clip.source;
26
+ let capture;
27
+ let sourceWidth;
28
+ let sourceHeight;
29
+ switch (source.kind) {
30
+ case "composition":
31
+ capture = source.metadata.static === true ? "still" : "frames";
32
+ sourceWidth = source.metadata.width;
33
+ sourceHeight = source.metadata.height;
34
+ break;
35
+ case "timeline":
36
+ capture = "nested";
37
+ sourceWidth = source.timeline.format.width;
38
+ sourceHeight = source.timeline.format.height;
39
+ break;
40
+ case "video":
41
+ case "image":
42
+ if (source.width === undefined || source.height === undefined) {
43
+ throw new FrameyardError("TIMELINE_MEDIA_INVALID", `Media ${source.src} is missing width/height metadata for clip "${clip.id}".`);
44
+ }
45
+ capture = source.kind;
46
+ sourceWidth = source.width;
47
+ sourceHeight = source.height;
48
+ break;
49
+ case "audio":
50
+ throw new FrameyardError("INTERNAL", `Clip "${clip.id}" is audio-only and has no visual scene layer.`);
51
+ }
52
+ const span = (spans.get(clip.id) ?? []).find((candidate) => candidate.start < end && candidate.end > start);
53
+ return {
54
+ clip,
55
+ capture,
56
+ sourceStart: clip.sourceIn + (start - clip.start),
57
+ sourceWidth,
58
+ sourceHeight,
59
+ transform: clip.transform ?? { ...DEFAULT_TIMELINE_TRANSFORM },
60
+ ...(clip.keyframes !== undefined ? { keyframes: clip.keyframes } : {}),
61
+ blend: clip.blend ?? "normal",
62
+ ...(span !== undefined
63
+ ? {
64
+ transition: {
65
+ window: {
66
+ start: span.start,
67
+ end: span.end,
68
+ ...(span.easing !== undefined ? { easing: span.easing } : {}),
69
+ },
70
+ role: span.role,
71
+ },
72
+ }
73
+ : {}),
74
+ };
75
+ }
76
+ /**
77
+ * Projects a resolved timeline onto one render range. Every returned layer is
78
+ * active for the whole range; a single frame is a one-frame range. Nested
79
+ * timelines stay sources and are projected recursively when they are captured.
80
+ */
81
+ export function projectScene(timeline, start, end) {
82
+ if (!Number.isInteger(start) ||
83
+ !Number.isInteger(end) ||
84
+ start < 0 ||
85
+ end > timeline.durationInFrames ||
86
+ end <= start) {
87
+ throw new FrameyardError("TIMELINE_INVALID", `Invalid timeline range ${start}..${end}.`);
88
+ }
89
+ const spans = transitionSpans(timeline);
90
+ const trackOrder = new Map(timeline.tracks.map((track, index) => [track.id, index]));
91
+ const videoTracks = new Set(timeline.tracks.filter((track) => track.kind === "video").map((track) => track.id));
92
+ const layers = timeline.clips
93
+ .filter((clip) => videoTracks.has(clip.track))
94
+ .filter((clip) => clip.start <= start && clip.end >= end)
95
+ .sort((left, right) => {
96
+ const leftOrder = trackOrder.get(left.track) ?? Number.MAX_SAFE_INTEGER;
97
+ const rightOrder = trackOrder.get(right.track) ?? Number.MAX_SAFE_INTEGER;
98
+ // Within one track, the later-starting clip composites above the
99
+ // outgoing clip during a transition overlap.
100
+ return leftOrder - rightOrder || left.start - right.start || left.end - right.end;
101
+ })
102
+ .map((clip) => projectLayer(clip, start, end, spans));
103
+ return { timeline, start, end, layers };
104
+ }
105
+ /** Projects one timeline frame. */
106
+ export function projectSceneAtFrame(timeline, frame) {
107
+ return projectScene(timeline, frame, frame + 1);
108
+ }
109
+ //# sourceMappingURL=scene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../src/timeline/scene.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,11 @@ import { type CompositionDiagnostic, type Props } from "../contracts.js";
2
2
  export type TimelineTrackKind = "video" | "audio";
3
3
  export type TimelineSourceKind = "composition" | "timeline" | "video" | "image" | "audio";
4
4
  export type FitPolicy = "contain" | "cover" | "stretch";
5
+ /** CSS blend modes that FFmpeg can reproduce with matching semantics. */
6
+ export declare const BLEND_MODES: readonly ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion"];
7
+ export type BlendMode = (typeof BLEND_MODES)[number];
8
+ /** CSS blend modes that require cross-channel math and are not supported yet. */
9
+ export declare const UNSUPPORTED_BLEND_MODES: readonly ["hue", "saturation", "color", "luminosity"];
5
10
  export interface TimelineSourceComposition {
6
11
  kind: "composition";
7
12
  id: string;
@@ -33,10 +38,23 @@ export interface TimelineTransform {
33
38
  rotation: number;
34
39
  opacity: number;
35
40
  }
41
+ /** The presentation defaults applied when a visual clip omits a transform. */
42
+ export declare const DEFAULT_TIMELINE_TRANSFORM: Readonly<TimelineTransform>;
36
43
  export interface TimelineClipAudio {
37
44
  muted: boolean;
38
45
  gain: number;
39
46
  }
47
+ export interface TimelineKeyframe {
48
+ /** Clip-local integer frame. `0` is the clip start; `duration` is the end boundary. */
49
+ frame: number;
50
+ value: number;
51
+ /** CSS timing function for the interval after this key. Defaults to `linear`. */
52
+ easing?: string;
53
+ }
54
+ export type TimelineKeyframeTrack = TimelineKeyframe[];
55
+ export declare const KEYFRAME_CHANNELS: readonly ["x", "y", "scale", "rotation", "opacity"];
56
+ export type TimelineKeyframeChannel = (typeof KEYFRAME_CHANNELS)[number];
57
+ export type TimelineKeyframes = Partial<Record<TimelineKeyframeChannel, TimelineKeyframeTrack>>;
40
58
  export interface TimelineClip {
41
59
  id: string;
42
60
  track: string;
@@ -47,8 +65,27 @@ export interface TimelineClip {
47
65
  sourceIn: number;
48
66
  props?: Props;
49
67
  transform?: TimelineTransform;
68
+ /** Per-channel presentation animation, evaluated in clip-local frames. */
69
+ keyframes?: TimelineKeyframes;
70
+ /** CSS blend mode against the accumulated backdrop. Defaults to `normal`. */
71
+ blend?: BlendMode;
50
72
  audio?: TimelineClipAudio;
51
73
  }
74
+ /** Transition kinds that both preview and production can reproduce exactly. */
75
+ export declare const TRANSITION_KINDS: readonly ["dissolve", "crossfade"];
76
+ export type TransitionKind = (typeof TRANSITION_KINDS)[number];
77
+ /**
78
+ * A transition across the overlap of two clips on one track. `dissolve` is a
79
+ * visual fade on a video track and also crossfades contributed audio;
80
+ * `crossfade` is an audio gain ramp between two audio-track clips.
81
+ */
82
+ export interface TimelineTransition {
83
+ from: string;
84
+ to: string;
85
+ kind: TransitionKind;
86
+ /** CSS timing function for the progress. Defaults to `linear`. */
87
+ easing?: string;
88
+ }
52
89
  export interface TimelineDocument {
53
90
  version: 1;
54
91
  name?: string;
@@ -56,6 +93,7 @@ export interface TimelineDocument {
56
93
  background?: string;
57
94
  tracks: TimelineTrack[];
58
95
  clips: TimelineClip[];
96
+ transitions?: TimelineTransition[];
59
97
  }
60
98
  export interface ParseTimelineResult {
61
99
  timeline: TimelineDocument | null;