hyperframes 0.8.184 → 0.8.186

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 (314) hide show
  1. package/dist/{add-5ZTD3MUZ.js → add-UGK7AZI6.js} +14 -14
  2. package/dist/{agentPromptGenerator-VIIPZCJ3.js → agentPromptGenerator-KYO5MKTW.js} +1 -1
  3. package/dist/{animatedGifPrep-AGASIWVA.js → animatedGifPrep-HPZPSB43.js} +9 -9
  4. package/dist/api.js +18 -18
  5. package/dist/{asset-LSTEMPIB.js → asset-X2GTFWOY.js} +2 -2
  6. package/dist/{assetCataloger-BKBMNL3A.js → assetCataloger-5NWEG4IU.js} +9 -9
  7. package/dist/audio-7PBM5F3H.js +2317 -0
  8. package/dist/{auth-MJWKYK77.js → auth-WABSMO46.js} +1 -1
  9. package/dist/{autoUpdate-2GGDKYR2.js → autoUpdate-6SCMLTSC.js} +2 -2
  10. package/dist/{backgroundChecks-7GRX5VQY.js → backgroundChecks-XOGPAAR3.js} +3 -3
  11. package/dist/backgroundChecksWorker.js +3 -3
  12. package/dist/{batchRender-BCV2LELR.js → batchRender-VR6IA77K.js} +5 -5
  13. package/dist/{beats-7BCFRBAL.js → beats-3IWXLMSC.js} +7 -7
  14. package/dist/{benchmark-2R6CN5MQ.js → benchmark-2SSYATCX.js} +10 -10
  15. package/dist/{browser-6AFGOI7G.js → browser-PMRN345D.js} +3 -3
  16. package/dist/{bundleWithLocalizedFonts-2EGPA5ZO.js → bundleWithLocalizedFonts-TT32MZBO.js} +2 -2
  17. package/dist/{capture-HOIAW6MO.js → capture-4VD6AKUJ.js} +13 -13
  18. package/dist/{capture-HA2UHLIU.js → capture-BDGYTE57.js} +2 -2
  19. package/dist/{captureCompositionFrame-4236FVWJ.js → captureCompositionFrame-5FVLAETA.js} +17 -13
  20. package/dist/{catalog-A6CZAWW4.js → catalog-HUYZO5D7.js} +14 -14
  21. package/dist/{catch-up-TNA4DJOA.js → catch-up-SSGTR2ZT.js} +4 -4
  22. package/dist/{check-5E5U2EQZ.js → check-JWUWHGM2.js} +34 -34
  23. package/dist/{checkBrowser-FNINXBMZ.js → checkBrowser-X7G6YNR7.js} +31 -31
  24. package/dist/{chunk-UJKUB2LH.js → chunk-22QKQDEE.js} +11 -11
  25. package/dist/{chunk-2PVE4WS2.js → chunk-27H2363S.js} +33 -6
  26. package/dist/{chunk-2ULXZ4PG.js → chunk-2II34JPM.js} +154 -21
  27. package/dist/{chunk-3QVMJ7GX.js → chunk-2PZZMAME.js} +11 -10
  28. package/dist/{chunk-X3CG5YQA.js → chunk-3YHGQJI6.js} +3 -3
  29. package/dist/{chunk-EEP5Y5IE.js → chunk-46HEFGXJ.js} +1 -1
  30. package/dist/{chunk-DWUGKEHR.js → chunk-4AFNEKU7.js} +1 -1
  31. package/dist/{chunk-R2BFTECP.js → chunk-4NTW45W5.js} +3 -3
  32. package/dist/{chunk-7HJALUIO.js → chunk-4XFFJAWS.js} +1 -1
  33. package/dist/{chunk-SN7KI5JA.js → chunk-5ZMIVTHN.js} +2 -2
  34. package/dist/{chunk-QL2PNIXC.js → chunk-5ZMXGNGC.js} +24 -16
  35. package/dist/{chunk-UKOTVJFV.js → chunk-6IOBAOU7.js} +1 -1
  36. package/dist/{chunk-JIUTXKWA.js → chunk-77QM6YRQ.js} +2 -1
  37. package/dist/{chunk-ES426XRJ.js → chunk-7AUMTARQ.js} +3 -3
  38. package/dist/{chunk-5CS4T6C6.js → chunk-7L37AB57.js} +1 -1
  39. package/dist/{chunk-RGXVEYHI.js → chunk-7M7TMM4S.js} +81 -10
  40. package/dist/{chunk-3TXNNBI2.js → chunk-7MLFYMFB.js} +2 -2
  41. package/dist/{chunk-MFAETWIF.js → chunk-7MVODWQF.js} +1 -1
  42. package/dist/{chunk-WHPN2TIT.js → chunk-ACLABKEF.js} +6 -6
  43. package/dist/{chunk-YMS5FOMC.js → chunk-B2A56S5C.js} +1 -1
  44. package/dist/{chunk-YALM6XN4.js → chunk-BRTDLVK3.js} +3 -3
  45. package/dist/{chunk-VDM3FEDP.js → chunk-DQZMJS2P.js} +1 -1
  46. package/dist/{chunk-PSKEKWVU.js → chunk-DTXDQ6OP.js} +1 -1
  47. package/dist/{chunk-Q33P4EAC.js → chunk-EZINX6HH.js} +3 -3
  48. package/dist/{chunk-3MDJIWOV.js → chunk-FCWFV4P7.js} +75 -35
  49. package/dist/{chunk-ABZYYUUH.js → chunk-FRLTKTOR.js} +1 -1
  50. package/dist/{chunk-E32ZQ2WO.js → chunk-GTMBII7X.js} +1 -1
  51. package/dist/{chunk-YOZPQCSR.js → chunk-HOFX63F2.js} +3 -3
  52. package/dist/{chunk-LRGYPXHF.js → chunk-HZ7M2MZA.js} +1 -1
  53. package/dist/{chunk-TYXH3EKP.js → chunk-I5JRXMCV.js} +16 -1
  54. package/dist/{chunk-LLC4CS6I.js → chunk-ID5AJ4L3.js} +3 -3
  55. package/dist/{chunk-FGJEUV4S.js → chunk-K6KBOORN.js} +48 -4
  56. package/dist/{chunk-EM7C7H7S.js → chunk-KNLSYCI5.js} +7 -7
  57. package/dist/{chunk-4N4P3ZWL.js → chunk-LDW3KVGK.js} +2 -2
  58. package/dist/{chunk-OLZENUPI.js → chunk-LLFQA7XF.js} +1 -1
  59. package/dist/chunk-LLMSX6V6.js +17 -0
  60. package/dist/{chunk-5UDRPPN2.js → chunk-MY6CVBDD.js} +7 -4
  61. package/dist/{chunk-7NRI7HYX.js → chunk-NPDPDEPP.js} +1 -1
  62. package/dist/{chunk-BCHSTE7U.js → chunk-PEIV2SOG.js} +1 -1
  63. package/dist/{chunk-ADDHW2FS.js → chunk-Q447CX26.js} +82 -12
  64. package/dist/{chunk-YWNJTZGN.js → chunk-R6IGQ5NO.js} +2 -2
  65. package/dist/{chunk-YWHCXIMD.js → chunk-RFJ6SX4U.js} +5 -5
  66. package/dist/{chunk-J3QM7AHP.js → chunk-RNZEQTWZ.js} +2 -2
  67. package/dist/{chunk-SAX7HQ5E.js → chunk-ROWEDRVX.js} +1 -1
  68. package/dist/{chunk-PFYWVUHA.js → chunk-RPUIMFHF.js} +1 -1
  69. package/dist/{chunk-OYLO6TYK.js → chunk-RUOG4VB7.js} +1 -1
  70. package/dist/{chunk-UNNXFKVG.js → chunk-RVZNSKRH.js} +2 -2
  71. package/dist/{chunk-VNVQGDPC.js → chunk-T4RP55P2.js} +1 -1
  72. package/dist/{chunk-GDEV42FA.js → chunk-TH7J3JZ5.js} +524 -42
  73. package/dist/{chunk-VHZ6DL3M.js → chunk-TMK4Q7JA.js} +10 -7
  74. package/dist/{chunk-74JMKLVU.js → chunk-TQ2RRB5V.js} +1 -1
  75. package/dist/{chunk-ICJEAFPD.js → chunk-U4BMRIE6.js} +16 -7
  76. package/dist/{chunk-HR23IKLZ.js → chunk-U7QTMRLW.js} +2 -2
  77. package/dist/{chunk-KN46TGHV.js → chunk-UAJCTEK2.js} +1 -1
  78. package/dist/{chunk-CXABAXB3.js → chunk-UJZT6HNN.js} +1 -1
  79. package/dist/chunk-UOZX5W5T.js +3852 -0
  80. package/dist/{chunk-FFJ5TDRD.js → chunk-VHBBV5DH.js} +10 -3
  81. package/dist/{chunk-ZRHO6YMM.js → chunk-WHMFW5ET.js} +4 -4
  82. package/dist/{chunk-WTFUDNW2.js → chunk-WLHNIIXU.js} +3 -3
  83. package/dist/{chunk-ZOCHDXDG.js → chunk-Y2M6XSNK.js} +1 -1
  84. package/dist/{chunk-2XA7KXQO.js → chunk-YNH6ERDL.js} +2 -2
  85. package/dist/{chunk-JB6ARMQS.js → chunk-YQICCAVA.js} +1 -1
  86. package/dist/{chunk-7MB2ZAQF.js → chunk-YRAJDFIN.js} +1 -1
  87. package/dist/{chunk-IWTNTUPQ.js → chunk-Z5233OAN.js} +11 -13
  88. package/dist/{chunk-TE427YID.js → chunk-ZKBW7NU2.js} +2 -2
  89. package/dist/{chunk-4KKKBEP3.js → chunk-ZVBEGBII.js} +3 -3
  90. package/dist/{clean-HGASSMWI.js → clean-IM2JIAUT.js} +18 -18
  91. package/dist/cli.js +53 -53
  92. package/dist/{cloud-JPDVNXHN.js → cloud-6IPBCJSX.js} +4 -4
  93. package/dist/{cloudrun-AMMGSDRP.js → cloudrun-MWZ6S2I2.js} +7 -7
  94. package/dist/commands/contrast-audit.browser.js +1 -2
  95. package/dist/commands/layout-audit.browser.js +196 -0
  96. package/dist/{compare-LHHVHUN3.js → compare-WD7A2TV5.js} +28 -28
  97. package/dist/{compiler-Q3N6QXMT.js → compiler-2EKSMC3I.js} +6 -6
  98. package/dist/{component-D72J32Q7.js → component-JKALWH36.js} +3 -3
  99. package/dist/{compositions-UQRJ5ROG.js → compositions-643NAG4A.js} +13 -13
  100. package/dist/{delete-P42VIDDA.js → delete-EASPXKHQ.js} +2 -2
  101. package/dist/{deploy-WZTH57O4.js → deploy-CDKCQ5MX.js} +1 -1
  102. package/dist/{deterministicFonts-VQ5UBMXY.js → deterministicFonts-EGAAE7QL.js} +3 -3
  103. package/dist/{dist-DYS24AMA.js → dist-F6FOKRSU.js} +10 -4
  104. package/dist/{dist-SENYPQGW.js → dist-LM7AVHOU.js} +3 -3
  105. package/dist/docs/data-attributes.md +1 -1
  106. package/dist/{doctor-KEJIG2SK.js → doctor-7XUVYDJQ.js} +13 -13
  107. package/dist/{events-CYKSNR7N.js → events-5TTPYBKG.js} +3 -3
  108. package/dist/{events-UZXFQPMT.js → events-TULV6D3G.js} +3 -3
  109. package/dist/{feedback-LXNQF7CA.js → feedback-4FTPWM6P.js} +8 -8
  110. package/dist/{ffmpeg-BYHON577.js → ffmpeg-MP7ZVYLZ.js} +9 -9
  111. package/dist/{figma-EIQ35PS6.js → figma-B7LFWYKO.js} +3 -3
  112. package/dist/fontLocalizeCli.js +12 -12
  113. package/dist/{get-CC2YL7QO.js → get-F7W4AQ2V.js} +2 -2
  114. package/dist/{gpuPolicy-VFSACUQV.js → gpuPolicy-NSNVDFXC.js} +9 -9
  115. package/dist/{grade-compare-TUQL7IV2.js → grade-compare-6QXDTLS2.js} +29 -29
  116. package/dist/{gsapParserAcorn-7NCK2LVT.js → gsapParserAcorn-SKODXC2N.js} +2 -2
  117. package/dist/{help-ROROO5K6.js → help-RJAA4O74.js} +1 -1
  118. package/dist/{history-PNELYLXX.js → history-OOQBDVV5.js} +6 -6
  119. package/dist/hyperframe.manifest.json +1 -1
  120. package/dist/hyperframe.runtime.iife.js +67 -67
  121. package/dist/hyperframes-player.global.js +1 -1
  122. package/dist/{info-4FZTH6AS.js → info-5OGGYYLO.js} +9 -9
  123. package/dist/{init-I43GHHVP.js → init-DM3TJKW2.js} +68 -50
  124. package/dist/{inspect-IT4TYIZ3.js → inspect-FECQCLS5.js} +29 -29
  125. package/dist/{installer-CWOJVK5K.js → installer-WOG4VORV.js} +7 -7
  126. package/dist/{keyframes-3FBOGVD4.js → keyframes-SZHWUF5Y.js} +7 -7
  127. package/dist/{lambda-H3V32I7M.js → lambda-JG2ZRGMC.js} +9 -9
  128. package/dist/{layout-BZ5LYJ5C.js → layout-7ACF7ZKC.js} +29 -29
  129. package/dist/{lint-ZTNSGP2S.js → lint-ZCQGMILV.js} +9 -9
  130. package/dist/{lintProject-C2ONSH2U.js → lintProject-JATQKR64.js} +3 -3
  131. package/dist/{list-XM4GWJYY.js → list-MH2X3Y2T.js} +2 -2
  132. package/dist/{login-H6HYKMWX.js → login-CK46WX5U.js} +4 -4
  133. package/dist/{manager-TWVDSJXO.js → manager-GXTPNJVW.js} +10 -10
  134. package/dist/{media-treatment-N7MY5NXB.js → media-treatment-EH2AT34Z.js} +15 -15
  135. package/dist/{models-WEMIMYBD.js → models-D5XP2UK6.js} +13 -13
  136. package/dist/{motionShot-RHICTVPU.js → motionShot-UR7D3SRQ.js} +16 -16
  137. package/dist/{normalize-4UDISLPL.js → normalize-3AYFSN2F.js} +1 -1
  138. package/dist/{normalize-audio-ZFUZCJE3.js → normalize-audio-635JOR5W.js} +4 -4
  139. package/dist/{open-IBJ4FL3G.js → open-6WE5WFVM.js} +14 -14
  140. package/dist/{parakeetRunner-XXO4WSLR.js → parakeetRunner-STHZPG32.js} +14 -14
  141. package/dist/{pipeline-6ML3LUVK.js → pipeline-LVEKRETU.js} +10 -10
  142. package/dist/{play-RV4NAVF5.js → play-W6TDW4FE.js} +21 -21
  143. package/dist/{preflight-R3DEFMLA.js → preflight-LIMQXLR7.js} +10 -10
  144. package/dist/{present-5TBJGE6B.js → present-RX5QX6UR.js} +17 -17
  145. package/dist/{preview-FLKZ5CXJ.js → preview-KIWTWK63.js} +20 -20
  146. package/dist/{producer-7XYSPVKH.js → producer-TSNKSCUM.js} +1 -1
  147. package/dist/{projectConfig-TBU2VWZX.js → projectConfig-NCP7JRH4.js} +9 -9
  148. package/dist/{publication-CWWUJYJ5.js → publication-5W5UZWGC.js} +4 -4
  149. package/dist/{publish-FSNE4FEB.js → publish-7WR4XJ6I.js} +11 -11
  150. package/dist/{remove-background-MDFWRWCT.js → remove-background-43JGBRWQ.js} +11 -11
  151. package/dist/{render-F4JQ553X.js → render-456HCO6O.js} +31 -31
  152. package/dist/{render-LWZKXCLY.js → render-7T44HIM6.js} +5 -5
  153. package/dist/{render-DBGQZAZT.js → render-WHMLYIOI.js} +18 -30
  154. package/dist/{render-batch-PU7NMLIJ.js → render-batch-LURBJTBV.js} +5 -5
  155. package/dist/renderSetupWorker.js +3 -3
  156. package/dist/{resolver-RUBGFXPC.js → resolver-MBIW4VC4.js} +6 -6
  157. package/dist/{sherpa-X2TBNO6P.js → sherpa-5J2AALED.js} +13 -13
  158. package/dist/skills/hyperframes/SKILL.md +52 -174
  159. package/dist/skills/hyperframes/assets/frame-presets/biennale-yellow/FRAME.md +289 -0
  160. package/dist/skills/hyperframes/assets/frame-presets/biennale-yellow/caption-skin.html +220 -0
  161. package/dist/skills/hyperframes/assets/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
  162. package/dist/skills/hyperframes/assets/frame-presets/blockframe/FRAME.md +275 -0
  163. package/dist/skills/hyperframes/assets/frame-presets/blockframe/caption-skin.html +223 -0
  164. package/dist/skills/hyperframes/assets/frame-presets/blockframe/frame-showcase.html +1347 -0
  165. package/dist/skills/hyperframes/assets/frame-presets/blue-professional/FRAME.md +307 -0
  166. package/dist/skills/hyperframes/assets/frame-presets/blue-professional/caption-skin.html +222 -0
  167. package/dist/skills/hyperframes/assets/frame-presets/blue-professional/frame-showcase.html +1372 -0
  168. package/dist/skills/hyperframes/assets/frame-presets/bold-poster/FRAME.md +275 -0
  169. package/dist/skills/hyperframes/assets/frame-presets/bold-poster/caption-skin.html +229 -0
  170. package/dist/skills/hyperframes/assets/frame-presets/bold-poster/frame-showcase.html +1140 -0
  171. package/dist/skills/hyperframes/assets/frame-presets/broadside/FRAME.md +284 -0
  172. package/dist/skills/hyperframes/assets/frame-presets/broadside/caption-skin.html +224 -0
  173. package/dist/skills/hyperframes/assets/frame-presets/broadside/frame-showcase.html +1166 -0
  174. package/dist/skills/hyperframes/assets/frame-presets/capsule/FRAME.md +284 -0
  175. package/dist/skills/hyperframes/assets/frame-presets/capsule/caption-skin.html +223 -0
  176. package/dist/skills/hyperframes/assets/frame-presets/capsule/frame-showcase.html +1465 -0
  177. package/dist/skills/hyperframes/assets/frame-presets/cartesian/FRAME.md +278 -0
  178. package/dist/skills/hyperframes/assets/frame-presets/cartesian/caption-skin.html +221 -0
  179. package/dist/skills/hyperframes/assets/frame-presets/cartesian/frame-showcase.html +1263 -0
  180. package/dist/skills/hyperframes/assets/frame-presets/cobalt-grid/FRAME.md +265 -0
  181. package/dist/skills/hyperframes/assets/frame-presets/cobalt-grid/caption-skin.html +237 -0
  182. package/dist/skills/hyperframes/assets/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
  183. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/FRAME.md +277 -0
  184. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/caption-skin.html +223 -0
  185. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/fonts/EBGaramond-400.woff2 +0 -0
  186. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/fonts/EBGaramond-700.woff2 +0 -0
  187. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/fonts/Inter-400.woff2 +0 -0
  188. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/fonts/Inter-700.woff2 +0 -0
  189. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/fonts/JetBrainsMono-400.woff2 +0 -0
  190. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/fonts/JetBrainsMono-700.woff2 +0 -0
  191. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/fonts/OFL-eb-garamond.txt +93 -0
  192. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/fonts/OFL-inter.txt +93 -0
  193. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/fonts/OFL-jetbrains-mono.txt +93 -0
  194. package/dist/skills/hyperframes/assets/frame-presets/code-editorial/frame-showcase.html +1438 -0
  195. package/dist/skills/hyperframes/assets/frame-presets/coral/FRAME.md +314 -0
  196. package/dist/skills/hyperframes/assets/frame-presets/coral/caption-skin.html +225 -0
  197. package/dist/skills/hyperframes/assets/frame-presets/coral/frame-showcase.html +1268 -0
  198. package/dist/skills/hyperframes/assets/frame-presets/creative-mode/FRAME.md +333 -0
  199. package/dist/skills/hyperframes/assets/frame-presets/creative-mode/caption-skin.html +226 -0
  200. package/dist/skills/hyperframes/assets/frame-presets/creative-mode/frame-showcase.html +1330 -0
  201. package/dist/skills/hyperframes/assets/frame-presets/daisy-days/FRAME.md +274 -0
  202. package/dist/skills/hyperframes/assets/frame-presets/daisy-days/caption-skin.html +229 -0
  203. package/dist/skills/hyperframes/assets/frame-presets/daisy-days/frame-showcase.html +1444 -0
  204. package/dist/skills/hyperframes/assets/frame-presets/editorial-forest/FRAME.md +265 -0
  205. package/dist/skills/hyperframes/assets/frame-presets/editorial-forest/caption-skin.html +222 -0
  206. package/dist/skills/hyperframes/assets/frame-presets/editorial-forest/frame-showcase.html +1273 -0
  207. package/dist/skills/hyperframes/references/captions.md +46 -0
  208. package/dist/skills/hyperframes/references/film.md +47 -0
  209. package/dist/skills/hyperframes/references/format.md +157 -0
  210. package/dist/skills/hyperframes/references/look.md +69 -0
  211. package/dist/skills/hyperframes/references/motion.md +94 -0
  212. package/dist/skills/hyperframes/references/overlays.md +39 -0
  213. package/dist/skills/hyperframes/references/plugin-installation.md +3 -3
  214. package/dist/skills/hyperframes/references/review.md +51 -0
  215. package/dist/skills/hyperframes/references/runtimes.md +43 -0
  216. package/dist/skills/hyperframes/references/skill-lifecycle.md +21 -13
  217. package/dist/skills/hyperframes/references/sound.md +43 -0
  218. package/dist/skills/hyperframes/references/spec.md +76 -0
  219. package/dist/skills/hyperframes/references/story.md +103 -0
  220. package/dist/skills/hyperframes/references/storyboard-format.md +30 -22
  221. package/dist/skills/hyperframes/references/storyboard.md +36 -0
  222. package/dist/skills/hyperframes/references/types/3d.md +25 -0
  223. package/dist/skills/hyperframes/references/types/character.md +20 -0
  224. package/dist/skills/hyperframes/references/types/data.md +19 -0
  225. package/dist/skills/hyperframes/references/types/explainer.md +34 -0
  226. package/dist/skills/hyperframes/references/types/launch.md +31 -0
  227. package/dist/skills/hyperframes/references/types/music.md +24 -0
  228. package/dist/skills/hyperframes/references/types/vertical.md +23 -0
  229. package/dist/skills/hyperframes/scripts/bake-basemap.mjs +324 -0
  230. package/dist/skills/hyperframes/scripts/lib/main-module.test.mjs +1 -6
  231. package/dist/skills/hyperframes/scripts/locate.mjs +228 -0
  232. package/dist/skills/hyperframes-cli/SKILL.md +76 -179
  233. package/dist/skills/hyperframes-cli/references/beats.md +1 -1
  234. package/dist/skills/hyperframes-cli/references/cloud.md +2 -2
  235. package/dist/skills/hyperframes-cli/references/cloudrun.md +1 -1
  236. package/dist/skills/hyperframes-cli/references/conventions.md +17 -0
  237. package/dist/skills/hyperframes-cli/references/feedback.md +14 -0
  238. package/dist/skills/hyperframes-cli/references/init-and-scaffold.md +11 -7
  239. package/dist/skills/hyperframes-cli/references/lambda.md +1 -1
  240. package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +19 -8
  241. package/dist/skills/hyperframes-cli/references/preview-render.md +8 -2
  242. package/dist/skills/hyperframes-cli/references/upgrade-info-misc.md +8 -0
  243. package/dist/skills/media-use/SKILL.md +47 -91
  244. package/dist/skills/media-use/audio/references/bgm.md +1 -1
  245. package/dist/skills/media-use/audio/references/captions/authoring.md +1 -2
  246. package/dist/skills/media-use/audio/references/captions/motion.md +5 -5
  247. package/dist/skills/media-use/audio/references/tts.md +0 -3
  248. package/dist/skills/media-use/audio/scripts/audio.mjs +5 -6
  249. package/dist/skills/media-use/audio/scripts/carve.mjs +560 -0
  250. package/dist/skills/media-use/audio/scripts/carve.test.mjs +254 -0
  251. package/dist/skills/media-use/audio/scripts/extract-audio-data.py +199 -0
  252. package/dist/skills/media-use/references/local.md +24 -0
  253. package/dist/skills/media-use/references/memory.md +4 -4
  254. package/dist/skills/media-use/references/mixing.md +71 -0
  255. package/dist/skills/media-use/references/operations.md +1 -1
  256. package/dist/skills/media-use/scripts/compatibility.test.mjs +1 -56
  257. package/dist/skills/media-use/scripts/lib/prefs-store.mjs +1 -1
  258. package/dist/skills/media-use/scripts/lib/recipe-store.mjs +1 -1
  259. package/dist/skills/media-use/scripts/prefs.mjs +2 -3
  260. package/dist/skills/media-use/scripts/recipe.mjs +1 -3
  261. package/dist/{skills-WHKMWO2D.js → skills-UHOXOGGF.js} +20 -13
  262. package/dist/{skillsUpdateCheck-XQGZGJJG.js → skillsUpdateCheck-PDZIFUJE.js} +3 -3
  263. package/dist/{snapshot-M4NUUSNU.js → snapshot-PFV7ALLH.js} +462 -100
  264. package/dist/{src-4UYM2K3S.js → src-DCVSEODX.js} +8 -8
  265. package/dist/{src-6MSC62U2.js → src-XK5YIR6L.js} +11 -11
  266. package/dist/{staticProjectServer-ERDTFP45.js → staticProjectServer-4IE4G4JO.js} +17 -17
  267. package/dist/studio/assets/{hyperframes-player-DEncBxR7.js → hyperframes-player-B_skzvYC.js} +1 -1
  268. package/dist/studio/assets/{index-Cc22mgvY.js → index-CgLbvCUo.js} +1 -1
  269. package/dist/studio/assets/{index-BABXr78Q.js → index-Dn5FAk2e.js} +99 -99
  270. package/dist/studio/index.html +1 -1
  271. package/dist/{studio-api-SAKD3VKC.js → studio-api-JMWYU7KF.js} +11 -11
  272. package/dist/{studioServer-IRI7EVOM.js → studioServer-BWLSTGIG.js} +50 -49
  273. package/dist/{telemetry-F4XADVAF.js → telemetry-JCU3AV7W.js} +3 -3
  274. package/dist/templates/_shared/AGENTS.md +14 -19
  275. package/dist/templates/_shared/CLAUDE.md +14 -19
  276. package/dist/templates/blank/index.html +10 -4
  277. package/dist/{timeline-5I444RRE.js → timeline-BCIFQYOM.js} +20 -19
  278. package/dist/{tokens-LRRYM35A.js → tokens-7IXKALMQ.js} +2 -2
  279. package/dist/{transcribe-44XDFNVU.js → transcribe-HW7HGJ4V.js} +19 -19
  280. package/dist/{transcribe-WHYHWAB2.js → transcribe-ZUQD3B32.js} +12 -12
  281. package/dist/{updateCheck-7CPH3CAZ.js → updateCheck-Z6LNEK7B.js} +2 -2
  282. package/dist/{upgrade-WW4GQ2RI.js → upgrade-JYH72JGL.js} +2 -2
  283. package/dist/{urlDownloader-OHLLP45A.js → urlDownloader-WKLFHSUH.js} +8 -8
  284. package/dist/{validate-VNCDH2LW.js → validate-QCC27YYI.js} +23 -23
  285. package/dist/{video-5OHTLL2D.js → video-EZ7ONY6L.js} +9 -9
  286. package/dist/warmCheck.js +36 -36
  287. package/package.json +1 -1
  288. package/dist/audio-KGK44XE4.js +0 -1153
  289. package/dist/chunk-R2SQBPMH.js +0 -3805
  290. package/dist/skills/hyperframes/references/brief-contract.md +0 -108
  291. package/dist/skills/hyperframes/references/brief-format.md +0 -72
  292. package/dist/skills/hyperframes/references/capability-menu.md +0 -47
  293. package/dist/skills/hyperframes/references/frame-worker-core.md +0 -82
  294. package/dist/skills/hyperframes/references/intent-interview.md +0 -73
  295. package/dist/skills/hyperframes/references/pitch-round.md +0 -40
  296. package/dist/skills/hyperframes/references/production-loop.md +0 -26
  297. package/dist/skills/hyperframes/references/review-loop.md +0 -37
  298. package/dist/skills/hyperframes/references/route-briefs.md +0 -11
  299. package/dist/skills/hyperframes/references/routes/embedded-captions.md +0 -11
  300. package/dist/skills/hyperframes/references/routes/faceless-explainer.md +0 -12
  301. package/dist/skills/hyperframes/references/routes/general-video.md +0 -12
  302. package/dist/skills/hyperframes/references/routes/motion-graphics.md +0 -11
  303. package/dist/skills/hyperframes/references/routes/music-to-video.md +0 -12
  304. package/dist/skills/hyperframes/references/routes/pr-to-video.md +0 -28
  305. package/dist/skills/hyperframes/references/routes/product-launch-video.md +0 -13
  306. package/dist/skills/hyperframes/references/routes/remotion-to-hyperframes.md +0 -9
  307. package/dist/skills/hyperframes/references/routes/slideshow.md +0 -11
  308. package/dist/skills/hyperframes/references/routes/talking-head-recut.md +0 -11
  309. package/dist/skills/hyperframes/references/script-format.md +0 -52
  310. package/dist/skills/hyperframes/references/subagent-dispatch.md +0 -35
  311. package/dist/skills/hyperframes/references/workflow-catalog.md +0 -10
  312. package/dist/skills/hyperframes/scripts/lib/frame-packets-core.mjs +0 -176
  313. package/dist/skills/media-use/audio/scripts/lib/host-audio.mjs +0 -28
  314. package/dist/skills/media-use/audio/scripts/lib/host-audio.test.mjs +0 -106
