hyperframes 0.8.142 → 0.8.144

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 (222) hide show
  1. package/dist/{add-YS2RCWEK.js → add-CWRTVGDB.js} +18 -17
  2. package/dist/{animatedGifPrep-SAMCDT7T.js → animatedGifPrep-JTOHIWI4.js} +15 -14
  3. package/dist/{asset-BLWC2NWB.js → asset-KU2Z4UFM.js} +4 -4
  4. package/dist/{assetCataloger-FVNBBRP3.js → assetCataloger-3CS2P7PA.js} +8 -7
  5. package/dist/{auth-DRZB7OAC.js → auth-IDSOIQWG.js} +1 -1
  6. package/dist/{autoUpdate-I5I3BOJK.js → autoUpdate-373B4BA2.js} +2 -2
  7. package/dist/{backgroundChecks-VR2QHGNY.js → backgroundChecks-53Q3NAMG.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-4YUHQI6X.js → batchRender-UKZA6BME.js} +11 -10
  10. package/dist/{beats-7OT7ALV3.js → beats-N5JGEOFR.js} +33 -28
  11. package/dist/{benchmark-Q2XQCRTR.js → benchmark-CUN3LN4V.js} +15 -14
  12. package/dist/{browser-7VAWQQZC.js → browser-NCZT5AP6.js} +40 -56
  13. package/dist/{bundleWithLocalizedFonts-DDMLLL2R.js → bundleWithLocalizedFonts-FWC7PE2D.js} +2 -2
  14. package/dist/{capture-HEJS6M5A.js → capture-QBLG3VJR.js} +26 -25
  15. package/dist/{capture-U7ABPKS5.js → capture-YLS32UHT.js} +2 -2
  16. package/dist/{catalog-DVJ3XPDN.js → catalog-HIWNAFHW.js} +19 -18
  17. package/dist/{catch-up-DF6AVSN2.js → catch-up-HGS7KIAC.js} +5 -5
  18. package/dist/{check-KXORRWAE.js → check-FH6UYYLO.js} +78 -66
  19. package/dist/{checkBrowser-J7HZJTRH.js → checkBrowser-RNWNOMCZ.js} +93 -41
  20. package/dist/{chunk-R2JEKLDZ.js → chunk-2DA2BBNY.js} +3 -3
  21. package/dist/{chunk-TQFG7HTI.js → chunk-3RM2ETQT.js} +0 -168
  22. package/dist/{chunk-YFT3BL7N.js → chunk-3VYNNWVA.js} +30 -12
  23. package/dist/{chunk-7FCDA4RH.js → chunk-3XTEXWNN.js} +8 -5
  24. package/dist/{chunk-PFCFR3KZ.js → chunk-442JNXRM.js} +1 -1
  25. package/dist/{chunk-BPZVDBHY.js → chunk-4LAR447G.js} +1 -1
  26. package/dist/{chunk-AM5L5YIA.js → chunk-4OA4LDTU.js} +1 -1
  27. package/dist/{chunk-DZEVA7DI.js → chunk-4OC7MQNB.js} +2 -2
  28. package/dist/{chunk-75JJVANE.js → chunk-54QISXOC.js} +3 -3
  29. package/dist/{chunk-FZK35GT4.js → chunk-5HJ343GH.js} +1 -1
  30. package/dist/{chunk-IDX52YJN.js → chunk-5VMR4WBS.js} +458 -159
  31. package/dist/{chunk-OSUKETIH.js → chunk-5WADG7PR.js} +1 -1
  32. package/dist/{chunk-JYYOAKHS.js → chunk-6IIGT7BX.js} +1 -1
  33. package/dist/{chunk-6UYZB4TY.js → chunk-7RAYSCYT.js} +4 -4
  34. package/dist/{chunk-WTMUCJ6Z.js → chunk-7SDCIWHQ.js} +11 -2
  35. package/dist/{chunk-LAOCA3MQ.js → chunk-A4Q7W4LV.js} +13 -8
  36. package/dist/{chunk-B6SMSALD.js → chunk-A53CBD24.js} +18 -12
  37. package/dist/{chunk-4PFZPP2N.js → chunk-A6S35NYA.js} +54 -16
  38. package/dist/{chunk-JOTLPC6S.js → chunk-AUBOF2PN.js} +1 -1
  39. package/dist/{chunk-WCJGTLPF.js → chunk-BHVFTYSI.js} +6 -3
  40. package/dist/chunk-BSQ7XANM.js +210 -0
  41. package/dist/{chunk-LCSMOLGX.js → chunk-BYSBRF24.js} +69 -8
  42. package/dist/{chunk-U7E736AJ.js → chunk-DDIVWXN7.js} +32 -14
  43. package/dist/{chunk-KOEWEFHK.js → chunk-DIRJ322I.js} +10 -5
  44. package/dist/{chunk-HMUF7FEO.js → chunk-EX6C672Y.js} +2 -2
  45. package/dist/{chunk-QGRFOOLE.js → chunk-F2SMS24Q.js} +288 -85
  46. package/dist/{chunk-5Z63TBTX.js → chunk-FH7WODJH.js} +1 -1
  47. package/dist/{chunk-XTLBLWOV.js → chunk-GEWKFRFI.js} +1 -1
  48. package/dist/{chunk-RVCWIIZ7.js → chunk-GV5R5B7Q.js} +1 -1
  49. package/dist/{chunk-TY6XOHEM.js → chunk-GZM2EFOE.js} +3 -3
  50. package/dist/chunk-GZVP4TWN.js +76 -0
  51. package/dist/{chunk-QXPCARFE.js → chunk-I5KY7EZP.js} +1 -1
  52. package/dist/{chunk-IW2CKH6A.js → chunk-IEIJRMLZ.js} +94 -59
  53. package/dist/chunk-IR35BCLK.js +13 -0
  54. package/dist/{chunk-JFKL3WAE.js → chunk-IWFLMU2N.js} +104 -19
  55. package/dist/{chunk-EFDXGAAD.js → chunk-JEHFZQYT.js} +1 -1
  56. package/dist/{chunk-IHFUKJOR.js → chunk-K2FLNJVB.js} +8 -2
  57. package/dist/{chunk-KDPYVTEU.js → chunk-KBB4RG6F.js} +6 -1
  58. package/dist/{chunk-LJAU4TPS.js → chunk-KFKZ3ISO.js} +2 -2
  59. package/dist/{sherpa-ZYTNFHD5.js → chunk-L5TUCXWR.js} +11 -44
  60. package/dist/{chunk-KYN364DU.js → chunk-LC3RQURJ.js} +7 -9
  61. package/dist/{chunk-IMY4QQTQ.js → chunk-LFX2HEYP.js} +8 -8
  62. package/dist/{chunk-PXSM4HPB.js → chunk-MAYCCGMQ.js} +12 -3
  63. package/dist/{chunk-OZUQF4NB.js → chunk-MQZVBHEY.js} +123 -8
  64. package/dist/{chunk-FWRNQOLT.js → chunk-MXNDKDFT.js} +3 -3
  65. package/dist/{chunk-A4KQZXZI.js → chunk-NE55C6S5.js} +4 -2
  66. package/dist/{chunk-GYE63V4P.js → chunk-NOPBBSLA.js} +24 -19
  67. package/dist/{chunk-H2X52H2N.js → chunk-NV4RXIQ7.js} +3 -3
  68. package/dist/{chunk-WGVOWWVK.js → chunk-OIDN7G42.js} +3 -3
  69. package/dist/{chunk-DPHJKWP5.js → chunk-OUSLVRO4.js} +107 -108
  70. package/dist/{chunk-JLKMWY2T.js → chunk-P6WH6QTV.js} +8 -5
  71. package/dist/{chunk-7M4KAPAA.js → chunk-PUGIRFPX.js} +2 -2
  72. package/dist/{chunk-6RAD4BCC.js → chunk-QATWIE4K.js} +2 -2
  73. package/dist/{chunk-D2KNWIQ6.js → chunk-QFSCCQIR.js} +1 -1
  74. package/dist/{chunk-XGMNQQTJ.js → chunk-RG3QWWIE.js} +1 -1
  75. package/dist/{chunk-MVTUV4TP.js → chunk-RI53TS2Y.js} +14 -6
  76. package/dist/{chunk-LQASVU3I.js → chunk-RVFEDAUV.js} +12 -4
  77. package/dist/{chunk-GK4AIFIH.js → chunk-SDYDNHEE.js} +34 -3
  78. package/dist/{chunk-WSGY5CDQ.js → chunk-SLCFKB3Y.js} +14 -10
  79. package/dist/{chunk-2NCHQUPX.js → chunk-SQLK7SJL.js} +1 -1
  80. package/dist/{chunk-PMRBLBUP.js → chunk-T42U2W2R.js} +14 -2
  81. package/dist/chunk-UPFUC4DB.js +136 -0
  82. package/dist/{chunk-IXCTG2WY.js → chunk-VYSUZEJG.js} +5 -5
  83. package/dist/chunk-WJB7WI4J.js +3753 -0
  84. package/dist/{chunk-YEIFI443.js → chunk-WPNE5NEP.js} +1 -1
  85. package/dist/{chunk-YHRZQJXH.js → chunk-XGFHYAYN.js} +265 -68
  86. package/dist/{chunk-LBKDQKWV.js → chunk-XU5GGV6R.js} +1 -1
  87. package/dist/{chunk-LTGGTEMA.js → chunk-Y6UPYWJS.js} +2 -2
  88. package/dist/{chunk-OKCR3JTO.js → chunk-YJXHMIZA.js} +13 -10
  89. package/dist/{chunk-JU6Y5TTZ.js → chunk-YUAXFWSQ.js} +3 -3
  90. package/dist/{chunk-TVCRUG2S.js → chunk-ZEUONDQG.js} +1 -1
  91. package/dist/{chunk-THXFSPLV.js → chunk-ZIRIDSDB.js} +1 -1
  92. package/dist/{chunk-6UM3R7PP.js → chunk-ZOA2SC4P.js} +129 -60
  93. package/dist/{clean-KTHTV5G5.js → clean-KPX27IKJ.js} +27 -26
  94. package/dist/cli.js +70 -160
  95. package/dist/{cloud-ARSZWALC.js → cloud-P7DAOISN.js} +4 -4
  96. package/dist/{cloudrun-NM7RXOCL.js → cloudrun-XM56TBOH.js} +13 -12
  97. package/dist/commands/contrast-audit.browser.js +60 -4
  98. package/dist/commands/layout-audit.browser.js +68 -0
  99. package/dist/{compare-CY4UO3RW.js → compare-F6YAFZZM.js} +37 -36
  100. package/dist/{compiler-VTH2D3ID.js → compiler-JZ4GNFMG.js} +16 -10
  101. package/dist/{component-FRUIAXIR.js → component-3CFOGIQA.js} +5 -5
  102. package/dist/{compositions-CUSY6ZYY.js → compositions-CPCMWF24.js} +38 -33
  103. package/dist/{delete-KT3VHP4L.js → delete-GYVKOKB6.js} +4 -4
  104. package/dist/{deterministicFonts-F6WIVL2W.js → deterministicFonts-U2BIMGPG.js} +3 -3
  105. package/dist/{dist-7SZU7MA7.js → dist-KDJTFJHA.js} +7 -6
  106. package/dist/{dist-2GC6XKRQ.js → dist-YPWQDWJ4.js} +42 -40
  107. package/dist/{doctor-4ROTBL5U.js → doctor-GWI3B6JT.js} +21 -20
  108. package/dist/{dom-IROKGVJI.js → dom-37K6YOH4.js} +2 -2
  109. package/dist/{events-QJDVMKSR.js → events-BRRUDPPT.js} +3 -3
  110. package/dist/{events-Q5PXT5UC.js → events-V2QFN4YM.js} +2 -2
  111. package/dist/{feedback-PQ7TWESA.js → feedback-CXMD7FWL.js} +14 -13
  112. package/dist/{ffmpeg-QIUFEFTY.js → ffmpeg-T5SH2EFJ.js} +3 -2
  113. package/dist/{figma-JN5DDBDS.js → figma-YABDWD66.js} +3 -3
  114. package/dist/fontLocalizeCli.js +18 -17
  115. package/dist/{get-KT6OTERO.js → get-L2SOQKHX.js} +4 -4
  116. package/dist/{gpuPolicy-LCBWVGEH.js → gpuPolicy-NBJNWHYS.js} +19 -16
  117. package/dist/{grade-compare-VS3RP73G.js → grade-compare-STXQPKYQ.js} +39 -38
  118. package/dist/{help-AD6FIZIO.js → help-4H6BSFLB.js} +2 -2
  119. package/dist/{history-ZRWYRY7R.js → history-4IQOLTHJ.js} +6 -6
  120. package/dist/hyperframe-runtime.js +56 -56
  121. package/dist/hyperframe.manifest.json +1 -1
  122. package/dist/hyperframe.runtime.iife.js +56 -56
  123. package/dist/hyperframes-player.global.js +3 -3
  124. package/dist/hyperframes-slideshow.global.js +23 -23
  125. package/dist/{info-WBBQA2AX.js → info-2CZOTNBC.js} +17 -16
  126. package/dist/{init-A2XBDFGF.js → init-6BXK42VS.js} +46 -46
  127. package/dist/{inspect-CLTZHA5O.js → inspect-VKU47TBH.js} +38 -37
  128. package/dist/{installer-WQDRVXH4.js → installer-T2BSSUDY.js} +11 -10
  129. package/dist/{keyframes-3FYOK6H6.js → keyframes-IEYVHRPI.js} +10 -10
  130. package/dist/{lambda-Y2PA2BGS.js → lambda-TIKG25CK.js} +12 -11
  131. package/dist/{layout-4KP5O7IJ.js → layout-XOI4PT7A.js} +38 -37
  132. package/dist/{lint-V4GRFHOJ.js → lint-DWCMVIX5.js} +14 -13
  133. package/dist/{lintProject-RG2KGAXB.js → lintProject-UBZ3TDHU.js} +7 -6
  134. package/dist/{list-OQ4VED6E.js → list-7GXKG5QM.js} +5 -5
  135. package/dist/{login-W47NKN5S.js → login-BQ5L2UHX.js} +4 -4
  136. package/dist/{manager-CT3D67CG.js → manager-BPSR6D3V.js} +2 -2
  137. package/dist/{manager-524RPYO7.js → manager-RFZNG5YT.js} +2 -2
  138. package/dist/{manager-DXB7JDHU.js → manager-YKMHR6LN.js} +9 -6
  139. package/dist/{media-treatment-HJYL3EME.js → media-treatment-IFB7OSZ3.js} +24 -22
  140. package/dist/{models-DYBAD2GQ.js → models-TY4PJ545.js} +68 -27
  141. package/dist/{motionShot-7NE2YBB3.js → motionShot-WXMFHICW.js} +33 -33
  142. package/dist/{normalize-IGLHCWTF.js → normalize-U3SL5VG3.js} +19 -8
  143. package/dist/{normalize-audio-INKCLMS2.js → normalize-audio-RFD776HQ.js} +10 -6
  144. package/dist/{open-TYC5THVY.js → open-7IXXGO2E.js} +5 -5
  145. package/dist/parakeetRunner-IHLYYMTZ.js +67 -0
  146. package/dist/{pipeline-EVKEPQEW.js → pipeline-TXKPLL2U.js} +20 -18
  147. package/dist/{play-QMZEM6X3.js → play-J2KP64UK.js} +31 -29
  148. package/dist/{preflight-Y5DN5D37.js → preflight-B4AFK3RG.js} +4 -4
  149. package/dist/{present-Y7IK3C4W.js → present-MHHNRVRA.js} +26 -25
  150. package/dist/{preview-5OQRYE6A.js → preview-CONUOFFQ.js} +28 -27
  151. package/dist/{producer-Q6G6JU7B.js → producer-ZI46K7HH.js} +1 -1
  152. package/dist/{projectConfig-RJN3DKDB.js → projectConfig-FGGVG5MV.js} +13 -12
  153. package/dist/{publication-QCPGGN3U.js → publication-TXFBMW6B.js} +8 -7
  154. package/dist/{publish-VZLFIGYY.js → publish-YZSPBFRD.js} +18 -17
  155. package/dist/{remove-background-TKOEHBA5.js → remove-background-4ATVLHLG.js} +22 -20
  156. package/dist/{render-KIIIF6PS.js → render-6FBYLYGJ.js} +20 -19
  157. package/dist/{render-XTXE5CRU.js → render-GFW5BPES.js} +13 -12
  158. package/dist/{render-X3NFNVEQ.js → render-MH4IUPWB.js} +41 -40
  159. package/dist/{render-batch-M55YZLZ5.js → render-batch-XUCZ2PUJ.js} +13 -12
  160. package/dist/{renderCancellation-X5BEHAZU.js → renderCancellation-XF7M7IUP.js} +18 -16
  161. package/dist/renderSetupWorker.js +37 -48
  162. package/dist/{resolver-GAMXRA42.js → resolver-W7AYCQGS.js} +10 -9
  163. package/dist/sherpa-LDUB5NLY.js +75 -0
  164. package/dist/sherpaWorker.js +2 -1
  165. package/dist/skills/hyperframes-cli/references/doctor-browser.md +24 -1
  166. package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +1 -1
  167. package/dist/skills/media-use/scripts/lib/cache.mjs +28 -14
  168. package/dist/skills/media-use/scripts/lib/cache.test.mjs +110 -0
  169. package/dist/skills/media-use/scripts/lib/duck.mjs +2 -1
  170. package/dist/skills/media-use/scripts/lib/duck.test.mjs +87 -0
  171. package/dist/skills/media-use/scripts/lib/probe.mjs +6 -1
  172. package/dist/skills/media-use/scripts/lib/probe.test.mjs +73 -0
  173. package/dist/skills/media-use/scripts/lib/words.mjs +1 -1
  174. package/dist/{skills-CZHVAD3J.js → skills-VENERS5X.js} +7 -7
  175. package/dist/{skillsUpdateCheck-6WLLX53A.js → skillsUpdateCheck-UXFYTACG.js} +3 -3
  176. package/dist/{slideshow-EJ4IMY6P.js → slideshow-4OJEPWNZ.js} +1 -1
  177. package/dist/{snapshot-K7BTJPYQ.js → snapshot-C6T74HTI.js} +44 -40
  178. package/dist/{src-YUW26JU5.js → src-FS5RSVEI.js} +17 -16
  179. package/dist/{src-3I3RH3V5.js → src-VUJ2FUFK.js} +18 -13
  180. package/dist/{staticProjectServer-IKCSGN2B.js → staticProjectServer-V2RZ4DWD.js} +23 -22
  181. package/dist/studio/assets/hyperframes-player-Bw_jIaSX.js +473 -0
  182. package/dist/studio/assets/{index-B-wffzRH.js → index-BVM9NuWl.js} +153 -153
  183. package/dist/studio/assets/{index-D3Vij9t1.js → index-Cj7W_c7p.js} +1 -1
  184. package/dist/studio/assets/{index-D5q2_7Gw.js → index-DyH9dT7b.js} +1 -1
  185. package/dist/studio/{chunk-TFLU2MGI.js → chunk-3GHTHPZD.js} +8 -1
  186. package/dist/studio/chunk-3GHTHPZD.js.map +1 -0
  187. package/dist/studio/{chunk-H2DUOXTF.js → chunk-G3EDKRZH.js} +3 -3
  188. package/dist/studio/{chunk-UYWON5AX.js → chunk-PEAKCOUW.js} +7 -3
  189. package/dist/studio/chunk-PEAKCOUW.js.map +1 -0
  190. package/dist/studio/{chunk-LOVBLSMR.js → chunk-Y2OHHNM2.js} +35 -19
  191. package/dist/studio/chunk-Y2OHHNM2.js.map +1 -0
  192. package/dist/studio/{domEditingLayers-KBTPQKGA.js → domEditingLayers-PYST4G45.js} +3 -3
  193. package/dist/studio/index.html +1 -1
  194. package/dist/studio/index.js +261 -230
  195. package/dist/studio/index.js.map +1 -1
  196. package/dist/studio/player.js +3 -3
  197. package/dist/studio/ui.d.ts +4 -5
  198. package/dist/studio/ui.js +1 -1
  199. package/dist/{studio-api-SQ3NXFSM.js → studio-api-TQE7KWKO.js} +22 -17
  200. package/dist/{studioServer-VVEO7XCH.js → studioServer-CYKSQK7L.js} +81 -64
  201. package/dist/{synthesize-77PTU6C5.js → synthesize-UCI4X5O7.js} +6 -6
  202. package/dist/{telemetry-FQDKR5XA.js → telemetry-A23PPRD6.js} +3 -3
  203. package/dist/{timeline-N6ZASFNE.js → timeline-T3QSGT3A.js} +143 -99
  204. package/dist/{tokens-2OIIBBCW.js → tokens-RT5HWA6C.js} +4 -4
  205. package/dist/{transcribe-7YTUCXDX.js → transcribe-FOLNOC5G.js} +116 -52
  206. package/dist/{transcribe-4F6MK73N.js → transcribe-HCF64LQK.js} +23 -20
  207. package/dist/{tts-TOHSPWEG.js → tts-B6AHFQEO.js} +6 -6
  208. package/dist/{updateCheck-AZ2COZFR.js → updateCheck-27PIP3AA.js} +2 -2
  209. package/dist/{upgrade-QAJEYB4X.js → upgrade-TVGXBUPJ.js} +2 -2
  210. package/dist/{urlDownloader-LSMFEO3R.js → urlDownloader-KBLBJKRL.js} +14 -13
  211. package/dist/{validate-GW5MDL36.js → validate-ZMYGK4QI.js} +40 -27
  212. package/dist/{video-PRNOKUK3.js → video-AVE5GIGM.js} +15 -14
  213. package/package.json +1 -1
  214. package/dist/chunk-J4UX3RS3.js +0 -3717
  215. package/dist/studio/assets/hyperframes-player-sAsRuV73.js +0 -473
  216. package/dist/studio/chunk-LOVBLSMR.js.map +0 -1
  217. package/dist/studio/chunk-TFLU2MGI.js.map +0 -1
  218. package/dist/studio/chunk-UYWON5AX.js.map +0 -1
  219. package/dist/{chunk-HBBJFK6I.js → chunk-APDLWWFG.js} +0 -0
  220. package/dist/{screenshotCapture-TEUIWXWN.js → screenshotCapture-3JXXUZND.js} +3 -3
  221. /package/dist/studio/{chunk-H2DUOXTF.js.map → chunk-G3EDKRZH.js.map} +0 -0
  222. /package/dist/studio/{domEditingLayers-KBTPQKGA.js.map → domEditingLayers-PYST4G45.js.map} +0 -0
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-HVW7ABXD.js";
13
13
  import {
14
14
  DEFAULT_REGISTRY_URL
15
- } from "./chunk-QXPCARFE.js";
15
+ } from "./chunk-I5KY7EZP.js";
16
16
 
