visualfries 0.1.10115 → 0.3.2

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 (139) hide show
  1. package/README.md +122 -0
  2. package/bin/visualfries.js +1570 -0
  3. package/dist/DIContainer.d.ts +2 -1
  4. package/dist/DIContainer.js +16 -5
  5. package/dist/SceneBuilder.svelte.d.ts +70 -1
  6. package/dist/SceneBuilder.svelte.js +96 -29
  7. package/dist/agent/audioMixer.d.ts +34 -0
  8. package/dist/agent/audioMixer.js +308 -0
  9. package/dist/agent/broll.d.ts +35 -0
  10. package/dist/agent/broll.js +226 -0
  11. package/dist/agent/capabilities.d.ts +34 -0
  12. package/dist/agent/capabilities.js +246 -0
  13. package/dist/agent/captionScene.d.ts +23 -0
  14. package/dist/agent/captionScene.js +204 -0
  15. package/dist/agent/catalog.d.ts +24 -0
  16. package/dist/agent/catalog.js +67 -0
  17. package/dist/agent/cueFiles.d.ts +54 -0
  18. package/dist/agent/cueFiles.js +219 -0
  19. package/dist/agent/cuePresets.d.ts +7 -0
  20. package/dist/agent/cuePresets.js +50 -0
  21. package/dist/agent/deterministicMedia.d.ts +61 -0
  22. package/dist/agent/deterministicMedia.js +303 -0
  23. package/dist/agent/index.d.ts +18 -0
  24. package/dist/agent/index.js +18 -0
  25. package/dist/agent/inspectScene.d.ts +36 -0
  26. package/dist/agent/inspectScene.js +139 -0
  27. package/dist/agent/localRender.d.ts +82 -0
  28. package/dist/agent/localRender.js +702 -0
  29. package/dist/agent/overlays.d.ts +40 -0
  30. package/dist/agent/overlays.js +325 -0
  31. package/dist/agent/productionPlan.d.ts +131 -0
  32. package/dist/agent/productionPlan.js +322 -0
  33. package/dist/agent/renderPlan.d.ts +27 -0
  34. package/dist/agent/renderPlan.js +68 -0
  35. package/dist/agent/renderRanges.d.ts +24 -0
  36. package/dist/agent/renderRanges.js +73 -0
  37. package/dist/agent/runtimeSupport.d.ts +19 -0
  38. package/dist/agent/runtimeSupport.js +192 -0
  39. package/dist/agent/streamingEncoder.d.ts +31 -0
  40. package/dist/agent/streamingEncoder.js +208 -0
  41. package/dist/agent/transcripts.d.ts +29 -0
  42. package/dist/agent/transcripts.js +146 -0
  43. package/dist/agent/transitions.d.ts +20 -0
  44. package/dist/agent/transitions.js +169 -0
  45. package/dist/animations/PixiAnimationTarget.d.ts +29 -0
  46. package/dist/animations/PixiAnimationTarget.js +63 -0
  47. package/dist/animations/builders/LineHighlighterAnimationBuilder.js +20 -3
  48. package/dist/animations/builders/WordHighlighterAnimationBuilder.js +15 -2
  49. package/dist/browser/browserExport.d.ts +73 -0
  50. package/dist/browser/browserExport.js +180 -0
  51. package/dist/browser/glTransitions.d.ts +37 -0
  52. package/dist/browser/glTransitions.js +261 -0
  53. package/dist/browser/index.d.ts +3 -0
  54. package/dist/browser/index.js +3 -0
  55. package/dist/browser/mediaDecode.d.ts +31 -0
  56. package/dist/browser/mediaDecode.js +152 -0
  57. package/dist/builders/PixiComponentBuilder.d.ts +6 -0
  58. package/dist/builders/PixiComponentBuilder.js +12 -0
  59. package/dist/builders/_ComponentState.svelte.d.ts +7 -5
  60. package/dist/builders/_ComponentState.svelte.js +29 -15
  61. package/dist/builders/html/StyleBuilder.js +9 -8
  62. package/dist/builders/html/TextComponentHtmlBuilder.js +4 -2
  63. package/dist/builders/html/processors/AppearanceStyleProcessor.js +1 -1
  64. package/dist/builders/html/processors/TextAppearanceStyleProcessor.js +7 -0
  65. package/dist/builders/html/processors/TextEffectsStyleProcessor.js +32 -13
  66. package/dist/commands/ReplaceSourceOnTimeCommand.js +9 -1
  67. package/dist/commands/SeekCommand.js +19 -6
  68. package/dist/components/AnimatedGIF.d.ts +3 -0
  69. package/dist/components/AnimatedGIF.js +28 -1
  70. package/dist/components/Component.svelte.d.ts +5 -5
  71. package/dist/components/Component.svelte.js +29 -13
  72. package/dist/components/ComponentContext.svelte.js +68 -23
  73. package/dist/components/hooks/AnimationHook.js +1 -1
  74. package/dist/components/hooks/CanvasFillHook.d.ts +12 -0
  75. package/dist/components/hooks/CanvasFillHook.js +75 -0
  76. package/dist/components/hooks/DeterministicMediaFrameHook.js +3 -0
  77. package/dist/components/hooks/HtmlTextHook.js +11 -3
  78. package/dist/components/hooks/HtmlToCanvasHook.js +8 -25
  79. package/dist/components/hooks/MediaHook.js +172 -47
  80. package/dist/components/hooks/MediaSeekingHook.js +138 -88
  81. package/dist/components/hooks/PixiGifHook.js +4 -4
  82. package/dist/components/hooks/PixiSplitScreenDisplayObjectHook.d.ts +3 -0
  83. package/dist/components/hooks/PixiSplitScreenDisplayObjectHook.js +85 -8
  84. package/dist/components/hooks/PixiVideoTextureHook.js +10 -4
  85. package/dist/components/hooks/PixiVisualTransformHook.d.ts +16 -0
  86. package/dist/components/hooks/PixiVisualTransformHook.js +102 -0
  87. package/dist/components/hooks/SubtitlesHook.js +48 -24
  88. package/dist/components/hooks/VerifyMediaHook.js +2 -2
  89. package/dist/directors/ComponentDirector.d.ts +1 -0
  90. package/dist/directors/ComponentDirector.js +41 -8
  91. package/dist/factories/SceneBuilderFactory.d.ts +3 -0
  92. package/dist/factories/SceneBuilderFactory.js +6 -0
  93. package/dist/fonts/fontDiscovery.js +12 -1
  94. package/dist/layers/Layer.svelte.d.ts +54 -0
  95. package/dist/layers/Layer.svelte.js +2 -25
  96. package/dist/managers/AppManager.svelte.d.ts +12 -0
  97. package/dist/managers/AppManager.svelte.js +180 -8
  98. package/dist/managers/ComponentsManager.svelte.d.ts +7 -7
  99. package/dist/managers/ComponentsManager.svelte.js +29 -15
  100. package/dist/managers/DeterministicMediaManager.d.ts +6 -0
  101. package/dist/managers/DeterministicMediaManager.js +57 -3
  102. package/dist/managers/EventManager.js +3 -1
  103. package/dist/managers/LayersManager.svelte.d.ts +54 -0
  104. package/dist/managers/RenderManager.d.ts +5 -0
  105. package/dist/managers/RenderManager.js +67 -21
  106. package/dist/managers/StateManager.svelte.d.ts +56 -0
  107. package/dist/managers/StateManager.svelte.js +60 -58
  108. package/dist/managers/SubtitlesManager.svelte.js +1 -3
  109. package/dist/managers/TimeManager.svelte.d.ts +4 -0
  110. package/dist/managers/TimeManager.svelte.js +23 -7
  111. package/dist/schemas/runtime/deterministic.d.ts +3 -0
  112. package/dist/schemas/runtime/deterministic.js +5 -1
  113. package/dist/schemas/runtime/types.d.ts +36 -15
  114. package/dist/schemas/scene/components.d.ts +126 -0
  115. package/dist/schemas/scene/components.js +11 -0
  116. package/dist/schemas/scene/core.d.ts +109 -10
  117. package/dist/schemas/scene/core.js +1 -1
  118. package/dist/utils/mediaWindow.d.ts +13 -0
  119. package/dist/utils/mediaWindow.js +25 -0
  120. package/dist/utils/svgGenerator.js +1 -1
  121. package/dist/utils/timelineWindow.d.ts +2 -0
  122. package/dist/utils/timelineWindow.js +7 -0
  123. package/dist/utils/utils.js +2 -4
  124. package/docs/AGENT_PATTERNS.md +243 -0
  125. package/docs/AGENT_WORKFLOW.md +364 -0
  126. package/docs/AUTHORING_BEST_PRACTICES.md +188 -0
  127. package/docs/AUTHORING_SYSTEM_AUDIT.md +98 -0
  128. package/docs/BROWSER_EXPORT_SPIKE.md +55 -0
  129. package/docs/DETERMINISTIC_RENDERER.md +83 -0
  130. package/docs/NEXT_RELEASE.md +28 -0
  131. package/docs/PROPOSED_VISUALFRIES_SKILL.md +68 -0
  132. package/docs/examples/agent-cues.json +49 -0
  133. package/docs/examples/agent-transcript.json +23 -0
  134. package/docs/examples/agent-transcript.srt +7 -0
  135. package/docs/examples/agent-transcript.vtt +7 -0
  136. package/docs/examples/image-animation.json +87 -0
  137. package/docs/examples/native-text-metric-badge.json +109 -0
  138. package/package.json +133 -100
  139. package/skills/visualfries/SKILL.md +328 -0
