takomi 2.1.45 → 2.5.4

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 (679) hide show
  1. package/.pi/README.md +5 -5
  2. package/.pi/agents/architect.md +2 -2
  3. package/.pi/agents/designer.md +2 -2
  4. package/.pi/agents/worker.md +32 -0
  5. package/.pi/extensions/oauth-router/README.md +3 -3
  6. package/.pi/extensions/oauth-router/config.ts +34 -34
  7. package/.pi/extensions/oauth-router/report-ui.ts +205 -205
  8. package/.pi/extensions/oauth-router/scripts/vibe-verify.py +5 -5
  9. package/.pi/extensions/takomi-context-manager/diagnostics.ts +560 -560
  10. package/.pi/extensions/takomi-context-manager/model-policy-gate.ts +15 -103
  11. package/.pi/extensions/takomi-context-manager/policy-tools.ts +93 -93
  12. package/.pi/extensions/takomi-context-manager/skill-categories.d.ts +11 -11
  13. package/.pi/extensions/takomi-context-manager/skill-tools.ts +208 -208
  14. package/.pi/extensions/takomi-context-manager/tool-renderers.ts +112 -112
  15. package/.pi/extensions/takomi-runtime/command-text.ts +5 -4
  16. package/.pi/extensions/takomi-runtime/commands.ts +17 -17
  17. package/.pi/extensions/takomi-runtime/gate-provenance.ts +24 -24
  18. package/.pi/extensions/takomi-runtime/index.ts +278 -86
  19. package/.pi/extensions/takomi-runtime/model-routing-defaults.ts +168 -232
  20. package/.pi/extensions/takomi-runtime/profile.ts +9 -8
  21. package/.pi/extensions/takomi-runtime/routing-policy.ts +84 -65
  22. package/.pi/extensions/takomi-runtime/shared.ts +7 -30
  23. package/.pi/extensions/takomi-runtime/tool-renderers.ts +234 -234
  24. package/.pi/extensions/takomi-runtime/workflow-catalog.ts +54 -54
  25. package/.pi/extensions/takomi-subagents/agents.ts +5 -0
  26. package/.pi/extensions/takomi-subagents/async-lifecycle.ts +401 -401
  27. package/.pi/extensions/takomi-subagents/detached-results.ts +940 -940
  28. package/.pi/extensions/takomi-subagents/index.ts +4 -0
  29. package/.pi/extensions/takomi-subagents/native-render.ts +253 -250
  30. package/.pi/extensions/takomi-subagents/pi-subagents-engine.ts +7 -1
  31. package/.pi/extensions/takomi-subagents/result-heartbeat.ts +55 -55
  32. package/.pi/extensions/takomi-subagents/subagent-ux.ts +162 -162
  33. package/.pi/extensions/takomi-subagents/tool-runner.ts +65 -1
  34. package/.pi/settings.json +39 -36
  35. package/.pi/takomi/model-routing.md +6 -0
  36. package/.pi/takomi-profile.json +8 -4
  37. package/README.md +1 -1
  38. package/assets/.agent/skills/embedded-captions/CATALOG.md +93 -93
  39. package/assets/.agent/skills/embedded-captions/SKILL.md +286 -286
  40. package/assets/.agent/skills/embedded-captions/assets/brand/CDPR-fankit-terms.txt +35 -35
  41. package/assets/.agent/skills/embedded-captions/assets/brand/cyberpunk-widths.json +115 -115
  42. package/assets/.agent/skills/embedded-captions/assets/fonts/char-widths.json +2211 -2211
  43. package/assets/.agent/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +241 -241
  44. package/assets/.agent/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +241 -241
  45. package/assets/.agent/skills/embedded-captions/dna/README.md +148 -148
  46. package/assets/.agent/skills/embedded-captions/dna/chrome.json +68 -68
  47. package/assets/.agent/skills/embedded-captions/dna/cream.json +69 -69
  48. package/assets/.agent/skills/embedded-captions/dna/documentary.json +62 -62
  49. package/assets/.agent/skills/embedded-captions/dna/editorial.json +70 -70
  50. package/assets/.agent/skills/embedded-captions/dna/glitch.json +82 -82
  51. package/assets/.agent/skills/embedded-captions/dna/ink.json +65 -65
  52. package/assets/.agent/skills/embedded-captions/dna/keynote.json +62 -62
  53. package/assets/.agent/skills/embedded-captions/dna/loud.json +75 -75
  54. package/assets/.agent/skills/embedded-captions/dna/neon.json +58 -58
  55. package/assets/.agent/skills/embedded-captions/dna/velocity.json +89 -89
  56. package/assets/.agent/skills/embedded-captions/modes/cinematic/README.md +48 -48
  57. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -98
  58. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -188
  59. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -134
  60. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -179
  61. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -81
  62. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -170
  63. package/assets/.agent/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -16
  64. package/assets/.agent/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -226
  65. package/assets/.agent/skills/embedded-captions/modes/cinematic/engine.html +355 -355
  66. package/assets/.agent/skills/embedded-captions/modes/standard/_anatomy.md +233 -233
  67. package/assets/.agent/skills/embedded-captions/modes/standard/_motion.md +192 -192
  68. package/assets/.agent/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +97 -97
  69. package/assets/.agent/skills/embedded-captions/references/aesthetic-principles.md +168 -168
  70. package/assets/.agent/skills/embedded-captions/references/anti-patterns.md +188 -188
  71. package/assets/.agent/skills/embedded-captions/references/bespoke-vs-presets.md +178 -178
  72. package/assets/.agent/skills/embedded-captions/references/caption-grouping.md +130 -130
  73. package/assets/.agent/skills/embedded-captions/references/composition-craft.md +522 -522
  74. package/assets/.agent/skills/embedded-captions/references/direction-catalog.md +138 -138
  75. package/assets/.agent/skills/embedded-captions/references/example-renders/champion.html +371 -371
  76. package/assets/.agent/skills/embedded-captions/references/example-renders/memory-wall.html +334 -334
  77. package/assets/.agent/skills/embedded-captions/references/failure-modes.md +145 -145
  78. package/assets/.agent/skills/embedded-captions/references/layout-heuristics.md +238 -238
  79. package/assets/.agent/skills/embedded-captions/references/motion-vocabulary.md +148 -148
  80. package/assets/.agent/skills/embedded-captions/references/rail.md +68 -68
  81. package/assets/.agent/skills/embedded-captions/references/reference-bar.md +47 -47
  82. package/assets/.agent/skills/embedded-captions/references/scene-types.md +94 -94
  83. package/assets/.agent/skills/embedded-captions/references/test-set.md +66 -66
  84. package/assets/.agent/skills/embedded-captions/references/typographic-moves.md +266 -266
  85. package/assets/.agent/skills/embedded-captions/references/typography-presets.md +63 -63
  86. package/assets/.agent/skills/embedded-captions/scripts/audio-envelope.cjs +95 -95
  87. package/assets/.agent/skills/embedded-captions/scripts/check-occlusion.cjs +250 -250
  88. package/assets/.agent/skills/embedded-captions/scripts/check-overflow.cjs +194 -194
  89. package/assets/.agent/skills/embedded-captions/scripts/check-rail-climax.cjs +233 -233
  90. package/assets/.agent/skills/embedded-captions/scripts/check-timing.cjs +173 -173
  91. package/assets/.agent/skills/embedded-captions/scripts/fill-timings.cjs +124 -124
  92. package/assets/.agent/skills/embedded-captions/scripts/fit-fonts.cjs +158 -158
  93. package/assets/.agent/skills/embedded-captions/scripts/gen-stroke-path.py +46 -46
  94. package/assets/.agent/skills/embedded-captions/scripts/inject-fonts.cjs +169 -169
  95. package/assets/.agent/skills/embedded-captions/scripts/lib-dna.cjs +201 -201
  96. package/assets/.agent/skills/embedded-captions/scripts/make-cinematic.cjs +1205 -1205
  97. package/assets/.agent/skills/embedded-captions/scripts/make-composition.cjs +404 -404
  98. package/assets/.agent/skills/embedded-captions/scripts/make-theme.cjs +8781 -8781
  99. package/assets/.agent/skills/embedded-captions/scripts/matte.cjs +279 -279
  100. package/assets/.agent/skills/embedded-captions/scripts/measure-layout.cjs +293 -293
  101. package/assets/.agent/skills/embedded-captions/scripts/prepare.sh +39 -39
  102. package/assets/.agent/skills/embedded-captions/scripts/preview-frames.cjs +268 -268
  103. package/assets/.agent/skills/embedded-captions/scripts/render-and-composite.sh +469 -469
  104. package/assets/.agent/skills/embedded-captions/scripts/render-theme.sh +34 -34
  105. package/assets/.agent/skills/embedded-captions/scripts/safe-zones.cjs +813 -813
  106. package/assets/.agent/skills/embedded-captions/scripts/transcribe.cjs +332 -332
  107. package/assets/.agent/skills/embedded-captions/themes/PORTING.md +49 -49
  108. package/assets/.agent/skills/embedded-captions/themes/README.md +244 -244
  109. package/assets/.agent/skills/embedded-captions/themes/anchor.json +27 -27
  110. package/assets/.agent/skills/embedded-captions/themes/arcade.json +51 -51
  111. package/assets/.agent/skills/embedded-captions/themes/aurora.json +41 -41
  112. package/assets/.agent/skills/embedded-captions/themes/biolume.json +35 -35
  113. package/assets/.agent/skills/embedded-captions/themes/brush.json +74 -74
  114. package/assets/.agent/skills/embedded-captions/themes/chalkboard.json +52 -52
  115. package/assets/.agent/skills/embedded-captions/themes/dossier.json +56 -56
  116. package/assets/.agent/skills/embedded-captions/themes/graffiti.json +62 -62
  117. package/assets/.agent/skills/embedded-captions/themes/hologram.json +41 -41
  118. package/assets/.agent/skills/embedded-captions/themes/inkwater.json +43 -43
  119. package/assets/.agent/skills/embedded-captions/themes/laser.json +46 -46
  120. package/assets/.agent/skills/embedded-captions/themes/lastpage.json +33 -33
  121. package/assets/.agent/skills/embedded-captions/themes/neonsign.json +53 -53
  122. package/assets/.agent/skills/embedded-captions/themes/nightcity.json +56 -56
  123. package/assets/.agent/skills/embedded-captions/themes/ordnance.json +54 -54
  124. package/assets/.agent/skills/embedded-captions/themes/papercut.json +37 -37
  125. package/assets/.agent/skills/embedded-captions/themes/popup.json +46 -46
  126. package/assets/.agent/skills/embedded-captions/themes/ransom.json +62 -62
  127. package/assets/.agent/skills/embedded-captions/themes/scoreboard.json +54 -54
  128. package/assets/.agent/skills/embedded-captions/themes/spectrum.json +46 -46
  129. package/assets/.agent/skills/embedded-captions/themes/stardust.json +29 -29
  130. package/assets/.agent/skills/embedded-captions/themes/stomp.json +43 -43
  131. package/assets/.agent/skills/embedded-captions/themes/terminal.json +49 -49
  132. package/assets/.agent/skills/embedded-captions/themes/thunder.json +44 -44
  133. package/assets/.agent/skills/embedded-captions/themes/transit.json +44 -44
  134. package/assets/.agent/skills/embedded-captions/themes/vhs.json +47 -47
  135. package/assets/.agent/skills/faceless-explainer/SKILL.md +209 -209
  136. package/assets/.agent/skills/faceless-explainer/references/cut-catalog.md +215 -215
  137. package/assets/.agent/skills/faceless-explainer/references/motion-language.md +156 -156
  138. package/assets/.agent/skills/faceless-explainer/references/story-design.md +248 -248
  139. package/assets/.agent/skills/faceless-explainer/references/visual-design.md +146 -146
  140. package/assets/.agent/skills/faceless-explainer/scripts/assemble-index.mjs +570 -570
  141. package/assets/.agent/skills/faceless-explainer/scripts/audio.mjs +253 -253
  142. package/assets/.agent/skills/faceless-explainer/scripts/build-frame.mjs +536 -536
  143. package/assets/.agent/skills/faceless-explainer/scripts/captions.mjs +508 -508
  144. package/assets/.agent/skills/faceless-explainer/scripts/lib/assets.mjs +55 -55
  145. package/assets/.agent/skills/faceless-explainer/scripts/lib/dimensions.mjs +45 -45
  146. package/assets/.agent/skills/faceless-explainer/scripts/lib/storyboard.mjs +249 -249
  147. package/assets/.agent/skills/faceless-explainer/scripts/lib/tokens.mjs +204 -204
  148. package/assets/.agent/skills/faceless-explainer/scripts/lib/transition-registry.mjs +38 -38
  149. package/assets/.agent/skills/faceless-explainer/scripts/lib/transitions.json +71 -71
  150. package/assets/.agent/skills/faceless-explainer/scripts/transitions.mjs +320 -320
  151. package/assets/.agent/skills/faceless-explainer/sub-agents/frame-worker.md +75 -75
  152. package/assets/.agent/skills/figma/SKILL.md +121 -121
  153. package/assets/.agent/skills/general-video/SKILL.md +143 -143
  154. package/assets/.agent/skills/hyperframes/SKILL.md +164 -164
  155. package/assets/.agent/skills/hyperframes-animation/SKILL.md +84 -84
  156. package/assets/.agent/skills/hyperframes-animation/adapters/animate-text.md +64 -64
  157. package/assets/.agent/skills/hyperframes-animation/adapters/animejs.md +114 -114
  158. package/assets/.agent/skills/hyperframes-animation/adapters/css-animations.md +143 -143
  159. package/assets/.agent/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +118 -118
  160. package/assets/.agent/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -96
  161. package/assets/.agent/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +96 -96
  162. package/assets/.agent/skills/hyperframes-animation/adapters/gsap.md +105 -105
  163. package/assets/.agent/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -507
  164. package/assets/.agent/skills/hyperframes-animation/adapters/lottie.md +117 -117
  165. package/assets/.agent/skills/hyperframes-animation/adapters/three.md +131 -131
  166. package/assets/.agent/skills/hyperframes-animation/adapters/typegpu.md +178 -178
  167. package/assets/.agent/skills/hyperframes-animation/adapters/waapi.md +101 -101
  168. package/assets/.agent/skills/hyperframes-animation/blueprints/comparison-split.md +27 -27
  169. package/assets/.agent/skills/hyperframes-animation/blueprints/constellation-hub.md +44 -44
  170. package/assets/.agent/skills/hyperframes-animation/blueprints/cta-morph-press.md +28 -28
  171. package/assets/.agent/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +57 -57
  172. package/assets/.agent/skills/hyperframes-animation/blueprints/dataviz-countup.md +46 -46
  173. package/assets/.agent/skills/hyperframes-animation/blueprints/device-surface-showcase.md +53 -53
  174. package/assets/.agent/skills/hyperframes-animation/blueprints/grid-card-assemble.md +66 -66
  175. package/assets/.agent/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +78 -78
  176. package/assets/.agent/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +69 -69
  177. package/assets/.agent/skills/hyperframes-animation/blueprints/overwhelm-surround.md +28 -28
  178. package/assets/.agent/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -37
  179. package/assets/.agent/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -29
  180. package/assets/.agent/skills/hyperframes-animation/blueprints/titlecard-reveal.md +42 -42
  181. package/assets/.agent/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -51
  182. package/assets/.agent/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -30
  183. package/assets/.agent/skills/hyperframes-animation/blueprints-index.md +146 -146
  184. package/assets/.agent/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -382
  185. package/assets/.agent/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -649
  186. package/assets/.agent/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -520
  187. package/assets/.agent/skills/hyperframes-animation/examples/cta-morph-press.html +468 -468
  188. package/assets/.agent/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -1298
  189. package/assets/.agent/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -759
  190. package/assets/.agent/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -729
  191. package/assets/.agent/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -352
  192. package/assets/.agent/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -779
  193. package/assets/.agent/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -1374
  194. package/assets/.agent/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -861
  195. package/assets/.agent/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -347
  196. package/assets/.agent/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -606
  197. package/assets/.agent/skills/hyperframes-animation/rules/3d-page-scroll.md +227 -227
  198. package/assets/.agent/skills/hyperframes-animation/rules/3d-text-depth-layers.md +297 -297
  199. package/assets/.agent/skills/hyperframes-animation/rules/ai-tracking-box.md +382 -382
  200. package/assets/.agent/skills/hyperframes-animation/rules/ambient-glow-bloom.md +305 -305
  201. package/assets/.agent/skills/hyperframes-animation/rules/asr-keyword-glow.md +286 -286
  202. package/assets/.agent/skills/hyperframes-animation/rules/avatar-cloud-network.md +371 -371
  203. package/assets/.agent/skills/hyperframes-animation/rules/camera-cursor-tracking.md +246 -246
  204. package/assets/.agent/skills/hyperframes-animation/rules/card-morph-anchor.md +267 -267
  205. package/assets/.agent/skills/hyperframes-animation/rules/center-outward-expansion.md +227 -227
  206. package/assets/.agent/skills/hyperframes-animation/rules/context-sensitive-cursor.md +257 -257
  207. package/assets/.agent/skills/hyperframes-animation/rules/coordinate-target-zoom.md +332 -332
  208. package/assets/.agent/skills/hyperframes-animation/rules/counting-dynamic-scale.md +283 -283
  209. package/assets/.agent/skills/hyperframes-animation/rules/css-marker-patterns.md +373 -373
  210. package/assets/.agent/skills/hyperframes-animation/rules/cursor-click-ripple.md +262 -262
  211. package/assets/.agent/skills/hyperframes-animation/rules/depth-of-field-blur.md +313 -313
  212. package/assets/.agent/skills/hyperframes-animation/rules/depth-scatter-assemble.md +303 -303
  213. package/assets/.agent/skills/hyperframes-animation/rules/discrete-text-sequence.md +273 -273
  214. package/assets/.agent/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +307 -307
  215. package/assets/.agent/skills/hyperframes-animation/rules/gsap-effects.md +299 -299
  216. package/assets/.agent/skills/hyperframes-animation/rules/hacker-flip-3d.md +223 -223
  217. package/assets/.agent/skills/hyperframes-animation/rules/kinetic-beat-slam.md +183 -183
  218. package/assets/.agent/skills/hyperframes-animation/rules/motion-blur-streak.md +328 -328
  219. package/assets/.agent/skills/hyperframes-animation/rules/multi-phase-camera.md +273 -273
  220. package/assets/.agent/skills/hyperframes-animation/rules/orbit-3d-entry.md +301 -301
  221. package/assets/.agent/skills/hyperframes-animation/rules/physics-press-reaction.md +350 -350
  222. package/assets/.agent/skills/hyperframes-animation/rules/press-release-spring.md +296 -296
  223. package/assets/.agent/skills/hyperframes-animation/rules/reactive-displacement.md +277 -277
  224. package/assets/.agent/skills/hyperframes-animation/rules/scale-swap-transition.md +298 -298
  225. package/assets/.agent/skills/hyperframes-animation/rules/sine-wave-loop.md +278 -278
  226. package/assets/.agent/skills/hyperframes-animation/rules/split-tilt-cards.md +277 -277
  227. package/assets/.agent/skills/hyperframes-animation/rules/spring-pop-entrance.md +273 -273
  228. package/assets/.agent/skills/hyperframes-animation/rules/stat-bars-and-fills.md +156 -156
  229. package/assets/.agent/skills/hyperframes-animation/rules/svg-icon-enrichment.md +329 -329
  230. package/assets/.agent/skills/hyperframes-animation/rules/svg-path-draw.md +274 -274
  231. package/assets/.agent/skills/hyperframes-animation/rules/vertical-spring-ticker.md +239 -239
  232. package/assets/.agent/skills/hyperframes-animation/rules/viewport-change.md +349 -349
  233. package/assets/.agent/skills/hyperframes-animation/rules-index.md +86 -86
  234. package/assets/.agent/skills/hyperframes-animation/scripts/animation-map.mjs +606 -606
  235. package/assets/.agent/skills/hyperframes-animation/scripts/package-loader.mjs +288 -288
  236. package/assets/.agent/skills/hyperframes-animation/scripts/package-loader.test.mjs +62 -62
  237. package/assets/.agent/skills/hyperframes-animation/techniques.md +507 -507
  238. package/assets/.agent/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +167 -167
  239. package/assets/.agent/skills/hyperframes-animation/transitions/catalog.md +127 -127
  240. package/assets/.agent/skills/hyperframes-animation/transitions/css-3d.md +12 -12
  241. package/assets/.agent/skills/hyperframes-animation/transitions/css-blur.md +51 -51
  242. package/assets/.agent/skills/hyperframes-animation/transitions/css-cover.md +43 -43
  243. package/assets/.agent/skills/hyperframes-animation/transitions/css-destruction.md +95 -95
  244. package/assets/.agent/skills/hyperframes-animation/transitions/css-dissolve.md +66 -66
  245. package/assets/.agent/skills/hyperframes-animation/transitions/css-distortion.md +45 -45
  246. package/assets/.agent/skills/hyperframes-animation/transitions/css-grid.md +10 -10
  247. package/assets/.agent/skills/hyperframes-animation/transitions/css-light.md +49 -49
  248. package/assets/.agent/skills/hyperframes-animation/transitions/css-mechanical.md +30 -30
  249. package/assets/.agent/skills/hyperframes-animation/transitions/css-other.md +25 -25
  250. package/assets/.agent/skills/hyperframes-animation/transitions/css-push.md +41 -41
  251. package/assets/.agent/skills/hyperframes-animation/transitions/css-radial.md +37 -37
  252. package/assets/.agent/skills/hyperframes-animation/transitions/css-scale.md +24 -24
  253. package/assets/.agent/skills/hyperframes-animation/transitions/overview.md +153 -153
  254. package/assets/.agent/skills/hyperframes-cli/SKILL.md +113 -113
  255. package/assets/.agent/skills/hyperframes-cli/references/doctor-browser.md +45 -45
  256. package/assets/.agent/skills/hyperframes-cli/references/init-and-scaffold.md +51 -51
  257. package/assets/.agent/skills/hyperframes-cli/references/lambda.md +132 -132
  258. package/assets/.agent/skills/hyperframes-cli/references/lint-validate-inspect.md +121 -121
  259. package/assets/.agent/skills/hyperframes-cli/references/preview-render.md +164 -164
  260. package/assets/.agent/skills/hyperframes-cli/references/upgrade-info-misc.md +75 -75
  261. package/assets/.agent/skills/hyperframes-core/SKILL.md +78 -78
  262. package/assets/.agent/skills/hyperframes-core/references/composition-patterns.md +263 -263
  263. package/assets/.agent/skills/hyperframes-core/references/data-attributes.md +70 -70
  264. package/assets/.agent/skills/hyperframes-core/references/determinism-rules.md +68 -68
  265. package/assets/.agent/skills/hyperframes-core/references/full-screen-motion.md +62 -62
  266. package/assets/.agent/skills/hyperframes-core/references/minimal-composition.md +66 -66
  267. package/assets/.agent/skills/hyperframes-core/references/script-format.md +49 -49
  268. package/assets/.agent/skills/hyperframes-core/references/storyboard-format.md +95 -95
  269. package/assets/.agent/skills/hyperframes-core/references/sub-compositions.md +237 -237
  270. package/assets/.agent/skills/hyperframes-core/references/subagent-dispatch.md +41 -41
  271. package/assets/.agent/skills/hyperframes-core/references/tailwind.md +125 -125
  272. package/assets/.agent/skills/hyperframes-core/references/tracks-and-clips.md +76 -76
  273. package/assets/.agent/skills/hyperframes-core/references/variables-and-media.md +90 -90
  274. package/assets/.agent/skills/hyperframes-creative/SKILL.md +70 -70
  275. package/assets/.agent/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -289
  276. package/assets/.agent/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -221
  277. package/assets/.agent/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -1214
  278. package/assets/.agent/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -275
  279. package/assets/.agent/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -224
  280. package/assets/.agent/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -1347
  281. package/assets/.agent/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -307
  282. package/assets/.agent/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -223
  283. package/assets/.agent/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -1372
  284. package/assets/.agent/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -275
  285. package/assets/.agent/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -230
  286. package/assets/.agent/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -1140
  287. package/assets/.agent/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -284
  288. package/assets/.agent/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -225
  289. package/assets/.agent/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -1166
  290. package/assets/.agent/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -284
  291. package/assets/.agent/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -224
  292. package/assets/.agent/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -1465
  293. package/assets/.agent/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -278
  294. package/assets/.agent/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -222
  295. package/assets/.agent/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -1263
  296. package/assets/.agent/skills/hyperframes-creative/frame-presets/claude/FRAME.md +277 -277
  297. package/assets/.agent/skills/hyperframes-creative/frame-presets/claude/caption-skin.html +224 -224
  298. package/assets/.agent/skills/hyperframes-creative/frame-presets/claude/frame-showcase.html +1439 -1439
  299. package/assets/.agent/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -265
  300. package/assets/.agent/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -238
  301. package/assets/.agent/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -1468
  302. package/assets/.agent/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -314
  303. package/assets/.agent/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -226
  304. package/assets/.agent/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -1268
  305. package/assets/.agent/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -333
  306. package/assets/.agent/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -227
  307. package/assets/.agent/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -1330
  308. package/assets/.agent/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -274
  309. package/assets/.agent/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -230
  310. package/assets/.agent/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -1444
  311. package/assets/.agent/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -265
  312. package/assets/.agent/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -223
  313. package/assets/.agent/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -1273
  314. package/assets/.agent/skills/hyperframes-creative/palettes/bold-energetic.md +14 -14
  315. package/assets/.agent/skills/hyperframes-creative/palettes/clean-corporate.md +14 -14
  316. package/assets/.agent/skills/hyperframes-creative/palettes/dark-premium.md +14 -14
  317. package/assets/.agent/skills/hyperframes-creative/palettes/jewel-rich.md +14 -14
  318. package/assets/.agent/skills/hyperframes-creative/palettes/monochrome.md +14 -14
  319. package/assets/.agent/skills/hyperframes-creative/palettes/nature-earth.md +14 -14
  320. package/assets/.agent/skills/hyperframes-creative/palettes/neon-electric.md +14 -14
  321. package/assets/.agent/skills/hyperframes-creative/palettes/pastel-soft.md +14 -14
  322. package/assets/.agent/skills/hyperframes-creative/palettes/warm-editorial.md +14 -14
  323. package/assets/.agent/skills/hyperframes-creative/references/audio-reactive.md +76 -76
  324. package/assets/.agent/skills/hyperframes-creative/references/beat-direction.md +164 -164
  325. package/assets/.agent/skills/hyperframes-creative/references/composition-patterns.md +199 -199
  326. package/assets/.agent/skills/hyperframes-creative/references/data-in-motion.md +19 -19
  327. package/assets/.agent/skills/hyperframes-creative/references/design-adherence.md +19 -19
  328. package/assets/.agent/skills/hyperframes-creative/references/design-picker.md +123 -123
  329. package/assets/.agent/skills/hyperframes-creative/references/design-spec.md +55 -55
  330. package/assets/.agent/skills/hyperframes-creative/references/house-style.md +73 -73
  331. package/assets/.agent/skills/hyperframes-creative/references/motion-principles.md +150 -150
  332. package/assets/.agent/skills/hyperframes-creative/references/narration.md +92 -92
  333. package/assets/.agent/skills/hyperframes-creative/references/prompt-expansion.md +68 -68
  334. package/assets/.agent/skills/hyperframes-creative/references/typography.md +218 -218
  335. package/assets/.agent/skills/hyperframes-creative/references/video-composition.md +63 -63
  336. package/assets/.agent/skills/hyperframes-creative/references/visual-styles.md +457 -457
  337. package/assets/.agent/skills/hyperframes-creative/scripts/contrast-report.mjs +353 -353
  338. package/assets/.agent/skills/hyperframes-creative/scripts/extract-audio-data.py +188 -188
  339. package/assets/.agent/skills/hyperframes-creative/scripts/package-loader.mjs +288 -288
  340. package/assets/.agent/skills/hyperframes-creative/scripts/package-loader.test.mjs +62 -62
  341. package/assets/.agent/skills/hyperframes-creative/templates/design-picker.html +1432 -1432
  342. package/assets/.agent/skills/hyperframes-keyframes/SKILL.md +237 -237
  343. package/assets/.agent/skills/hyperframes-keyframes/agents/openai.yaml +4 -4
  344. package/assets/.agent/skills/hyperframes-keyframes/references/keyframe-patterns.md +106 -106
  345. package/assets/.agent/skills/hyperframes-media/SKILL.md +97 -97
  346. package/assets/.agent/skills/hyperframes-media/assets/sfx/CREDITS.md +35 -35
  347. package/assets/.agent/skills/hyperframes-media/assets/sfx/manifest.json +97 -97
  348. package/assets/.agent/skills/hyperframes-media/references/bgm.md +72 -72
  349. package/assets/.agent/skills/hyperframes-media/references/captions/authoring.md +159 -159
  350. package/assets/.agent/skills/hyperframes-media/references/captions/motion.md +87 -87
  351. package/assets/.agent/skills/hyperframes-media/references/captions/transcript-handling.md +97 -97
  352. package/assets/.agent/skills/hyperframes-media/references/remove-background.md +143 -143
  353. package/assets/.agent/skills/hyperframes-media/references/requirements.md +29 -29
  354. package/assets/.agent/skills/hyperframes-media/references/sfx.md +42 -42
  355. package/assets/.agent/skills/hyperframes-media/references/transcribe.md +52 -52
  356. package/assets/.agent/skills/hyperframes-media/references/tts-to-captions.md +24 -24
  357. package/assets/.agent/skills/hyperframes-media/references/tts.md +135 -135
  358. package/assets/.agent/skills/hyperframes-media/scripts/audio.mjs +293 -293
  359. package/assets/.agent/skills/hyperframes-media/scripts/heygen-tts.mjs +121 -121
  360. package/assets/.agent/skills/hyperframes-media/scripts/lib/bgm.mjs +235 -235
  361. package/assets/.agent/skills/hyperframes-media/scripts/lib/concurrency.mjs +14 -14
  362. package/assets/.agent/skills/hyperframes-media/scripts/lib/concurrency.test.mjs +41 -41
  363. package/assets/.agent/skills/hyperframes-media/scripts/lib/heygen.mjs +131 -131
  364. package/assets/.agent/skills/hyperframes-media/scripts/lib/sfx.mjs +128 -128
  365. package/assets/.agent/skills/hyperframes-media/scripts/lib/tts.mjs +298 -298
  366. package/assets/.agent/skills/hyperframes-media/scripts/lib/tts.spawn.test.mjs +97 -97
  367. package/assets/.agent/skills/hyperframes-media/scripts/lib/tts.test.mjs +66 -66
  368. package/assets/.agent/skills/hyperframes-media/scripts/lyria-recipe.py +128 -128
  369. package/assets/.agent/skills/hyperframes-media/scripts/wait-bgm.mjs +167 -167
  370. package/assets/.agent/skills/hyperframes-registry/SKILL.md +101 -101
  371. package/assets/.agent/skills/hyperframes-registry/examples/add-block.md +51 -51
  372. package/assets/.agent/skills/hyperframes-registry/examples/add-component.md +73 -73
  373. package/assets/.agent/skills/hyperframes-registry/references/contributing.md +166 -166
  374. package/assets/.agent/skills/hyperframes-registry/references/demo-html-pattern.md +54 -54
  375. package/assets/.agent/skills/hyperframes-registry/references/discovery.md +215 -215
  376. package/assets/.agent/skills/hyperframes-registry/references/install-locations.md +45 -45
  377. package/assets/.agent/skills/hyperframes-registry/references/templates.md +417 -417
  378. package/assets/.agent/skills/hyperframes-registry/references/wiring-blocks.md +61 -61
  379. package/assets/.agent/skills/hyperframes-registry/references/wiring-components.md +39 -39
  380. package/assets/.agent/skills/media-use/SKILL.md +124 -124
  381. package/assets/.agent/skills/media-use/scripts/eval.mjs +369 -369
  382. package/assets/.agent/skills/media-use/scripts/lib/adopt.mjs +112 -112
  383. package/assets/.agent/skills/media-use/scripts/lib/bgm-provider.mjs +20 -20
  384. package/assets/.agent/skills/media-use/scripts/lib/brand-provider.mjs +59 -59
  385. package/assets/.agent/skills/media-use/scripts/lib/cache.mjs +114 -114
  386. package/assets/.agent/skills/media-use/scripts/lib/freeze.mjs +26 -26
  387. package/assets/.agent/skills/media-use/scripts/lib/heygen-search.mjs +51 -51
  388. package/assets/.agent/skills/media-use/scripts/lib/image-provider.mjs +44 -44
  389. package/assets/.agent/skills/media-use/scripts/lib/index-gen.mjs +63 -63
  390. package/assets/.agent/skills/media-use/scripts/lib/manifest.mjs +91 -91
  391. package/assets/.agent/skills/media-use/scripts/lib/manifest.test.mjs +293 -293
  392. package/assets/.agent/skills/media-use/scripts/lib/probe.mjs +39 -39
  393. package/assets/.agent/skills/media-use/scripts/lib/probe.test.mjs +31 -31
  394. package/assets/.agent/skills/media-use/scripts/lib/providers.mjs +29 -29
  395. package/assets/.agent/skills/media-use/scripts/lib/sfx-provider.mjs +23 -23
  396. package/assets/.agent/skills/media-use/scripts/resolve.mjs +247 -247
  397. package/assets/.agent/skills/media-use/scripts/resolve.test.mjs +247 -247
  398. package/assets/.agent/skills/motion-graphics/SKILL.md +172 -172
  399. package/assets/.agent/skills/motion-graphics/agents/builder.md +40 -40
  400. package/assets/.agent/skills/motion-graphics/agents/director.md +53 -53
  401. package/assets/.agent/skills/motion-graphics/agents/finalize.md +17 -17
  402. package/assets/.agent/skills/motion-graphics/catalog-map.md +40 -40
  403. package/assets/.agent/skills/motion-graphics/categories/asset-fusion/module.md +37 -37
  404. package/assets/.agent/skills/motion-graphics/categories/charts/module.md +21 -21
  405. package/assets/.agent/skills/motion-graphics/categories/kinetic-type/module.md +19 -19
  406. package/assets/.agent/skills/motion-graphics/categories/logo-reveal/module.md +17 -17
  407. package/assets/.agent/skills/motion-graphics/categories/lower-thirds/module.md +16 -16
  408. package/assets/.agent/skills/motion-graphics/categories/maps/bake-basemap.mjs +273 -273
  409. package/assets/.agent/skills/motion-graphics/categories/maps/module.md +61 -61
  410. package/assets/.agent/skills/motion-graphics/categories/news/module.md +56 -56
  411. package/assets/.agent/skills/motion-graphics/categories/stat/module.md +21 -21
  412. package/assets/.agent/skills/motion-graphics/categories/tweet/module.md +16 -16
  413. package/assets/.agent/skills/motion-graphics/categories/webpage/module.md +21 -21
  414. package/assets/.agent/skills/motion-graphics/grounding/PROTOCOL.md +64 -64
  415. package/assets/.agent/skills/motion-graphics/grounding/locate.mjs +227 -227
  416. package/assets/.agent/skills/motion-graphics/phases/source/guide.md +21 -21
  417. package/assets/.agent/skills/motion-graphics/references/builder-contract.md +38 -38
  418. package/assets/.agent/skills/motion-graphics/references/motion-vocabulary.md +43 -43
  419. package/assets/.agent/skills/motion-graphics/references/shot-plan-ir.md +54 -54
  420. package/assets/.agent/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -306
  421. package/assets/.agent/skills/music-to-video/SKILL.md +197 -197
  422. package/assets/.agent/skills/music-to-video/references/frame-skeleton.md +100 -100
  423. package/assets/.agent/skills/music-to-video/references/montage.md +58 -58
  424. package/assets/.agent/skills/music-to-video/references/motion-primitive-catalog.md +75 -75
  425. package/assets/.agent/skills/music-to-video/references/motion-primitives/3d-card-flip/index.html +154 -154
  426. package/assets/.agent/skills/music-to-video/references/motion-primitives/assets/gsap.min.js +11 -11
  427. package/assets/.agent/skills/music-to-video/references/motion-primitives/bg-flow-field/index.html +326 -326
  428. package/assets/.agent/skills/music-to-video/references/motion-primitives/binary-decrypt/index.html +120 -120
  429. package/assets/.agent/skills/music-to-video/references/motion-primitives/blur-resolve/index.html +95 -95
  430. package/assets/.agent/skills/music-to-video/references/motion-primitives/braam-punch/index.html +135 -135
  431. package/assets/.agent/skills/music-to-video/references/motion-primitives/chromatic-split/index.html +146 -146
  432. package/assets/.agent/skills/music-to-video/references/motion-primitives/chrome-sweep/index.html +103 -103
  433. package/assets/.agent/skills/music-to-video/references/motion-primitives/counting-punch/index.html +154 -154
  434. package/assets/.agent/skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html +155 -155
  435. package/assets/.agent/skills/music-to-video/references/motion-primitives/datamosh-smear/index.html +166 -166
  436. package/assets/.agent/skills/music-to-video/references/motion-primitives/directional-fill/index.html +133 -133
  437. package/assets/.agent/skills/music-to-video/references/motion-primitives/dolly-zoom/index.html +137 -137
  438. package/assets/.agent/skills/music-to-video/references/motion-primitives/electric-arc/index.html +144 -144
  439. package/assets/.agent/skills/music-to-video/references/motion-primitives/flash-cut/index.html +132 -132
  440. package/assets/.agent/skills/music-to-video/references/motion-primitives/gooey-metaball/index.html +241 -241
  441. package/assets/.agent/skills/music-to-video/references/motion-primitives/hard-cut/index.html +117 -117
  442. package/assets/.agent/skills/music-to-video/references/motion-primitives/hypercut-whip/index.html +79 -79
  443. package/assets/.agent/skills/music-to-video/references/motion-primitives/iris-open/index.html +104 -104
  444. package/assets/.agent/skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html +92 -92
  445. package/assets/.agent/skills/music-to-video/references/motion-primitives/liquid-morph/index.html +131 -131
  446. package/assets/.agent/skills/music-to-video/references/motion-primitives/mask-reveal/index.html +109 -109
  447. package/assets/.agent/skills/music-to-video/references/motion-primitives/mosaic-pack/index.html +124 -124
  448. package/assets/.agent/skills/music-to-video/references/motion-primitives/neon-flicker/index.html +108 -108
  449. package/assets/.agent/skills/music-to-video/references/motion-primitives/outline-to-fill/index.html +117 -117
  450. package/assets/.agent/skills/music-to-video/references/motion-primitives/palette-flip/index.html +132 -132
  451. package/assets/.agent/skills/music-to-video/references/motion-primitives/particle-burst/index.html +141 -141
  452. package/assets/.agent/skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html +121 -121
  453. package/assets/.agent/skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html +160 -160
  454. package/assets/.agent/skills/music-to-video/references/motion-primitives/screen-shake/index.html +113 -113
  455. package/assets/.agent/skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html +130 -130
  456. package/assets/.agent/skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html +137 -137
  457. package/assets/.agent/skills/music-to-video/references/motion-primitives/staggered-exit/index.html +117 -117
  458. package/assets/.agent/skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md +42 -42
  459. package/assets/.agent/skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html +313 -313
  460. package/assets/.agent/skills/music-to-video/references/motion-primitives/text-wave-distort/index.html +136 -136
  461. package/assets/.agent/skills/music-to-video/references/motion-primitives/tile-mosaic/index.html +144 -144
  462. package/assets/.agent/skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html +122 -122
  463. package/assets/.agent/skills/music-to-video/references/motion-primitives/word-grid-burst/index.html +126 -126
  464. package/assets/.agent/skills/music-to-video/references/planning.md +104 -104
  465. package/assets/.agent/skills/music-to-video/references/storyboard-format.md +94 -94
  466. package/assets/.agent/skills/music-to-video/references/template-catalog.md +106 -106
  467. package/assets/.agent/skills/music-to-video/references/templates/card-flyby/index.html +527 -527
  468. package/assets/.agent/skills/music-to-video/references/templates/card-flyby/program.json +13 -13
  469. package/assets/.agent/skills/music-to-video/references/templates/held-message-living-field/index.html +485 -485
  470. package/assets/.agent/skills/music-to-video/references/templates/held-text-strobe-burst/index.html +302 -302
  471. package/assets/.agent/skills/music-to-video/references/templates/intro-kinetic-cascade/index.html +610 -610
  472. package/assets/.agent/skills/music-to-video/references/templates/intro-kinetic-cascade/program.json +41 -41
  473. package/assets/.agent/skills/music-to-video/references/templates/logo-split-lockup-pulse/index.html +596 -596
  474. package/assets/.agent/skills/music-to-video/references/templates/poster-tile-mosaic/index.html +589 -589
  475. package/assets/.agent/skills/music-to-video/references/templates/poster-tile-mosaic/program.json +25 -25
  476. package/assets/.agent/skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html +267 -267
  477. package/assets/.agent/skills/music-to-video/references/templates/split-anchor-word-slot/index.html +594 -594
  478. package/assets/.agent/skills/music-to-video/references/templates/split-anchor-word-slot/program.json +39 -39
  479. package/assets/.agent/skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html +238 -238
  480. package/assets/.agent/skills/music-to-video/scripts/analyze-beatgrid.py +531 -531
  481. package/assets/.agent/skills/music-to-video/scripts/assemble-index.mjs +218 -218
  482. package/assets/.agent/skills/music-to-video/scripts/lib/storyboard.mjs +249 -249
  483. package/assets/.agent/skills/music-to-video/scripts/stage-assets.mjs +58 -58
  484. package/assets/.agent/skills/music-to-video/scripts/validate-plan.mjs +161 -161
  485. package/assets/.agent/skills/music-to-video/sub-agents/frame-worker.md +75 -75
  486. package/assets/.agent/skills/pr-to-video/SKILL.md +240 -240
  487. package/assets/.agent/skills/pr-to-video/references/code-vocabulary.md +111 -111
  488. package/assets/.agent/skills/pr-to-video/references/cut-catalog.md +215 -215
  489. package/assets/.agent/skills/pr-to-video/references/motion-language.md +156 -156
  490. package/assets/.agent/skills/pr-to-video/references/story-design.md +211 -211
  491. package/assets/.agent/skills/pr-to-video/references/visual-design.md +164 -164
  492. package/assets/.agent/skills/pr-to-video/scripts/assemble-index.mjs +570 -570
  493. package/assets/.agent/skills/pr-to-video/scripts/audio.mjs +253 -253
  494. package/assets/.agent/skills/pr-to-video/scripts/build-frame.mjs +536 -536
  495. package/assets/.agent/skills/pr-to-video/scripts/captions.mjs +508 -508
  496. package/assets/.agent/skills/pr-to-video/scripts/fetch-people-avatars.mjs +157 -157
  497. package/assets/.agent/skills/pr-to-video/scripts/fetch-pr.mjs +164 -164
  498. package/assets/.agent/skills/pr-to-video/scripts/ingest.mjs +539 -539
  499. package/assets/.agent/skills/pr-to-video/scripts/lib/assets.mjs +55 -55
  500. package/assets/.agent/skills/pr-to-video/scripts/lib/dimensions.mjs +45 -45
  501. package/assets/.agent/skills/pr-to-video/scripts/lib/storyboard.mjs +249 -249
  502. package/assets/.agent/skills/pr-to-video/scripts/lib/tokens.mjs +204 -204
  503. package/assets/.agent/skills/pr-to-video/scripts/lib/transition-registry.mjs +38 -38
  504. package/assets/.agent/skills/pr-to-video/scripts/lib/transitions.json +71 -71
  505. package/assets/.agent/skills/pr-to-video/scripts/transitions.mjs +320 -320
  506. package/assets/.agent/skills/pr-to-video/sub-agents/frame-worker.md +95 -95
  507. package/assets/.agent/skills/product-launch-video/SKILL.md +208 -208
  508. package/assets/.agent/skills/product-launch-video/references/cut-catalog.md +220 -220
  509. package/assets/.agent/skills/product-launch-video/references/motion-language.md +156 -156
  510. package/assets/.agent/skills/product-launch-video/references/story-design.md +373 -373
  511. package/assets/.agent/skills/product-launch-video/references/visual-design.md +126 -126
  512. package/assets/.agent/skills/product-launch-video/scripts/assemble-index.mjs +570 -570
  513. package/assets/.agent/skills/product-launch-video/scripts/audio.mjs +253 -253
  514. package/assets/.agent/skills/product-launch-video/scripts/build-frame.mjs +536 -536
  515. package/assets/.agent/skills/product-launch-video/scripts/captions.mjs +508 -508
  516. package/assets/.agent/skills/product-launch-video/scripts/lib/assets.mjs +55 -55
  517. package/assets/.agent/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -45
  518. package/assets/.agent/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -249
  519. package/assets/.agent/skills/product-launch-video/scripts/lib/tokens.mjs +204 -204
  520. package/assets/.agent/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -38
  521. package/assets/.agent/skills/product-launch-video/scripts/lib/transitions.json +71 -71
  522. package/assets/.agent/skills/product-launch-video/scripts/stage-assets.mjs +39 -39
  523. package/assets/.agent/skills/product-launch-video/scripts/transitions.mjs +320 -320
  524. package/assets/.agent/skills/product-launch-video/sub-agents/frame-worker.md +75 -75
  525. package/assets/.agent/skills/remotion/SKILL.md +357 -38
  526. package/assets/.agent/skills/remotion/rules/3d.md +5 -5
  527. package/assets/.agent/skills/remotion/rules/assets/text-animations-word-highlight.tsx +1 -6
  528. package/assets/.agent/skills/remotion/rules/audio-visualization.md +198 -0
  529. package/assets/.agent/skills/remotion/rules/audio.md +1 -4
  530. package/assets/.agent/skills/remotion/rules/calculate-metadata.md +48 -18
  531. package/assets/.agent/skills/remotion/rules/compositions.md +16 -24
  532. package/assets/.agent/skills/remotion/rules/display-captions.md +79 -21
  533. package/assets/.agent/skills/remotion/rules/effects.md +235 -0
  534. package/assets/.agent/skills/remotion/rules/ffmpeg.md +34 -0
  535. package/assets/.agent/skills/remotion/rules/get-audio-duration.md +13 -13
  536. package/assets/.agent/skills/remotion/rules/get-video-dimensions.md +1 -1
  537. package/assets/.agent/skills/remotion/rules/get-video-duration.md +12 -10
  538. package/assets/.agent/skills/remotion/rules/gifs.md +21 -18
  539. package/assets/.agent/skills/remotion/rules/google-fonts.md +72 -0
  540. package/assets/.agent/skills/remotion/rules/html-in-canvas.md +122 -0
  541. package/assets/.agent/skills/remotion/rules/images.md +5 -64
  542. package/assets/.agent/skills/remotion/rules/import-srt-captions.md +9 -7
  543. package/assets/.agent/skills/remotion/rules/light-leaks.md +73 -0
  544. package/assets/.agent/skills/remotion/rules/local-fonts.md +65 -0
  545. package/assets/.agent/skills/remotion/rules/lottie.md +10 -8
  546. package/assets/.agent/skills/remotion/rules/maplibre.md +458 -0
  547. package/assets/.agent/skills/remotion/rules/measuring-dom-nodes.md +0 -1
  548. package/assets/.agent/skills/remotion/rules/measuring-text.md +2 -5
  549. package/assets/.agent/skills/remotion/rules/parameters.md +21 -10
  550. package/assets/.agent/skills/remotion/rules/sequencing.md +35 -9
  551. package/assets/.agent/skills/remotion/rules/sfx.md +51 -0
  552. package/assets/.agent/skills/remotion/rules/silence-detection.md +71 -0
  553. package/assets/.agent/skills/remotion/rules/subtitles.md +36 -0
  554. package/assets/.agent/skills/remotion/rules/tailwind.md +2 -2
  555. package/assets/.agent/skills/remotion/rules/timing.md +89 -106
  556. package/assets/.agent/skills/remotion/rules/transcribe-captions.md +58 -7
  557. package/assets/.agent/skills/remotion/rules/transitions.md +117 -42
  558. package/assets/.agent/skills/remotion/rules/transparent-videos.md +106 -0
  559. package/assets/.agent/skills/remotion/rules/trimming.md +1 -3
  560. package/assets/.agent/skills/remotion/rules/video-layout.md +68 -0
  561. package/assets/.agent/skills/remotion/rules/voiceover.md +99 -0
  562. package/assets/.agent/skills/remotion-real-ui-video/SKILL.md +264 -264
  563. package/assets/.agent/skills/remotion-real-ui-video/references/anti-patterns.md +114 -114
  564. package/assets/.agent/skills/remotion-real-ui-video/references/completion-checklist.md +75 -75
  565. package/assets/.agent/skills/remotion-real-ui-video/references/real-ui-bridge-example.md +93 -93
  566. package/assets/.agent/skills/remotion-to-hyperframes/SKILL.md +127 -127
  567. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/run.sh +249 -249
  568. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/README.md +41 -41
  569. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/expected.json +26 -26
  570. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +61 -61
  571. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/package.json +14 -14
  572. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/remotion.config.ts +13 -13
  573. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/Root.tsx +13 -13
  574. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/TitleCard.tsx +34 -34
  575. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/index.ts +4 -4
  576. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json +15 -15
  577. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/README.md +54 -54
  578. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/expected.json +29 -29
  579. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +118 -118
  580. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/package.json +14 -14
  581. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/remotion.config.ts +13 -13
  582. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/MultiScene.tsx +105 -105
  583. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/Root.tsx +13 -13
  584. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/index.ts +4 -4
  585. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json +15 -15
  586. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/setup.sh +34 -34
  587. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +85 -85
  588. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +41 -41
  589. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +269 -269
  590. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/package.json +15 -15
  591. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/remotion.config.ts +13 -13
  592. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Root.tsx +27 -27
  593. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Stargazed.tsx +37 -37
  594. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/AnimatedNumber.tsx +23 -23
  595. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/StatCard.tsx +59 -59
  596. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/UnderlinedText.tsx +47 -47
  597. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/index.ts +4 -4
  598. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/OutroScene.tsx +18 -18
  599. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/StatsScene.tsx +34 -34
  600. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/TitleScene.tsx +55 -55
  601. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json +15 -15
  602. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/README.md +51 -51
  603. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/01-use-state.tsx +29 -29
  604. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/02-use-effect-deps.tsx +29 -29
  605. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/03-async-metadata.tsx +39 -39
  606. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/04-third-party-react.tsx +30 -30
  607. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/05-lambda-config.tsx +38 -38
  608. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/06-warnings-only.tsx +36 -36
  609. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/07-custom-hook.tsx +28 -28
  610. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/08-mixed.tsx +41 -41
  611. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json +85 -85
  612. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/validate.sh +110 -110
  613. package/assets/.agent/skills/remotion-to-hyperframes/references/api-map.md +142 -142
  614. package/assets/.agent/skills/remotion-to-hyperframes/references/escape-hatch.md +115 -115
  615. package/assets/.agent/skills/remotion-to-hyperframes/references/eval.md +140 -140
  616. package/assets/.agent/skills/remotion-to-hyperframes/references/fonts.md +112 -112
  617. package/assets/.agent/skills/remotion-to-hyperframes/references/limitations.md +136 -136
  618. package/assets/.agent/skills/remotion-to-hyperframes/references/lottie.md +121 -121
  619. package/assets/.agent/skills/remotion-to-hyperframes/references/media.md +149 -149
  620. package/assets/.agent/skills/remotion-to-hyperframes/references/parameters.md +167 -167
  621. package/assets/.agent/skills/remotion-to-hyperframes/references/sequencing.md +195 -195
  622. package/assets/.agent/skills/remotion-to-hyperframes/references/timing.md +165 -165
  623. package/assets/.agent/skills/remotion-to-hyperframes/references/transitions.md +114 -114
  624. package/assets/.agent/skills/remotion-to-hyperframes/scripts/frame_strip.sh +107 -107
  625. package/assets/.agent/skills/remotion-to-hyperframes/scripts/lint_source.py +358 -358
  626. package/assets/.agent/skills/remotion-to-hyperframes/scripts/render_diff.sh +103 -103
  627. package/assets/.agent/skills/remotion-to-hyperframes/scripts/tests/fixtures/blocker.tsx +50 -50
  628. package/assets/.agent/skills/remotion-to-hyperframes/scripts/tests/fixtures/clean.tsx +46 -46
  629. package/assets/.agent/skills/remotion-to-hyperframes/scripts/tests/smoke.sh +90 -90
  630. package/assets/.agent/skills/shared-resend-portfolio/SKILL.md +124 -124
  631. package/assets/.agent/skills/slideshow/SKILL.md +550 -550
  632. package/assets/.agent/skills/slideshow/references/standalone-harness.md +1020 -1020
  633. package/assets/.agent/skills/talking-head-recut/NOTICE.md +39 -39
  634. package/assets/.agent/skills/talking-head-recut/SKILL.md +1191 -1191
  635. package/assets/.agent/skills/talking-head-recut/assets/vendor/gsap.min.js +10 -10
  636. package/assets/.agent/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -145
  637. package/assets/.agent/skills/talking-head-recut/references/frames/clean.html +92 -92
  638. package/assets/.agent/skills/talking-head-recut/references/frames/hairline.html +171 -171
  639. package/assets/.agent/skills/talking-head-recut/references/frames/polaroid.html +131 -131
  640. package/assets/.agent/skills/talking-head-recut/references/layouts/overlay.html +164 -164
  641. package/assets/.agent/skills/talking-head-recut/references/layouts/pip.html +143 -143
  642. package/assets/.agent/skills/talking-head-recut/references/layouts/split.html +121 -121
  643. package/assets/.agent/skills/talking-head-recut/references/layouts/stack.html +109 -109
  644. package/assets/.agent/skills/talking-head-recut/references/styles/academic.html +172 -172
  645. package/assets/.agent/skills/talking-head-recut/references/styles/audit.html +170 -170
  646. package/assets/.agent/skills/talking-head-recut/references/styles/editorial.html +189 -189
  647. package/assets/.agent/skills/talking-head-recut/references/styles/geom.html +181 -181
  648. package/assets/.agent/skills/talking-head-recut/references/styles/minimal.html +130 -130
  649. package/assets/.agent/skills/talking-head-recut/references/styles/spotlight.html +142 -142
  650. package/assets/.agent/skills/talking-head-recut/references/styles/swiss.html +188 -188
  651. package/assets/.agent/skills/talking-head-recut/references/styles/terminal.html +196 -196
  652. package/assets/.agent/skills/talking-head-recut/references/styles/whiteboard.html +170 -170
  653. package/assets/.agent/skills/talking-head-recut/references/styles/xhs.html +206 -206
  654. package/assets/.agent/skills/website-to-video/SKILL.md +145 -145
  655. package/assets/.agent/skills/website-to-video/assets/sfx/CREDITS.md +35 -35
  656. package/assets/.agent/skills/website-to-video/assets/sfx/manifest.json +97 -97
  657. package/assets/.agent/skills/website-to-video/references/beat-builder-guide.md +263 -263
  658. package/assets/.agent/skills/website-to-video/references/capabilities.md +713 -713
  659. package/assets/.agent/skills/website-to-video/references/step-0-capture.md +55 -55
  660. package/assets/.agent/skills/website-to-video/references/step-1-design.md +333 -333
  661. package/assets/.agent/skills/website-to-video/references/step-2-brief.md +178 -178
  662. package/assets/.agent/skills/website-to-video/references/step-3-storyboard.md +572 -572
  663. package/assets/.agent/skills/website-to-video/references/step-4-vo.md +230 -230
  664. package/assets/.agent/skills/website-to-video/references/step-5-build.md +483 -483
  665. package/assets/.agent/skills/website-to-video/references/step-6-validate.md +341 -341
  666. package/assets/.agent/skills/website-to-video/scripts/w2h-verify.mjs +759 -759
  667. package/package.json +6 -5
  668. package/src/pi-takomi-core/orchestration.ts +39 -21
  669. package/src/pi-takomi-core/routing.ts +8 -8
  670. package/src/pi-takomi-core/types.ts +25 -5
  671. package/src/pi-takomi-core/workflows.ts +86 -86
  672. package/src/takomi-stats.js +5 -5
  673. package/assets/.agent/skills/remotion/rules/animations.md +0 -29
  674. package/assets/.agent/skills/remotion/rules/assets.md +0 -78
  675. package/assets/.agent/skills/remotion/rules/can-decode.md +0 -75
  676. package/assets/.agent/skills/remotion/rules/charts.md +0 -58
  677. package/assets/.agent/skills/remotion/rules/extract-frames.md +0 -229
  678. package/assets/.agent/skills/remotion/rules/fonts.md +0 -152
  679. package/assets/.agent/skills/remotion/rules/maps.md +0 -403