17
17
  // src/utils/projectConfig.ts
18
18
  import { readFileSync, writeFileSync } from "fs";
@@ -53,8 +53,14 @@ function formatRenderPipelineDetail(input) {
53
53
  return parts.length > 0 ? parts.join(" \xB7 ") : void 0;
54
54
  }
55
55
  function formatScreenshotFallbackHint(input) {
56
- if (input.platform !== "linux" || input.requestedGpuMode !== "auto") return void 0;
57
- if (input.captureMode !== "screenshot" || input.browserGpuMode !== "software") return void 0;
56
+ if (input.platform !== "linux" || input.requestedGpuMode !== "auto" && input.requestedGpuMode !== "hardware") {
57
+ return void 0;
58
+ }
59
+ if (input.captureMode !== "screenshot") return void 0;
60
+ if (input.browserGpuMode === "hardware") {
61
+ return "Screenshot capture (slower): BeginFrame did not run. Needs chrome-headless-shell and no --resolution upscale. A BeginFrame probe timeout can occur when browsers start together on one GPU; fewer --workers may help.";
62
+ }
63
+ if (input.browserGpuMode !== "software" || input.requestedGpuMode !== "auto") return void 0;
58
64
  return "Screenshot capture (slower): BeginFrame did not run. Needs chrome-headless-shell and no --resolution upscale. Heavy compositions can stall on software GL.";
59
65
  }