package/README.md CHANGED
@@ -36,6 +36,103 @@ This means development is driven by a singular vision and you have a direct line
36
36
  npm install visualfries
37
37
  ```
38
38
 
39
+ ## Agent CLI
40
+
41
+ VisualFries includes a small agent-facing CLI for scene JSON workflows that do not require opening the ContentFries UI.
42
+
43
+ ```bash
44
+ visualfries validate scene.json
45
+ visualfries inspect scene.json --json
46
+ visualfries qa scene.json --output ./qa
47
+ visualfries doctor --json
48
+ visualfries catalog --component TEXT --capabilities --json
49
+ visualfries validate scene.json --strict-runtime-support
50
+ visualfries explain scene.json --component views-badge --frame 12 --json
51
+ visualfries parity scene.json --frames 5,12,35 --rois qa/parity-rois.json --output qa/parity --json
52
+ visualfries validate-cues ./cues.json --duration 45 --json
53
+ visualfries caption-scene \
54
+ --video ./input.mp4 \
55
+ --transcript ./transcript.srt \
56
+ --preset hidden-engine-center \
57
+ --output ./scene.json
58
+ visualfries preset-cues --duration 45 --preset hidden-engine-dynamic --output ./cues.json
59
+ visualfries apply-cues ./scene.json --cues ./cues.json --output ./scene.with-cues.json
60
+ visualfries render ./scene.json --output ./out.mp4
61
+ ```
62
+
63
+ For static-heavy scenes, QA first and then use the faster duplicate-aware render:
64
+
65
+ ```bash
66
+ visualfries render ./scene.json --output ./out.mp4 --skip-duplicates
67
+ ```
68
+
69
+ `visualfries init` also creates a compose-ready package with `scene.json`, `cues.json`, `assets/`, `qa/`, and `notes.md`.
70
+
71
+ For a one-command agent render:
72
+
73
+ ```bash
74
+ visualfries compose \
75
+ --video ./input.mp4 \
76
+ --transcript ./transcript.srt \
77
+ --cue-preset hidden-engine-dynamic \
78
+ --cues ./cues.json \
79
+ --scene-output ./scene.json \
80
+ --qa-output ./qa/frames \
81
+ --output ./out.mp4
82
+ ```
83
+
84
+ The `caption-scene` command creates a render-ready VisualFries scene with a full-frame video layer, subtitle layer, asset registry, and subtitle timing data from transcript JSON, SRT, or VTT.
85
+
86
+ The `render` command opens a controlled browser renderer, captures the scene frame-by-frame, and encodes MP4 with `ffmpeg`. Use `--frames-only` when an agent needs QA frames before encoding.
87
+
88
+ For Node automations, use the agent-only export:
89
+
90
+ ```ts
91
+ import { createCaptionScene, inspectScene, normalizeTranscript } from 'visualfries/agent';
92
+ ```
93
+
94
+ Agent helpers also include timed text overlays:
95
+
96
+ ```ts
97
+ import {
98
+ addAgentBrollSequence,
99
+ addAgentTextOverlays,
100
+ addAgentTransitions
101
+ } from 'visualfries/agent';
102
+
103
+ const sceneWithOverlays = addAgentTextOverlays({
104
+ scene,
105
+ overlays: [
106
+ { text: 'LOVE THIS 😍', start: 0.4, end: 1.1, style: 'hook-punch' },
107
+ { text: 'NECK 🤯', start: 1.1, end: 1.7, style: 'shock-word' }
108
+ ]
109
+ });
110
+
111
+ const sceneWithBroll = addAgentBrollSequence({
112
+ scene,
113
+ cues: [
114
+ { url: './broll/profile.mp4', start: 2.0, end: 5.0, type: 'VIDEO' },
115
+ { url: './broll/chart.png', start: 5.0, end: 7.0, type: 'IMAGE' }
116
+ ]
117
+ });
118
+
119
+ const sceneWithTransitions = addAgentTransitions({
120
+ scene,
121
+ transitions: [
122
+ { time: 2.0, style: 'dip-to-black' },
123
+ { time: 5.0, style: 'swipe-left', color: '#04483D' }
124
+ ]
125
+ });
126
+ ```
127
+
128
+ Start with [Authoring Best Practices](docs/AUTHORING_BEST_PRACTICES.md): native TEXT policy,
129
+ component decision tree, animation runtime matrix, compositing truth, frame-QA, and known limits.
130
+ Then see [Agent Workflow](docs/AGENT_WORKFLOW.md), [Agent Patterns](docs/AGENT_PATTERNS.md),
131
+ and the [2026 authoring-system audit](docs/AUTHORING_SYSTEM_AUDIT.md).
132
+
133
+ Visible typography defaults to native `TEXT`. Do not rasterize ordinary badges/metrics into
134
+ `IMAGE`, and do not add a `SHAPE` solely as a text background when TEXT can own the treatment.
135
+
39
136
  ## Quick Start
40
137
 
41
138
  The best way to use VisualFries is within a Svelte component.
@@ -198,6 +295,31 @@ const builder = await createSceneBuilder(sceneData, container, {
198
295
  });
199
296
  ```