@@ -16,49 +16,49 @@ import {
16
16
  preResolveHostileMediaProxies,
17
17
  runBrowserCheck,
18
18
  samplingBrowserCount
19
- } from "./chunk-2ULXZ4PG.js";
20
- import "./chunk-UJKUB2LH.js";
19
+ } from "./chunk-2II34JPM.js";
20
+ import "./chunk-22QKQDEE.js";
21
21
  import "./chunk-KANNRHY7.js";
22
22
  import "./chunk-X7MTZ4T2.js";
23
- import "./chunk-QL2PNIXC.js";
24
- import "./chunk-LRGYPXHF.js";
25
- import "./chunk-4KKKBEP3.js";
26
- import "./chunk-YWNJTZGN.js";
23
+ import "./chunk-5ZMXGNGC.js";
24
+ import "./chunk-HZ7M2MZA.js";
25
+ import "./chunk-ZVBEGBII.js";
26
+ import "./chunk-R6IGQ5NO.js";
27
27
  import "./chunk-X7MTZ4T2.js";
28
28
  import "./chunk-XUHOIDKG.js";
29
- import "./chunk-3QVMJ7GX.js";
30
- import "./chunk-ZRHO6YMM.js";
29
+ import "./chunk-2PZZMAME.js";
30
+ import "./chunk-WHMFW5ET.js";
31
31
  import "./chunk-6JR2XUEE.js";
