hyperframes 0.8.121 → 0.8.123

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 (176) hide show
  1. package/dist/{add-CGDIT7CT.js → add-CJXLRVWK.js} +16 -16
  2. package/dist/{animatedGifPrep-KPT5VB5Q.js → animatedGifPrep-VHXPTSJL.js} +7 -7
  3. package/dist/{asset-6ZAZIWA7.js → asset-KTRZSJ5R.js} +2 -2
  4. package/dist/{assetCataloger-FWWCXIEX.js → assetCataloger-NH6UQG4Y.js} +3 -3
  5. package/dist/{auth-W4WZ5KT2.js → auth-T52MOHC7.js} +2 -2
  6. package/dist/{autoUpdate-2KRUUCM2.js → autoUpdate-EI6JX53V.js} +2 -2
  7. package/dist/{backgroundChecks-M7YRL5G3.js → backgroundChecks-7N3FFYIV.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-2HXYPO62.js → batchRender-JDH4PXPD.js} +4 -4
  10. package/dist/{beats-KXLHRYXV.js → beats-TG2TOST6.js} +13 -13
  11. package/dist/{benchmark-TZRC6JEE.js → benchmark-WGXMGPUI.js} +13 -13
  12. package/dist/{browser-KFCZEHSG.js → browser-VMEADLNK.js} +10 -10
  13. package/dist/{bundleWithLocalizedFonts-3RRACCEV.js → bundleWithLocalizedFonts-EDBQ5EME.js} +2 -2
  14. package/dist/{capture-N25LJPGM.js → capture-22IWCYV2.js} +2 -2
  15. package/dist/{capture-3L7VTWDG.js → capture-UZFI2G65.js} +10 -10
  16. package/dist/{catalog-OJK3RAMA.js → catalog-3V4SSSYE.js} +16 -16
  17. package/dist/{check-DUQ2OHRX.js → check-LTKOTPFI.js} +33 -34
  18. package/dist/{checkBrowser-XHNFT3DB.js → checkBrowser-LTZPCRBO.js} +36 -37
  19. package/dist/{chunk-YJMQLWG4.js → chunk-24AS45UQ.js} +58 -38
  20. package/dist/{chunk-E5XIJTMU.js → chunk-2FH6HOQ2.js} +1 -1
  21. package/dist/{chunk-5OS5XIWZ.js → chunk-2QAAOW5T.js} +23 -1
  22. package/dist/{chunk-44EFU366.js → chunk-3SHYUYXR.js} +12 -14
  23. package/dist/{chunk-IVLJE3VX.js → chunk-3V6V66SZ.js} +2 -2
  24. package/dist/{chunk-XLG5C3XA.js → chunk-4EZKLNMD.js} +1 -1
  25. package/dist/{chunk-DISNXEWU.js → chunk-4TIUZ6Z7.js} +2 -2
  26. package/dist/{chunk-6Z4E4GBX.js → chunk-4XAAOWFC.js} +1 -1
  27. package/dist/chunk-53IO4HLZ.js +3541 -0
  28. package/dist/{chunk-2C6UJPQS.js → chunk-73KPBRCO.js} +1 -1
  29. package/dist/{chunk-NPHNGWJH.js → chunk-7NWNDQID.js} +3 -3
  30. package/dist/{chunk-WW7V2GQJ.js → chunk-AICUP6TU.js} +2 -2
  31. package/dist/chunk-AMV2OPXR.js +82 -0
  32. package/dist/{chunk-JACPHNUK.js → chunk-BET5FXMM.js} +1 -1
  33. package/dist/{chunk-7VXU7E5S.js → chunk-CZRQH5SP.js} +1 -1
  34. package/dist/{chunk-2LWWIDPZ.js → chunk-DR7F77AN.js} +1 -1
  35. package/dist/{chunk-KYDM3W7A.js → chunk-E26WHQFM.js} +2 -2
  36. package/dist/{chunk-AA4KEZGW.js → chunk-EJF6CESB.js} +1 -1
  37. package/dist/{chunk-JWHQKTVG.js → chunk-ELHC6CLH.js} +3 -3
  38. package/dist/{chunk-5PTKFXAS.js → chunk-EYNWMEWX.js} +13 -11
  39. package/dist/{chunk-FSLYPQ5Z.js → chunk-F7MXHGU3.js} +6 -5
  40. package/dist/{chunk-NRTZ2JPC.js → chunk-GA46NF76.js} +1 -1
  41. package/dist/{chunk-SJ64QY5Z.js → chunk-GPUM6BRL.js} +2 -2
  42. package/dist/{chunk-ZUVO6Q5Q.js → chunk-HISVSZH7.js} +2 -2
  43. package/dist/{chunk-BN5KOC5O.js → chunk-ILOJE2TE.js} +1 -1
  44. package/dist/{chunk-GF4MOYGU.js → chunk-IML47HIH.js} +20 -12
  45. package/dist/{chunk-JREV7WVY.js → chunk-IOMMM4AX.js} +1 -1
  46. package/dist/{chunk-4JC7LDBQ.js → chunk-KQ7BAEVP.js} +3 -3
  47. package/dist/{chunk-3WXWL7AY.js → chunk-MBSCHJQZ.js} +1 -1
  48. package/dist/{chunk-RYSHGEZL.js → chunk-MUAFAG77.js} +4 -4
  49. package/dist/{chunk-NITBGIHR.js → chunk-N4RVOW43.js} +2 -2
  50. package/dist/{chunk-TRLP3CSL.js → chunk-NSVHO5LZ.js} +6 -5
  51. package/dist/{chunk-2GKO3X7F.js → chunk-NSY245QZ.js} +1 -1
  52. package/dist/{chunk-3DCZIHXE.js → chunk-OCH6V4FB.js} +4 -4
  53. package/dist/{chunk-JWGYWJ5F.js → chunk-PQQZNS5K.js} +1 -1
  54. package/dist/{chunk-VU4KRDRL.js → chunk-PUFPAYTJ.js} +1 -1
  55. package/dist/{chunk-YE5UC4XH.js → chunk-QLKCB3NY.js} +7 -7
  56. package/dist/{chunk-LZN67SFR.js → chunk-RTINVJNS.js} +1 -1
  57. package/dist/{chunk-GPGWCFIA.js → chunk-RYP46ARK.js} +53 -2
  58. package/dist/{chunk-6WIWCYD5.js → chunk-S3JOM6L4.js} +3 -3
  59. package/dist/{chunk-S6Y2LOTE.js → chunk-SKZ6H3JT.js} +1 -1
  60. package/dist/{chunk-RCNDZEBU.js → chunk-TLA5RBEB.js} +2 -2
  61. package/dist/{chunk-WBRDOH4A.js → chunk-UI2I6ZQE.js} +1 -1
  62. package/dist/{chunk-OWPHLEDI.js → chunk-UMMVYWDI.js} +5 -5
  63. package/dist/{chunk-2XV3S6TA.js → chunk-VEGNMQZI.js} +2 -2
  64. package/dist/{chunk-MNMD6XLG.js → chunk-WAD4ACBZ.js} +3 -3
  65. package/dist/{chunk-ZBMQOBQK.js → chunk-XIJTGR4O.js} +1 -1
  66. package/dist/{chunk-WG4IZWEH.js → chunk-XQSMY5HF.js} +2 -2
  67. package/dist/{chunk-2CGUG4XK.js → chunk-Z3SUEG2T.js} +11 -9
  68. package/dist/{clean-NH5JTTXP.js → clean-YZQXCSXZ.js} +17 -17
  69. package/dist/cli.js +52 -51
  70. package/dist/{cloud-QKM43VWA.js → cloud-TYUXSEGA.js} +4 -4
  71. package/dist/{cloudrun-JQCGTNFP.js → cloudrun-MA2JVRHV.js} +5 -5
  72. package/dist/{compare-2ZOO6GRL.js → compare-6DSDY2IF.js} +27 -28
  73. package/dist/{compiler-WNWCQTI6.js → compiler-4FHYKPNR.js} +7 -3
  74. package/dist/{component-Q5AECWP4.js → component-NY4JERQ5.js} +3 -3
  75. package/dist/{compositions-KEMPAOSU.js → compositions-SI2SKZAF.js} +12 -12
  76. package/dist/{delete-TWGIIVHU.js → delete-YU7XRF6M.js} +2 -2
  77. package/dist/{deterministicFonts-ITMUXWD2.js → deterministicFonts-HHGHYN6V.js} +2 -2
  78. package/dist/{dist-JGUAVYZS.js → dist-AMQZTIJP.js} +3 -3
  79. package/dist/{dist-JAOG6MYW.js → dist-RUZFIHUD.js} +1 -1
  80. package/dist/{doctor-COVUXJ2H.js → doctor-MXX7AHXT.js} +11 -11
  81. package/dist/{events-6K4KG2RC.js → events-LLCZN2LK.js} +10 -10
  82. package/dist/{events-PNRVEJOH.js → events-R5N3EVAF.js} +9 -9
  83. package/dist/{feedback-YACZS7R7.js → feedback-MIZ3HJT4.js} +11 -11
  84. package/dist/{figma-LEEL7JF7.js → figma-4ESVBLHH.js} +3 -3
  85. package/dist/fontLocalizeCli.js +10 -10
  86. package/dist/{get-FX23HBPC.js → get-OF3I77OW.js} +2 -2
  87. package/dist/{gpuPolicy-TCSAVM2S.js → gpuPolicy-KDI7HVOA.js} +7 -7
  88. package/dist/{grade-compare-ENNPIMZX.js → grade-compare-QXE4ZEZU.js} +27 -28
  89. package/dist/{gsapParserAcorn-FLWABPQM.js → gsapParserAcorn-3Z742FXU.js} +1 -1
  90. package/dist/{help-HNY5LMYR.js → help-NFHZFSQN.js} +3 -2
  91. package/dist/{history-325KQTJM.js → history-DTRCFREW.js} +17 -17
  92. package/dist/hyperframe-runtime.js +56 -56
  93. package/dist/hyperframe.manifest.json +1 -1
  94. package/dist/hyperframe.runtime.iife.js +56 -56
  95. package/dist/hyperframes-player.global.js +1 -1
  96. package/dist/{info-GKPHG3QO.js → info-KRDLMYKB.js} +12 -12
  97. package/dist/{init-UYF6SWL7.js → init-XTXSP6IU.js} +23 -23
  98. package/dist/{inspect-A6DZG7KU.js → inspect-KH3CTX62.js} +28 -29
  99. package/dist/{installer-EY3AB44Q.js → installer-M5OHZ3QU.js} +5 -5
  100. package/dist/{keyframes-P62TMLKQ.js → keyframes-K5UWQDSW.js} +19 -18
  101. package/dist/{lambda-HWU6V36S.js → lambda-PXGK25LH.js} +6 -6
  102. package/dist/{layout-GWF2HD5Z.js → layout-SYWCNF2S.js} +28 -29
  103. package/dist/{lint-OBGOECOL.js → lint-A5W6BCKC.js} +13 -13
  104. package/dist/{lintProject-FDJYTOVM.js → lintProject-MXUZEBDH.js} +1 -1
  105. package/dist/{list-ZOUMRWXQ.js → list-CXWE53HJ.js} +2 -2
  106. package/dist/{login-4H6ZVI6D.js → login-WUPTUIG2.js} +4 -4
  107. package/dist/{media-treatment-GRBN3MG5.js → media-treatment-INJWEP6H.js} +13 -13
  108. package/dist/{models-YFTLSJEG.js → models-D5CMY6VB.js} +8 -8
  109. package/dist/{motionShot-7VLC2ULG.js → motionShot-HS4M4WOQ.js} +17 -16
  110. package/dist/{normalize-audio-SLBARKVY.js → normalize-audio-ILF3IDZC.js} +12 -12
  111. package/dist/open-4V3RXCR6.js +115 -0
  112. package/dist/{pipeline-WRNKPJZH.js → pipeline-CPGRA375.js} +7 -7
  113. package/dist/{play-PDEXRHV6.js → play-IFATKPFL.js} +22 -22
  114. package/dist/{preflight-6TUK6Z7A.js → preflight-IQEYFD33.js} +8 -8
  115. package/dist/{present-UXWOO2YL.js → present-A3EXMPEB.js} +18 -18
  116. package/dist/{preview-CWHCNYYZ.js → preview-6OFPNSRQ.js} +29 -24
  117. package/dist/{producer-WDTJSNXK.js → producer-T4HGO327.js} +1 -1
  118. package/dist/{projectConfig-DBP5POAQ.js → projectConfig-VKUAJTKN.js} +7 -7
  119. package/dist/{publication-SUAGUL5G.js → publication-EYW5DW5Q.js} +3 -3
  120. package/dist/{publish-CDKO6FSQ.js → publish-7N3KAN23.js} +9 -9
  121. package/dist/{remove-background-QFMDODZ4.js → remove-background-76NDLWX2.js} +8 -8
  122. package/dist/{render-XTI7E22A.js → render-FVVTP6IC.js} +13 -13
  123. package/dist/{render-BYD7ZASF.js → render-SGKRP4OI.js} +45 -29
  124. package/dist/{render-NRNF56OV.js → render-WWSM5VDX.js} +4 -4
  125. package/dist/{render-batch-L2AIXYA3.js → render-batch-UHVLIDQ6.js} +4 -4
  126. package/dist/{renderCancellation-XR3W2AQT.js → renderCancellation-TZ2YQXLI.js} +7 -7
  127. package/dist/renderSetupWorker.js +1 -1
  128. package/dist/{resolver-RYPIAEGU.js → resolver-BERTN5TY.js} +5 -5
  129. package/dist/{sherpa-MXQ34FFS.js → sherpa-WAI3BU35.js} +8 -8
  130. package/dist/skills/media-use/SKILL.md +2 -0
  131. package/dist/skills/media-use/audio/scripts/lib/heygen.mjs +16 -6
  132. package/dist/skills/media-use/audio/scripts/lib/heygen.test.mjs +26 -1
  133. package/dist/skills/media-use/audio/scripts/lib/tts.mjs +2 -4
  134. package/dist/skills/media-use/audio/scripts/lib/tts.test.mjs +31 -1
  135. package/dist/skills/media-use/scripts/lib/manifest.d.mts +19 -0
  136. package/dist/skills/media-use/scripts/lib/manifest.mjs +17 -13
  137. package/dist/skills/media-use/scripts/lib/manifest.test.mjs +3 -2
  138. package/dist/{skills-MZQUKPEY.js → skills-4J56N4BF.js} +12 -12
  139. package/dist/{skillsUpdateCheck-B5F5UR7U.js → skillsUpdateCheck-GPLLGZTN.js} +3 -3
  140. package/dist/{snapshot-HPBNWSSK.js → snapshot-XPPNHMIG.js} +28 -29
  141. package/dist/{src-RNEWLAP6.js → src-6ZDBAHYH.js} +9 -9
  142. package/dist/{src-BS6B2UWS.js → src-K6L2URKG.js} +6 -6
  143. package/dist/{staticProjectServer-B44OD7QD.js → staticProjectServer-ETIXS3GJ.js} +16 -16
  144. package/dist/{status-RYS52BAQ.js → status-P2I66DU7.js} +7 -7
  145. package/dist/studio/assets/{hyperframes-player-GkN9yzzq.js → hyperframes-player-yABdb6yk.js} +1 -1
  146. package/dist/studio/assets/{index-ByV72rWx.js → index-D77MIjSJ.js} +1 -1
  147. package/dist/studio/assets/{index-BpKhiuzT.js → index-DWjF2Kxw.js} +1 -1
  148. package/dist/studio/assets/{index-CyFqMHGS.js → index-Dt7lWtY7.js} +184 -184
  149. package/dist/studio/assets/{index-t1LH6H5H.css → index-LrNlT5Tg.css} +1 -1
  150. package/dist/studio/{chunk-J6Q572FA.js → chunk-246VB2G3.js} +3 -1
  151. package/dist/studio/chunk-246VB2G3.js.map +1 -0
  152. package/dist/studio/index.d.ts +10 -2
  153. package/dist/studio/index.html +2 -2
  154. package/dist/studio/index.js +1611 -1310
  155. package/dist/studio/index.js.map +1 -1
  156. package/dist/studio/player.js +1 -1
  157. package/dist/studio/styles.css +1 -1
  158. package/dist/{studio-api-YCS6DZMR.js → studio-api-PTVN2GZ5.js} +10 -10
  159. package/dist/{studioServer-AEXETXZ2.js → studioServer-55366NG4.js} +77 -43
  160. package/dist/{system-TD2HPCOA.js → system-M44QRAAZ.js} +7 -7
  161. package/dist/{telemetry-7KDXFPTK.js → telemetry-6GQL3BIP.js} +10 -10
  162. package/dist/{timeline-P4IMRDIN.js → timeline-NMG3JG3V.js} +17 -17
  163. package/dist/{tokens-HKYWL774.js → tokens-5LYIBBEF.js} +2 -2
  164. package/dist/{transcribe-2E4QY24M.js → transcribe-3SONDYLT.js} +8 -8
  165. package/dist/{transcribe-UIQMMHXI.js → transcribe-4DGPFZTU.js} +13 -13
  166. package/dist/{tts-P3LIPIL5.js → tts-CGUXR7R4.js} +1 -1
  167. package/dist/{updateCheck-KWLMTR35.js → updateCheck-CXNND3CL.js} +2 -2
  168. package/dist/{upgrade-E4TMMCGK.js → upgrade-RFTKDIVZ.js} +2 -2
  169. package/dist/{urlDownloader-P2EJDWLH.js → urlDownloader-VRZX26OK.js} +6 -6
  170. package/dist/{validate-IX47WBNJ.js → validate-3BFHVVZH.js} +17 -18
  171. package/dist/{video-56EQZA6M.js → video-ECPRKRRP.js} +7 -7
  172. package/package.json +1 -1
  173. package/dist/chunk-262C25DQ.js +0 -31
  174. package/dist/chunk-PATLRNZA.js +0 -3541
  175. package/dist/studio/chunk-J6Q572FA.js.map +0 -1
  176. package/dist/{synthesize-K62TIZWI.js → synthesize-BDXNRYZN.js} +4 -4