@@ -1,313 +1,313 @@
1
- <!doctype html>
2
- <html
3
- lang="en"
4
- data-composition-variables='[
5
- {"id":"text", "type":"string", "label":"Wordmark", "default":"SPECTRAL"},
6
- {"id":"textColor", "type":"color", "label":"Wordmark fill", "default":"#f6ff7a"},
7
- {"id":"bgColor", "type":"color", "label":"Stage background", "default":"#000000"},
8
- {"id":"sweepSpeed", "type":"number", "label":"Light sweep speed", "default":1, "min":0.2, "max":3, "step":0.1}
9
- ]'
10
- >
11
- <head>
12
- <meta charset="UTF-8" />
13
- <meta name="viewport" content="width=1920, height=1080" />
14
- <title>text_spectral_rays</title>
15
- <script src="../assets/gsap.min.js"></script>
16
- <style>
17
- :root {
18
- --hg-violet: #7c3aed;
19
- --hg-violet-2: #a855f7;
20
- --hg-bg: #000000;
21
- --hg-fg: #f5f5fa;
22
- --hg-dim: #6b6b78;
23
- }
24
- * {
25
- margin: 0;
26
- padding: 0;
27
- box-sizing: border-box;
28
- }
29
- html,
30
- body {
31
- margin: 0;
32
- width: 1920px;
33
- height: 1080px;
34
- overflow: hidden;
35
- background: #000;
36
- font-family: "Inter", system-ui, sans-serif;
37
- color: var(--hg-fg);
38
- -webkit-font-smoothing: antialiased;
39
- }
40
- #scene {
41
- position: absolute;
42
- inset: 0;
43
- width: 1920px;
44
- height: 1080px;
45
- background: #000;
46
- }
47
- .vfx-canvas {
48
- position: absolute;
49
- inset: 0;
50
- width: 1920px;
51
- height: 1080px;
52
- display: block;
53
- }
54
- .label {
55
- position: absolute;
56
- left: 48px;
57
- bottom: 40px;
58
- font-size: 22px;
59
- font-weight: 600;
60
- letter-spacing: 0.18em;
61
- text-transform: uppercase;
62
- color: rgba(255, 255, 255, 0.6);
63
- mix-blend-mode: screen;
64
- pointer-events: none;
65
- }
66
- </style>
67
- </head>
68
- <body>
69
- <div
70
- id="root"
71
- data-composition-id="main"
72
- data-start="0"
73
- data-duration="4"
74
- data-width="1920"
75
- data-height="1080"
76
- >
77
- <div id="scene" class="clip" data-start="0" data-duration="4" data-track-index="1">
78
- <canvas class="vfx-canvas" width="1920" height="1080" aria-hidden="true"></canvas>
79
- <div class="label">text_spectral_rays</div>
80
- </div>
81
- </div>
82
- <script>
83
- window.__timelines = window.__timelines || {};
84
- const tl = gsap.timeline({ paused: true });
85
-
86
- (function () {
87
- const W = 1920;
88
- const H = 1080;
89
-
90
- const defaults = {
91
- text: "SPECTRAL",
92
- textColor: "#f6ff7a",
93
- bgColor: "#000000",
94
- sweepSpeed: 1,
95
- };
96
- const vars = Object.assign(
97
- {},
98
- defaults,
99
- window.__hyperframes && window.__hyperframes.getVariables
100
- ? window.__hyperframes.getVariables()
101
- : {},
102
- );
103
-
104
- const canvas = document.querySelector(".vfx-canvas");
105
- const gl = canvas.getContext("webgl", {
106
- premultipliedAlpha: false,
107
- preserveDrawingBuffer: true,
108
- });
109
-
110
- // animated state — GSAP tweens these; mouse (the light cursor) is derived
111
- const state = { progress: 0, effectMix: 0 };
112
- const mouse = { x: 0, y: H * 0.5 };
113
- const speed = Number(vars.sweepSpeed) || 1;
114
-
115
- // ── Rasterize the wordmark into a white MASK + a coloured SRC canvas ──
116
- function drawWord(ctx, fill) {
117
- ctx.clearRect(0, 0, W, H);
118
- let fs = 340;
119
- const stack = "900 " + fs + 'px "Arial Black", Impact, "Inter", system-ui, sans-serif';
120
- ctx.font = stack;
121
- const maxW = 1600;
122
- const measured = ctx.measureText(vars.text).width || 1;
123
- if (measured > maxW) {
124
- fs = Math.floor((fs * maxW) / measured);
125
- ctx.font = "900 " + fs + 'px "Arial Black", Impact, "Inter", system-ui, sans-serif';
126
- }
127
- ctx.textAlign = "center";
128
- ctx.textBaseline = "middle";
129
- ctx.fillStyle = fill;
130
- ctx.fillText(vars.text, W * 0.5, H * 0.5);
131
- }
132
- const maskCanvas = document.createElement("canvas");
133
- maskCanvas.width = W;
134
- maskCanvas.height = H;
135
- drawWord(maskCanvas.getContext("2d"), "#ffffff");
136
- const colorCanvas = document.createElement("canvas");
137
- colorCanvas.width = W;
138
- colorCanvas.height = H;
139
- drawWord(colorCanvas.getContext("2d"), vars.textColor);
140
-
141
- // ── WebGL fallback: flat fill (keeps the timeline registered) ──
142
- if (!gl) {
143
- const ctx = canvas.getContext("2d");
144
- ctx.fillStyle = vars.bgColor;
145
- ctx.fillRect(0, 0, W, H);
146
- tl.to(state, { progress: 1, duration: 3.6, ease: "none" }, 0.2);
147
- window.__timelines["main"] = tl;
148
- return;
149
- }
150
-
151
- const VERT = [
152
- "attribute vec2 position;",
153
- "varying vec2 vUv;",
154
- "void main(){",
155
- " vUv = position * 0.5 + 0.5;",
156
- " gl_Position = vec4(position, 0.0, 1.0);",
157
- "}",
158
- ].join("\n");
159
-
160
- // Volumetric spectral light-rays cast by the text mask toward a moving
161
- // light cursor — ported from the vfx-text-cursor golden sample, made
162
- // generic (reads any text mask/colour). All state from uniforms.
163
- const FRAG = [
164
- "precision highp float;",
165
- "varying vec2 vUv;",
166
- "uniform vec2 resolution;",
167
- "uniform vec2 mouse;",
168
- "uniform float maskY;",
169
- "uniform float maskScale;",
170
- "uniform float effectMix;",
171
- "uniform sampler2D src;",
172
- "uniform sampler2D colorSrc;",
173
- "#define PI 3.141593",
174
- "#define SAMPLES 112.0",
175
- "float hash(vec2 p){ return fract(sin(dot(p, vec2(489.0,589.0))) * 492.0) * 2.0 - 1.0; }",
176
- "float hash(vec3 p){ return fract(sin(dot(p, vec3(489.0,589.0,58.0))) * 492.0) * 2.0 - 1.0; }",
177
- "vec2 hash2(vec3 p){ return vec2(hash(p), hash(p + 1.0)); }",
178
- "vec4 readMask(vec2 uv){ if(uv.x<0.0||uv.x>1.0||uv.y<0.0||uv.y>1.0){return vec4(0.0);} return texture2D(src, uv); }",
179
- "vec4 readColor(vec2 uv){ if(uv.x<0.0||uv.x>1.0||uv.y<0.0||uv.y>1.0){return vec4(0.0);} return texture2D(colorSrc, uv); }",
180
- "vec3 spectrum(float x){ return cos((x - vec3(0.0,0.5,1.0)) * vec3(0.6,1.0,0.5) * PI); }",
181
- "void main(){",
182
- " vec2 uv = vUv;",
183
- " vec2 center = vec2(0.5, 0.5);",
184
- " vec2 maskUv = (uv - center) / maskScale + center + vec2(0.0, maskY / resolution.y);",
185
- " float mask = readMask(maskUv).r;",
186
- " vec4 col0 = readColor(maskUv);",
187
- " vec2 p = uv * 2.0 - 1.0;",
188
- " p.x *= resolution.x / resolution.y;",
189
- " vec2 mp = mouse / resolution;",
190
- " mp.y = 1.0 - mp.y;",
191
- " mp = mp * 2.0 - 1.0;",
192
- " mp.x *= resolution.x / resolution.y;",
193
- " vec2 rp = p;",
194
- " vec2 d = (mp - p) / SAMPLES;",
195
- " float acc = 0.0;",
196
- " for(float i = 0.0; i < SAMPLES; i++){",
197
- " rp += d;",
198
- " rp += hash2(vec3(rp, i)) * 0.5 / SAMPLES;",
199
- " vec2 uv2 = rp;",
200
- " uv2.x /= resolution.x / resolution.y;",
201
- " uv2 = uv2 * 0.5 + 0.5;",
202
- " vec2 rayUv = (uv2 - center) / maskScale + center + vec2(0.0, maskY / resolution.y);",
203
- " acc += readMask(rayUv).r / SAMPLES;",
204
- " }",
205
- " vec4 c = vec4(0.0, 0.0, 0.0, 1.0);",
206
- " c -= acc * 0.24;",
207
- " c += vec4(spectrum(cos(acc * 4.9)), 1.0) * acc * 3.65;",
208
- " c.rgb = max(c.rgb - 0.035, 0.0);",
209
- " c.rgb *= 1.16;",
210
- " float cursorX = mouse.x / resolution.x;",
211
- " float sweep = exp(-pow((uv.x - cursorX) * 6.2, 2.0));",
212
- " float textProximity = smoothstep(0.006, 0.34, acc);",
213
- " float longRay = smoothstep(0.004, 0.18, acc);",
214
- " vec3 sweepColor = vec3(0.14, 0.65, 0.85) + spectrum(cursorX * 1.8) * 0.28;",
215
- " c.rgb += sweepColor * sweep * (0.34 + textProximity * 2.35);",
216
- " c.rgb += spectrum(cursorX + acc * 2.0) * longRay * 0.58;",
217
- " c.rgb += col0.rgb * acc * 1.18;",
218
- " c.rgb += col0.rgb * sweep * mask * 0.92;",
219
- " c.rgb *= effectMix;",
220
- " c.rgb = mix(c.rgb, col0.rgb, smoothstep(0.02, 0.75, col0.a));",
221
- " c.rgb += vec3(1.0) * smoothstep(0.04, 0.38, mask) * 0.12 * effectMix;",
222
- " float grain = hash(vec3(uv.xyy + mouse.x * 0.0007));",
223
- " float dust = smoothstep(0.02, 0.38, acc) + smoothstep(0.03, 0.22, mask);",
224
- " c.rgb += grain * 0.07 * (0.42 + dust) * effectMix;",
225
- " c.rgb += spectrum(grain + cursorX) * abs(grain) * 0.045 * smoothstep(0.02, 0.5, acc) * effectMix;",
226
- " c.a = 1.0;",
227
- " gl_FragColor = c;",
228
- "}",
229
- ].join("\n");
230
-
231
- function compile(type, source) {
232
- const s = gl.createShader(type);
233
- gl.shaderSource(s, source);
234
- gl.compileShader(s);
235
- return s;
236
- }
237
- const program = gl.createProgram();
238
- gl.attachShader(program, compile(gl.VERTEX_SHADER, VERT));
239
- gl.attachShader(program, compile(gl.FRAGMENT_SHADER, FRAG));
240
- gl.linkProgram(program);
241
- gl.useProgram(program);
242
-
243
- function createTexture(source) {
244
- const t = gl.createTexture();
245
- gl.bindTexture(gl.TEXTURE_2D, t);
246
- gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
247
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
248
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
249
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
250
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
251
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
252
- return t;
253
- }
254
- const maskTex = createTexture(maskCanvas);
255
- const colorTex = createTexture(colorCanvas);
256
-
257
- const buffer = gl.createBuffer();
258
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
259
- gl.bufferData(
260
- gl.ARRAY_BUFFER,
261
- new Float32Array([-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]),
262
- gl.STATIC_DRAW,
263
- );
264
- const posLoc = gl.getAttribLocation(program, "position");
265
- const L = (n) => gl.getUniformLocation(program, n);
266
- const uRes = L("resolution");
267
- const uMouse = L("mouse");
268
- const uMaskY = L("maskY");
269
- const uMaskScale = L("maskScale");
270
- const uMix = L("effectMix");
271
- const uSrc = L("src");
272
- const uColorSrc = L("colorSrc");
273
-
274
- function render() {
275
- mouse.x = state.progress * W;
276
- mouse.y = H * 0.5;
277
- gl.viewport(0, 0, W, H);
278
- gl.clearColor(0, 0, 0, 1);
279
- gl.clear(gl.COLOR_BUFFER_BIT);
280
- gl.useProgram(program);
281
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
282
- gl.enableVertexAttribArray(posLoc);
283
- gl.vertexAttribPointer(posLoc, 2, gl.FLOAT, false, 0, 0);
284
- gl.activeTexture(gl.TEXTURE0);
285
- gl.bindTexture(gl.TEXTURE_2D, maskTex);
286
- gl.uniform1i(uSrc, 0);
287
- gl.activeTexture(gl.TEXTURE1);
288
- gl.bindTexture(gl.TEXTURE_2D, colorTex);
289
- gl.uniform1i(uColorSrc, 1);
290
- gl.uniform2f(uRes, W, H);
291
- gl.uniform2f(uMouse, mouse.x, mouse.y);
292
- gl.uniform1f(uMaskY, 0);
293
- gl.uniform1f(uMaskScale, 1);
294
- gl.uniform1f(uMix, state.effectMix);
295
- gl.drawArrays(gl.TRIANGLES, 0, 6);
296
- }
297
- render(); // initial frame (seek-to-0 correctness)
298
-
299
- // All repaint via the timeline's onUpdate — fully seek-safe, no rAF.
300
- tl.eventCallback("onUpdate", render);
301
-
302
- // effect punches in, the light cursor sweeps L→R across the wordmark,
303
- // then fades for a clean loop.
304
- tl.set(state, { progress: 0, effectMix: 0 }, 0);
305
- tl.to(state, { effectMix: 1, duration: 0.45, ease: "power3.out" }, 0.15);
306
- tl.to(state, { progress: 1, duration: 3.4 / speed, ease: "none" }, 0.2);
307
- tl.to(state, { effectMix: 0, duration: 0.4, ease: "power2.in" }, 3.6);
308
-
309
- window.__timelines["main"] = tl;
310
- })();
311
- </script>
312
- </body>
313
- </html>
1
+ <!doctype html>
2
+ <html
3
+ lang="en"
4
+ data-composition-variables='[
5
+ {"id":"text", "type":"string", "label":"Wordmark", "default":"SPECTRAL"},
6
+ {"id":"textColor", "type":"color", "label":"Wordmark fill", "default":"#f6ff7a"},
7
+ {"id":"bgColor", "type":"color", "label":"Stage background", "default":"#000000"},
8
+ {"id":"sweepSpeed", "type":"number", "label":"Light sweep speed", "default":1, "min":0.2, "max":3, "step":0.1}
9
+ ]'
10
+ >
11
+ <head>
12
+ <meta charset="UTF-8" />
13
+ <meta name="viewport" content="width=1920, height=1080" />
14
+ <title>text_spectral_rays</title>
15
+ <script src="../assets/gsap.min.js"></script>
16
+ <style>
17
+ :root {
18
+ --hg-violet: #7c3aed;
19
+ --hg-violet-2: #a855f7;
20
+ --hg-bg: #000000;
21
+ --hg-fg: #f5f5fa;
22
+ --hg-dim: #6b6b78;
23
+ }
24
+ * {
25
+ margin: 0;
26
+ padding: 0;
27
+ box-sizing: border-box;
28
+ }
29
+ html,
30
+ body {
31
+ margin: 0;
32
+ width: 1920px;
33
+ height: 1080px;
34
+ overflow: hidden;
35
+ background: #000;
36
+ font-family: "Inter", system-ui, sans-serif;
37
+ color: var(--hg-fg);
38
+ -webkit-font-smoothing: antialiased;
39
+ }
40
+ #scene {
41
+ position: absolute;
42
+ inset: 0;
43
+ width: 1920px;
44
+ height: 1080px;
45
+ background: #000;
46
+ }
47
+ .vfx-canvas {
48
+ position: absolute;
49
+ inset: 0;
50
+ width: 1920px;
51
+ height: 1080px;
52
+ display: block;
53
+ }
54
+ .label {
55
+ position: absolute;
56
+ left: 48px;
57
+ bottom: 40px;
58
+ font-size: 22px;
59
+ font-weight: 600;
60
+ letter-spacing: 0.18em;
61
+ text-transform: uppercase;
62
+ color: rgba(255, 255, 255, 0.6);
63
+ mix-blend-mode: screen;
64
+ pointer-events: none;
65
+ }
66
+ </style>
67
+ </head>
68
+ <body>
69
+ <div
70
+ id="root"
71
+ data-composition-id="main"
72
+ data-start="0"
73
+ data-duration="4"
74
+ data-width="1920"
75
+ data-height="1080"
76
+ >
77
+ <div id="scene" class="clip" data-start="0" data-duration="4" data-track-index="1">
78
+ <canvas class="vfx-canvas" width="1920" height="1080" aria-hidden="true"></canvas>
79
+ <div class="label">text_spectral_rays</div>
80
+ </div>
81
+ </div>
82
+ <script>
83
+ window.__timelines = window.__timelines || {};
84
+ const tl = gsap.timeline({ paused: true });
85
+
86
+ (function () {
87
+ const W = 1920;
88
+ const H = 1080;
89
+
90
+ const defaults = {
91
+ text: "SPECTRAL",
92
+ textColor: "#f6ff7a",
93
+ bgColor: "#000000",
94
+ sweepSpeed: 1,
95
+ };
96
+ const vars = Object.assign(
97
+ {},
98
+ defaults,
99
+ window.__hyperframes && window.__hyperframes.getVariables
100
+ ? window.__hyperframes.getVariables()
101
+ : {},
102
+ );
103
+
104
+ const canvas = document.querySelector(".vfx-canvas");
105
+ const gl = canvas.getContext("webgl", {
106
+ premultipliedAlpha: false,
107
+ preserveDrawingBuffer: true,
108
+ });
109
+
110
+ // animated state — GSAP tweens these; mouse (the light cursor) is derived
111
+ const state = { progress: 0, effectMix: 0 };
112
+ const mouse = { x: 0, y: H * 0.5 };
113
+ const speed = Number(vars.sweepSpeed) || 1;
114
+
115
+ // ── Rasterize the wordmark into a white MASK + a coloured SRC canvas ──
116
+ function drawWord(ctx, fill) {
117
+ ctx.clearRect(0, 0, W, H);
118
+ let fs = 340;
119
+ const stack = "900 " + fs + 'px "Arial Black", Impact, "Inter", system-ui, sans-serif';
120
+ ctx.font = stack;
121
+ const maxW = 1600;
122
+ const measured = ctx.measureText(vars.text).width || 1;
123
+ if (measured > maxW) {
124
+ fs = Math.floor((fs * maxW) / measured);
125
+ ctx.font = "900 " + fs + 'px "Arial Black", Impact, "Inter", system-ui, sans-serif';
126
+ }
127
+ ctx.textAlign = "center";
128
+ ctx.textBaseline = "middle";
129
+ ctx.fillStyle = fill;
130
+ ctx.fillText(vars.text, W * 0.5, H * 0.5);
131
+ }
132
+ const maskCanvas = document.createElement("canvas");
133
+ maskCanvas.width = W;
134
+ maskCanvas.height = H;
135
+ drawWord(maskCanvas.getContext("2d"), "#ffffff");
136
+ const colorCanvas = document.createElement("canvas");
137
+ colorCanvas.width = W;
138
+ colorCanvas.height = H;
139
+ drawWord(colorCanvas.getContext("2d"), vars.textColor);
140
+
141
+ // ── WebGL fallback: flat fill (keeps the timeline registered) ──
142
+ if (!gl) {
143
+ const ctx = canvas.getContext("2d");
144
+ ctx.fillStyle = vars.bgColor;
145
+ ctx.fillRect(0, 0, W, H);
146
+ tl.to(state, { progress: 1, duration: 3.6, ease: "none" }, 0.2);
147
+ window.__timelines["main"] = tl;
148
+ return;
149
+ }
150
+
151
+ const VERT = [
152
+ "attribute vec2 position;",
153
+ "varying vec2 vUv;",
154
+ "void main(){",
155
+ " vUv = position * 0.5 + 0.5;",
156
+ " gl_Position = vec4(position, 0.0, 1.0);",
157
+ "}",
158
+ ].join("\n");
159
+
160
+ // Volumetric spectral light-rays cast by the text mask toward a moving
161
+ // light cursor — ported from the vfx-text-cursor golden sample, made
162
+ // generic (reads any text mask/colour). All state from uniforms.
163
+ const FRAG = [
164
+ "precision highp float;",
165
+ "varying vec2 vUv;",
166
+ "uniform vec2 resolution;",
167
+ "uniform vec2 mouse;",
168
+ "uniform float maskY;",
169
+ "uniform float maskScale;",
170
+ "uniform float effectMix;",
171
+ "uniform sampler2D src;",
172
+ "uniform sampler2D colorSrc;",
173
+ "#define PI 3.141593",
174
+ "#define SAMPLES 112.0",
175
+ "float hash(vec2 p){ return fract(sin(dot(p, vec2(489.0,589.0))) * 492.0) * 2.0 - 1.0; }",
176
+ "float hash(vec3 p){ return fract(sin(dot(p, vec3(489.0,589.0,58.0))) * 492.0) * 2.0 - 1.0; }",
177
+ "vec2 hash2(vec3 p){ return vec2(hash(p), hash(p + 1.0)); }",
178
+ "vec4 readMask(vec2 uv){ if(uv.x<0.0||uv.x>1.0||uv.y<0.0||uv.y>1.0){return vec4(0.0);} return texture2D(src, uv); }",
179
+ "vec4 readColor(vec2 uv){ if(uv.x<0.0||uv.x>1.0||uv.y<0.0||uv.y>1.0){return vec4(0.0);} return texture2D(colorSrc, uv); }",
180
+ "vec3 spectrum(float x){ return cos((x - vec3(0.0,0.5,1.0)) * vec3(0.6,1.0,0.5) * PI); }",
181
+ "void main(){",
182
+ " vec2 uv = vUv;",
183
+ " vec2 center = vec2(0.5, 0.5);",
184
+ " vec2 maskUv = (uv - center) / maskScale + center + vec2(0.0, maskY / resolution.y);",
185
+ " float mask = readMask(maskUv).r;",
186
+ " vec4 col0 = readColor(maskUv);",
187
+ " vec2 p = uv * 2.0 - 1.0;",
188
+ " p.x *= resolution.x / resolution.y;",
189
+ " vec2 mp = mouse / resolution;",
190
+ " mp.y = 1.0 - mp.y;",
191
+ " mp = mp * 2.0 - 1.0;",
192
+ " mp.x *= resolution.x / resolution.y;",
193
+ " vec2 rp = p;",
194
+ " vec2 d = (mp - p) / SAMPLES;",
195
+ " float acc = 0.0;",
196
+ " for(float i = 0.0; i < SAMPLES; i++){",
197
+ " rp += d;",
198
+ " rp += hash2(vec3(rp, i)) * 0.5 / SAMPLES;",
199
+ " vec2 uv2 = rp;",
200
+ " uv2.x /= resolution.x / resolution.y;",
201
+ " uv2 = uv2 * 0.5 + 0.5;",
202
+ " vec2 rayUv = (uv2 - center) / maskScale + center + vec2(0.0, maskY / resolution.y);",
203
+ " acc += readMask(rayUv).r / SAMPLES;",
204
+ " }",
205
+ " vec4 c = vec4(0.0, 0.0, 0.0, 1.0);",
206
+ " c -= acc * 0.24;",
207
+ " c += vec4(spectrum(cos(acc * 4.9)), 1.0) * acc * 3.65;",
208
+ " c.rgb = max(c.rgb - 0.035, 0.0);",
209
+ " c.rgb *= 1.16;",
210
+ " float cursorX = mouse.x / resolution.x;",
211
+ " float sweep = exp(-pow((uv.x - cursorX) * 6.2, 2.0));",
212
+ " float textProximity = smoothstep(0.006, 0.34, acc);",
213
+ " float longRay = smoothstep(0.004, 0.18, acc);",
214
+ " vec3 sweepColor = vec3(0.14, 0.65, 0.85) + spectrum(cursorX * 1.8) * 0.28;",
215
+ " c.rgb += sweepColor * sweep * (0.34 + textProximity * 2.35);",
216
+ " c.rgb += spectrum(cursorX + acc * 2.0) * longRay * 0.58;",
217
+ " c.rgb += col0.rgb * acc * 1.18;",
218
+ " c.rgb += col0.rgb * sweep * mask * 0.92;",
219
+ " c.rgb *= effectMix;",
220
+ " c.rgb = mix(c.rgb, col0.rgb, smoothstep(0.02, 0.75, col0.a));",
221
+ " c.rgb += vec3(1.0) * smoothstep(0.04, 0.38, mask) * 0.12 * effectMix;",
222
+ " float grain = hash(vec3(uv.xyy + mouse.x * 0.0007));",
223
+ " float dust = smoothstep(0.02, 0.38, acc) + smoothstep(0.03, 0.22, mask);",
224
+ " c.rgb += grain * 0.07 * (0.42 + dust) * effectMix;",
225
+ " c.rgb += spectrum(grain + cursorX) * abs(grain) * 0.045 * smoothstep(0.02, 0.5, acc) * effectMix;",
226
+ " c.a = 1.0;",
227
+ " gl_FragColor = c;",
228
+ "}",
229
+ ].join("\n");
230
+
231
+ function compile(type, source) {
232
+ const s = gl.createShader(type);
233
+ gl.shaderSource(s, source);
234
+ gl.compileShader(s);
235
+ return s;
236
+ }
237
+ const program = gl.createProgram();
238
+ gl.attachShader(program, compile(gl.VERTEX_SHADER, VERT));
239
+ gl.attachShader(program, compile(gl.FRAGMENT_SHADER, FRAG));
240
+ gl.linkProgram(program);
241
+ gl.useProgram(program);
242
+
243
+ function createTexture(source) {
244
+ const t = gl.createTexture();
245
+ gl.bindTexture(gl.TEXTURE_2D, t);
246
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
247
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
248
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
249
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
250
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
251
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
252
+ return t;
253
+ }
254
+ const maskTex = createTexture(maskCanvas);
255
+ const colorTex = createTexture(colorCanvas);
256
+
257
+ const buffer = gl.createBuffer();
258
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
259
+ gl.bufferData(
260
+ gl.ARRAY_BUFFER,
261
+ new Float32Array([-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]),
262
+ gl.STATIC_DRAW,
263
+ );
264
+ const posLoc = gl.getAttribLocation(program, "position");
265
+ const L = (n) => gl.getUniformLocation(program, n);
266
+ const uRes = L("resolution");
267
+ const uMouse = L("mouse");
268
+ const uMaskY = L("maskY");
269
+ const uMaskScale = L("maskScale");
270
+ const uMix = L("effectMix");
271
+ const uSrc = L("src");
272
+ const uColorSrc = L("colorSrc");
273
+
274
+ function render() {
275
+ mouse.x = state.progress * W;
276
+ mouse.y = H * 0.5;
277
+ gl.viewport(0, 0, W, H);
278
+ gl.clearColor(0, 0, 0, 1);
279
+ gl.clear(gl.COLOR_BUFFER_BIT);
280
+ gl.useProgram(program);
281
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
282
+ gl.enableVertexAttribArray(posLoc);
283
+ gl.vertexAttribPointer(posLoc, 2, gl.FLOAT, false, 0, 0);
284
+ gl.activeTexture(gl.TEXTURE0);
285
+ gl.bindTexture(gl.TEXTURE_2D, maskTex);
286
+ gl.uniform1i(uSrc, 0);
287
+ gl.activeTexture(gl.TEXTURE1);
288
+ gl.bindTexture(gl.TEXTURE_2D, colorTex);
289
+ gl.uniform1i(uColorSrc, 1);
290
+ gl.uniform2f(uRes, W, H);
291
+ gl.uniform2f(uMouse, mouse.x, mouse.y);
292
+ gl.uniform1f(uMaskY, 0);
293
+ gl.uniform1f(uMaskScale, 1);
294
+ gl.uniform1f(uMix, state.effectMix);
295
+ gl.drawArrays(gl.TRIANGLES, 0, 6);
296
+ }
297
+ render(); // initial frame (seek-to-0 correctness)
298
+
299
+ // All repaint via the timeline's onUpdate — fully seek-safe, no rAF.
300
+ tl.eventCallback("onUpdate", render);
301
+
302
+ // effect punches in, the light cursor sweeps L→R across the wordmark,
303
+ // then fades for a clean loop.
304
+ tl.set(state, { progress: 0, effectMix: 0 }, 0);
305
+ tl.to(state, { effectMix: 1, duration: 0.45, ease: "power3.out" }, 0.15);
306
+ tl.to(state, { progress: 1, duration: 3.4 / speed, ease: "none" }, 0.2);
307
+ tl.to(state, { effectMix: 0, duration: 0.4, ease: "power2.in" }, 3.6);
308
+
309
+ window.__timelines["main"] = tl;
310
+ })();
311
+ </script>
312
+ </body>
313
+ </html>