32
32
  import "./chunk-TTVHYD5R.js";
33
33
  import "./chunk-U6RXZNZE.js";
34
- import "./chunk-SN7KI5JA.js";
34
+ import "./chunk-5ZMIVTHN.js";
35
35
  import "./chunk-ALVXFXUG.js";
36
- import "./chunk-ICJEAFPD.js";
36
+ import "./chunk-U4BMRIE6.js";
37
37
  import "./chunk-FH7WODJH.js";
38
- import "./chunk-KN46TGHV.js";
38
+ import "./chunk-UAJCTEK2.js";
39
39
  import "./chunk-MOEGCMKI.js";
40
- import "./chunk-ES426XRJ.js";
40
+ import "./chunk-7AUMTARQ.js";
41
41
  import "./chunk-DKPNNYBZ.js";
42
- import "./chunk-PSKEKWVU.js";
42
+ import "./chunk-DTXDQ6OP.js";
43
43
  import "./chunk-K2FLNJVB.js";
44
44
  import "./chunk-442JNXRM.js";
45
45
  import "./chunk-EHSBBBR2.js";
46
- import "./chunk-UNNXFKVG.js";
47
- import "./chunk-PFYWVUHA.js";
46
+ import "./chunk-RVZNSKRH.js";
47
+ import "./chunk-RPUIMFHF.js";
48
48
  import "./chunk-XT7X6QCP.js";
49
49
  import "./chunk-4YYJOFKS.js";
50
50
  import "./chunk-HVW7ABXD.js";
51
- import "./chunk-ZOCHDXDG.js";
51
+ import "./chunk-Y2M6XSNK.js";
52
52
  import "./chunk-JHOCK3DG.js";
53
- import "./chunk-LLC4CS6I.js";
54
- import "./chunk-7MB2ZAQF.js";
53
+ import "./chunk-ID5AJ4L3.js";
54
+ import "./chunk-YRAJDFIN.js";
55
55
  import "./chunk-AWDFDFI3.js";
56
56
  import "./chunk-P6LJ4Y32.js";
57
57
  import "./chunk-GMECXFAN.js";
58
- import "./chunk-5CS4T6C6.js";
58
+ import "./chunk-7L37AB57.js";
59
59
  import "./chunk-EOVYQ3IG.js";
60
- import "./chunk-JIUTXKWA.js";
61
- import "./chunk-UKOTVJFV.js";
60
+ import "./chunk-77QM6YRQ.js";
61
+ import "./chunk-6IOBAOU7.js";
62
62
  import "./chunk-VWG7OQKU.js";
63
63
  import "./chunk-S3S4TGEH.js";
64
64
  import "./chunk-54HJ63Q2.js";