@@ -9,10 +9,10 @@ import {
9
9
  } from "./chunk-WBLXWOYK.js";
10
10
  import {
11
11
  loadProducer
12
- } from "./chunk-XLG5C3XA.js";
12
+ } from "./chunk-4EZKLNMD.js";
13
13
  import {
14
14
  trackLintRun
15
- } from "./chunk-4JC7LDBQ.js";
15
+ } from "./chunk-KQ7BAEVP.js";
16
16
  import {
17
17
  assertionTargets,
18
18
  buildLayoutSampleTimes,
@@ -27,51 +27,50 @@ import {
27
27
  mergeSampleTimes,
28
28
  parseAt,
29
29
  readMotionSpec
30
- } from "./chunk-44EFU366.js";
31
- import "./chunk-JWHQKTVG.js";
30
+ } from "./chunk-3SHYUYXR.js";
31
+ import "./chunk-ELHC6CLH.js";
32
32
  import "./chunk-XUHOIDKG.js";
33
33
  import "./chunk-X7MTZ4T2.js";
34
- import "./chunk-ZUVO6Q5Q.js";
34
+ import "./chunk-HISVSZH7.js";
35
35
  import {
36
36
  resolveProject
37
- } from "./chunk-WBRDOH4A.js";
38
- import "./chunk-2CGUG4XK.js";
37
+ } from "./chunk-UI2I6ZQE.js";
38
+ import "./chunk-Z3SUEG2T.js";
39
39
  import "./chunk-5Z63TBTX.js";