60
66
  function label(name, value) {
@@ -4,6 +4,9 @@ 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
+ TRANSCRIPT_FILE
9
+ } from "./chunk-IR35BCLK.js";
7
10
 
8
11
  // src/whisper/parakeet.ts
9
12
  import { execFileSync } from "child_process";
@@ -11,6 +14,7 @@ import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync
11
14
  import { homedir, tmpdir } from "os";
12
15
  import { basename, extname, join } from "path";
13
16
  var PARAKEET_MODEL_LABEL = "parakeet-tdt-0.6b-v3";
17
+ var PARAKEET_INSTALL_COMMAND = "hyperframes models install parakeet";
14
18
  var SHERPA_RESULT_PREFIX = "HYPERFRAMES_PARAKEET_RESULT:";
15
19
  var SHERPA_ERROR_PREFIX = "HYPERFRAMES_PARAKEET_ERROR:";
16
20
  var SHERPA_WINDOW_PREFIX = "HYPERFRAMES_PARAKEET_WINDOW:";
@@ -204,7 +208,7 @@ function transcribeWithParakeet(inputPath, dir, options) {
204
208
  }
205
209
  function writeParakeetTranscript(dir, words) {
206
210
  mkdirSync(dir, { recursive: true });
207
- const transcriptPath = join(dir, "transcript.json");
211
+ const transcriptPath = join(dir, TRANSCRIPT_FILE);
208
212
  writeFileSync(transcriptPath, JSON.stringify(words, null, 2));
209
213
  const durationSeconds = words.length > 0 ? words[words.length - 1].end : 0;
210
214
  return {
@@ -219,6 +223,7 @@ function writeParakeetTranscript(dir, words) {
219
223
 
220
224
  export {
221
225
  PARAKEET_MODEL_LABEL,
226
+ PARAKEET_INSTALL_COMMAND,
222
227
  SHERPA_RESULT_PREFIX,
223
228
  SHERPA_ERROR_PREFIX,
224
229
  SHERPA_WINDOW_PREFIX,
@@ -6,10 +6,10 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  errorBox
9
- } from "./chunk-IHFUKJOR.js";
9
+ } from "./chunk-K2FLNJVB.js";
10
10
  import {
11
11
  trackCommandFailure
12
- } from "./chunk-XGMNQQTJ.js";
12
+ } from "./chunk-RG3QWWIE.js";
13
13
  import {
14
14
  failCommand
15
15
  } from "./chunk-PBN6GBJE.js";
@@ -17,47 +17,16 @@ import {
17
17
  runNpm,
18
18
  sweepStaleStaging
19
19
  } from "./chunk-3DKN5WKL.js";
20
- import "./chunk-EOVYQ3IG.js";
21
20
  import {
22
21
  getPreparedWavDurationSeconds,
23
22
  prepareWav
24
- } from "./chunk-7FCDA4RH.js";
23
+ } from "./chunk-3XTEXWNN.js";
25
24
  import {
26
25
  emitWords
27
26
  } from "./chunk-6IHWCZ3W.js";
28
27
  import {
29
28
  stoppedByCancelSignal
30
- } from "./chunk-FWRNQOLT.js";
31
- import "./chunk-6BEFEWFB.js";
32
- import "./chunk-PXSM4HPB.js";
33
- import "./chunk-WCJGTLPF.js";
34
- import "./chunk-TVCRUG2S.js";
35
- import "./chunk-AMKC3AXA.js";
36
- import "./chunk-IDX52YJN.js";
37
- import "./chunk-DPHJKWP5.js";
38
- import "./chunk-A4KQZXZI.js";
39
- import "./chunk-USDEMXXL.js";
40
- import "./chunk-YFT3BL7N.js";
41
- import "./chunk-OZUQF4NB.js";
42
- import "./chunk-DPVXBVLL.js";
43
- import "./chunk-J4UX3RS3.js";
44
- import "./chunk-VC76R6W2.js";
45
- import "./chunk-YA62XGXS.js";
46
- import "./chunk-OFQWTKPW.js";
47
- import "./chunk-T76PLPD6.js";
48
- import "./chunk-FXMKHHPO.js";
49
- import "./chunk-RQVDTPGD.js";
50
- import "./chunk-LAOCA3MQ.js";
51
- import "./chunk-LCSMOLGX.js";
52
- import "./chunk-TWWSYAKJ.js";
53
- import "./chunk-IW2CKH6A.js";
54
- import "./chunk-JFKL3WAE.js";
55
- import "./chunk-HBBJFK6I.js";
56
- import "./chunk-PJ3HDUCY.js";
57
- import "./chunk-TQFG7HTI.js";
58
- import "./chunk-GK4AIFIH.js";
59
- import "./chunk-2PSPARWP.js";
60
- import "./chunk-PMRBLBUP.js";
29
+ } from "./chunk-MXNDKDFT.js";
61
30
  import {
62
31
  PARAKEET_MODEL_LABEL,
63
32
  SHERPA_ERROR_PREFIX,
@@ -65,10 +34,7 @@ import {
65
34
  SHERPA_WINDOW_PREFIX,
66
35
  mergeWindowsToWords,
67
36
  writeParakeetTranscript
68
- } from "./chunk-KDPYVTEU.js";
69
- import "./chunk-UOFAE5RF.js";
70
- import "./chunk-3GXQPCJC.js";
71
- import "./chunk-M2WBOQ2Q.js";
37
+ } from "./chunk-KBB4RG6F.js";
72
38
 