200
297
 
298
+ ## Server Renderer Mode (Canvas vs WebGL)
299
+
300
+ Server mode remains canvas-first by default for backward compatibility:
301
+
302
+ ```typescript
303
+ await createSceneBuilder(sceneData, container, {
304
+ environment: 'server'
305
+ // serverRendererMode defaults to "canvas"
306
+ });
307
+ ```
308
+
309
+ To opt into GPU rendering on server/headless runtimes:
310
+
311
+ ```typescript
312
+ await createSceneBuilder(sceneData, container, {
313
+ environment: 'server',
314
+ serverRendererMode: 'webgl',
315
+ preferWebGL2: true,
316
+ powerPreference: 'high-performance'
317
+ });
318
+ ```
319
+
320
+ If WebGL is unavailable or initialization fails, Visualfries automatically falls back to canvas so deterministic render jobs keep running. When deterministic diagnostics are enabled, renderer selection and fallback reason are included in `getDiagnosticsReport()`.
321
+ In `serverRendererMode: 'webgl'`, `fillBackgroundBlur` uses native `PIXI.BlurFilter` (same rendering path as client mode).
322
+
201
323
  ## Contributing
202
324
 
203
325
  As an early-stage, solo-developed project, contributions are highly encouraged! The best way to contribute right now is by: