hyperframes 0.8.193 → 0.8.194

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 (187) hide show
  1. package/dist/{add-JC6DKZKC.js → add-47UAIWY4.js} +12 -12
  2. package/dist/{animatedGifPrep-S6KXJGEL.js → animatedGifPrep-TFSQZWK6.js} +8 -7
  3. package/dist/api.js +18 -17
  4. package/dist/{asset-XITFIFE6.js → asset-AU7PZHXA.js} +2 -2
  5. package/dist/{assetCataloger-K5FNKG35.js → assetCataloger-HC5N6WPT.js} +8 -7
  6. package/dist/{audio-364UHTY4.js → audio-7AWMZWBM.js} +14 -13
  7. package/dist/{auth-5JEESRE6.js → auth-GXH3QNDJ.js} +1 -1
  8. package/dist/{autoUpdate-RVVYEHAA.js → autoUpdate-GVGP5O2I.js} +2 -2
  9. package/dist/{backgroundChecks-DCBIYWIQ.js → backgroundChecks-IUJM2Q35.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-ZZ4QMBAA.js → batchRender-3XS2Y2Y4.js} +4 -4
  12. package/dist/{beats-YEL65M6G.js → beats-U64B4S7Z.js} +9 -9
  13. package/dist/{benchmark-RBTRPA76.js → benchmark-2YUPAI76.js} +9 -9
  14. package/dist/{browser-BVAYXT4R.js → browser-DBFH7KXM.js} +5 -5
  15. package/dist/{bundleWithLocalizedFonts-JLB2OYMT.js → bundleWithLocalizedFonts-XWL7KSQJ.js} +2 -2
  16. package/dist/{capture-NIFX6IRS.js → capture-E4VW75NM.js} +2 -2
  17. package/dist/{capture-GBXTMYLZ.js → capture-YWH7BPBI.js} +13 -12
  18. package/dist/{captureCompositionFrame-ATNNKUL5.js → captureCompositionFrame-IG6S2OHG.js} +13 -12
  19. package/dist/{catalog-AGIF5SM5.js → catalog-LZIZLZ34.js} +12 -12
  20. package/dist/{catch-up-SZ3ULDTI.js → catch-up-ZVNPIACY.js} +4 -4
  21. package/dist/{check-YLQS3TF4.js → check-EKEOD4UM.js} +38 -37
  22. package/dist/{checkBrowser-QH4FMCBO.js → checkBrowser-MYH6HPHH.js} +33 -32
  23. package/dist/{chunk-ZT45TCY3.js → chunk-2AJU7PZ6.js} +1 -1
  24. package/dist/chunk-2D5WP2NI.js +3901 -0
  25. package/dist/{chunk-FBVUAH7N.js → chunk-2OYYNKJ4.js} +1 -1
  26. package/dist/{chunk-DSQ72G5I.js → chunk-37IHQVNQ.js} +1 -1
  27. package/dist/{chunk-AR3DQYRR.js → chunk-3OSBSUN3.js} +18 -18
  28. package/dist/{chunk-2SFDWMSW.js → chunk-3S3CXF4W.js} +2 -2
  29. package/dist/{chunk-TY3LDJA3.js → chunk-452UK7E7.js} +2 -2
  30. package/dist/{chunk-OFYW4J7Y.js → chunk-4FVNEXSV.js} +3 -3
  31. package/dist/{chunk-CGTZOY53.js → chunk-4GMDL4N5.js} +1 -1
  32. package/dist/{chunk-4PPWAQYV.js → chunk-4PIPQPCW.js} +7 -7
  33. package/dist/{chunk-BP4EMEGH.js → chunk-4VSV56F2.js} +2 -2
  34. package/dist/{chunk-L4JB7LI4.js → chunk-52YJKWV3.js} +67 -60
  35. package/dist/{chunk-ZZPBXRYQ.js → chunk-54PZ2EQZ.js} +1 -1
  36. package/dist/{chunk-6XUJVEY2.js → chunk-B3GG3HJB.js} +1 -1
  37. package/dist/{chunk-2MCXIY4B.js → chunk-B7RJV74O.js} +28 -11
  38. package/dist/{chunk-MFUNDJEV.js → chunk-BK5YCT54.js} +3 -3
  39. package/dist/{chunk-RWGASWT7.js → chunk-BL4U6U52.js} +1 -0
  40. package/dist/{chunk-QKX7ITER.js → chunk-BYADARIC.js} +2 -2
  41. package/dist/{chunk-WIVOXGEP.js → chunk-CEUBYYVJ.js} +2 -2
  42. package/dist/{chunk-UIC7B5KW.js → chunk-CEZH4AQT.js} +12 -2
  43. package/dist/{chunk-BY6OQ6XP.js → chunk-CZNSLFYD.js} +3 -1
  44. package/dist/{chunk-E77ALFLW.js → chunk-DT3JESJ6.js} +1 -1
  45. package/dist/{chunk-ZTKFRXJB.js → chunk-DVQDBWQG.js} +4 -4
  46. package/dist/{chunk-L5YLA54L.js → chunk-EB3XXHNO.js} +2 -2
  47. package/dist/{chunk-LFUVTS6V.js → chunk-EY7GKVPS.js} +2 -2
  48. package/dist/{chunk-KU3UFQN7.js → chunk-F2ASNL2K.js} +1 -1
  49. package/dist/{chunk-ZH7J2ZUL.js → chunk-F3B7CE3Q.js} +14 -14
  50. package/dist/{chunk-E3P3LJG6.js → chunk-FLREUEHW.js} +28 -11
  51. package/dist/{chunk-VW63MHQU.js → chunk-FUA22HO4.js} +1 -1
  52. package/dist/{chunk-3W4B6G7Y.js → chunk-GAFEU6AB.js} +13 -10
  53. package/dist/{chunk-DIKAPMMF.js → chunk-GQVTTWZF.js} +144 -39
  54. package/dist/{chunk-2LSCYS2H.js → chunk-HCLBM2LQ.js} +2 -2
  55. package/dist/{chunk-GR5DQKDR.js → chunk-HG5ECUOR.js} +5 -5
  56. package/dist/{chunk-2NERNYCJ.js → chunk-HPGQPRHY.js} +3 -3
  57. package/dist/{chunk-SOY2FPOR.js → chunk-HQD7ODQB.js} +5 -5
  58. package/dist/{chunk-XQPA4W3M.js → chunk-JU4T4VAA.js} +4 -4
  59. package/dist/{chunk-7HTH5PFK.js → chunk-JVTWX5G3.js} +33 -8
  60. package/dist/{chunk-UNATIAOT.js → chunk-JXTPNUSO.js} +83 -51
  61. package/dist/{chunk-2VXY3PEF.js → chunk-K2VXPQKC.js} +107 -94
  62. package/dist/chunk-K4MJX7SR.js +17 -0
  63. package/dist/{chunk-BJAS2JLW.js → chunk-KDEV5RIE.js} +7 -3
  64. package/dist/{chunk-WFS6S65A.js → chunk-LMIDZIW2.js} +12 -12
  65. package/dist/{chunk-5J6TWLFG.js → chunk-LOGKDQ3G.js} +3 -3
  66. package/dist/{chunk-IW5G323T.js → chunk-LTGTN2TH.js} +8 -9
  67. package/dist/{chunk-F5LLORBP.js → chunk-LZ4WPR3B.js} +2 -2
  68. package/dist/{chunk-7QNIXBQD.js → chunk-M2VXARYK.js} +3 -2
  69. package/dist/{chunk-7YSFE4SZ.js → chunk-MCFPMUMT.js} +2 -2
  70. package/dist/{chunk-YS4JUGNI.js → chunk-MGSNFWGR.js} +2 -2
  71. package/dist/{chunk-V7ZA2BNW.js → chunk-MO6RTNYD.js} +1 -1
  72. package/dist/{chunk-OFV3WSOE.js → chunk-N33FO44R.js} +1 -1
  73. package/dist/{chunk-GKHMSSGY.js → chunk-N3M3IU6S.js} +1 -1
  74. package/dist/{chunk-6LWUPIKD.js → chunk-NVVIFW3C.js} +10 -10
  75. package/dist/{chunk-4LXZJIVY.js → chunk-O2ILONGK.js} +10 -10
  76. package/dist/{chunk-C4Y3ZREE.js → chunk-OJNNKHAZ.js} +75 -22
  77. package/dist/{chunk-UB7BIDBS.js → chunk-PEHST4UY.js} +3 -3
  78. package/dist/{chunk-RTLPWOO6.js → chunk-POFJH2IS.js} +1 -1
  79. package/dist/{chunk-7YKJF5JV.js → chunk-PXK3ICU6.js} +1 -1
  80. package/dist/{chunk-M3KZBDPB.js → chunk-Q4HKC3O7.js} +3 -3
  81. package/dist/{chunk-X5CECNCK.js → chunk-QJQTWTM7.js} +8 -3
  82. package/dist/{chunk-QFPBRZJD.js → chunk-ROEW726S.js} +1 -1
  83. package/dist/{chunk-D625D4TV.js → chunk-RUPGFW5B.js} +6 -6
  84. package/dist/{chunk-EFXMETRK.js → chunk-RZWJJCI7.js} +2 -2
  85. package/dist/{chunk-TZEKVLPV.js → chunk-SNECH6QA.js} +1 -1
  86. package/dist/{chunk-REUL2KH2.js → chunk-ST35C4K6.js} +1 -1
  87. package/dist/{chunk-LMNZLZMJ.js → chunk-ST4SHO3S.js} +1 -1
  88. package/dist/{chunk-6DLCOQR4.js → chunk-TDYKVJTU.js} +119 -34
  89. package/dist/{chunk-4TKJWWPL.js → chunk-VHIBBDEI.js} +1 -1
  90. package/dist/{chunk-VPC4XIVI.js → chunk-VPON6DF2.js} +5 -5
  91. package/dist/{chunk-DYNHVCBF.js → chunk-XYGULBFV.js} +2 -2
  92. package/dist/{chunk-VLLFORE2.js → chunk-Y3BT27Y7.js} +1 -1
  93. package/dist/{clean-5HGESK5A.js → clean-NS2SDRK7.js} +21 -20
  94. package/dist/cli.js +53 -53
  95. package/dist/{cloud-746PHS32.js → cloud-K4XQPWTY.js} +4 -4
  96. package/dist/{cloudrun-DO7WFLSM.js → cloudrun-BKOKXTXV.js} +6 -6
  97. package/dist/{compare-66YPRNG2.js → compare-ZAV773OL.js} +31 -30
  98. package/dist/{compiler-R4UYDWXO.js → compiler-CWHFCE3H.js} +5 -5
  99. package/dist/{component-EQ3H6RFP.js → component-OXA2ZWX3.js} +3 -3
  100. package/dist/{compositions-ZZ7P5HT2.js → compositions-NKRVWCPE.js} +12 -11
  101. package/dist/{contactSheet-SZBJDOMT.js → contactSheet-5APX35L3.js} +1 -1
  102. package/dist/{delete-Z5MSLJSR.js → delete-HZ2LBCLC.js} +2 -2
  103. package/dist/{deploy-RGSAC2K5.js → deploy-FNDTZFF7.js} +1 -1
  104. package/dist/{deterministicFonts-RO2TCMLZ.js → deterministicFonts-RADD3BSX.js} +2 -2
  105. package/dist/{dist-RKK4YLAD.js → dist-2YTN2UGY.js} +3 -3
  106. package/dist/{dist-QQ26RUDV.js → dist-7OCZHNLY.js} +1 -1
  107. package/dist/{doctor-W4ZZDRTU.js → doctor-6QWJGO5P.js} +14 -13
  108. package/dist/{events-UACT7PX3.js → events-HTHOBIUN.js} +3 -3
  109. package/dist/{events-BSSL4A4W.js → events-MBKHVGXX.js} +2 -2
  110. package/dist/{feedback-47ILDLQG.js → feedback-X5QWTLEX.js} +8 -8
  111. package/dist/{ffmpeg-IEHSUNUT.js → ffmpeg-7GESJCCT.js} +9 -8
  112. package/dist/{figma-PLFIIYRU.js → figma-SXOHFVJI.js} +3 -3
  113. package/dist/fontLocalizeCli.js +11 -10
  114. package/dist/{get-PDWGJYNL.js → get-T2HI5FCK.js} +2 -2
  115. package/dist/{gpuPolicy-6UBXO6ME.js → gpuPolicy-5FABKW5G.js} +8 -7
  116. package/dist/{grade-compare-5VWLQGM7.js → grade-compare-JATGHA6Q.js} +37 -35
  117. package/dist/{gsapParser-UP3PNPC2.js → gsapParser-IEUSLYDJ.js} +11 -11
  118. package/dist/{gsapParserAcorn-OOTY2MVN.js → gsapParserAcorn-LZJKCFQI.js} +1 -1
  119. package/dist/{help-DS3KMWYO.js → help-G6CIKCGS.js} +1 -1
  120. package/dist/{history-OC326NVZ.js → history-CSJUHYTD.js} +7 -7
  121. package/dist/hyperframe.manifest.json +1 -1
  122. package/dist/hyperframe.runtime.iife.js +69 -63
  123. package/dist/hyperframes-player.global.js +3 -3
  124. package/dist/hyperframes-slideshow.global.js +1 -1
  125. package/dist/{info-AUIFV6MX.js → info-MTTUMW2C.js} +8 -8
  126. package/dist/{init-MRTWWDFW.js → init-LJYNI5EK.js} +30 -29
  127. package/dist/{inspect-55NOAXI2.js → inspect-HGDM2VJE.js} +31 -30
  128. package/dist/{installer-YSFFGBBV.js → installer-3XHURUDG.js} +5 -5
  129. package/dist/{keyframes-OO2BX2IB.js → keyframes-MSU7N53X.js} +59 -33
  130. package/dist/{lambda-CXXY6QT3.js → lambda-2I2TIUSD.js} +8 -8
  131. package/dist/{layout-57GJXKDK.js → layout-KWOXZMN7.js} +31 -30
  132. package/dist/{lint-J4FK3Z6G.js → lint-N53TLHFG.js} +7 -7
  133. package/dist/{lintProject-52SLJPRC.js → lintProject-EOUZA4EG.js} +1 -1
  134. package/dist/{list-VDQUJ76B.js → list-SHYPQC7U.js} +2 -2
  135. package/dist/{login-TJSEALWW.js → login-TEB6PA3Y.js} +4 -4
  136. package/dist/{manager-MZIJY73J.js → manager-COSJVRAE.js} +2 -2
  137. package/dist/{manager-4PLYEEWP.js → manager-PLRSZH5G.js} +10 -9
  138. package/dist/{media-treatment-GXP4PMJH.js → media-treatment-XTUKMIGE.js} +15 -14
  139. package/dist/{models-HQQQKEEP.js → models-4WKAPP2L.js} +14 -13
  140. package/dist/{motionShot-2BT5D7DC.js → motionShot-PTKB4ILH.js} +17 -16
  141. package/dist/{normalize-audio-SOLFMHNP.js → normalize-audio-3NG326I2.js} +6 -6
  142. package/dist/{open-KHEUODFQ.js → open-6S2LMF7R.js} +12 -12
  143. package/dist/{parakeetRunner-BHU5NCAX.js → parakeetRunner-OEI35DVO.js} +15 -14
  144. package/dist/{pipeline-WFV5HDTD.js → pipeline-543FUKH4.js} +10 -9
  145. package/dist/{play-GB34CANJ.js → play-ETEGHP3B.js} +21 -21
  146. package/dist/{preflight-REF3VSJ7.js → preflight-Y5IYUF2T.js} +11 -10
  147. package/dist/{present-SIUTA7TD.js → present-ZRSLMJ6J.js} +17 -17
  148. package/dist/{preview-T2GE7Z4A.js → preview-CEJ3SVTY.js} +100 -65
  149. package/dist/{producer-23KVQZAB.js → producer-JFVFIV26.js} +1 -1
  150. package/dist/{projectConfig-DBSNBPNP.js → projectConfig-7EK3BS72.js} +7 -7
  151. package/dist/{publication-IXPUKYWJ.js → publication-Y54GYFMV.js} +3 -3
  152. package/dist/{publish-3BA5VHXJ.js → publish-S3UJTPCV.js} +10 -10
  153. package/dist/{remove-background-RMSCJVVQ.js → remove-background-YTATNQSI.js} +11 -10
  154. package/dist/{render-XGOZMMWX.js → render-IIPXMSBO.js} +35 -34
  155. package/dist/{render-6RNE2MLU.js → render-RN3W6YL4.js} +17 -16
  156. package/dist/{render-Y6CTQ3YW.js → render-WNIG4B3J.js} +6 -6
  157. package/dist/{render-batch-VUR6N6EY.js → render-batch-OYS3UQDB.js} +6 -6
  158. package/dist/renderSetupWorker.js +42 -4
  159. package/dist/{resolver-GJCUH57W.js → resolver-OVCXVEDX.js} +5 -5
  160. package/dist/{sherpa-VVAKRCPL.js → sherpa-NCSFD7S3.js} +14 -13
  161. package/dist/skills/media-use/scripts/lib/duck.mjs +18 -2
  162. package/dist/skills/media-use/scripts/lib/duck.test.mjs +79 -0
  163. package/dist/{skills-ZHBURVQG.js → skills-IUV3K3X7.js} +5 -5
  164. package/dist/{skillsUpdateCheck-VMDAL2O2.js → skillsUpdateCheck-NACBXMWW.js} +3 -3
  165. package/dist/{snapshot-KEOG56SL.js → snapshot-7S5USJ2I.js} +39 -38
  166. package/dist/{src-TZLGFRRX.js → src-CAR6PHI4.js} +10 -9
  167. package/dist/{src-BH5NICGQ.js → src-HITT6NWG.js} +9 -6
  168. package/dist/{staticProjectServer-BKXL5CXB.js → staticProjectServer-QR6VZBPT.js} +18 -18
  169. package/dist/studio/assets/{hyperframes-player-BMcUdmDb.js → hyperframes-player-DLOUZUct.js} +1 -1
  170. package/dist/studio/assets/{index-Ca-mgTnS.js → index-CAQ7OcNJ.js} +163 -163
  171. package/dist/studio/assets/{index-Ci6GuloR.js → index-D9kA6JUX.js} +1 -1
  172. package/dist/studio/index.html +1 -1
  173. package/dist/{studio-api-A5U6QAMC.js → studio-api-HVNOJILH.js} +11 -11
  174. package/dist/{studioServer-5EC5CP4W.js → studioServer-3BG5FRJL.js} +53 -52
  175. package/dist/{telemetry-BCKJXDSW.js → telemetry-PET2GFQG.js} +3 -3
  176. package/dist/{timeline-AZWAXTAY.js → timeline-PVIC2Z5K.js} +20 -19
  177. package/dist/{tokens-X7NC3V7C.js → tokens-4N46PWSF.js} +2 -2
  178. package/dist/{transcribe-SH26H755.js → transcribe-2DVBS7MH.js} +19 -18
  179. package/dist/{transcribe-7NCY7QZ2.js → transcribe-IDC7JTM4.js} +13 -12
  180. package/dist/{updateCheck-Y7FUWQM4.js → updateCheck-QRDVXU7I.js} +2 -2
  181. package/dist/{upgrade-ZHGEVL65.js → upgrade-5CNE3TBH.js} +2 -2
  182. package/dist/{urlDownloader-FPILIT7M.js → urlDownloader-P2I25DFC.js} +7 -6
  183. package/dist/{validate-KQOZR4F6.js → validate-CLR5PEOV.js} +25 -24
  184. package/dist/{video-N2QAETFB.js → video-3CKZZBOB.js} +8 -7
  185. package/dist/warmCheck.js +38 -37
  186. package/package.json +1 -1
  187. package/dist/chunk-USWPZXEA.js +0 -3897