40
- import "./chunk-S6Y2LOTE.js";
41
- import "./chunk-262C25DQ.js";
42
- import "./chunk-5OS5XIWZ.js";
40
+ import "./chunk-SKZ6H3JT.js";
41
+ import "./chunk-2QAAOW5T.js";
43
42
  import "./chunk-YEIFI443.js";
44
43
  import "./chunk-IHFUKJOR.js";
45
- import "./chunk-YJMQLWG4.js";
46
- import "./chunk-3DCZIHXE.js";
44
+ import "./chunk-24AS45UQ.js";
45
+ import "./chunk-OCH6V4FB.js";
47
46
  import "./chunk-EOVYQ3IG.js";
48
- import "./chunk-JREV7WVY.js";
49
- import "./chunk-SJ64QY5Z.js";
47
+ import "./chunk-IOMMM4AX.js";
48
+ import "./chunk-GPUM6BRL.js";
50
49
  import {
51
50
  resolveLocalBrowserGpuMode
52
- } from "./chunk-6Z4E4GBX.js";
51
+ } from "./chunk-4XAAOWFC.js";
53
52
  import "./chunk-PFCFR3KZ.js";
54
- import "./chunk-3WXWL7AY.js";
53
+ import "./chunk-MBSCHJQZ.js";
55
54
  import "./chunk-XT7X6QCP.js";
56
55
  import "./chunk-4YYJOFKS.js";
57
56
  import "./chunk-HVW7ABXD.js";
58
- import "./chunk-JACPHNUK.js";
59
- import "./chunk-KYDM3W7A.js";
60
- import "./chunk-ZBMQOBQK.js";
57
+ import "./chunk-BET5FXMM.js";
58
+ import "./chunk-E26WHQFM.js";
59
+ import "./chunk-XIJTGR4O.js";
61
60
  import "./chunk-AWDFDFI3.js";
62
61
  import "./chunk-P6LJ4Y32.js";
63
62
  import "./chunk-GMECXFAN.js";
64
- import "./chunk-TRLP3CSL.js";
63
+ import "./chunk-NSVHO5LZ.js";
65
64
  import {
66
65
  trackCheckReport,
67
66
  trackCommandFailure
68
- } from "./chunk-NPHNGWJH.js";
69
- import "./chunk-6WIWCYD5.js";
67
+ } from "./chunk-7NWNDQID.js";
68
+ import "./chunk-S3JOM6L4.js";
70
69
  import "./chunk-VWG7OQKU.js";
71
70
  import {
72
71
  c
73
72
  } from "./chunk-ZTZA4UWZ.js";
74
- import "./chunk-BN5KOC5O.js";
73
+ import "./chunk-ILOJE2TE.js";
75
74
  import "./chunk-AMKC3AXA.js";
76
75
  import {
77
76
  defineCommand,
@@ -88,12 +87,12 @@ import "./chunk-TJSTGSAW.js";
88
87
  import {
89
88
  extractMediaMetadata,
90
89
  findHdrAutoPromotion
91
- } from "./chunk-MNMD6XLG.js";
92
- import "./chunk-RCNDZEBU.js";
93
- import "./chunk-FSLYPQ5Z.js";
90
+ } from "./chunk-WAD4ACBZ.js";
91
+ import "./chunk-TLA5RBEB.js";
92
+ import "./chunk-F7MXHGU3.js";
94
93
  import "./chunk-DPVXBVLL.js";
95
- import "./chunk-GPGWCFIA.js";
96
- import "./chunk-PATLRNZA.js";
94
+ import "./chunk-RYP46ARK.js";
95
+ import "./chunk-53IO4HLZ.js";
97
96
  import "./chunk-VC76R6W2.js";
98
97
  import "./chunk-OFQWTKPW.js";
99
98
  import "./chunk-Q5X2B5WT.js";
@@ -102,7 +101,7 @@ import {
102
101
  lintProject,
103
102
  resolveProjectRelativeSrc,
104
103
  shouldBlockRender
105
- } from "./chunk-NITBGIHR.js";
104
+ } from "./chunk-N4RVOW43.js";
106
105
  import "./chunk-HBBJFK6I.js";
107
106
  import "./chunk-PJ3HDUCY.js";
108
107
  import "./chunk-TQFG7HTI.js";
@@ -110,12 +109,12 @@ import "./chunk-GK4AIFIH.js";
110
109
  import "./chunk-2PSPARWP.js";
111
110
  import {
112
111
  withMeta
113
- } from "./chunk-7VXU7E5S.js";
112
+ } from "./chunk-CZRQH5SP.js";
114
113
  import "./chunk-K4WIOZFP.js";
115
114
  import "./chunk-XUXGIA7H.js";
116
115
  import "./chunk-WERLJGIC.js";
117
116
  import "./chunk-ISN5GRYI.js";
118
- import "./chunk-WG4IZWEH.js";
117
+ import "./chunk-XQSMY5HF.js";
119
118
  import {
120
119
  normalizeErrorMessage
121
120
  } from "./chunk-KNU5COPB.js";
@@ -130,7 +129,7 @@ import { join, relative } from "path";
130
129
 
131
130
  // src/utils/hdrPromotion.ts
132
131
  async function bundleProjectHtml(projectDir) {
133
- const { bundleToSingleHtml } = await import("./compiler-WNWCQTI6.js");
132
+ const { bundleToSingleHtml } = await import("./compiler-4FHYKPNR.js");
134
133
  return bundleToSingleHtml(projectDir);
135
134
  }
136
135
  async function collectBundledRenderMedia(html) {
@@ -1248,7 +1247,7 @@ function resolveMotionSpec(projectDir) {
1248
1247
  };
1249
1248
  }
1250
1249
  async function runBrowserCheck(project, options, motion) {
1251
- const module = await import("./checkBrowser-XHNFT3DB.js");
1250
+ const module = await import("./checkBrowser-LTZPCRBO.js");
1252
1251
  return module.runBrowserCheck(project, options, motion, runAuditGrid);
1253
1252
  }
1254
1253
  async function writeSnapshot(projectDir, index, time, pngBase64) {
@@ -1260,7 +1259,7 @@ async function writeSnapshot(projectDir, index, time, pngBase64) {
1260
1259
  return join("snapshots", filename);
1261
1260
  }
1262
1261
  async function captureFindingCrops(project, options, requests) {
1263
- const module = await import("./checkBrowser-XHNFT3DB.js");
1262
+ const module = await import("./checkBrowser-LTZPCRBO.js");
1264
1263
  return module.captureFindingCrops(project, options, requests);
1265
1264
  }
1266
1265
  var DEFAULT_DEPENDENCIES2 = {
@@ -4,25 +4,25 @@ import { dirname as __hf_dirname } from "node:path";
4
4
  var require = __hf_createRequire(import.meta.url);
5
5
  var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
+ import {
8
+ auditClipDurations,
9
+ shouldIgnoreHttpError,
10
+ shouldIgnoreRequestFailure
11
+ } from "./chunk-EYNWMEWX.js";
7
12
  import {
8
13
  rectToBbox
9
14
  } from "./chunk-WBLXWOYK.js";
10
15
  import {
11
16
  ambiguousIssue,
12
17
  loadBrowserScript
13
- } from "./chunk-44EFU366.js";
18
+ } from "./chunk-3SHYUYXR.js";
14
19
  import {
15
20
  serveStaticProjectHtml
16
- } from "./chunk-JWHQKTVG.js";
17
- import {
18
- auditClipDurations,
19
- shouldIgnoreHttpError,
20
- shouldIgnoreRequestFailure
21
- } from "./chunk-5PTKFXAS.js";
21
+ } from "./chunk-ELHC6CLH.js";
22
22
  import "./chunk-XUHOIDKG.js";
23
23
  import "./chunk-X7MTZ4T2.js";
24
- import "./chunk-ZUVO6Q5Q.js";
25
- import "./chunk-WBRDOH4A.js";
24
+ import "./chunk-HISVSZH7.js";
25
+ import "./chunk-UI2I6ZQE.js";
26
26
  import {
27
27
  AUDIT_SEEK_OPTIONS,
28
28
  DEFAULT_ZOOM_PADDING_PX,
@@ -34,70 +34,69 @@ import {
34
34
  resolveCliChromeGpuMode,
35
35
  seekCompositionTimeline,
36
36
  waitForPreferredSeekTarget
37
- } from "./chunk-2CGUG4XK.js";
37
+ } from "./chunk-Z3SUEG2T.js";
38
38
  import "./chunk-5Z63TBTX.js";
39
- import "./chunk-S6Y2LOTE.js";
40
- import "./chunk-262C25DQ.js";
41
- import "./chunk-5OS5XIWZ.js";
39
+ import "./chunk-SKZ6H3JT.js";
40
+ import "./chunk-2QAAOW5T.js";
42
41
  import "./chunk-YEIFI443.js";
43
42
  import "./chunk-IHFUKJOR.js";
44
- import "./chunk-YJMQLWG4.js";
45
- import "./chunk-3DCZIHXE.js";
43
+ import "./chunk-24AS45UQ.js";
44
+ import "./chunk-OCH6V4FB.js";
46
45
  import "./chunk-EOVYQ3IG.js";
47
- import "./chunk-JREV7WVY.js";
46
+ import "./chunk-IOMMM4AX.js";
48
47
  import {
49
48
  decideMediaProxyEligibility,
50
49
  proxyVariantFor,
51
50
  resolveProxy,
52
51
  scanProjectMediaCodecMap
53
- } from "./chunk-SJ64QY5Z.js";
54
- import "./chunk-6Z4E4GBX.js";
52
+ } from "./chunk-GPUM6BRL.js";
53
+ import "./chunk-4XAAOWFC.js";
55
54
  import "./chunk-PFCFR3KZ.js";