73
39
  // src/whisper/sherpa.ts
74
40
  import { execFile, spawn } from "child_process";
@@ -413,16 +379,17 @@ async function transcribeWithSherpa(wavPath, dir, options) {
413
379
  });
414
380
  return result;
415
381
  }
382
+
416
383
  export {
417
- DecodeCancelled,
418
- PARAKEET_MODEL_DIR,
419
384
  SHERPA_RUNTIME_DIR,
420
- ensureParakeetModel,
385
+ PARAKEET_MODEL_DIR,
386
+ sherpaUnsupportedReason,
387
+ sherpaRuntimeLoadError,
388
+ sherpaPlatformPackage,
421
389
  installSherpaRuntime,
422
- prepareSherpaWav,
423
390
  sherpaParakeetInstalled,
424
- sherpaPlatformPackage,
425
- sherpaRuntimeLoadError,
426
- sherpaUnsupportedReason,
391
+ ensureParakeetModel,
392
+ DecodeCancelled,
393
+ prepareSherpaWav,
427
394
  transcribeWithSherpa
428
395
  };
@@ -10,16 +10,17 @@ import {
10
10
  import {
11
11
  ensureModel,
12
12
  selectProviders
13
- } from "./chunk-2NCHQUPX.js";
13
+ } from "./chunk-SQLK7SJL.js";
14
14
  import {
15
15
  findFFmpeg,
16
16
  findFFprobe,
17
17
  getFFmpegInstallHint
18
- } from "./chunk-TVCRUG2S.js";
18
+ } from "./chunk-ZEUONDQG.js";
19
19
  import {
20
20
  DEFAULT_VP9_CPU_USED,
21
+ SDR_RGB_TO_BT709_FILTER,
21
22
  renderProvenanceArgs
22
- } from "./chunk-IDX52YJN.js";
23
+ } from "./chunk-5VMR4WBS.js";
23
24
 
24
25
  // src/background-removal/pipeline.ts
25
26
  import { spawn } from "child_process";
@@ -202,7 +203,7 @@ function inferInputKind(inputPath) {
202
203
  }
203
204
  async function probeMedia(inputPath) {
204
205
  const isImage = inferInputKind(inputPath) === "image";
205
- const engine = await import("./src-3I3RH3V5.js");
206
+ const engine = await import("./src-VUJ2FUFK.js");
206
207
  const meta = await engine.extractMediaMetadata(inputPath);
207
208
  if (isImage) {
208
209
  return { width: meta.width, height: meta.height, fps: 0, frameCount: 1 };
@@ -228,6 +229,8 @@ function buildEncoderArgs(format, width, height, fps, outputPath, quality = DEFA
228
229
  if (format === "webm") {
229
230
  return [
230
231
  ...base,
232
+ "-vf",
233
+ SDR_RGB_TO_BT709_FILTER,
231
234
  "-c:v",
232
235
  "libvpx-vp9",
233
236
  "-b:v",
@@ -244,11 +247,6 @@ function buildEncoderArgs(format, width, height, fps, outputPath, quality = DEFA
244
247
  "0",
245
248
  "-pix_fmt",
246
249
  "yuva420p",
247
- // Tag the output as BT.709 limited range so browsers use the same
248
- // YUV→RGB matrix the source video was encoded with. Without these tags
249
- // ffmpeg's default RGB→YUV conversion is BT.601, which causes a visible
250
- // color shift (red/skin tones in particular) when the matted overlay is
251
- // composited over the original mp4.
252
250
  "-colorspace",
253
251
  "bt709",
254
252
  "-color_primaries",
@@ -7,29 +7,29 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  RegistryCompatibilityError,
9
9
  gateRegistryItemsCompatibility
10
- } from "./chunk-BPZVDBHY.js";
10
+ } from "./chunk-4LAR447G.js";
11
11
  import {
12
12
  DEFAULT_PROJECT_CONFIG,
13
13
  createProjectConfig,
14
14
  loadProjectConfig,
15
15
  projectConfigPath,
16
16
  recordProjectRegistryItems
17
- } from "./chunk-EFDXGAAD.js";
17
+ } from "./chunk-JEHFZQYT.js";
18
18
  import {
19
19
  resolveItemWithDependencies,
20
20
  resolveItemsByTag
21
- } from "./chunk-JOTLPC6S.js";
21
+ } from "./chunk-AUBOF2PN.js";
22
22
  import {
23
23
  InvalidVariableValuesError,
24
24
  prepareItem,
25
25
  publishItem
26
- } from "./chunk-75JJVANE.js";
26
+ } from "./chunk-54QISXOC.js";
27
27
  import {
28
28
  DEFAULT_REGISTRY_URL
29
- } from "./chunk-QXPCARFE.js";
29
+ } from "./chunk-I5KY7EZP.js";
30
30
  import {
31
31
  trackRegistryItemAdded
32
- } from "./chunk-XGMNQQTJ.js";
32
+ } from "./chunk-RG3QWWIE.js";
33
33
  import {
34
34
  defineCommand
35
35
  } from "./chunk-S3S4TGEH.js";