@@ -26,7 +26,7 @@ import {
26
26
  renderFrameIdForRenderId,
27
27
  resolveAuthoredTimingWindow,
28
28
  toFps
29
- } from "./chunk-7HTH5PFK.js";
29
+ } from "./chunk-JVTWX5G3.js";
30
30
  import {
31
31
  AUDIO_GROUP_RENDER_ID_ATTR,
32
32
  COLOR_GRADING_SOURCE_HIDDEN_ATTR,
@@ -63,7 +63,7 @@ import {
63
63
  sourceTimeAt,
64
64
  timeAtSourceTime,
65
65
  volumeSegmentSampleCount
66
- } from "./chunk-USWPZXEA.js";
66
+ } from "./chunk-2D5WP2NI.js";
67
67
  import {
68
68
  clampAudioGain,
69
69
  clipGain,
@@ -73,6 +73,9 @@ import {
73
73
  redactTelemetryString,
74
74
  redactUrlQueryStrings
75
75
  } from "./chunk-634HSJ3J.js";
76
+ import {
77
+ withHyperframesBrowserMarker
78
+ } from "./chunk-K4MJX7SR.js";
76
79
  import {
77
80
  browserPathFromEnv,
78
81
  chromeMajorCeiling,
@@ -83,7 +86,7 @@ import {
83
86
  } from "./chunk-4UMPIPCQ.js";
84
87
  import {
85
88
  resolveReferencedStart
86
- } from "./chunk-2VXY3PEF.js";
89
+ } from "./chunk-K2VXPQKC.js";
87
90
  import {
88
91
  FFMPEG_PATH_ENV,
89
92
  FFPROBE_PATH_ENV,
@@ -765,7 +768,7 @@ var BrowserLeasePool = class _BrowserLeasePool {
765
768
  for (const entry of entries) this.requestClose(entry, false);
766
769
  const settle = Promise.all(entries.map((entry) => entry.closePromise));
767
770
  const bound = new Promise(
768
- (resolve) => setTimeout(resolve, _BrowserLeasePool.DRAIN_FORCE_CLOSE_MS).unref()
771
+ (resolve2) => setTimeout(resolve2, _BrowserLeasePool.DRAIN_FORCE_CLOSE_MS).unref()
769
772
  );
770
773
  this.drainPromise = Promise.race([settle, bound]).then(() => {
771
774
  for (const entry of entries) if (this.entries.has(entry)) this.requestClose(entry, true);
@@ -864,11 +867,11 @@ var BrowserLeasePool = class _BrowserLeasePool {
864
867
  await Promise.race([
865
868
  this.options.close(result.browser).catch(() => {
866
869
  }),
867
- new Promise((resolve) => {
870
+ new Promise((resolve2) => {
868
871
  entry.forceClose = () => {
869
872
  entry.forceClose = void 0;
870
873
  this.options.forceClose(result.browser);
871
- resolve();
874
+ resolve2();
872
875
  };
873
876
  })
874
877
  ]);
@@ -918,7 +921,7 @@ async function probeHardwareWebGlInfo(ppt, options) {
918
921
  const launchOptions = {
919
922
  ...sigintLaunchOptions(),
920
923
  headless: true,
921
- args: options.args,
924
+ args: withHyperframesBrowserMarker(options.args),
922
925
  defaultViewport: { width: 64, height: 64 },
923
926
  executablePath: options.executablePath,
924
927
  env: options.env,
@@ -1366,7 +1369,7 @@ async function launchBrowser(fingerprint) {
1366
1369
  browser = await ppt.launch({
1367
1370
  ...sigintLaunchOptions(),
1368
1371
  headless: true,
1369
- args: [...fingerprint.args],
1372
+ args: withHyperframesBrowserMarker(fingerprint.args),
1370
1373
  defaultViewport: null,
1371
1374
  executablePath: fingerprint.executablePath,
1372
1375
  env,
@@ -1396,7 +1399,7 @@ async function launchBrowser(fingerprint) {
1396
1399
  browser = await ppt.launch({
1397
1400
  ...sigintLaunchOptions(),
1398
1401
  headless: true,
1399
- args: stripBeginFrameFlags([...fingerprint.args]),
1402
+ args: withHyperframesBrowserMarker(stripBeginFrameFlags([...fingerprint.args])),
1400
1403
  defaultViewport: null,
1401
1404
  executablePath: fingerprint.executablePath,
1402
1405
  env,
@@ -1584,7 +1587,7 @@ async function assertWebGpuAdapterAvailable(page, requiresWebGpu, softwareWebGpu
1584
1587
  try {
1585
1588
  const adapter = await Promise.race([
1586
1589
  navigator.gpu.requestAdapter(),
1587
- new Promise((resolve) => setTimeout(() => resolve(null), timeoutMs))
1590
+ new Promise((resolve2) => setTimeout(() => resolve2(null), timeoutMs))
1588
1591
  ]);
1589
1592
  return !!adapter && (acceptFallback || !adapter.info.isFallbackAdapter);
1590
1593
  } catch {
@@ -2587,8 +2590,8 @@ async function describePageMotionBlur(page) {
2587
2590
  }
2588
2591
  async function describePageMotionBlurAtEnd(page, timeoutMs = 1500) {
2589
2592
  let timer;
2590
- const stuck = new Promise((resolve) => {
2591
- timer = setTimeout(() => resolve(null), timeoutMs);
2593
+ const stuck = new Promise((resolve2) => {
2594
+ timer = setTimeout(() => resolve2(null), timeoutMs);
2592
2595
  });
2593
2596
  try {
2594
2597
  const r = await Promise.race([readPageMotionBlur(page), stuck]);
@@ -2707,8 +2710,8 @@ async function probeBeginFrameLiveness(page, timeoutMs, frameTimeTicks, interval
2707
2710
  try {
2708
2711
  return await Promise.race([
2709
2712
  client.send("HeadlessExperimental.beginFrame", params).then(() => true).catch(() => false),
2710
- new Promise((resolve) => {
2711
- timer = setTimeout(() => resolve(false), timeoutMs);
2713
+ new Promise((resolve2) => {
2714
+ timer = setTimeout(() => resolve2(false), timeoutMs);
2712
2715
  })
2713
2716
  ]);
2714
2717
  } finally {
@@ -3507,7 +3510,7 @@ async function produceDrawElementFrame(page, width, height, quality = 80, syncTo
3507
3510
  );
3508
3511
  }
3509
3512
  const frameId = ++state.nextId;
3510
- const encodeResult = new Promise((resolve, reject) => {
3513
+ const encodeResult = new Promise((resolve2, reject) => {
3511
3514
  const timer = setTimeout(() => {
3512
3515
  if (state.pending.delete(frameId)) {
3513
3516
  reject(new Error(`drawElement worker encode timed out (frame ${frameId})`));
@@ -3516,7 +3519,7 @@ async function produceDrawElementFrame(page, width, height, quality = 80, syncTo
3516
3519
  state.pending.set(frameId, {
3517
3520
  resolve: (b) => {
3518
3521
  clearTimeout(timer);
3519
- resolve(b);
3522
+ resolve2(b);
3520
3523
  },
3521
3524
  reject: (e) => {
3522
3525
  clearTimeout(timer);
@@ -3672,7 +3675,7 @@ async function produceDrawElementFrameBatch(page, times, width, height, quality
3672
3675
  for (let i = 0; i < times.length; i++) {
3673
3676
  const frameId = ++state.nextId;
3674
3677
  fids.push(frameId);
3675
- const p = new Promise((resolve, reject) => {
3678
+ const p = new Promise((resolve2, reject) => {
3676
3679
  const timer = setTimeout(() => {
3677
3680
  if (state.pending.delete(frameId)) {
3678
3681
  reject(new Error(`drawElement worker encode timed out (frame ${frameId})`));
@@ -3681,7 +3684,7 @@ async function produceDrawElementFrameBatch(page, times, width, height, quality
3681
3684
  state.pending.set(frameId, {
3682
3685
  resolve: (b) => {
3683
3686
  clearTimeout(timer);
3684
- resolve(b);
3687
+ resolve2(b);
3685
3688
  },
3686
3689
  reject: (e) => {
3687
3690
  clearTimeout(timer);
@@ -3956,9 +3959,9 @@ async function initThreeDProjectionInPage() {
3956
3959
  const toDataUrl = async (url) => {
3957
3960
  const resp = await fetch(url);
3958
3961
  const blob = await resp.blob();
3959
- return new Promise((resolve, reject) => {
3962
+ return new Promise((resolve2, reject) => {
3960
3963
  const r = new FileReader();
3961
- r.onload = () => resolve(String(r.result));
3964
+ r.onload = () => resolve2(String(r.result));
3962
3965
  r.onerror = () => reject(new Error(`FileReader failed for ${url}`));
3963
3966
  r.readAsDataURL(blob);
3964
3967
  });
@@ -5150,7 +5153,7 @@ function formatHttpErrorDiagnostic(input) {
5150
5153
  return `[Browser:HTTP${input.status}] ${input.method} ${sanitizeDiagnosticUrl(input.url)} resource=${input.resourceType}${statusText}`;
5151
5154
  }
5152
5155
  var LOCKED_WARMUP_TICKS = 60;
5153
- var realSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
5156
+ var realSleep = (ms) => new Promise((resolve2) => setTimeout(resolve2, ms));
5154
5157
  function warmupFrameTimeTicks(state, intervalMs) {
5155
5158
  return state.ticks * intervalMs;
5156
5159
  }
@@ -5238,10 +5241,10 @@ async function waitForCloseWithTimeout(promise) {
5238
5241
  () => void 0,
5239
5242
  () => void 0
5240
5243
  ),
5241
- new Promise((resolve) => {
5244
+ new Promise((resolve2) => {
5242
5245
  timer = setTimeout(() => {
5243
5246
  timedOut = true;
5244
- resolve();
5247
+ resolve2();
5245
5248
  }, CAPTURE_SESSION_CLOSE_TIMEOUT_MS);
5246
5249
  })
5247
5250
  ]);
@@ -5730,7 +5733,7 @@ async function pollHfReady(page, timeoutMs, intervalMs = 100) {
5730
5733
  }
5731
5734
  }
5732
5735
  }
5733
- await new Promise((resolve) => setTimeout(resolve, intervalMs));
5736
+ await new Promise((resolve2) => setTimeout(resolve2, intervalMs));
5734
5737
  }
5735
5738
  const diag = await evaluateHfDiagnostic(page);
5736
5739
  if (diag.hasSeek && diag.duration === 0) {
@@ -5860,7 +5863,7 @@ async function pollSubCompositionTimelines(page, timeoutMs, {
5860
5863
  );
5861
5864
  break;
5862
5865
  }
5863
- await new Promise((resolve) => setTimeout(resolve, intervalMs));
5866
+ await new Promise((resolve2) => setTimeout(resolve2, intervalMs));
5864
5867
  }
5865
5868
  const pendingIds = ready && knownUnregisteredIds.length === 0 ? [] : await listUnregisteredTimelineIds(page);
5866
5869
  if (ready && pendingIds.length > 0 && (getScriptLoadFailures?.() ?? []).length > 0) {
@@ -5904,7 +5907,7 @@ async function pollVideosReady(page, skipIds, timeoutMs, intervalMs = 100) {
5904
5907
  const deadline = Date.now() + timeoutMs;
5905
5908
  while (Date.now() < deadline) {
5906
5909
  if (await check()) return true;
5907
- await new Promise((resolve) => setTimeout(resolve, intervalMs));
5910
+ await new Promise((resolve2) => setTimeout(resolve2, intervalMs));
5908
5911
  }
5909
5912
  return check();
5910
5913
  }
@@ -5927,7 +5930,7 @@ async function pollImagesReady(page, timeoutMs, intervalMs = 100) {
5927
5930
  const deadline = Date.now() + timeoutMs;
5928
5931
  while (Date.now() < deadline) {
5929
5932
  if (await check()) return true;
5930
- await new Promise((resolve) => setTimeout(resolve, intervalMs));
5933
+ await new Promise((resolve2) => setTimeout(resolve2, intervalMs));
5931
5934
  }
5932
5935
  return check();
5933
5936
  }
@@ -6108,7 +6111,7 @@ async function waitForOptionalTailwindReady(page, timeoutMs) {
6108
6111
  page.evaluate(
6109
6112
  `Promise.resolve(window.__tailwindReady).then(() => true, () => false)`
6110
6113
  ),
6111
- new Promise((resolve) => setTimeout(() => resolve(false), timeoutMs))
6114
+ new Promise((resolve2) => setTimeout(() => resolve2(false), timeoutMs))
6112
6115
  ]);
6113
6116
  if (!ready) {
6114
6117
  throw new Error(
@@ -7851,7 +7854,7 @@ import {
7851
7854
  writeFileSync as writeFileSync2,
7852
7855
  writeSync
7853
7856
  } from "fs";
7854
- import { join as join6, dirname as dirname2, extname } from "path";
7857
+ import { join as join6, dirname as dirname2, extname, resolve } from "path";
7855
7858
 
7856
7859
  // ../engine/src/utils/gpuEncoder.ts
7857
7860
  import { spawn } from "child_process";
@@ -7867,8 +7870,8 @@ var ManagedChildProcess = class {
7867
7870
  this.options = options;
7868
7871
  this.now = options.now ?? Date.now;
7869
7872
  this.startedAtMs = this.now();
7870
- this.outcomePromise = new Promise((resolve) => {
7871
- this.resolveOutcome = resolve;
7873
+ this.outcomePromise = new Promise((resolve2) => {
7874
+ this.resolveOutcome = resolve2;
7872
7875
  });
7873
7876
  child.stderr?.on("data", this.onStderr);
7874
7877
  child.once("spawn", this.onSpawn);
@@ -8685,13 +8688,13 @@ function readProbeJson(filePath, signal) {
8685
8688
  }
8686
8689
  var runtimeFfprobeMajor;
8687
8690
  function ffprobeMajor() {
8688
- runtimeFfprobeMajor ??= new Promise((resolve) => {
8691
+ runtimeFfprobeMajor ??= new Promise((resolve2) => {
8689
8692
  let out = "";
8690
8693
  const binary = getFfprobeBinary();
8691
8694
  const proc = spawn3(binary, ["-version"], { stdio: ["ignore", "pipe", "ignore"] });
8692
8695
  proc.stdout.on("data", (chunk) => out += String(chunk));
8693
- proc.on("error", () => resolve(void 0));
8694
- proc.on("close", () => resolve(Number(/version n?(\d+)/.exec(out)?.[1]) || void 0));
8696
+ proc.on("error", () => resolve2(void 0));
8697
+ proc.on("close", () => resolve2(Number(/version n?(\d+)/.exec(out)?.[1]) || void 0));
8695
8698
  });
8696
8699
  return runtimeFfprobeMajor;
8697
8700
  }
@@ -9692,7 +9695,7 @@ var concatListSeq = 0;
9692
9695
  function writeConcatList(dir, inputPaths) {
9693
9696
  concatListSeq += 1;
9694
9697
  const listPath = join6(dir, `concat-list-${process.pid}-${concatListSeq}.txt`);
9695
- const body = inputPaths.map((p) => `file '${p.replace(/'/g, "'\\''")}'`).join("\n");
9698
+ const body = inputPaths.map((p) => `file '${resolve(p).replace(/'/g, "'\\''")}'`).join("\n");
9696
9699
  writeFileSync2(listPath, body, "utf-8");
9697
9700
  return listPath;
9698
9701
  }
@@ -10053,12 +10056,12 @@ function createFrameReorderBuffer(startFrame, endFrame) {
10053
10056
  let cursor = startFrame;
10054
10057
  let aborted = null;
10055
10058
  const pending = /* @__PURE__ */ new Map();
10056
- const enqueueAt = (frame, resolve, reject) => {
10059
+ const enqueueAt = (frame, resolve2, reject) => {
10057
10060
  const list = pending.get(frame);
10058
10061
  if (list === void 0) {
10059
- pending.set(frame, [{ resolve, reject }]);
10062
+ pending.set(frame, [{ resolve: resolve2, reject }]);
10060
10063
  } else {
10061
- list.push({ resolve, reject });
10064
+ list.push({ resolve: resolve2, reject });
10062
10065
  }
10063
10066
  };
10064
10067
  const flushAt = (frame) => {
@@ -10067,31 +10070,31 @@ function createFrameReorderBuffer(startFrame, endFrame) {
10067
10070
  pending.delete(frame);
10068
10071
  for (const waiter of list) waiter.resolve();
10069
10072
  };
10070
- const waitForFrame = (frame) => new Promise((resolve, reject) => {
10073
+ const waitForFrame = (frame) => new Promise((resolve2, reject) => {
10071
10074
  if (aborted) {
10072
10075
  reject(aborted);
10073
10076
  return;
10074
10077
  }
10075
10078
  if (frame === cursor) {
10076
- resolve();
10079
+ resolve2();
10077
10080
  return;
10078
10081
  }
10079
- enqueueAt(frame, resolve, reject);
10082
+ enqueueAt(frame, resolve2, reject);
10080
10083
  });
10081
10084
  const advanceTo = (frame) => {
10082
10085
  cursor = frame;
10083
10086
  flushAt(frame);
10084
10087
  };
10085
- const waitForAllDone = () => new Promise((resolve, reject) => {
10088
+ const waitForAllDone = () => new Promise((resolve2, reject) => {
10086
10089
  if (aborted) {
10087
10090
  reject(aborted);
10088
10091
  return;
10089
10092
  }
10090
10093
  if (cursor >= endFrame) {
10091
- resolve();
10094
+ resolve2();
10092
10095
  return;
10093
10096
  }
10094
- enqueueAt(endFrame, resolve, reject);
10097
+ enqueueAt(endFrame, resolve2, reject);
10095
10098
  });
10096
10099
  const abort = (err) => {
10097
10100
  if (aborted) return;
@@ -10386,8 +10389,8 @@ async function spawnStreamingEncoder(outputPath, options, signal, config) {
10386
10389
  }
10387
10390
  const stdin = ffmpeg.stdin;
10388
10391
  if (stdin && !stdin.destroyed) {
10389
- await new Promise((resolve) => {
10390
- stdin.end(() => resolve());
10392
+ await new Promise((resolve2) => {
10393
+ stdin.end(() => resolve2());
10391
10394
  });
10392
10395
  }
10393
10396
  const outcome = await exitPromise;
@@ -10525,14 +10528,14 @@ import { cpus } from "os";
10525
10528
  function createConcurrencyLimit(limit) {
10526
10529
  let active = 0;
10527
10530
  const waiting = [];
10528
- const waitForSlot = (signal) => new Promise((resolve) => {
10531
+ const waitForSlot = (signal) => new Promise((resolve2) => {
10529
10532
  const granted = () => {
10530
10533
  signal?.removeEventListener("abort", aborted);
10531
- resolve(true);
10534
+ resolve2(true);
10532
10535
  };
10533
10536
  const aborted = () => {
10534
10537
  waiting.splice(waiting.indexOf(granted), 1);
10535
- resolve(false);
10538
+ resolve2(false);
10536
10539
  };
10537
10540
  waiting.push(granted);
10538
10541
  signal?.addEventListener("abort", aborted, { once: true });
@@ -10835,10 +10838,10 @@ async function waitForCacheLock(signal) {
10835
10838
  if (signal?.aborted) {
10836
10839
  throw new UrlDownloadError("cancelled", false, "Download cancelled");
10837
10840
  }
10838
- await new Promise((resolve, reject) => {
10841
+ await new Promise((resolve2, reject) => {
10839
10842
  const timeout = setTimeout(() => {
10840
10843
  signal?.removeEventListener("abort", onAbort);
10841
- resolve();
10844
+ resolve2();
10842
10845
  }, CACHE_LOCK_POLL_MS);
10843
10846
  const onAbort = () => {
10844
10847
  clearTimeout(timeout);
@@ -11690,7 +11693,7 @@ async function renameWithRetryAsync(from, to, options = {}) {
11690
11693
  return;
11691
11694
  } catch (error) {
11692
11695
  if (attempt >= BACKOFF_MS.length || !isRetryable(error, platform)) throw error;
11693
- await new Promise((resolve) => setTimeout(resolve, BACKOFF_MS[attempt]));
11696
+ await new Promise((resolve2) => setTimeout(resolve2, BACKOFF_MS[attempt]));
11694
11697
  }
11695
11698
  }
11696
11699
  }
@@ -14410,9 +14413,9 @@ var settsDurationSupport = /* @__PURE__ */ new Map();
14410
14413
  function supportsSettsDuration(binary = getFfmpegBinary()) {
14411
14414
  let supported = settsDurationSupport.get(binary);
14412
14415
  if (!supported) {
14413
- supported = new Promise((resolve) => {
14416
+ supported = new Promise((resolve2) => {
14414
14417
  execFile3(binary, ["-hide_banner", "-h", "bsf=setts"], (error, stdout) => {
14415
- resolve(error !== null || stdout.includes("duration"));
14418
+ resolve2(error !== null || stdout.includes("duration"));
14416
14419
  });
14417
14420
  });
14418
14421
  settsDurationSupport.set(binary, supported);
@@ -15720,6 +15723,9 @@ function volumeLaneKeyframes(automation, trackStart, duration, gain, gainAhead =
15720
15723
  function parseMasterFxChain(html) {
15721
15724
  return readMasterFxChain(parseHTML(unwrapTemplate(html)).document);
15722
15725
  }
15726
+ function videoAudioId(videoId) {
15727
+ return `${videoId}-audio`;
15728
+ }
15723
15729
  function parseAudioElements(html) {
15724
15730
  const elements = [];
15725
15731
  const { document: document2 } = parseHTML(unwrapTemplate(html));
@@ -15782,7 +15788,7 @@ function parseAudioElements(html) {
15782
15788
  const src = resolveMediaElementSrc(el);
15783
15789
  if (!id || !src || isHidden(el) || memberGroupHidden(el)) continue;
15784
15790
  if (isKnownInactiveTimelineWindow(el, resolveStart(el))) continue;
15785
- elements.push(build(el, `${id}-audio`, src, "video", true));
15791
+ elements.push(build(el, videoAudioId(id), src, "video", true));
15786
15792
  }
15787
15793
  return elements;
15788
15794
  }
@@ -16999,7 +17005,7 @@ function shouldVerifyWorkerGpu(workerId, config) {
16999
17005
  }
17000
17006
  function withParallelWorkerDeadline(promise, diagnostic, timeoutMs, signal) {
17001
17007
  if (signal?.aborted) return Promise.reject(new Error("Parallel worker cancelled"));
17002
- return new Promise((resolve, reject) => {
17008
+ return new Promise((resolve2, reject) => {
17003
17009
  let timer;
17004
17010
  const cleanup = () => {
17005
17011
  if (timer) clearTimeout(timer);
@@ -17024,7 +17030,7 @@ function withParallelWorkerDeadline(promise, diagnostic, timeoutMs, signal) {
17024
17030
  promise.then(
17025
17031
  (value) => {
17026
17032
  cleanup();
17027
- resolve(value);
17033
+ resolve2(value);
17028
17034
  },
17029
17035
  (error) => {
17030
17036
  cleanup();
@@ -17540,11 +17546,11 @@ function createFileServer(options) {
17540
17546
  headers: { "Content-Type": contentType }
17541
17547
  });
17542
17548
  });
17543
- return new Promise((resolve) => {
17549
+ return new Promise((resolve2) => {
17544
17550
  const server = serve({ fetch: app.fetch, port }, (info) => {
17545
17551
  const actualPort = info.port;
17546
17552
  const url = `http://localhost:${actualPort}`;
17547
- resolve({
17553
+ resolve2({
17548
17554
  url,
17549
17555
  port: actualPort,
17550
17556
  close: () => server.close()
@@ -17847,7 +17853,7 @@ async function launchHdrBrowser(width, height) {
17847
17853
  ...sigintLaunchOptions(),
17848
17854
  headless: false,
17849
17855
  executablePath: chromePath,
17850
- args: buildHdrChromeArgs(width, height)
17856
+ args: withHyperframesBrowserMarker(buildHdrChromeArgs(width, height))
17851
17857
  });
17852
17858
  const page = await browser.newPage();
17853
17859
  await page.setViewport({ width, height });
@@ -18073,6 +18079,7 @@ export {
18073
18079
  audioFailureDiagnostics,
18074
18080
  MIXED_AUDIO_FILENAME,
18075
18081
  parseMasterFxChain,
18082
+ videoAudioId,
18076
18083
  parseAudioElements,
18077
18084
  processCompositionAudio,
18078
18085
  psnrDb,
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-6NLPPKBO.js";
38
38
  import {
39
39
  VERSION
40
- } from "./chunk-LFUVTS6V.js";
40
+ } from "./chunk-EY7GKVPS.js";
41
41
 
42
42
  // src/telemetry/transport.ts
43
43
  import { spawn } from "child_process";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-HVW7ABXD.js";
13
13
  import {
14
14
  DEFAULT_REGISTRY_URL
15
- } from "./chunk-7QNIXBQD.js";
15
+ } from "./chunk-M2VXARYK.js";
16
16
 
17
17
  // src/utils/projectConfig.ts
18
18
  import { readFileSync, writeFileSync } from "fs";
@@ -1246,6 +1246,33 @@ function classifyTweenPropertyGroup(properties) {
1246
1246
  if (groups.size === 1) return groups.values().next().value;
1247
1247
  return void 0;
1248
1248
  }
1249
+ function mergePercentageKeyframes(keyframes) {
1250
+ const byPercentage = /* @__PURE__ */ new Map();
1251
+ for (const keyframe of keyframes) {
1252
+ const existing = byPercentage.get(keyframe.percentage);
1253
+ if (!existing) {
1254
+ byPercentage.set(keyframe.percentage, {
1255
+ ...keyframe,
1256
+ properties: { ...keyframe.properties }
1257
+ });
1258
+ continue;
1259
+ }
1260
+ existing.properties = { ...existing.properties, ...keyframe.properties };
1261
+ if (keyframe.ease !== void 0) existing.ease = keyframe.ease;
1262
+ if (keyframe.auto !== void 0) existing.auto = keyframe.auto;
1263
+ }
1264
+ return [...byPercentage.values()].sort((a, b) => a.percentage - b.percentage);
1265
+ }
1266
+ function distributeArrayKeyframes(channels) {
1267
+ return mergePercentageKeyframes(
1268
+ [...channels].flatMap(
1269
+ ([key, values]) => values.map((value, index) => ({
1270
+ percentage: values.length > 1 ? Math.round(index / (values.length - 1) * 100) : 0,
1271
+ properties: { [key]: value }
1272
+ }))
1273
+ )
1274
+ );
1275
+ }
1249
1276
  function buildArcPath(coords, curviness, autoRotate, isCubic) {
1250
1277
  const first = coords[0];
1251
1278
  if (coords.length < 2 || !first) return void 0;
@@ -2713,19 +2740,9 @@ function parseSimpleArrayKeyframes(node, scope) {
2713
2740
  easeEach = tryResolveStringProp(prop.value, scope) ?? easeEach;
2714
2741
  }
2715
2742
  }
2716
- const maxLen = Math.max(...[...arrayProps.values()].map((a) => a.length), 0);
2717
- const keyframes = [];
2718
- for (let i = 0; i < maxLen; i++) {
2719
- const percentage = maxLen > 1 ? Math.round(i / (maxLen - 1) * 100) : 0;
2720
- const properties = {};
2721
- for (const [key, values] of arrayProps) {
2722
- if (i < values.length) properties[key] = values[i];
2723
- }
2724
- keyframes.push({ percentage, properties });
2725
- }
2726
2743
  return {
2727
2744
  format: "simple-array",
2728
- keyframes,
2745
+ keyframes: distributeArrayKeyframes(arrayProps),
2729
2746
  ...ease ? { ease } : {},
2730
2747
  ...easeEach ? { easeEach } : {}
2731
2748
  };
@@ -21,13 +21,13 @@ import {
21
21
  emitWords,
22
22
  getPreparedWavDurationSeconds,
23
23
  prepareWav
24
- } from "./chunk-M3KZBDPB.js";
24
+ } from "./chunk-Q4HKC3O7.js";
25
25
  import {
26
26
  stoppedByCancelSignal
27
- } from "./chunk-BP4EMEGH.js";
27
+ } from "./chunk-4VSV56F2.js";
28
28
  import {
29
29
  verifies
30
- } from "./chunk-VLLFORE2.js";
30
+ } from "./chunk-Y3BT27Y7.js";
31
31
  import {
32
32
  PARAKEET_MODEL_LABEL,
33
33
  SHERPA_ERROR_PREFIX,
@@ -138,6 +138,7 @@ function runCancellableProcess(command, args, options = {}) {
138
138
  const onAbort = () => terminate(signal?.reason ?? new Error("Operation aborted"));
139
139
  child.stdout?.on("data", (chunk) => {
140
140
  stdout += chunk.toString();
141
+ options.onStdout?.(chunk.toString());
141
142
  if (Buffer.byteLength(stdout) + Buffer.byteLength(stderr) > maxBufferBytes) {
142
143
  terminate(new Error(`Process output exceeded ${maxBufferBytes} bytes`), "ENOBUFS");
143
144
  }
@@ -8,14 +8,14 @@ import {
8
8
  DEFAULT_REGISTRY_URL,
9
9
  fetchItemFile,
10
10
  validRegistryItem
11
- } from "./chunk-7QNIXBQD.js";
11
+ } from "./chunk-M2VXARYK.js";
12
12
  import {
13
13
  publishRegistryFile,
14
14
  registryTargetPath
15
15
  } from "./chunk-GMECXFAN.js";
16
16
  import {
17
17
  validateVariables
18
- } from "./chunk-7HTH5PFK.js";
18
+ } from "./chunk-JVTWX5G3.js";
19
19
  import {
20
20
  realProjectRoot
21
21
  } from "./chunk-OFQWTKPW.js";
@@ -12,10 +12,10 @@ import {
12
12
  } from "./chunk-2ST4WAFY.js";
13
13
  import {
14
14
  createProjectConfig
15
- } from "./chunk-6XUJVEY2.js";
15
+ } from "./chunk-B3GG3HJB.js";
16
16
  import {
17
17
  isHyperframesProject
18
- } from "./chunk-7HTH5PFK.js";
18
+ } from "./chunk-JVTWX5G3.js";
19
19
 
20
20
  // src/utils/desktopApp.ts
21
21
  import { spawn, spawnSync } from "child_process";
@@ -14,10 +14,13 @@ import {
14
14
  } from "./chunk-DKPNNYBZ.js";
15
15
  import {
16
16
  resolveCaptureBrowserGpuMode
17
- } from "./chunk-YS4JUGNI.js";
17
+ } from "./chunk-MGSNFWGR.js";
18
18
  import {
19
19
  requestCliExit
20
20
  } from "./chunk-JVBRJMOP.js";
21
+ import {
22
+ withHyperframesBrowserMarker
23
+ } from "./chunk-K4MJX7SR.js";
21
24
  import {
22
25
  normalizeErrorMessage
23
26
  } from "./chunk-T2EUWCJE.js";
@@ -150,7 +153,14 @@ async function launchOwnedBrowser(puppeteer, options) {
150
153
  const signal = options.signal ? AbortSignal.any([options.signal, abort.signal]) : abort.signal;
151
154
  const launchedAt = Date.now();
152
155
  const launch = untilLaunchOrAbort(
153
- puppeteer.launch({ ...options, pipe: true, signal, handleSIGINT: false, handleSIGTERM: false }),
156
+ puppeteer.launch({
157
+ ...options,
158
+ args: withHyperframesBrowserMarker(options.args),
159
+ pipe: true,
160
+ signal,
161
+ handleSIGINT: false,
162
+ handleSIGTERM: false
163
+ }),
154
164
  signal
155
165
  );
156
166
  const limit = options.timeout ?? LAUNCH_TIMEOUT_MS;
@@ -460,7 +460,9 @@ function localizeHtmlEntry(ctx, entryPath, content) {
460
460
  const referrerAbsDir = resolve2(ctx.absProjectDir, dirname(entryPath));
461
461
  const { document } = parseHTML(content.toString("utf-8"));
462
462
  const resolveTarget = (val, dir) => tryResolveExternal(ctx, val, dir);
463
- const attrsChanged = rewriteHtmlAttributes(document, referrerAbsDir, entryPath, resolveTarget);
463
+ const attrsChanged = rewriteHtmlAttributes(document, referrerAbsDir, entryPath, resolveTarget, {
464
+ attrs: ["src", "href", "poster"]
465
+ });
464
466
  const stylesChanged = rewriteStyleBlocks(document, referrerAbsDir, entryPath, resolveTarget);
465
467
  if (attrsChanged || stylesChanged) {
466
468
  ctx.fileContents.set(entryPath, Buffer.from(document.toString(), "utf-8"));
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  shouldTrack
9
- } from "./chunk-ZZPBXRYQ.js";
9
+ } from "./chunk-54PZ2EQZ.js";
10
10
 
11
11
  // src/telemetry/renderObservability.ts
12
12
  function renderObservabilityTelemetryPayload(observability) {
@@ -15,16 +15,16 @@ import {
15
15
  findFFmpeg,
16
16
  findFFprobe,
17
17
  getFFmpegInstallHint
18
- } from "./chunk-DYNHVCBF.js";
18
+ } from "./chunk-XYGULBFV.js";
19
19
  import {
20
20
  DEFAULT_VP9_CPU_USED,
21
21
  SDR_RGB_TO_BT709_FILTER,
22
22
  SDR_RGB_TO_TAGGED_BT709_FILTER,
23
23
  renderProvenanceArgs
24
- } from "./chunk-L4JB7LI4.js";
24
+ } from "./chunk-52YJKWV3.js";
25
25
  import {
26
26
  runCancellableProcess
27
- } from "./chunk-RWGASWT7.js";
27
+ } from "./chunk-BL4U6U52.js";
28
28
 
29
29
  // src/background-removal/pipeline.ts
30
30
  import { spawn } from "child_process";
@@ -317,7 +317,7 @@ async function decoderTransposesDimensions(inputPath) {
317
317
  }
318
318
  async function probeMedia(inputPath) {
319
319
  const isImage = inferInputKind(inputPath) === "image";
320
- const engine = await import("./src-BH5NICGQ.js");
320
+ const engine = await import("./src-HITT6NWG.js");
321
321
  const meta = await engine.extractMediaMetadata(inputPath);
322
322
  if (isImage) {
323
323
  return { width: meta.width, height: meta.height, fps: 0, frameCount: 1 };