56
55
  import {
57
56
  resolveAutoProxy
58
- } from "./chunk-3WXWL7AY.js";
57
+ } from "./chunk-MBSCHJQZ.js";
59
58
  import "./chunk-XT7X6QCP.js";
60
59
  import "./chunk-4YYJOFKS.js";
61
60
  import "./chunk-HVW7ABXD.js";
62
- import "./chunk-JACPHNUK.js";
63
- import "./chunk-KYDM3W7A.js";
64
- import "./chunk-ZBMQOBQK.js";
61
+ import "./chunk-BET5FXMM.js";
62
+ import "./chunk-E26WHQFM.js";
63
+ import "./chunk-XIJTGR4O.js";
65
64
  import "./chunk-AWDFDFI3.js";
66
65
  import "./chunk-P6LJ4Y32.js";
67
66
  import "./chunk-GMECXFAN.js";
68
- import "./chunk-TRLP3CSL.js";
69
- import "./chunk-NPHNGWJH.js";
70
- import "./chunk-6WIWCYD5.js";
67
+ import "./chunk-NSVHO5LZ.js";
68
+ import "./chunk-7NWNDQID.js";
69
+ import "./chunk-S3JOM6L4.js";
71
70
  import "./chunk-VWG7OQKU.js";
72
71
  import "./chunk-ZTZA4UWZ.js";
73
- import "./chunk-BN5KOC5O.js";
72
+ import "./chunk-ILOJE2TE.js";
74
73
  import "./chunk-AMKC3AXA.js";
75
74
  import "./chunk-S3S4TGEH.js";
76
75
  import "./chunk-54HJ63Q2.js";
77
76
  import "./chunk-PBN6GBJE.js";
78
77
  import "./chunk-KC5XXX3X.js";
79
78
  import "./chunk-TJSTGSAW.js";
80
- import "./chunk-MNMD6XLG.js";
81
- import "./chunk-RCNDZEBU.js";
82
- import "./chunk-FSLYPQ5Z.js";
79
+ import "./chunk-WAD4ACBZ.js";
80
+ import "./chunk-TLA5RBEB.js";
81
+ import "./chunk-F7MXHGU3.js";
83
82
  import "./chunk-DPVXBVLL.js";
84
- import "./chunk-GPGWCFIA.js";
85
- import "./chunk-PATLRNZA.js";
83
+ import "./chunk-RYP46ARK.js";
84
+ import "./chunk-53IO4HLZ.js";
86
85
  import "./chunk-VC76R6W2.js";
87
86
  import "./chunk-OFQWTKPW.js";
88
87
  import "./chunk-TWWSYAKJ.js";
89
- import "./chunk-NITBGIHR.js";
88
+ import "./chunk-N4RVOW43.js";
90
89
  import "./chunk-HBBJFK6I.js";
91
90
  import "./chunk-PJ3HDUCY.js";
92
91
  import "./chunk-TQFG7HTI.js";
93
92
  import "./chunk-GK4AIFIH.js";
94
93
  import "./chunk-2PSPARWP.js";
95
- import "./chunk-7VXU7E5S.js";
94
+ import "./chunk-CZRQH5SP.js";
96
95
  import "./chunk-K4WIOZFP.js";
97
96
  import "./chunk-XUXGIA7H.js";
98
97
  import "./chunk-WERLJGIC.js";
99
98
  import "./chunk-ISN5GRYI.js";
100
- import "./chunk-WG4IZWEH.js";
99
+ import "./chunk-XQSMY5HF.js";
101
100
  import {
102
101
  normalizeErrorMessage
103
102
  } from "./chunk-KNU5COPB.js";
@@ -140,7 +139,7 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
140
139
  );
141
140
  }