@@ -67,15 +67,15 @@ import "./chunk-ZTZA4UWZ.js";
67
67
  import "./chunk-KLIKCX6Q.js";
68
68
  import "./chunk-EVMY7IPL.js";
69
69
  import "./chunk-7FMUTGOH.js";
70
- import "./chunk-RGXVEYHI.js";
70
+ import "./chunk-7M7TMM4S.js";
71
71
  import "./chunk-IZCW2NKT.js";
72
- import "./chunk-J3QM7AHP.js";
72
+ import "./chunk-RNZEQTWZ.js";
73
73
  import "./chunk-RQVDTPGD.js";
74
- import "./chunk-YALM6XN4.js";
75
- import "./chunk-R2SQBPMH.js";
74
+ import "./chunk-BRTDLVK3.js";
75
+ import "./chunk-UOZX5W5T.js";
76
76
  import "./chunk-VC76R6W2.js";
77
77
  import "./chunk-UJKQWGFF.js";
78
- import "./chunk-YMS5FOMC.js";
78
+ import "./chunk-B2A56S5C.js";
79
79
  import "./chunk-OFQWTKPW.js";
80
80
  import "./chunk-DPVXBVLL.js";
81
81
  import "./chunk-3GXQPCJC.js";
@@ -84,22 +84,22 @@ import "./chunk-FXMKHHPO.js";
84
84
  import "./chunk-T6AGUTZJ.js";
85
85
  import "./chunk-XT6MXC7A.js";
86
86
  import "./chunk-4UMPIPCQ.js";
87
- import "./chunk-ADDHW2FS.js";
87
+ import "./chunk-Q447CX26.js";
88
88
  import "./chunk-VAS6HQX3.js";
89
89
  import "./chunk-6BNTGNGD.js";
90
- import "./chunk-OYLO6TYK.js";
90
+ import "./chunk-RUOG4VB7.js";
91
91
  import "./chunk-MMQ52NIZ.js";
92
92
  import "./chunk-BSQ7XANM.js";
93
93
  import "./chunk-SDYDNHEE.js";
94
94
  import "./chunk-IXLUTE6N.js";
95
- import "./chunk-TYXH3EKP.js";
95
+ import "./chunk-I5JRXMCV.js";
96
96
  import "./chunk-W2LGJSEN.js";
97
- import "./chunk-ABZYYUUH.js";
97
+ import "./chunk-FRLTKTOR.js";
98
98
  import "./chunk-K4WIOZFP.js";
99
99
  import "./chunk-XUXGIA7H.js";
100
100
  import "./chunk-WERLJGIC.js";
101
101
  import "./chunk-ISN5GRYI.js";
102
- import "./chunk-4N4P3ZWL.js";
102
+ import "./chunk-LDW3KVGK.js";
103
103
  import "./chunk-KNU5COPB.js";
104
104
  import "./chunk-KGPLIH7B.js";
105
105
  import "./chunk-M2WBOQ2Q.js";
@@ -6,23 +6,23 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-LRGYPXHF.js";
9
+ } from "./chunk-HZ7M2MZA.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-ICJEAFPD.js";
15
+ } from "./chunk-U4BMRIE6.js";
16
16
  import {
17
17
  resolveCompositionViewportFromHtml
18
18
  } from "./chunk-FH7WODJH.js";
19
19
  import {
20
20
  launchManagedBrowser,
21
21
  resolveManagedGpuMode
22
- } from "./chunk-KN46TGHV.js";
22
+ } from "./chunk-UAJCTEK2.js";
23
23
  import {
24
24
  pageNavigationTimeoutMs
25
- } from "./chunk-ES426XRJ.js";
25
+ } from "./chunk-7AUMTARQ.js";
26
26
  import {
27
27
  defineCommand
28
28
  } from "./chunk-S3S4TGEH.js";
@@ -39,7 +39,7 @@ import {
39
39
  import {
40
40
  printDeprecationNotice,
41
41
  withMeta
42
- } from "./chunk-ABZYYUUH.js";
42
+ } from "./chunk-FRLTKTOR.js";
43
43
  import {
44
44
  normalizeErrorMessage
45
45
  } from "./chunk-KNU5COPB.js";