@@ -38,14 +38,14 @@ import {
38
38
  } from "./chunk-PBN6GBJE.js";
39
39
  import {
40
40
  ITEM_TYPE_DIRS
41
- } from "./chunk-YFT3BL7N.js";
41
+ } from "./chunk-3VYNNWVA.js";
42
42
  import {
43
43
  isProjectRootMissing,
44
44
  realpath
45
45
  } from "./chunk-OFQWTKPW.js";
46
46
  import {
47
47
  parseHTML
48
- } from "./chunk-GK4AIFIH.js";
48
+ } from "./chunk-SDYDNHEE.js";
49
49
  import {
50
50
  c
51
51
  } from "./chunk-ZTZA4UWZ.js";
@@ -6,14 +6,14 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  downloadFile
9
- } from "./chunk-WCJGTLPF.js";
9
+ } from "./chunk-BHVFTYSI.js";
10
10
  import {
11
11
  findFFmpeg
12
- } from "./chunk-TVCRUG2S.js";
12
+ } from "./chunk-ZEUONDQG.js";
13
13
 
14
14
  // src/whisper/manager.ts
15
15
  import { execFileSync } from "child_process";
16
- import { existsSync, mkdirSync, rmSync } from "fs";
16
+ import { existsSync, mkdirSync, readdirSync, rmSync } from "fs";
17
17
  import { homedir, platform } from "os";
18
18
  import { join } from "path";
19
19
  var MODELS_DIR = join(homedir(), ".cache", "hyperframes", "whisper", "models");