142
141
  async function runBrowserCheck(project, options, motion, runGrid) {
143
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-3RRACCEV.js");
142
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-EDBQ5EME.js");
144
143
  const html = await bundleWithLocalizedFonts(project.dir);
145
144
  await preResolveHostileMediaProxies(project.dir, html, options.autoProxy);
146
145
  const server = await serveStaticProjectHtml(
@@ -167,7 +166,7 @@ async function runBrowserCheck(project, options, motion, runGrid) {
167
166
  await waitForPreferredSeekTarget(page);
168
167
  const rootAnchor = await resolveRootAnchor(page);
169
168
  const launchSettleMs = Date.now() - launchSettleStart;
170
- const { analyzeClipMediaFit } = await import("./src-BS6B2UWS.js");
169
+ const { analyzeClipMediaFit } = await import("./src-K6L2URKG.js");
171
170
  for (const entry of await auditClipDurations(page, analyzeClipMediaFit, options.timeout)) {
172
171
  drafts.push({ code: "clip_media_fit", severity: entry.level, message: entry.text, time: 0 });
173
172
  }
@@ -187,7 +186,7 @@ async function runBrowserCheck(project, options, motion, runGrid) {
187
186
  }
188
187
  async function captureFindingCrops(project, options, requests) {
189
188
  if (requests.length === 0) return [];
190
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-3RRACCEV.js");
189
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-EDBQ5EME.js");
191
190
  const html = await bundleWithLocalizedFonts(project.dir);
192
191
  const server = await serveStaticProjectHtml(
193
192
  project.dir,
@@ -21,7 +21,7 @@ import {
21
21
  splitElementInHtml,
22
22
  unwrapElementsFromHtml,
23
23
  wrapElementsInHtml
24
- } from "./chunk-3DCZIHXE.js";
24
+ } from "./chunk-OCH6V4FB.js";
25
25
  import {
26
26
  atomicTempPath,
27
27
  createFileAtomically,
@@ -34,7 +34,7 @@ import {
34
34
  measureAudio,
35
35
  requiredFfmpeg,
36
36
  resolveLocalAudioPath
37
- } from "./chunk-JREV7WVY.js";
37
+ } from "./chunk-IOMMM4AX.js";
38
38
  import {
39
39
  PROXY_PARAMS_VERSION,
40
40
  PROXY_PENDING_RETRY_AFTER_SECONDS,
@@ -60,11 +60,11 @@ import {
60
60
  shouldPrewarmProxy,
61
61
  waitForProxy,
62
62
  walkDir
63
- } from "./chunk-SJ64QY5Z.js";
63
+ } from "./chunk-GPUM6BRL.js";
64
64
  import {
65
65
  findTimelineScript,
66
66
  parseGsapScriptAcorn
67
- } from "./chunk-TRLP3CSL.js";
67
+ } from "./chunk-NSVHO5LZ.js";
68
68
  import {
69
69
  STUDIO_MANUAL_EDITS_PATH
70
70
  } from "./chunk-KC5XXX3X.js";
@@ -81,26 +81,27 @@ import {
81
81
  motionPathPluginUrl,
82
82
  parseFps,
83
83
  sameInstant
84
- } from "./chunk-RCNDZEBU.js";
84
+ } from "./chunk-TLA5RBEB.js";
85
85
  import {
86
86
  MagicString,
87
87
  VALID_CANVAS_RESOLUTIONS,
88
88
  unrollComputedTimeline
89
- } from "./chunk-FSLYPQ5Z.js";
89
+ } from "./chunk-F7MXHGU3.js";
90
90
  import {
91
+ AFTER_FONTS_SCRIPT_TYPE,
91
92
  addScenePartsManifest,
93
+ deferScriptsUntilFonts,
92
94
  ensureHfIds
93
- } from "./chunk-GPGWCFIA.js";
95
+ } from "./chunk-RYP46ARK.js";
94
96
  import {
95
97
  findStartTags,
96
- injectScriptsIntoHtml,
97
98
  injectTagsAtHeadStart,
98
99
  insertBeforeCloseTag,
99
100
  isFullHtmlDocument,
100
101
  resolveRateSpec,
101
102
  sourceTimeAt,
102
103
  stripEmbeddedRuntimeScripts
103
- } from "./chunk-PATLRNZA.js";
104
+ } from "./chunk-53IO4HLZ.js";
104
105
  import {
105
106
  ProjectRootMissingError,
106
107
  folderGone,
@@ -113,7 +114,7 @@ import {
113
114
  import {
114
115
  isWithinProjectRoot,
115
116
  readProjectFile
116
- } from "./chunk-NITBGIHR.js";
117
+ } from "./chunk-N4RVOW43.js";
117
118
  import {
118
119
  FFPROBE_PATH_ENV,
119
120
  findFfBinary
@@ -218,7 +219,7 @@ function stampFileHfIds(filePath) {
218
219
  }
219
220
  }
220
221
 
221
- // ../studio-server/dist/chunk-E3HLZKPI.js
222
+ // ../studio-server/dist/chunk-VT433QV2.js
222
223
  import { randomUUID as randomUUID6 } from "crypto";
223
224
  import { mkdir as mkdir2, readdir as readdir3, rm as rm3, rmdir, writeFile } from "fs/promises";
224
225
  import {
@@ -984,6 +985,17 @@ var OUTSIDE = { kind: "outside", name: "Outside" };
984
985
  var OUTSIDE_LABEL = "Changed outside the app";
985
986
  var RACY_MS = 2e3;
986
987
  var statKey = (file, sweptAt) => sweptAt - Math.max(file.mtimeMs, file.ctimeMs) < RACY_MS ? "" : `${file.size}:${file.mtimeMs}:${file.ctimeMs}`;
988
+ function isHistoryPath(path) {
989
+ if (STUDIO_SIGNATURE_MANIFEST_PATHS.includes(path)) return true;
990
+ return !path.split("/").some((segment) => segment.startsWith("."));
991
+ }
992
+ function withoutHiddenPaths(log) {
993
+ for (const path of log.baseline.keys()) if (!isHistoryPath(path)) log.baseline.delete(path);
994
+ for (const entry of log.entries)
995
+ entry.files = entry.files.filter((file) => isHistoryPath(file.path));
996
+ return log;
997
+ }
998
+ var historyFiles = (dir) => listProjectFiles(dir).filter((file) => isHistoryPath(file.path));
987
999
  var sameWho = (a, b) => a.kind === b.kind && a.name === b.name;
988
1000
  function splitAt(change, at, kept) {
989
1001
  if (at === change.after) return [change, null];
@@ -1127,7 +1139,7 @@ var Engine = class {
1127
1139
  )
1128
1140
  );
1129
1141
  if (!log) return this.firstOpen();
1130
- this.log = log;
1142
+ this.log = withoutHiddenPaths(log);
1131
1143
  const cache = this.readStatCache();
1132
1144
  const last = this.log.entries.at(-1)?.id ?? START;
1133
1145
  for (const [path, hash] of manifestAt(this.log, last) ?? []) {
@@ -1145,6 +1157,7 @@ var Engine = class {
1145
1157
  const replaced = hashOfVersion(fileContentVersion(bytes));
1146
1158
  if (!replaced || replaced === after) return;
1147
1159
  const path = relative2(realDir, absPath).split(sep2).join("/");
1160
+ if (!isHistoryPath(path)) return;
1148
1161
  this.overwritten.set(
1149
1162
  path,
1150
1163
  chainBackFrom(this.overwritten.get(path), replaced).set(after, replaced)
@@ -1177,7 +1190,7 @@ var Engine = class {
1177
1190
  }
1178
1191
  async firstOpen() {
1179
1192
  const sweptAt = this.now();
1180
- for (const file of listProjectFiles(this.dir)) {
1193
+ for (const file of historyFiles(this.dir)) {
1181
1194
  const hash = await this.storeIfPresent(file.path);
1182
1195
  if (this.whereFolder() !== "here") throw this.replaced();
1183
1196
  if (hash !== null) this.tracked.set(file.path, { hash, stat: statKey(file, sweptAt) });
@@ -1210,7 +1223,7 @@ var Engine = class {
1210
1223
  if (this.whereFolder() !== "here") return;
1211
1224
  const sweptAt = this.now();
1212
1225
  const changedAt = (file) => Math.min(sweptAt, Math.max(file.mtimeMs, file.ctimeMs));
1213
- const seen = listProjectFiles(this.dir);
1226
+ const seen = historyFiles(this.dir);
1214
1227
  const heard = new Map(this.overwritten);
1215
1228
  const present = new Set(seen.map((file) => file.path));
1216
1229
  const removed = [...this.tracked.keys()].filter((path) => !present.has(path)).map((path) => {
@@ -1408,7 +1421,8 @@ var Engine = class {
1408
1421
  if (group) await this.commit(group);
1409
1422
  }
1410
1423
  async commit(group, extra = {}) {
1411
- if (!group.changes.size) return null;
1424
+ const undoesEmptied = this.log.entries.find((entry2) => entry2.id === extra.undoes)?.files.length === 0;
1425
+ if (!group.changes.size && !undoesEmptied) return null;
1412
1426
  const pending = this.pendingEntry(group);
1413
1427
  const endedAt = Math.max(pending.endedAt, this.log.entries.at(-1)?.endedAt ?? 0);
1414
1428
  const entry = { ...pending, endedAt, ...extra };
@@ -1466,7 +1480,9 @@ var Engine = class {
1466
1480
  }
1467
1481
  /** A watcher saw a write: one sweep per burst takes it in (a deleted folder is reported by its name alone). */
1468
1482
  noteChange(path) {
1469
- if (this.notedTimer || !affectsProjectSignature(this.dir, resolve3(this.dir, path))) return;
1483
+ const absolute = resolve3(this.dir, path);
1484
+ if (this.notedTimer || !affectsProjectSignature(this.dir, absolute)) return;
1485
+ if (!isHistoryPath(relative2(this.dir, absolute).split(sep2).join("/"))) return;
1470
1486
  this.notedTimer = setTimeout(() => {
1471
1487
  this.notedTimer = null;
1472
1488
  this.background(() => this.sweep());
@@ -1627,7 +1643,7 @@ var Engine = class {
1627
1643
  return stepTarget(
1628
1644
  this.log.entries,
1629
1645
  direction,
1630
- (entry) => mine(entry.who) || everyone && !ofOpenTurn(entry)
1646
+ (entry) => entry.files.length > 0 && (mine(entry.who) || everyone && !ofOpenTurn(entry))
1631
1647
  );
1632
1648
  }
1633
1649
  /** A pending group as the entry it becomes once committed (a window's part gets a fresh id). */
@@ -2991,9 +3007,10 @@ function findAllTweenCalls(ast, ref, scope, targetBindings) {
2991
3007
  return results;
2992
3008
  }
2993
3009
  var PERCENTAGE_KEY_RE = /^(\d+(?:\.\d+)?)%$/;
2994
- function tryResolveStringProp(propValue, scope) {
3010
+ function tryResolveStringProp(propValue, scope, source) {
2995
3011
  const val = resolveNode(propValue, scope);
2996
- return typeof val === "string" ? val : void 0;
3012
+ if (typeof val === "string") return val;
3013
+ return source === void 0 ? void 0 : `__raw:${source.slice(propValue.start, propValue.end)}`;
2997
3014
  }
2998
3015
  function parsePercentageKeyframes(node, scope, source) {
2999
3016
  const keyframes = [];
@@ -3020,9 +3037,9 @@ function parsePercentageKeyframes(node, scope, source) {
3020
3037
  }
3021
3038
  keyframes.push({ percentage, properties, ...kfEase ? { ease: kfEase } : {} });
3022
3039
  } else if (key === "ease") {
3023
- ease = tryResolveStringProp(prop.value, scope) ?? ease;
3040
+ ease = tryResolveStringProp(prop.value, scope, source) ?? ease;
3024
3041
  } else if (key === "easeEach") {
3025
- easeEach = tryResolveStringProp(prop.value, scope) ?? easeEach;
3042
+ easeEach = tryResolveStringProp(prop.value, scope, source) ?? easeEach;
3026
3043
  }
3027
3044
  }
3028
3045
  keyframes.sort((a, b) => a.percentage - b.percentage);
@@ -3342,7 +3359,7 @@ function applyTimelineDefaults(anims, defaults) {
3342
3359
  if (defaults.duration !== void 0) anim.duration = defaults.duration;
3343
3360
  else if (defaults.durationUnresolved) anim.durationUnresolved = true;
3344
3361
  }
3345
- if (anim.ease === void 0 && defaults.ease !== void 0) {
3362
+ if (anim.ease === void 0 && defaults.ease !== void 0 && !anim.keyframes) {
3346
3363
  anim.ease = defaults.ease;
3347
3364
  }
3348
3365
  }
@@ -3935,7 +3952,7 @@ function preservedVarsEntries(varsNode, source) {
3935
3952
  function buildConvertedVarsCode(animation, varsNode, source) {
3936
3953
  const { fromProps, toProps } = conversionEndpoints(animation);
3937
3954
  const easeEach = animation.ease;
3938
- const easeEachEntry = easeEach ? `, easeEach: ${JSON.stringify(easeEach)}` : "";
3955
+ const easeEachEntry = easeEach ? `, easeEach: ${valueToCode(easeEach)}` : "";
3939
3956
  const kfCode = `{ "0%": ${recordToCode(fromProps)}, "100%": ${recordToCode(toProps)}${easeEachEntry} }`;
3940
3957
  const entries = [`keyframes: ${kfCode}`, ...preservedVarsEntries(varsNode, source)];
3941
3958
  if (easeEach) entries.push(`ease: "none"`);
@@ -4397,7 +4414,7 @@ function buildCollapsedFlatVars(animation, collapse) {
4397
4414
  function buildKeyframesVarsCode(animation, fromProps, toProps, varsNode, source, setDuration) {
4398
4415
  const fromEntries = Object.entries(fromProps).map(([k, v]) => `${safeKey(k)}: ${valueToCode(v)}`);
4399
4416
  const toEntries = Object.entries(toProps).map(([k, v]) => `${safeKey(k)}: ${valueToCode(v)}`);
4400
- const easeEntry = animation.ease ? `, easeEach: ${JSON.stringify(animation.ease)}` : "";
4417
+ const easeEntry = animation.ease ? `, easeEach: ${valueToCode(animation.ease)}` : "";
4401
4418
  const kfCode = `{ "0%": { ${fromEntries.join(", ")} }, "100%": { ${toEntries.join(", ")} }${easeEntry} }`;
4402
4419
  let preserved = preservedVarsEntries(varsNode, source);
4403
4420
  if (setDuration !== void 0) {
@@ -4451,11 +4468,11 @@ function convertToKeyframesFromScript(script, animationId, resolvedFromValues, s
4451
4468
  function buildKeyframeObjectCode(keyframes, easeEach) {
4452
4469
  const entries = mergePercentageKeyframes(keyframes).map((kf) => {
4453
4470
  const props = Object.entries(kf.properties).map(([k, v]) => `${safeKey(k)}: ${valueToCode(v)}`);
4454
- if (kf.ease) props.push(`ease: ${JSON.stringify(kf.ease)}`);
4471
+ if (kf.ease) props.push(`ease: ${valueToCode(kf.ease)}`);
4455
4472
  if (kf.auto) props.push(`_auto: 1`);
4456
4473
  return `${JSON.stringify(`${kf.percentage}%`)}: { ${props.join(", ")} }`;
4457
4474
  });
4458
- if (easeEach) entries.push(`easeEach: ${JSON.stringify(easeEach)}`);
4475
+ if (easeEach) entries.push(`easeEach: ${valueToCode(easeEach)}`);
4459
4476
  return `{ ${entries.join(", ")} }`;
4460
4477
  }
4461
4478
  function materializeKeyframesFromScript(script, animationId, keyframes, easeEach, resolvedSelector) {
@@ -4508,7 +4525,7 @@ function replaceTweenWithKeyframesInScript(script, animationId, edit) {
4508
4525
  const sorted = [...edit.keyframes].sort((a, b) => a.percentage - b.percentage);
4509
4526
  const parts = [`keyframes: ${buildKeyframeObjectCode(sorted, edit.easeEach)}`, ...kept];
4510
4527
  parts.push(`duration: ${valueToCode(edit.duration)}`);
4511
- if (edit.ease) parts.push(`ease: ${JSON.stringify(edit.ease)}`);
4528
+ if (edit.ease) parts.push(`ease: ${valueToCode(edit.ease)}`);
4512
4529
  if (animation.hasUnresolvedSelector || animation.targetSelector !== edit.targetSelector) {
4513
4530
  const selectorArg = call.node.arguments[0];
4514
4531
  ms.overwrite(selectorArg.start, selectorArg.end, JSON.stringify(edit.targetSelector));
@@ -4526,7 +4543,7 @@ function addAnimationWithKeyframesToScript(script, targetSelector, position, dur
4526
4543
  const sorted = [...keyframes].sort((a, b) => a.percentage - b.percentage);
4527
4544
  const kfObjCode = buildKeyframeObjectCode(sorted, easeEach);
4528
4545
  const varParts = [`keyframes: ${kfObjCode}`, `duration: ${valueToCode(duration)}`];
4529
- if (ease) varParts.push(`ease: ${JSON.stringify(ease)}`);
4546
+ if (ease) varParts.push(`ease: ${valueToCode(ease)}`);
4530
4547
  const stmtCode = `${parsed.timelineVar}.to(${JSON.stringify(targetSelector)}, { ${varParts.join(", ")} }, ${valueToCode(position)});`;
4531
4548
  const ms = new MagicString(script);
4532
4549
  ms.appendLeft(insertionPoint, "\n" + stmtCode);
@@ -5084,7 +5101,7 @@ function buildUnrollReplacement(timelineVar, animation, elements) {
5084
5101
  const calls = elements.map((el) => {
5085
5102
  const sorted = [...el.keyframes].sort((a, b) => a.percentage - b.percentage);
5086
5103
  const kfCode = buildKeyframeObjectCode(sorted, el.easeEach);
5087
- return `${timelineVar}.to(${JSON.stringify(el.selector)}, { keyframes: ${kfCode}, duration: ${duration}, ease: ${JSON.stringify(ease)} }, ${posCode});`;
5104
+ return `${timelineVar}.to(${JSON.stringify(el.selector)}, { keyframes: ${kfCode}, duration: ${duration}, ease: ${valueToCode(ease)} }, ${posCode});`;
5088
5105
  });
5089
5106
  return calls.join("\n ");
5090
5107
  }
@@ -5095,7 +5112,7 @@ function buildUnrollCallForElement(timelineVar, animation, el) {
5095
5112
  const posCode = typeof pos === "number" ? String(pos) : JSON.stringify(pos);
5096
5113
  const sorted = [...el.keyframes].sort((a, b) => a.percentage - b.percentage);
5097
5114
  const kfCode = buildKeyframeObjectCode(sorted, el.easeEach);
5098
- return `${timelineVar}.to(${JSON.stringify(el.selector)}, { keyframes: ${kfCode}, duration: ${duration}, ease: ${JSON.stringify(ease)} }, ${posCode});`;
5115
+ return `${timelineVar}.to(${JSON.stringify(el.selector)}, { keyframes: ${kfCode}, duration: ${duration}, ease: ${valueToCode(ease)} }, ${posCode});`;
5099
5116
  }
5100
5117
  var REFUSE_UNROLL = /* @__PURE__ */ Symbol("refuse-unroll");
5101
5118
  function loopBodyRawStatements(loopNode) {
@@ -6584,7 +6601,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
6584
6601
  let block = extractGsapScriptBlock(html);
6585
6602
  if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
6586
6603
  const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
6587
- const { GSAP_CDN } = await import("./dist-JGUAVYZS.js");
6604
+ const { GSAP_CDN } = await import("./dist-AMQZTIJP.js");
6588
6605
  const bootstrap = [
6589
6606
  `<script src="${GSAP_CDN}"></script>`,
6590
6607
  "<script>",
@@ -8420,6 +8437,11 @@ function buildSubCompositionHtml(projectDir, compPath, runtimeUrl, baseHref, raw
8420
8437
  rewrittenContent = contentDoc.body.innerHTML || rawComp;
8421
8438
  }
8422
8439
  rewrittenContent = stripEmbeddedRuntimeScripts(rewrittenContent);
8440
+ const { document: scriptsDoc } = parseHTML(
8441
+ `<!DOCTYPE html><html><head></head><body>${rewrittenContent}</body></html>`
8442
+ );
8443
+ deferScriptsUntilFonts(scriptsDoc);
8444
+ rewrittenContent = scriptsDoc.body.innerHTML;
8423
8445
  rewrittenContent = tagRootCompositionFile(rewrittenContent, compPath);
8424
8446
  const indexPath = join62(projectDir, "index.html");
8425
8447
  let headContent = "";
@@ -8630,7 +8652,8 @@ function injectMotionPathPluginIfNeeded(html) {
8630
8652
  const match = html.match(gsapScript);
8631
8653
  if (match) {
8632
8654
  const version = match[0].match(/gsap@([\d.]+)/)?.[1];
8633
- const pluginTag = `<script src="${motionPathPluginUrl(version)}"></script>`;
8655
+ const gsapTagType = match[0].match(/\stype=("[^"]*"|'[^']*')/i)?.[0] ?? "";
8656
+ const pluginTag = `<script${gsapTagType} src="${motionPathPluginUrl(version)}"></script>`;
8634
8657
  const end = html.indexOf(match[0]) + match[0].length;
8635
8658
  return html.slice(0, end) + "\n" + pluginTag + html.slice(end);
8636
8659
  }
@@ -8652,12 +8675,9 @@ function injectStudioMotionScript(html, projectDir, activeCompositionPath) {
8652
8675
  activeCompositionPath
8653
8676
  });
8654
8677
  if (!script) return html;
8655
- return injectScriptsIntoHtml(
8656
- injectStudioMotionDependencies(html, manifestContent),
8657
- [],
8658
- [script],
8659
- false
8660
- );
8678
+ const withDependencies = injectStudioMotionDependencies(html, manifestContent);
8679
+ const tag = `<script type="${AFTER_FONTS_SCRIPT_TYPE}">${script.replace(/<\/script/gi, "<\\/script")}</script>`;
8680
+ return insertBeforeCloseTag(withDependencies, "body", tag) ?? `${withDependencies}${tag}`;
8661
8681
  }
8662
8682
  var GSAP_FALLBACK_ATTR = "data-hf-gsap-fallback";
8663
8683
  var GSAP_CDN_FALLBACK_SCRIPT = `<script ${GSAP_FALLBACK_ATTR}>
@@ -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-7VXU7E5S.js";
9
+ } from "./chunk-CZRQH5SP.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";
@@ -15,7 +15,28 @@ import {
15
15
  } from "./chunk-PBN6GBJE.js";
16
16
  import {
17
17
  parseFps
18
- } from "./chunk-RCNDZEBU.js";
18
+ } from "./chunk-TLA5RBEB.js";
19
+
20
+ // src/browser/windowsCrash.ts
21
+ var STATUS_STACK_BUFFER_OVERRUN_DEC = "3221225595";
22
+ var STATUS_STACK_BUFFER_OVERRUN_HEX = /0x[cC]0000409/;
23
+ var STATUS_STACK_BUFFER_OVERRUN_NAME = /STATUS_STACK_BUFFER_OVERRUN/i;
24
+ function isWindowsChromeCrashError(errorMessage) {
25
+ if (!/Failed to launch the browser process/i.test(errorMessage)) return false;
26
+ return errorMessage.includes(STATUS_STACK_BUFFER_OVERRUN_DEC) || STATUS_STACK_BUFFER_OVERRUN_HEX.test(errorMessage) || STATUS_STACK_BUFFER_OVERRUN_NAME.test(errorMessage);
27
+ }
28
+ function windowsChromeCrashRemediation(errorMessage) {
29
+ if (process.platform !== "win32") return void 0;
30
+ if (!isWindowsChromeCrashError(errorMessage)) return void 0;
31
+ return [
32
+ "chrome-headless-shell crashed at launch (Windows STATUS_STACK_BUFFER_OVERRUN, exit 0xC0000409 / 3221225595).",
33
+ "The pinned Chromium build is not stable on this Windows host; point hyperframes at your installed Chrome instead:",
34
+ "",
35
+ ' set HYPERFRAMES_BROWSER_PATH="C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"',
36
+ "",
37
+ "Then re-run your command. Any Chrome build works for the screenshot capture path; install a real chrome-headless-shell later if you need the perf-optimized BeginFrame path."
38
+ ].join("\n");
39
+ }
19
40
 
20
41
  // src/utils/renderArgs.ts
21
42
  import { readFileSync } from "fs";
@@ -180,6 +201,7 @@ function parseHlsSegmentSecondsArg(raw) {
180
201
  }
181
202
 
182
203
  export {
204
+ windowsChromeCrashRemediation,
183
205
  resolveBrowserTimeoutMsArg,
184
206
  resolveDiagnosticNavigationTimeoutMs,
185
207
  hasExplicitCompositionArg,