@@ -227,7 +227,7 @@ function extractCompositionErrorsFromLint(lintResult) {
227
227
  async function localizeRemoteAssets(html) {
228
228
  let dir;
229
229
  try {
230
- const { loadProducer } = await import("./producer-7XYSPVKH.js");
230
+ const { loadProducer } = await import("./producer-TSNKSCUM.js");
231
231
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
232
232
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
233
233
  const assetDir = dir;
@@ -248,10 +248,10 @@ async function localizeRemoteAssets(html) {
248
248
  }
249
249
  async function validateInBrowser(project, opts) {
250
250
  const projectDir = project.dir;
251
- const { bundleToSingleHtml } = await import("./compiler-Q3N6QXMT.js");
251
+ const { bundleToSingleHtml } = await import("./compiler-2EKSMC3I.js");
252
252
  const { ensureBrowser } = await import("./manager-UHWEKPXC.js");
253
- const { serveStaticProjectHtml } = await import("./staticProjectServer-ERDTFP45.js");
254
- const { lintProject } = await import("./lintProject-C2ONSH2U.js");
253
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-4IE4G4JO.js");
254
+ const { lintProject } = await import("./lintProject-JATQKR64.js");
255
255
  const lintResult = await lintProject(projectDir);
256
256
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
257
257
  const html = await bundleToSingleHtml(projectDir);
@@ -272,9 +272,9 @@ async function validateInBrowser(project, opts) {
272
272
  try {
273
273
  const browser = await ensureBrowser();
274
274
  const puppeteer = await import("puppeteer-core");
275
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-4UYM2K3S.js");
275
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-DCVSEODX.js");
276
276
  const requestedGpuMode = resolveCliChromeGpuMode();
277
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-VFSACUQV.js");
277
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-NSNVDFXC.js");
278
278
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
279
279
  const requiresWebGpu = compositionRequiresWebGpu(html);
280
280
  const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  updateNoticesSuppressed
9
- } from "./chunk-ABZYYUUH.js";
9
+ } from "./chunk-FRLTKTOR.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";
@@ -56,16 +56,36 @@ function isCoreSkill(name) {
56
56
  }
57
57
  var FALLBACK_CORE_SKILLS = [
58
58
  "hyperframes",
59
+ "hyperframes-cli",
60
+ "hyperframes-registry",
61
+ "media-use"
62
+ ];
63
+ var RETIRED_DOMAIN_SKILLS = [
59
64
  "hyperframes-animation",
60
65
  "hyperframes-audio",
61
- "hyperframes-cli",
62
66
  "hyperframes-core",
63
67
  "hyperframes-creative",
64
68
  "hyperframes-keyframes",
65
- "hyperframes-registry",
66
- "hyperframes-studio",
67
- "media-use"
69
+ "hyperframes-studio"
70
+ ];
71
+ var RETIRED_WORKFLOW_SKILLS = [
72
+ "embedded-captions",
73
+ "faceless-explainer",
74
+ "general-video",
75
+ "motion-graphics",
76
+ "music-to-video",
77
+ "pr-to-video",
78
+ "product-launch-video",
79
+ "talking-head-recut"
68
80
  ];
81
+ var RETIRED_SKILLS = [
82
+ ...RETIRED_DOMAIN_SKILLS,
83
+ ...RETIRED_WORKFLOW_SKILLS
84
+ ];
85
+ function retiredSkillNotice(name) {
86
+ const home = name === "hyperframes-audio" ? "the /media-use skill (references/mixing.md)" : "the /hyperframes skill and its references (film, captions, overlays, motion, look, format)";
87
+ return `${name} was retired; its knowledge now lives in ${home}, which \`skills update\` keeps current.`;
88
+ }
69
89
  var RUNTIME_DIRS = /* @__PURE__ */ new Set([
70
90
  "__pycache__",
71
91
  ".pytest_cache",
@@ -258,7 +278,12 @@ function manifestCoversSkill(entry) {
258
278
  }
259
279
  function detectRemoved(root, latest, opts) {
260
280
  const lock = readSkillLock(lockPathForScope(root.scope, opts));
261
- const removed = skillsAttributedToSource(lock, latest.source).filter((name) => manifestCoversSkill(lock?.skills?.[name])).filter((name) => !(name in latest.skills)).sort().map((name) => ({ name, status: "removed" }));
281
+ const attributed = skillsAttributedToSource(lock, latest.source);
282
+ const dropped = attributed.filter((name) => manifestCoversSkill(lock?.skills?.[name]));
283
+ const retired = RETIRED_SKILLS.filter(
284
+ (name) => attributed.includes(name) || RETIRED_DOMAIN_SKILLS.includes(name) && existsSync(join(root.dir, name, "SKILL.md"))
285
+ );
286
+ const removed = [.../* @__PURE__ */ new Set([...dropped, ...retired])].filter((name) => !(name in latest.skills)).sort().map((name) => ({ name, status: "removed" }));
262
287
  return { removed, lockMissing: lock === null };
263
288
  }
264
289
  function pruneOrphanedLockEntries(names, scope, opts = {}) {
@@ -435,6 +460,8 @@ function printSkillsUpdateNotice() {
435
460
  export {
436
461
  isCoreSkill,
437
462
  FALLBACK_CORE_SKILLS,
463
+ RETIRED_SKILLS,
464
+ retiredSkillNotice,
438
465
  presentSkills,
439
466
  SKILLS_CLI_LOCK_PATHS_VERIFIED_AT,
440
467
  hyperframesSkillNames,
@@ -8,7 +8,7 @@ import {
8
8
  auditClipDurations,
9
9
  shouldIgnoreHttpError,
10
10
  shouldIgnoreRequestFailure
11
- } from "./chunk-UJKUB2LH.js";
11
+ } from "./chunk-22QKQDEE.js";
12
12
  import {
13
13
  checkSnapshotDirectory,
14
14
  rectToBbox
@@ -16,10 +16,10 @@ import {
16
16
  import {
17
17
  ambiguousIssue,
18
18
  loadBrowserScript
19
- } from "./chunk-QL2PNIXC.js";
19
+ } from "./chunk-5ZMXGNGC.js";
20
20
  import {
21
21
  serveStaticProjectHtml
22
- } from "./chunk-4KKKBEP3.js";
22
+ } from "./chunk-ZVBEGBII.js";
23
23
  import {
24
24
  FfmpegUnavailableError,
25
25
  decideMediaProxyEligibility,
@@ -27,7 +27,7 @@ import {
27
27
  proxyVariantFor,
28
28
  resolveProxies,
29
29
  scanProjectMediaCodecMap
30
- } from "./chunk-SN7KI5JA.js";
30
+ } from "./chunk-5ZMIVTHN.js";
31
31
  import {
32
32
  AUDIT_SEEK_OPTIONS,
33
33
  DEFAULT_ZOOM_PADDING_PX,
@@ -41,18 +41,97 @@ import {
41
41
  seekCompositionTimeline,
42
42
  seekInPage,
43
43
  waitForPreferredSeekTarget
44
- } from "./chunk-ICJEAFPD.js";
44
+ } from "./chunk-U4BMRIE6.js";
45
45
  import {
46
46
  BrowserCleanupError,
47
47
  closeManagedBrowser
48
- } from "./chunk-KN46TGHV.js";
48
+ } from "./chunk-UAJCTEK2.js";
49
49
  import {
50
50
  resolveAutoProxy
51
- } from "./chunk-PFYWVUHA.js";
51
+ } from "./chunk-RPUIMFHF.js";
52
52
  import {
53
53
  normalizeErrorMessage
54
54
  } from "./chunk-KNU5COPB.js";
55
55
 
56
+ // src/utils/checkMotionBlur.ts
57
+ var OFF_HINTS = {
58
+ "accelerated-canvas": "html-in-canvas captures WebGL/WebGPU frozen, in sub-compositions too: render that effect separately or flatten it out of the page, or drop data-motion-blur on this composition",
59
+ "backface-visibility": "backface-visibility: hidden inside a 3D transform is drawn mirrored; avoid the 3D flip or drop motion blur",
60
+ "iframe-in-root": "move the <iframe>, <object>, <embed> or custom element out of the composition root (each is re-initialised when blur wraps the root), or drop motion blur",
61
+ "root-transform": "animate a child element instead of the composition root, or drop motion blur",
62
+ "root-opacity": "animate a child element instead of the composition root, or drop motion blur",
63
+ "root-blend-mode": "set mix-blend-mode on a child element instead of the composition root, or drop motion blur",
64
+ "nested-capture-canvas": "remove the inner <canvas layoutsubtree> / content=drawable, or drop motion blur"
65
+ };
66
+ var GENERIC_OFF_HINT = "remove what the reason names, or drop data-motion-blur";
67
+ var ASKED = 'data-motion-blur="on" is set but';
68
+ function motionBlurDrafts(probe) {
69
+ if (!probe) return [];
70
+ if (probe.reasonCode === "unsupported-browser") {
71
+ return [
72
+ {
73
+ code: "motion_blur_unverified",
74
+ severity: "info",
75
+ message: `${ASKED} blur could not be evaluated in this browser`,
76
+ fixHint: "the check browser has no html-in-canvas (drawElementImage); render once to see whether blur applies",
77
+ time: 0
78
+ }
79
+ ];
80
+ }
81
+ if (probe.state === "off") {
82
+ return [
83
+ {
84
+ code: "motion_blur_off",
85
+ severity: "warning",
86
+ message: `${ASKED} blur is off: ${probe.reason ?? "unknown reason"}`,
87
+ fixHint: OFF_HINTS[probe.reasonCode ?? ""] ?? GENERIC_OFF_HINT,
88
+ time: 0
89
+ }
90
+ ];
91
+ }
92
+ if (probe.movers === 0) {
93
+ return [
94
+ {
95
+ code: "motion_blur_no_movers",
96
+ severity: "info",
97
+ message: `${ASKED} nothing in the composition moves fast enough to blur, so it has no effect`,
98
+ fixHint: "animate an element's transform or position by 2+ px per frame, or drop data-motion-blur",
99
+ time: 0
100
+ }
101
+ ];
102
+ }
103
+ return [];
104
+ }
105
+ function readMotionBlurProbe() {
106
+ const api = Reflect.get(window, "__hfMotionBlur");
107
+ if (typeof api !== "object" || api === null) return null;
108
+ const probe = Reflect.get(api, "probe");
109
+ if (typeof probe !== "function") return null;
110
+ const report = Reflect.apply(probe, api, []);
111
+ if (typeof report !== "object" || report === null) return null;
112
+ const reason = Reflect.get(report, "reason");
113
+ const code = Reflect.get(report, "reasonCode");
114
+ const movers = Reflect.get(report, "movers");
115
+ const suspend = Reflect.get(api, "suspend");
116
+ if (typeof suspend === "function") Reflect.apply(suspend, api, []);
117
+ return {
118
+ state: Reflect.get(report, "state") === "off" ? "off" : "on",
119
+ reason: typeof reason === "string" ? reason : null,
120
+ reasonCode: typeof code === "string" ? code : null,
121
+ movers: typeof movers === "number" ? movers : 0
122
+ };
123
+ }
124
+ async function collectMotionBlurDrafts(page) {
125
+ const probe = await page.evaluate(readMotionBlurProbe).catch(() => null);
126
+ return motionBlurDrafts(probe);
127
+ }
128
+ function dropMotionBlurConsoleEcho(drafts, found) {
129
+ if (found.length === 0) return drafts;
130
+ return drafts.filter(
131
+ (d) => !(d.code === "console_warning" && d.message.startsWith("[motion-blur] off:"))
132
+ );
133
+ }
134
+
56
135
  // src/utils/checkBrowser.ts
57
136
  import { existsSync, mkdirSync, writeFileSync } from "fs";
58
137
  import os from "os";
@@ -240,13 +319,15 @@ function proxyFailedDraft(message) {
240
319
  return { code: "media_proxy_failed", severity: "warning", message, time: 0 };
241
320
  }
242
321
  async function runBrowserCheck(project, options, motion, runGrid, deadline, prelaunched) {
243
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-2EGPA5ZO.js");
322
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-TT32MZBO.js");
244
323
  const html = await bundleWithLocalizedFonts(project.dir);
324
+ deadline?.enter("copies");
245
325
  const { findings: drafts, failedPaths } = await preResolveHostileMediaProxies(
246
326
  project.dir,
247
327
  html,
248
328
  options.autoProxy
249
329
  );
330
+ deadline?.enter("launch");
250
331
  const server = await serveStaticProjectHtml(
251
332
  project.dir,
252
333
  html,
@@ -277,14 +358,15 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
277
358
  beforeNavigate: async (page2) => {
278
359
  wireRuntimeListeners(page2, drafts, clock);
279
360
  await deadline?.preparePage(page2);
280
- }
361
+ },
362
+ onLoaded: () => deadline?.enter("settle")
281
363
  });
282
364
  chromeBrowser = session.browser;
283
365
  const page = session.page;
284
366
  await waitForPreferredSeekTarget(page);
285
367
  const rootAnchor = await resolveRootAnchor(page);
286
368
  const launchSettleMs = Date.now() - launchSettleStart;
287
- const { analyzeClipMediaFit } = await import("./src-4UYM2K3S.js");
369
+ const { analyzeClipMediaFit } = await import("./src-DCVSEODX.js");
288
370
  for (const entry of await auditClipDurations(page, analyzeClipMediaFit, options.timeout)) {
289
371
  drafts.push({ code: "clip_media_fit", severity: entry.level, message: entry.text, time: 0 });
290
372
  }
@@ -292,9 +374,11 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
292
374
  const message = tweenTailMessage(tail);
293
375
  drafts.push({ code: "gsap_tween_tail", severity: "warning", message, time: tail.later.end });
294
376
  }
377
+ const blur = await collectMotionBlurDrafts(page);
378
+ drafts.push(...blur);
295
379
  const sampleLog = sampleWindow(drafts);
296
380
  const driver = createPageDriver(page, clock, sampleLog);
297
- const result = await runGrid(driver, options, motion, helpers);
381
+ const result = await runGrid(driver, options, motion, helpers, deadline?.enter);
298
382
  helperSession?.stop();
299
383
  const helper = await helperOpen?.catch(() => void 0);
300
384
  const merged = helper ? mergeHelperDrafts(sampleLog, helper.sampleLog) : drafts;
@@ -303,7 +387,7 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
303
387
  ...result,
304
388
  timings: { ...result.timings, launchSettleMs },
305
389
  runtimeFindings: dropFailedProxyEchoes(
306
- keepBrokenImageAborts(merged, broken),
390
+ dropMotionBlurConsoleEcho(keepBrokenImageAborts(merged, broken), blur),
307
391
  failedPaths
308
392
  ).map((draft) => runtimeFinding(draft, rootAnchor))
309
393
  };
@@ -391,7 +475,7 @@ function mergeHelperDrafts(primary, helper) {
391
475
  }
392
476
  async function captureFindingCrops(project, options, requests, deadline) {
393
477
  if (requests.length === 0) return [];
394
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-2EGPA5ZO.js");
478
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-TT32MZBO.js");
395
479
  const html = await bundleWithLocalizedFonts(project.dir);
396
480
  const server = await serveStaticProjectHtml(
397
481
  project.dir,
@@ -665,9 +749,54 @@ function createPageDriver(page, clock = createRuntimeClock(), sampleLog) {
665
749
  collectGeometryCandidates: (time, request) => collectGeometryCandidates(page, time, request),
666
750
  collectMotionFrame: (time, selectors, scopes) => collectMotionFrame(page, time, selectors, scopes),
667
751
  anchorMotionIssues: (issues) => anchorLayoutIssues(page, issues),
668
- collectContrast: (time, annotations) => collectContrast(page, time, annotations)
752
+ collectContrast: (time, annotations) => collectContrast(page, time, annotations),
753
+ collectCraftFrame: (time) => collectCraftFrame(page, time),
754
+ collectCraftFilm: () => collectCraftFilm(page)
669
755
  };
670
756
  }
757
+ async function collectCraftFrame(page, time) {
758
+ const raw = await page.evaluate(() => {
759
+ const sample = Reflect.get(window, "__hyperframesCraftSample");
760
+ return typeof sample === "function" ? Reflect.apply(sample, window, []) : null;
761
+ });
762
+ const record = isRecord(raw) ? raw : {};
763
+ const parts = Reflect.get(record, "parts");
764
+ return {
765
+ time,
766
+ parts: Array.isArray(parts) ? parts.flatMap(parseCraftTextPart) : [],
767
+ held: booleanValue(record, "held") ?? false,
768
+ painted: booleanValue(record, "painted") ?? true,
769
+ signature: stringValue(record, "signature") ?? ""
770
+ };
771
+ }
772
+ async function collectCraftFilm(page) {
773
+ const raw = await page.evaluate(() => {
774
+ const film = Reflect.get(window, "__hyperframesCraftFilm");
775
+ return typeof film === "function" ? Reflect.apply(film, window, []) : null;
776
+ });
777
+ return { soundSources: (isRecord(raw) ? numberValue(raw, "soundSources") : null) ?? 0 };
778
+ }
779
+ var CRAFT_PART_NUMBERS = ["key", "block", "opacity", "fontPx"];
780
+ var CRAFT_PART_STRINGS = ["selector", "blockSelector", "sourceFile", "text"];
781
+ var CRAFT_RECT_NUMBERS = ["left", "top", "width", "height"];
782
+ function parseCraftTextPart(value) {
783
+ if (!isRecord(value)) return [];
784
+ const nums = requiredNumbers(value, CRAFT_PART_NUMBERS);
785
+ const strings = requiredStrings(value, CRAFT_PART_STRINGS);
786
+ const rect = recordField(value, "rect");
787
+ const box = rect ? requiredNumbers(rect, CRAFT_RECT_NUMBERS) : null;
788
+ const captions = booleanValue(value, "captions");
789
+ return nums && strings && box && captions !== null ? [{ ...nums, ...strings, rect: box, captions }] : [];
790
+ }
791
+ function requiredStrings(value, keys) {
792
+ const out = {};
793
+ for (const key of keys) {
794
+ const entry = stringValue(value, key);
795
+ if (entry === null) return null;
796
+ out[key] = entry;
797
+ }
798
+ return out;
799
+ }
671
800
  async function hasNoTimelineDeclaration(page) {
672
801
  return page.evaluate(
673
802
  () => document.querySelector("[data-composition-id]")?.hasAttribute("data-no-timeline") ?? false
@@ -1068,17 +1197,20 @@ function anchorsInPage(values) {
1068
1197
  });
1069
1198
  }
1070
1199
  async function resolveRootAnchor(page) {
1200
+ const selector = await page.evaluate(
1201
+ (explicit) => document.querySelector(explicit) ? explicit : "[data-composition-id]",
1202
+ '[data-composition-id][data-root="true"]'
1203
+ );
1071
1204
  const anchors = await resolveAnchors(page, [
1072
- { selector: "[data-composition-id]", time: 0, bbox: await compositionBbox(page) }
1205
+ { selector, time: 0, bbox: await compositionBbox(page, selector) }
1073
1206
  ]);
1074
1207
  return anchors[0] ?? fallbackAnchor(void 0);
1075
1208
  }
1076
- async function compositionBbox(page) {
1077
- return page.evaluate(() => {
1078
- const element = document.querySelector("[data-composition-id]");
1079
- const rect = element?.getBoundingClientRect();
1209
+ async function compositionBbox(page, selector) {
1210
+ return page.evaluate((root) => {
1211
+ const rect = document.querySelector(root)?.getBoundingClientRect();
1080
1212
  return rect ? { x: rect.x, y: rect.y, width: rect.width, height: rect.height } : { x: 0, y: 0, width: 0, height: 0 };
1081
- });
1213
+ }, selector);
1082
1214
  }
1083
1215
  async function collectContrast(page, time, snapshotAnnotations) {
1084
1216
  let prepared = [];
@@ -1409,7 +1541,8 @@ function runtimeFinding(draft, root) {
1409
1541
  time: draft.time,
1410
1542
  ...draft.timeRange ? { timeRange: draft.timeRange } : {},
1411
1543
  url: draft.url,
1412
- line: draft.line
1544
+ line: draft.line,
1545
+ ...draft.fixHint ? { fixHint: draft.fixHint } : {}
1413
1546
  };
1414
1547
  }
1415
1548
  function fallbackAnchor(request) {
@@ -19,7 +19,7 @@ import {
19
19
  splitElementInHtml,
20
20
  unwrapElementsFromHtml,
21
21
  wrapElementsInHtml
22
- } from "./chunk-ZRHO6YMM.js";
22
+ } from "./chunk-WHMFW5ET.js";
23
23
  import {
24
24
  MEDIA_LINK_ATTR,
25
25
  relinkSplitHalves
@@ -68,7 +68,7 @@ import {
68
68
  scanProjectMediaCodecMap,
69
69
  shouldPrewarmProxy,
70
70
  waitForProxy
71
- } from "./chunk-SN7KI5JA.js";
71
+ } from "./chunk-5ZMIVTHN.js";
72
72
  import {
73
73
  STUDIO_MOTION_PATH,
74
74
  createStudioMotionRenderBodyScript,
@@ -83,7 +83,7 @@ import {
83
83
  import {
84
84
  findTimelineScript,
85
85
  parseGsapScriptAcorn
86
- } from "./chunk-5CS4T6C6.js";
86
+ } from "./chunk-7L37AB57.js";
87
87
  import {
88
88
  atomicTempPath,
89
89
  createFileAtomically,
@@ -109,12 +109,12 @@ import {
109
109
  motionPathPluginUrl,
110
110
  parseFps,
111
111
  parsePreviewProxyBox
112
- } from "./chunk-J3QM7AHP.js";
112
+ } from "./chunk-RNZEQTWZ.js";
113
113
  import {
114
114
  addScenePartsManifest,
115
115
  ensureHfIds,
116
116
  stampHfIdsInPlace
117
- } from "./chunk-YALM6XN4.js";
117
+ } from "./chunk-BRTDLVK3.js";
118
118
  import {
119
119
  AFTER_FONTS_SCRIPT_TYPE,
120
120
  RUNTIME_BOOTSTRAP_ATTR,
@@ -128,7 +128,7 @@ import {
128
128
  resolveRateSpec,
129
129
  sourceTimeAt,
130
130
  stripEmbeddedRuntimeScripts
131
- } from "./chunk-R2SQBPMH.js";
131
+ } from "./chunk-UOZX5W5T.js";
132
132
  import {
133
133
  HTML_ATTRIBUTE_ENTITIES,
134
134
  MagicString,
@@ -136,7 +136,7 @@ import {
136
136
  decodeAuthoredAttribute,
137
137
  scanHtmlOpeningTags,
138
138
  unrollComputedTimeline
139
- } from "./chunk-YMS5FOMC.js";
139
+ } from "./chunk-B2A56S5C.js";
140
140
  import {
141
141
  ProjectRootMissingError,
142
142
  folderGone,
@@ -174,7 +174,7 @@ import {
174
174
  full,
175
175
  parse,
176
176
  simple
177
- } from "./chunk-TYXH3EKP.js";
177
+ } from "./chunk-I5JRXMCV.js";
178
178
 
179
179
  // ../studio-server/dist/chunk-FJBJJURY.js
180
180
  import { createHash } from "crypto";
@@ -5499,7 +5499,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
5499
5499
  let block = extractGsapScriptBlock(html);
5500
5500
  if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
5501
5501
  const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
5502
- const { GSAP_CDN } = await import("./dist-DYS24AMA.js");
5502
+ const { GSAP_CDN } = await import("./dist-F6FOKRSU.js");
5503
5503
  const bootstrap = [
5504
5504
  `<script src="${GSAP_CDN}"></script>`,
5505
5505
  "<script>",
@@ -8025,7 +8025,8 @@ function registerRenderRoutes(api, adapter) {
8025
8025
  ...encoder.options,
8026
8026
  useGpu: body.gpu === true && format === "mp4",
8027
8027
  distinctId: typeof body.telemetryDistinctId === "string" ? body.telemetryDistinctId : void 0,
8028
- telemetryOptOut: body.telemetryOptOut === true
8028
+ telemetryOptOut: body.telemetryOptOut === true,
8029
+ ...body.previewMotionBlur === false ? { pageMotionBlur: "off" } : {}
8029
8030
  });
8030
8031
  jobState.createdAt = Date.now();
8031
8032
  renderJobs.set(jobId, jobState);
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  stoppedByCancelSignal
9
- } from "./chunk-VNVQGDPC.js";
9
+ } from "./chunk-T4RP55P2.js";
10
10
  import {
11
11
  DEFAULT_MODEL,
12
12
  ensureModel,
@@ -14,12 +14,12 @@ import {
14
14
  hasFFmpeg,
15
15
  pinnedWhisperModel,
16
16
  sha256File
17
- } from "./chunk-SAX7HQ5E.js";
17
+ } from "./chunk-ROWEDRVX.js";
18
18
  import {
19
19
  findFFmpeg,
20
20
  findFFprobe,
21
21
  getFFmpegInstallHint
22
- } from "./chunk-7HJALUIO.js";
22
+ } from "./chunk-4XFFJAWS.js";
23
23
  import {
24
24
  findWavChunk
25
25
  } from "./chunk-UOFAE5RF.js";
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  VALID_CANVAS_RESOLUTIONS,
9
9
  resolveResolutionFlagPair
10
- } from "./chunk-YMS5FOMC.js";
10
+ } from "./chunk-B2A56S5C.js";
11
11
 
12
12
  // src/utils/parseOutputResolution.ts
13
13
  function parseOutputResolutionFlag(raw, options) {