@@ -120,6 +120,14 @@ ${stderr.slice(-500)}`;
120
120
  function findWhisper() {
121
121
  return findFromEnv() ?? findFromSystem() ?? findBuiltBinary();
122
122
  }
123
+ function listWhisperModels() {
124
+ if (!existsSync(MODELS_DIR)) return [];
125
+ return readdirSync(MODELS_DIR).flatMap((file) => {
126
+ const model = /^ggml-(.+)\.bin$/.exec(file)?.[1];
127
+ const path = join(MODELS_DIR, file);
128
+ return model && existsSync(path) ? [{ model, path }] : [];
129
+ }).sort((a, b) => a.model.localeCompare(b.model));
130
+ }
123
131
  function getInstallInstructions() {
124
132
  if (platform() === "darwin") {
125
133
  return "brew install whisper-cpp";
@@ -190,6 +198,7 @@ export {
190
198
  WhisperUnavailableError,
191
199
  isWhisperUnavailable,
192
200
  findWhisper,
201
+ listWhisperModels,
193
202
  getInstallInstructions,
194
203
  ensureWhisper,
195
204
  ensureModel,
@@ -8,6 +8,9 @@ import {
8
8
  require_lib,
9
9
  require_main
10
10
  } from "./chunk-DPVXBVLL.js";
11
+ import {
12
+ decodeHTMLAttribute
13
+ } from "./chunk-SDYDNHEE.js";
11
14
  import {
12
15
  ancestor,
13
16
  full,
@@ -4623,13 +4626,29 @@ function trackKindOf(node) {
4623
4626
  return { kind: "graphics", source: "tag" };
4624
4627
  }
4625
4628
  function decodeUrlPathVariants(path) {
4626
- const variants = [path];
4627
- try {
4628
- const decoded = decodeURIComponent(path);
4629
- if (decoded !== path) variants.unshift(decoded);
4630
- } catch {
4631
- }
4632
- return variants;
4629
+ const decoded = decodeWellFormedEscapes(path);
4630
+ return decoded === path ? [path] : [decoded, path];
4631
+ }
4632
+ function decodeWellFormedEscapes(path) {
4633
+ return path.replace(/(?:%[0-9A-Fa-f]{2})+/g, (run) => {
4634
+ try {
4635
+ return decodeURIComponent(run);
4636
+ } catch {
4637
+ return run;
4638
+ }
4639
+ });
4640
+ }
4641
+ function splitUrlSuffix(urlValue) {
4642
+ const queryIdx = urlValue.indexOf("?");
4643
+ const hashIdx = urlValue.indexOf("#");
4644
+ if (queryIdx < 0 && hashIdx < 0) return { basePath: urlValue, suffix: "" };
4645
+ let cutIdx = urlValue.length;
4646
+ if (queryIdx >= 0) cutIdx = Math.min(cutIdx, queryIdx);
4647
+ if (hashIdx >= 0) cutIdx = Math.min(cutIdx, hashIdx);
4648
+ return { basePath: urlValue.slice(0, cutIdx), suffix: urlValue.slice(cutIdx) };
4649
+ }
4650
+ function decodedUrlPath(url) {
4651
+ return decodeWellFormedEscapes(splitUrlSuffix(url).basePath);
4633
4652
  }
4634
4653
  function parseProgram2(script) {
4635
4654
  try {
@@ -4805,6 +4824,98 @@ function resolveAliasDisplayName(alias) {
4805
4824
  if (!slug) return void 0;
4806
4825
  return CANONICAL_FONT_DISPLAY_NAMES[slug];
4807
4826
  }
4827
+ function readAttributeValue(html, at) {
4828
+ while (/[\t\n\f\r ]/.test(html.charAt(at))) at++;
4829
+ const quote = ['"', "'"].includes(html.charAt(at)) ? html.charAt(at) : "";
4830
+ if (quote) at++;
4831
+ const valueStart = at;
4832
+ if (quote) {
4833
+ const closing = html.indexOf(quote, at);
4834
+ at = closing === -1 ? html.length : closing;
4835
+ } else {
4836
+ while (at < html.length && !/[\t\n\f\r >]/.test(html[at])) at++;
4837
+ }
4838
+ const valueEnd = at;
4839
+ const end = quote ? Math.min(valueEnd + 1, html.length) : valueEnd;
4840
+ return { value: html.slice(valueStart, valueEnd), valueStart, valueEnd, quote, end };
4841
+ }
4842
+ function readAttribute(html, start) {
4843
+ let at = start;
4844
+ while (at < html.length && !/[\t\n\f\r =/>]/.test(html[at])) at++;
4845
+ if (at === start) return null;
4846
+ const name = html.slice(start, at).toLowerCase();
4847
+ const nameEnd = at;
4848
+ while (/[\t\n\f\r ]/.test(html[at] ?? "")) at++;
4849
+ if (html[at] !== "=") return { kind: "boolean", name, start, end: nameEnd };
4850
+ return { kind: "value", name, start, ...readAttributeValue(html, at + 1) };
4851
+ }
4852
+ function readOpeningTag(html, start, name, at) {
4853
+ const attributes = [];
4854
+ while (at < html.length) {
4855
+ while (/[\t\n\f\r /]/.test(html[at] ?? "")) at++;
4856
+ if (at >= html.length || html[at] === ">") break;
4857
+ const attribute = readAttribute(html, at);
4858
+ if (attribute === null) {
4859
+ at++;
4860
+ continue;
4861
+ }
4862
+ attributes.push(attribute);
4863
+ at = attribute.end;
4864
+ }
4865
+ const closed = html[at] === ">";
4866
+ return {
4867
+ name: name.toLowerCase(),
4868
+ start,
4869
+ bodyEnd: at,
4870
+ end: closed ? at + 1 : at,
4871
+ closed,
4872
+ rawTextEnd: null,
4873
+ attributes
4874
+ };
4875
+ }
4876
+ function scanHtmlOpeningTags(html) {
4877
+ const tags = [];
4878
+ const opening = /<!--[\s\S]*?(?:--!?>|$)|<([a-z][^\t\n\f\r />]*)/gi;
4879
+ let match;
4880
+ while ((match = opening.exec(html)) !== null) {
4881
+ if (!match[1]) continue;
4882
+ const tag = readOpeningTag(html, match.index, match[1], opening.lastIndex);
4883
+ tags.push(tag);
4884
+ opening.lastIndex = tag.end;
4885
+ if ([
4886
+ "script",
4887
+ "style",
4888
+ "textarea",
4889
+ "title",
4890
+ "xmp",
4891
+ "iframe",
4892
+ "noembed",
4893
+ "noframes",
4894
+ "plaintext"
4895
+ ].includes(tag.name)) {
4896
+ if (tag.name === "plaintext") {
4897
+ tag.rawTextEnd = html.length;
4898
+ break;
4899
+ }
4900
+ const closing = new RegExp(`</${tag.name}(?=[\\t\\n\\f\\r />])`, "gi");
4901
+ closing.lastIndex = tag.end;
4902
+ const end = closing.exec(html);
4903
+ tag.rawTextEnd = end?.index ?? html.length;
4904
+ opening.lastIndex = tag.rawTextEnd;
4905
+ }
4906
+ }
4907
+ return tags;
4908
+ }
4909
+ var HTML_ATTRIBUTE_ENTITIES = {
4910
+ "&": ["&amp;"],
4911
+ '"': ["&quot;"],
4912
+ "'": ["&#39;", "&apos;"],
4913
+ "<": ["&lt;"],
4914
+ ">": ["&gt;"]
4915
+ };
4916
+ function decodeAuthoredAttribute(value) {
4917
+ return decodeHTMLAttribute(value);
4918
+ }
4808
4919
 
4809
4920
  export {
4810
4921
  MagicString,
@@ -4841,8 +4952,12 @@ export {
4841
4952
  topLevelElements,
4842
4953
  trackKindOf,
4843
4954
  decodeUrlPathVariants,
4955
+ decodedUrlPath,
4844
4956
  extractMediaSrcMutations,
4845
4957
  FONT_ALIAS_MAP,
4846
4958
  FONT_ALIAS_KEYS,
4847
- resolveAliasDisplayName
4959
+ resolveAliasDisplayName,
4960
+ scanHtmlOpeningTags,
4961
+ HTML_ATTRIBUTE_ENTITIES,
4962
+ decodeAuthoredAttribute
4848
4963
  };
@@ -6,15 +6,15 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  setHostHandlesSigint
9
- } from "./chunk-IDX52YJN.js";
9
+ } from "./chunk-5VMR4WBS.js";
10
10
  import {
11
11
  processAncestorSnapshot,
12
12
  processIdentity,
13
13
  processParentPid
14
- } from "./chunk-LAOCA3MQ.js";
14
+ } from "./chunk-A4Q7W4LV.js";
15
15
  import {
16
16
  processIsAlive
17
- } from "./chunk-LCSMOLGX.js";
17
+ } from "./chunk-BYSBRF24.js";
18
18
 
19
19
  // src/utils/renderCancellation.ts
20
20
  var RENDER_CANCELLATION_SIGNALS = [
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parseHTML
9
- } from "./chunk-GK4AIFIH.js";
9
+ } from "./chunk-SDYDNHEE.js";
10
10
 
11
11
  // ../parsers/dist/hfIds.js
12
12
  var EXCLUDED_TAGS = /* @__PURE__ */ new Set([
@@ -101,7 +101,9 @@ function assignHfIds(body) {
101
101
  });
102
102
  }
103
103
  function ensureHfIds(html) {
104
- const wrapped = !/<!doctype|<html[\s>]/i.test(html);
104
+ const wrapped = !/^(?:<!doctype|<html[\s>/])/i.test(
105
+ html.replace(/^(?:\s|<!--(?:>|->|[\s\S]*?-->))*/, "")
106
+ );
105
107
  const { document } = wrapped ? parseHTML(`<!DOCTYPE html><html><head></head><body>${html}</body></html>`) : parseHTML(html);
106
108
  if (!document.body) return html;
107
109
  assignHfIds(document.body);
@@ -6,20 +6,20 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-LJAU4TPS.js";
9
+ } from "./chunk-KFKZ3ISO.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-WSGY5CDQ.js";
15
+ } from "./chunk-SLCFKB3Y.js";
16
16
  import {
17
17
  resolveCompositionViewportFromHtml
18
- } from "./chunk-5Z63TBTX.js";
18
+ } from "./chunk-FH7WODJH.js";
19
19
  import {
20
20
  launchManagedBrowser,
21
21
  resolveManagedGpuMode
22
- } from "./chunk-OSUKETIH.js";
22
+ } from "./chunk-5WADG7PR.js";
23
23
  import {
24
24
  defineCommand
25
25
  } from "./chunk-S3S4TGEH.js";
@@ -27,10 +27,13 @@ import {
27
27
  failCommand,
28
28
  setCommandExitCode
29
29
  } from "./chunk-PBN6GBJE.js";
30
+ import {
31
+ decodeWellFormedEscapes
32
+ } from "./chunk-BSQ7XANM.js";
30
33
  import {
31
34
  printDeprecationNotice,
32
35
  withMeta
33
- } from "./chunk-JLKMWY2T.js";
36
+ } from "./chunk-P6WH6QTV.js";
34
37
  import {
35
38
  normalizeErrorMessage
36
39
  } from "./chunk-KNU5COPB.js";
@@ -70,6 +73,9 @@ function shouldIgnoreRequestFailure(url, errorText, resourceType) {
70
73
  return false;
71
74
  }
72
75
  }
76
+ function projectPathOfUrl(url) {
77
+ return decodeWellFormedEscapes(new URL(url).pathname).replace(/^\//, "");
78
+ }
73
79
  function shouldIgnoreHttpError(url, status) {
74
80
  return status === 404 && isOptionalCaptionOverridesRequest(url);
75
81
  }
@@ -222,7 +228,7 @@ function extractCompositionErrorsFromLint(lintResult) {
222
228
  async function localizeRemoteAssets(html) {
223
229
  let dir;
224
230
  try {
225
- const { loadProducer } = await import("./producer-Q6G6JU7B.js");
231
+ const { loadProducer } = await import("./producer-ZI46K7HH.js");
226
232
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
227
233
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
228
234
  const assetDir = dir;
@@ -243,10 +249,10 @@ async function localizeRemoteAssets(html) {
243
249
  }
244
250
  async function validateInBrowser(project, opts) {
245
251
  const projectDir = project.dir;
246
- const { bundleToSingleHtml } = await import("./compiler-VTH2D3ID.js");
247
- const { ensureBrowser } = await import("./manager-CT3D67CG.js");
248
- const { serveStaticProjectHtml } = await import("./staticProjectServer-IKCSGN2B.js");
249
- const { lintProject } = await import("./lintProject-RG2KGAXB.js");
252
+ const { bundleToSingleHtml } = await import("./compiler-JZ4GNFMG.js");
253
+ const { ensureBrowser } = await import("./manager-BPSR6D3V.js");
254
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-V2RZ4DWD.js");
255
+ const { lintProject } = await import("./lintProject-UBZ3TDHU.js");
250
256
  const lintResult = await lintProject(projectDir);
251
257
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
252
258
  const html = await bundleToSingleHtml(projectDir);
@@ -267,18 +273,16 @@ async function validateInBrowser(project, opts) {
267
273
  try {
268
274
  const browser = await ensureBrowser();
269
275
  const puppeteer = await import("puppeteer-core");
270
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-3I3RH3V5.js");
276
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-VUJ2FUFK.js");
271
277
  const requestedGpuMode = resolveCliChromeGpuMode();
272
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu } = await import("./gpuPolicy-LCBWVGEH.js");
278
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-NBJNWHYS.js");
273
279
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
274
280
  const requiresWebGpu = compositionRequiresWebGpu(html);
281
+ const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
275
282
  const chromeBrowser = await launchManagedBrowser(puppeteer.default, {
276
283
  headless: true,
277
284
  executablePath: browser.executablePath,
278
- args: buildChromeArgs(
279
- { ...viewport, captureMode: "screenshot", requiresWebGpu },
280
- { browserGpuMode: resolvedGpuMode }
281
- )
285
+ args: buildChromeArgs({ ...viewport, captureMode: "screenshot", requiresWebGpu }, gpuConfig)
282
286
  });
283
287
  const page = await chromeBrowser.newPage();
284
288
  await installPageFunctionGuard(page);
@@ -304,7 +308,7 @@ async function validateInBrowser(project, opts) {
304
308
  if (url.includes("favicon") || url.startsWith("data:")) return;
305
309
  const failureText = req.failure()?.errorText;
306
310
  if (shouldIgnoreRequestFailure(url, failureText, req.resourceType())) return;
307
- const path = decodeURIComponent(new URL(url).pathname).replace(/^\//, "");
311
+ const path = projectPathOfUrl(url);
308
312
  errors.push({
309
313
  level: "error",
310
314
  text: `Failed to load ${path}: ${failureText ?? "net::ERR_FAILED"}`,
@@ -316,7 +320,7 @@ async function validateInBrowser(project, opts) {
316
320
  const url = res.url();
317
321
  if (url.includes("favicon")) return;
318
322
  if (shouldIgnoreHttpError(url, res.status())) return;
319
- const path = decodeURIComponent(new URL(url).pathname).replace(/^\//, "");
323
+ const path = projectPathOfUrl(url);
320
324
  errors.push({ level: "error", text: `${res.status()} loading ${path}`, url });
321
325
  }
322
326
  });
@@ -328,7 +332,7 @@ async function validateInBrowser(project, opts) {
328
332
  if (hinted) throw hinted;
329
333
  throw err;
330
334
  }
331
- await assertWebGpuAdapterAvailable(page, requiresWebGpu);
335
+ await assertWebGpuAdapterAvailable(page, requiresWebGpu, softwareWebGpu);
332
336
  await waitForRuntimeReady(page, opts.timeout ?? 3e3);
333
337
  await new Promise((r) => setTimeout(r, opts.timeout ?? 3e3));
334
338
  for (const w of await auditClipDurations(page, analyzeClipMediaFit, opts.timeout ?? 3e3)) {
@@ -469,6 +473,7 @@ export {
469
473
  resolveNavigationTimeoutMs,
470
474
  navigationTimeoutHint,
471
475
  shouldIgnoreRequestFailure,
476
+ projectPathOfUrl,
472
477
  shouldIgnoreHttpError,
473
478
  raceMediaReady,
474
479
  auditClipDurations,
@@ -7,14 +7,14 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  trackLintReport,
9
9
  trackLintRuleStreak
10
- } from "./chunk-XGMNQQTJ.js";
10
+ } from "./chunk-RG3QWWIE.js";
11
11
  import {
12
12
  shouldTrack
13
- } from "./chunk-LBKDQKWV.js";
13
+ } from "./chunk-XU5GGV6R.js";
14
14
  import {
15
15
  LINT_RULE_COUNT,
16
16
  LINT_RULE_GROUP_COUNTS
17
- } from "./chunk-IW2CKH6A.js";
17
+ } from "./chunk-IEIJRMLZ.js";
18
18
 
19
19
  // src/telemetry/lintStreaks.ts
20
20
  import { createHash } from "crypto";
@@ -8,13 +8,13 @@ import {
8
8
  DEFAULT_VP9_CPU_USED,
9
9
  isHttpUrl,
10
10
  runFfmpeg
11
- } from "./chunk-IDX52YJN.js";
11
+ } from "./chunk-5VMR4WBS.js";
12
12
  import {
13
13
  parseAnimatedGifMetadata
14
- } from "./chunk-YFT3BL7N.js";
14
+ } from "./chunk-3VYNNWVA.js";
15
15
  import {
16
16
  parseHTML
17
- } from "./chunk-GK4AIFIH.js";
17
+ } from "./chunk-SDYDNHEE.js";
18
18
 
19
19
  // ../producer/src/services/animatedGifPrep.ts
20
20
  import { createHash } from "crypto";