hyperframes 0.8.145 → 0.8.147

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 (186) hide show
  1. package/dist/{add-B6OUH46W.js → add-5CNUY3EW.js} +15 -15
  2. package/dist/{animatedGifPrep-MIWRDJIO.js → animatedGifPrep-ZID2XJRQ.js} +10 -10
  3. package/dist/{asset-XJ2B2PU3.js → asset-TFEENZ7K.js} +2 -2
  4. package/dist/{assetCataloger-A5ZLSCMZ.js → assetCataloger-GX4B55VB.js} +4 -4
  5. package/dist/{auth-5HOVCZMV.js → auth-EJVZW6C3.js} +2 -2
  6. package/dist/{autoUpdate-WVNL5K3D.js → autoUpdate-MBNEZ2U4.js} +2 -2
  7. package/dist/{backgroundChecks-IGF54SFH.js → backgroundChecks-DNW5NPTY.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-T6JEGCQV.js → batchRender-T7S2CGJE.js} +5 -5
  10. package/dist/{beats-37T6Y6QP.js → beats-STXBGN6Z.js} +16 -16
  11. package/dist/{benchmark-ZVVLOWPP.js → benchmark-AC6IGEQP.js} +12 -12
  12. package/dist/{browser-4SSJOLH4.js → browser-FB5AK32T.js} +5 -5
  13. package/dist/{bundleWithLocalizedFonts-XWK423QP.js → bundleWithLocalizedFonts-HSCWGCFO.js} +2 -2
  14. package/dist/{capture-KZXOPBMO.js → capture-I24MXH3Y.js} +13 -13
  15. package/dist/{capture-2SF7YP57.js → capture-VEIVUHWB.js} +2 -2
  16. package/dist/{catalog-NLD4A2C6.js → catalog-JRC4VTTI.js} +15 -15
  17. package/dist/{catch-up-4BSRN6IR.js → catch-up-NTCK7Z3G.js} +6 -6
  18. package/dist/{check-IA44QQWM.js → check-7M7W4LPN.js} +38 -38
  19. package/dist/{checkBrowser-VM35KZMW.js → checkBrowser-2YRVCAYB.js} +118 -61
  20. package/dist/{chunk-OTHDVXOJ.js → chunk-2IDHEEAN.js} +3 -3
  21. package/dist/{chunk-VHFEMFYL.js → chunk-3BETQ4XI.js} +3 -3
  22. package/dist/{chunk-3KU3PFDW.js → chunk-3BYMCR4O.js} +85 -75
  23. package/dist/{chunk-FXJJCPPB.js → chunk-3HSWLZ6S.js} +1 -1
  24. package/dist/{chunk-ZF7SXQJ7.js → chunk-3PPO64IB.js} +2 -2
  25. package/dist/{chunk-PLR7Z6TC.js → chunk-3YUFN37G.js} +1 -1
  26. package/dist/{chunk-GRY3PN3K.js → chunk-4YVMMRHR.js} +2 -2
  27. package/dist/{chunk-ICKDMTLA.js → chunk-55RZG5SQ.js} +2 -2
  28. package/dist/{chunk-3IBMBNYY.js → chunk-5OKZLMQK.js} +10 -10
  29. package/dist/{chunk-DIRJ322I.js → chunk-66SAATRI.js} +3 -3
  30. package/dist/{chunk-GMAJB2P6.js → chunk-6BSIQJPW.js} +1 -1
  31. package/dist/{chunk-4QWD6JYN.js → chunk-6WD636E5.js} +3 -3
  32. package/dist/{chunk-5WVW7P23.js → chunk-A72OAGNB.js} +6 -6
  33. package/dist/{chunk-XBX4QJP7.js → chunk-AFIATIKS.js} +1 -1
  34. package/dist/{chunk-G75ENCEZ.js → chunk-AIJS74LG.js} +3 -3
  35. package/dist/{chunk-FBCULCAL.js → chunk-AL2YEVOT.js} +1 -1
  36. package/dist/{chunk-GEMJYBRU.js → chunk-B45OFFOQ.js} +2 -2
  37. package/dist/{chunk-VRW6EBHV.js → chunk-BAKPN2D2.js} +101 -94
  38. package/dist/{chunk-HB7FJOY4.js → chunk-BPUFVVSH.js} +1 -1
  39. package/dist/{chunk-BIAC7IJT.js → chunk-DDNS2674.js} +1 -1
  40. package/dist/{chunk-QFSCCQIR.js → chunk-DMKI64EZ.js} +1 -1
  41. package/dist/{chunk-EPE2HRJK.js → chunk-DYWSCPCR.js} +69 -64
  42. package/dist/{chunk-ZIYZ77MR.js → chunk-EGO6Z24R.js} +3 -3
  43. package/dist/{chunk-KC5XXX3X.js → chunk-EOOEC32M.js} +1 -1
  44. package/dist/{chunk-XIHCMVMG.js → chunk-FDL4HV44.js} +2 -2
  45. package/dist/{chunk-QZ3AZTXI.js → chunk-FJWEYVEM.js} +42 -16
  46. package/dist/{chunk-PUGIRFPX.js → chunk-FMNVTKX2.js} +4 -4
  47. package/dist/{chunk-IHTRYDFN.js → chunk-H7B6JSHI.js} +1 -1
  48. package/dist/{chunk-T42U2W2R.js → chunk-IXLUTE6N.js} +1 -1
  49. package/dist/{chunk-FDT6KQV4.js → chunk-JBQJKC23.js} +2 -2
  50. package/dist/{chunk-IEIJRMLZ.js → chunk-JDB65PPT.js} +62 -63
  51. package/dist/{chunk-UXO2L7HJ.js → chunk-JF5L5SQ6.js} +278 -65
  52. package/dist/{chunk-USDEMXXL.js → chunk-JYVGYKXG.js} +1 -1
  53. package/dist/{chunk-R42WWQVB.js → chunk-KPJMBC4K.js} +2 -2
  54. package/dist/{chunk-MAYCCGMQ.js → chunk-KVGDFUVO.js} +1 -1
  55. package/dist/{chunk-CFUXNBWH.js → chunk-LE7T4ML7.js} +1 -1
  56. package/dist/{chunk-MQZVBHEY.js → chunk-LFNQDTSH.js} +1 -1
  57. package/dist/{chunk-KIFHYXPB.js → chunk-MOL32UKR.js} +45 -11
  58. package/dist/{chunk-6LGNTUZN.js → chunk-N53FLAMZ.js} +7 -7
  59. package/dist/{chunk-ADF3X6GM.js → chunk-P6HELLPU.js} +2 -2
  60. package/dist/{chunk-5NRXZGKK.js → chunk-POKK6XXU.js} +9 -9
  61. package/dist/{chunk-GBGJ7A3D.js → chunk-QHRPB2JQ.js} +6 -6
  62. package/dist/{chunk-BFACGEII.js → chunk-QTTDKWSM.js} +2 -2
  63. package/dist/{chunk-U5QY7KTN.js → chunk-SEABQTBP.js} +11 -8
  64. package/dist/{chunk-ZEUONDQG.js → chunk-SYUGVPYH.js} +1 -1
  65. package/dist/{chunk-PJ3HDUCY.js → chunk-VAS6HQX3.js} +39 -9
  66. package/dist/{chunk-GQJZORQP.js → chunk-XBSPQ52S.js} +1 -1
  67. package/dist/{chunk-4ORLNTET.js → chunk-XOJDBRNF.js} +1 -1
  68. package/dist/{chunk-LAFJSYDL.js → chunk-XVIYZU3D.js} +1 -1
  69. package/dist/{chunk-OB5MJR4W.js → chunk-YCGU3UNU.js} +1 -1
  70. package/dist/{chunk-GXJEGZL2.js → chunk-Z5C4LEAD.js} +17 -18
  71. package/dist/chunk-Z6FLHIDV.js +3795 -0
  72. package/dist/{chunk-DDIVWXN7.js → chunk-ZFN6GQU4.js} +4 -4
  73. package/dist/{chunk-QLSM7K5S.js → chunk-ZLL72U3I.js} +2 -2
  74. package/dist/{chunk-ZSVUAVMT.js → chunk-ZQXNL5DL.js} +5 -5
  75. package/dist/{chunk-DWUKJQTO.js → chunk-ZVZSFDW3.js} +2 -2
  76. package/dist/{clean-RDKJB5FK.js → clean-3RY3Y2GX.js} +23 -23
  77. package/dist/cli.js +52 -52
  78. package/dist/{cloud-QVPVVNCW.js → cloud-MLPBFCVE.js} +4 -4
  79. package/dist/{cloudrun-3RE2UCQG.js → cloudrun-NQF5KFQI.js} +6 -6
  80. package/dist/{compare-LEDOY7MO.js → compare-6EZX2754.js} +32 -32
  81. package/dist/{compiler-F54OZZPM.js → compiler-ACCPOZMQ.js} +6 -6
  82. package/dist/{component-N42M67WY.js → component-F5PQHP6A.js} +3 -3
  83. package/dist/{compositions-VB2J2LZI.js → compositions-AUHWSI2H.js} +15 -15
  84. package/dist/{delete-Q6RWMJ4Z.js → delete-VUF4SHHJ.js} +2 -2
  85. package/dist/{deterministicFonts-U2BIMGPG.js → deterministicFonts-C5JQLCTS.js} +2 -2
  86. package/dist/{dist-Q4BI5A73.js → dist-GPDOV3IQ.js} +4 -4
  87. package/dist/{dist-KDJTFJHA.js → dist-HUMFCJ6T.js} +3 -3
  88. package/dist/{doctor-JMMUHDRV.js → doctor-3XHCA5JM.js} +15 -15
  89. package/dist/{events-RGUAHIBW.js → events-FKOIB3R3.js} +5 -5
  90. package/dist/{events-6ZBSIBE5.js → events-TIU72LZM.js} +4 -4
  91. package/dist/{feedback-FIID6MZW.js → feedback-V6VATYBE.js} +10 -10
  92. package/dist/{ffmpeg-T5SH2EFJ.js → ffmpeg-5V4FP3R6.js} +2 -2
  93. package/dist/{figma-BL3JJC36.js → figma-YBJM2VGE.js} +3 -3
  94. package/dist/fontLocalizeCli.js +14 -14
  95. package/dist/{get-P46GS7S6.js → get-3YVCGZBX.js} +2 -2
  96. package/dist/{gpuPolicy-AQ2BPLBK.js → gpuPolicy-ZOUG66M7.js} +10 -10
  97. package/dist/{grade-compare-GDCWU7ZZ.js → grade-compare-MYXIRKQI.js} +33 -33
  98. package/dist/{help-HJR3RWFG.js → help-WFZ2SUUR.js} +2 -2
  99. package/dist/{history-GGO5AWJB.js → history-HWPRJFR5.js} +49 -22
  100. package/dist/hyperframe-runtime.js +214 -68
  101. package/dist/hyperframe.manifest.json +1 -1
  102. package/dist/hyperframe.runtime.iife.js +214 -68
  103. package/dist/hyperframes-player.global.js +4 -5
  104. package/dist/hyperframes-slideshow.global.js +3 -4
  105. package/dist/{info-3GFWUBJC.js → info-WJDTQ4OZ.js} +11 -11
  106. package/dist/{init-36OPU2ZG.js → init-EXHDN7RO.js} +31 -31
  107. package/dist/{inspect-F2HEL5ON.js → inspect-EAOLZOMQ.js} +33 -33
  108. package/dist/{installer-NI6P6GC4.js → installer-LZ4X5TZZ.js} +6 -6
  109. package/dist/{keyframes-7OY3LMAZ.js → keyframes-FSZYNEDN.js} +8 -8
  110. package/dist/{lambda-6GJIWNJ3.js → lambda-3GAKHMC3.js} +7 -7
  111. package/dist/{layout-FTMLNL5A.js → layout-M2TQ2CIX.js} +33 -33
  112. package/dist/{lint-U6POHUON.js → lint-7C5UPTNQ.js} +11 -11
  113. package/dist/{lintProject-UBZ3TDHU.js → lintProject-SSEXWCH6.js} +3 -3
  114. package/dist/{list-IP5KI5Q2.js → list-GU5KBZ73.js} +2 -2
  115. package/dist/{login-4VWTVPHG.js → login-ZL2NYBIZ.js} +4 -4
  116. package/dist/{manager-YKMHR6LN.js → manager-5ORDVWJB.js} +3 -3
  117. package/dist/{media-treatment-XGV44AGV.js → media-treatment-QC3TAHVU.js} +82 -54
  118. package/dist/{models-UCXB6UR5.js → models-A54I4QR5.js} +14 -14
  119. package/dist/{motionShot-WPVNBXKA.js → motionShot-ZXPK562F.js} +35 -29
  120. package/dist/{normalize-audio-TYJ3UEHO.js → normalize-audio-CAP3DAE6.js} +10 -10
  121. package/dist/{open-HENOLVB2.js → open-GUSBNMDB.js} +6 -6
  122. package/dist/{parakeetRunner-VFQ6WFTD.js → parakeetRunner-GCCH72CO.js} +14 -14
  123. package/dist/{pipeline-6WPSC3H4.js → pipeline-SCJ2MWYH.js} +11 -11
  124. package/dist/{play-OI53WNUM.js → play-FP2QLMGM.js} +26 -26
  125. package/dist/{preflight-B4AFK3RG.js → preflight-ONF5AJNO.js} +5 -5
  126. package/dist/{present-NGMEQ4NO.js → present-H5SA4APW.js} +23 -23
  127. package/dist/{preview-VT2HWRWZ.js → preview-ATPVKA6K.js} +57 -26
  128. package/dist/{producer-7TYEAUF7.js → producer-VBYUC27R.js} +1 -1
  129. package/dist/{projectConfig-B2AF5DXY.js → projectConfig-SBRMQZGG.js} +8 -8
  130. package/dist/{publication-2PANQVC6.js → publication-5BQICRZO.js} +4 -4
  131. package/dist/{publish-O5OL42BG.js → publish-XDUZA3E3.js} +27 -26
  132. package/dist/{remove-background-T2JM6UVP.js → remove-background-GA6F7JZW.js} +12 -12
  133. package/dist/{render-Z253WHBK.js → render-KUVZFNQD.js} +27 -27
  134. package/dist/{render-W7OFXDOJ.js → render-PCFO45RK.js} +5 -5
  135. package/dist/{render-OLPKOJRU.js → render-XCYXFZTL.js} +12 -12
  136. package/dist/{render-batch-46IIBFKL.js → render-batch-7R2NRNVJ.js} +5 -5
  137. package/dist/{renderCancellation-QTZOCDJ2.js → renderCancellation-NIXEWRAO.js} +10 -10
  138. package/dist/renderSetupWorker.js +3 -3
  139. package/dist/{resolver-J2PL5FVJ.js → resolver-C4FPX72I.js} +6 -6
  140. package/dist/{sherpa-ZF42V3RN.js → sherpa-IQY52XU6.js} +14 -14
  141. package/dist/skills/media-use/references/media-treatments.md +5 -1
  142. package/dist/{skills-ACDOO3PX.js → skills-JSSAEKUW.js} +7 -7
  143. package/dist/{skillsUpdateCheck-L5OXVVPU.js → skillsUpdateCheck-XE5E2K2F.js} +3 -3
  144. package/dist/{slideshow-4OJEPWNZ.js → slideshow-YTWATJRT.js} +1 -1
  145. package/dist/{snapshot-UUVNZOW5.js → snapshot-QMQOE2DD.js} +34 -34
  146. package/dist/{src-BSLKXEGX.js → src-2GMPFYHL.js} +11 -9
  147. package/dist/{src-KS3AWFGT.js → src-R55QLGWI.js} +13 -13
  148. package/dist/{staticProjectServer-2TTVGPQH.js → staticProjectServer-YH2RHYKW.js} +20 -20
  149. package/dist/{status-LXPGSSKY.js → status-PTKNQD2E.js} +2 -2
  150. package/dist/studio/assets/{hyperframes-player-DZ5JrMDg.js → hyperframes-player-_eMxRXF_.js} +3 -3
  151. package/dist/studio/assets/{index-BqFRhNZa.js → index-6okhHdnH.js} +1 -1
  152. package/dist/studio/assets/{index-BOs6C0aZ.js → index-CEq9KmY2.js} +1 -1
  153. package/dist/studio/assets/{index-D8W0a0Z9.js → index-bXzd7tvF.js} +135 -135
  154. package/dist/studio/index.html +1 -1
  155. package/dist/{studio-api-WYWF7XRC.js → studio-api-T2TS2CHL.js} +16 -14
  156. package/dist/{studioServer-3FG4YTP7.js → studioServer-Q4MT44LT.js} +50 -50
  157. package/dist/{system-OQLOGGPJ.js → system-OXRG57F2.js} +2 -2
  158. package/dist/{telemetry-PAOOB4T4.js → telemetry-V5JYZDS4.js} +5 -5
  159. package/dist/{timeline-JIIJKKPC.js → timeline-KTCTOKF5.js} +34 -25
  160. package/dist/{tokens-3QRAM75Z.js → tokens-ZHREZPK6.js} +2 -2
  161. package/dist/{transcribe-QSBP5MUG.js → transcribe-4QDEWCE6.js} +12 -12
  162. package/dist/{transcribe-SZB6UMXE.js → transcribe-CRAV4FU3.js} +13 -13
  163. package/dist/{updateCheck-V3DSB26K.js → updateCheck-E7RMSK3E.js} +2 -2
  164. package/dist/{upgrade-L5GISOEV.js → upgrade-27PFTDCV.js} +2 -2
  165. package/dist/{urlDownloader-52FERT4X.js → urlDownloader-EAF6PLUP.js} +9 -9
  166. package/dist/{validate-HVVLX7KO.js → validate-OKNFDBMG.js} +27 -27
  167. package/dist/{video-MEOWRMFG.js → video-IEVS4FIH.js} +10 -10
  168. package/package.json +3 -2
  169. package/dist/chunk-AUWHD7RA.js +0 -3753
  170. package/dist/studio/chunk-6JY3MTIX.js +0 -1204
  171. package/dist/studio/chunk-EEXSYY5F.js +0 -190
  172. package/dist/studio/chunk-NZPJUZKT.js +0 -1538
  173. package/dist/studio/chunk-PZ5AY32C.js +0 -10
  174. package/dist/studio/chunk-TP6D3U37.js +0 -845
  175. package/dist/studio/chunk-Y2OHHNM2.js +0 -970
  176. package/dist/studio/domEditingLayers-PTP2ICGM.js +0 -47
  177. package/dist/studio/index.css +0 -165
  178. package/dist/studio/index.d.ts +0 -4318
  179. package/dist/studio/index.js +0 -100952
  180. package/dist/studio/player.d.ts +0 -30
  181. package/dist/studio/player.js +0 -10
  182. package/dist/studio/styles/tailwind-preset.d.ts +0 -39
  183. package/dist/studio/styles/tailwind-preset.js +0 -50
  184. package/dist/studio/styles.css +0 -1
  185. package/dist/studio/ui.d.ts +0 -297
  186. package/dist/studio/ui.js +0 -66
@@ -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-XBX4QJP7.js";
9
+ } from "./chunk-AFIATIKS.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-U5QY7KTN.js";
15
+ } from "./chunk-SEABQTBP.js";
16
16
  import {
17
17
  resolveCompositionViewportFromHtml
18
18
  } from "./chunk-FH7WODJH.js";
19
19
  import {
20
20
  launchManagedBrowser,
21
21
  resolveManagedGpuMode
22
- } from "./chunk-4ORLNTET.js";
22
+ } from "./chunk-XOJDBRNF.js";
23
23
  import {
24
24
  defineCommand
25
25
  } from "./chunk-S3S4TGEH.js";
@@ -33,7 +33,7 @@ import {
33
33
  import {
34
34
  printDeprecationNotice,
35
35
  withMeta
36
- } from "./chunk-PLR7Z6TC.js";
36
+ } from "./chunk-3YUFN37G.js";
37
37
  import {
38
38
  normalizeErrorMessage
39
39
  } from "./chunk-KNU5COPB.js";
@@ -228,7 +228,7 @@ function extractCompositionErrorsFromLint(lintResult) {
228
228
  async function localizeRemoteAssets(html) {
229
229
  let dir;
230
230
  try {
231
- const { loadProducer } = await import("./producer-7TYEAUF7.js");
231
+ const { loadProducer } = await import("./producer-VBYUC27R.js");
232
232
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
233
233
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
234
234
  const assetDir = dir;
@@ -249,10 +249,10 @@ async function localizeRemoteAssets(html) {
249
249
  }
250
250
  async function validateInBrowser(project, opts) {
251
251
  const projectDir = project.dir;
252
- const { bundleToSingleHtml } = await import("./compiler-F54OZZPM.js");
252
+ const { bundleToSingleHtml } = await import("./compiler-ACCPOZMQ.js");
253
253
  const { ensureBrowser } = await import("./manager-BPSR6D3V.js");
254
- const { serveStaticProjectHtml } = await import("./staticProjectServer-2TTVGPQH.js");
255
- const { lintProject } = await import("./lintProject-UBZ3TDHU.js");
254
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-YH2RHYKW.js");
255
+ const { lintProject } = await import("./lintProject-SSEXWCH6.js");
256
256
  const lintResult = await lintProject(projectDir);
257
257
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
258
258
  const html = await bundleToSingleHtml(projectDir);
@@ -273,9 +273,9 @@ async function validateInBrowser(project, opts) {
273
273
  try {
274
274
  const browser = await ensureBrowser();
275
275
  const puppeteer = await import("puppeteer-core");
276
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-BSLKXEGX.js");
276
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-2GMPFYHL.js");
277
277
  const requestedGpuMode = resolveCliChromeGpuMode();
278
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-AQ2BPLBK.js");
278
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-ZOUG66M7.js");
279
279
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
280
280
  const requiresWebGpu = compositionRequiresWebGpu(html);
281
281
  const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
@@ -284,64 +284,69 @@ async function validateInBrowser(project, opts) {
284
284
  executablePath: browser.executablePath,
285
285
  args: buildChromeArgs({ ...viewport, captureMode: "screenshot", requiresWebGpu }, gpuConfig)
286
286
  });
287
- const page = await chromeBrowser.newPage();
288
- await installPageFunctionGuard(page);
289
- await page.setViewport(viewport);
290
- page.on("console", (msg) => {
291
- const type = msg.type();
292
- const loc = msg.location();
293
- const text = msg.text();
294
- if (type === "error") {
295
- if (text.startsWith("Failed to load resource")) return;
296
- errors.push({ level: "error", text, url: loc.url, line: loc.lineNumber });
297
- } else if (type === "warn") {
298
- warnings.push({ level: "warning", text, url: loc.url, line: loc.lineNumber });
299
- }
300
- });
301
- page.on("pageerror", (err) => {
302
- const text = normalizeErrorMessage(err);
303
- if (text.includes("Unexpected token '<'") || text.includes("Unexpected token '&lt;'")) return;
304
- errors.push({ level: "error", text });
305
- });
306
- page.on("requestfailed", (req) => {
307
- const url = req.url();
308
- if (url.includes("favicon") || url.startsWith("data:")) return;
309
- const failureText = req.failure()?.errorText;
310
- if (shouldIgnoreRequestFailure(url, failureText, req.resourceType())) return;
311
- const path = projectPathOfUrl(url);
312
- errors.push({
313
- level: "error",
314
- text: `Failed to load ${path}: ${failureText ?? "net::ERR_FAILED"}`,
315
- url
287
+ try {
288
+ const page = await chromeBrowser.newPage();
289
+ await installPageFunctionGuard(page);
290
+ await page.setViewport(viewport);
291
+ page.on("console", (msg) => {
292
+ const type = msg.type();
293
+ const loc = msg.location();
294
+ const text = msg.text();
295
+ if (type === "error") {
296
+ if (text.startsWith("Failed to load resource")) return;
297
+ errors.push({ level: "error", text, url: loc.url, line: loc.lineNumber });
298
+ } else if (type === "warn") {
299
+ warnings.push({ level: "warning", text, url: loc.url, line: loc.lineNumber });
300
+ }
316
301
  });
317
- });
318
- page.on("response", (res) => {
319
- if (res.status() >= 400) {
320
- const url = res.url();
321
- if (url.includes("favicon")) return;
322
- if (shouldIgnoreHttpError(url, res.status())) return;
302
+ page.on("pageerror", (err) => {
303
+ const text = normalizeErrorMessage(err);
304
+ if (text.includes("Unexpected token '<'") || text.includes("Unexpected token '&lt;'"))
305
+ return;
306
+ errors.push({ level: "error", text });
307
+ });
308
+ page.on("requestfailed", (req) => {
309
+ const url = req.url();
310
+ if (url.includes("favicon") || url.startsWith("data:")) return;
311
+ const failureText = req.failure()?.errorText;
312
+ if (shouldIgnoreRequestFailure(url, failureText, req.resourceType())) return;
323
313
  const path = projectPathOfUrl(url);
324
- errors.push({ level: "error", text: `${res.status()} loading ${path}`, url });
314
+ errors.push({
315
+ level: "error",
316
+ text: `Failed to load ${path}: ${failureText ?? "net::ERR_FAILED"}`,
317
+ url
318
+ });
319
+ });
320
+ page.on("response", (res) => {
321
+ if (res.status() >= 400) {
322
+ const url = res.url();
323
+ if (url.includes("favicon")) return;
324
+ if (shouldIgnoreHttpError(url, res.status())) return;
325
+ const path = projectPathOfUrl(url);
326
+ errors.push({ level: "error", text: `${res.status()} loading ${path}`, url });
327
+ }
328
+ });
329
+ const navTimeoutMs = resolveNavigationTimeoutMs(opts.timeout);
330
+ try {
331
+ await page.goto(server.url, { waitUntil: "domcontentloaded", timeout: navTimeoutMs });
332
+ } catch (err) {
333
+ const hinted = navigationTimeoutHint(err, navTimeoutMs);
334
+ if (hinted) throw hinted;
335
+ throw err;
325
336
  }
326
- });
327
- const navTimeoutMs = resolveNavigationTimeoutMs(opts.timeout);
328
- try {
329
- await page.goto(server.url, { waitUntil: "domcontentloaded", timeout: navTimeoutMs });
330
- } catch (err) {
331
- const hinted = navigationTimeoutHint(err, navTimeoutMs);
332
- if (hinted) throw hinted;
333
- throw err;
334
- }
335
- await assertWebGpuAdapterAvailable(page, requiresWebGpu, softwareWebGpu);
336
- await waitForRuntimeReady(page, opts.timeout ?? 3e3);
337
- await new Promise((r) => setTimeout(r, opts.timeout ?? 3e3));
338
- for (const w of await auditClipDurations(page, analyzeClipMediaFit, opts.timeout ?? 3e3)) {
339
- warnings.push(w);
340
- }
341
- if (opts.contrast) {
342
- contrast = await runContrastAudit(page);
337
+ await assertWebGpuAdapterAvailable(page, requiresWebGpu, softwareWebGpu);
338
+ await waitForRuntimeReady(page, opts.timeout ?? 3e3);
339
+ await new Promise((r) => setTimeout(r, opts.timeout ?? 3e3));
340
+ for (const w of await auditClipDurations(page, analyzeClipMediaFit, opts.timeout ?? 3e3)) {
341
+ warnings.push(w);
342
+ }
343
+ if (opts.contrast) {
344
+ contrast = await runContrastAudit(page);
345
+ }
346
+ } finally {
347
+ await chromeBrowser.close().catch(() => {
348
+ });
343
349
  }
344
- await chromeBrowser.close();
345
350
  } finally {
346
351
  await server.close();
347
352
  localized.cleanup();
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  getMimeType,
9
9
  injectMediaCodecMapIntoHtml
10
- } from "./chunk-GXJEGZL2.js";
10
+ } from "./chunk-Z5C4LEAD.js";
11
11
  import {
12
12
  PROXY_VARIANT_CONFIG,
13
13
  ProxyCapacityError,
@@ -18,10 +18,10 @@ import {
18
18
  recordProxyRequest,
19
19
  resolveProxy,
20
20
  resolveProxyVariantRequest
21
- } from "./chunk-KIFHYXPB.js";
21
+ } from "./chunk-MOL32UKR.js";
22
22
  import {
23
23
  resolveAutoProxy
24
- } from "./chunk-CFUXNBWH.js";
24
+ } from "./chunk-LE7T4ML7.js";
25
25
  import {
26
26
  decodeWellFormedEscapes
27
27
  } from "./chunk-BSQ7XANM.js";
@@ -5,7 +5,7 @@ var require = __hf_createRequire(import.meta.url);
5
5
  var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
 
8
- // ../studio-server/dist/chunk-6XMC64FJ.js
8
+ // ../studio-server/dist/chunk-SVQFE44C.js
9
9
  var STUDIO_MANUAL_EDITS_PATH = ".hyperframes/studio-manual-edits.json";
10
10
  function createStudioManualEditsRenderBodyScript(manifestContent, options = {}) {
11
11
  if (!manifestContent.trim()) return null;
@@ -8,14 +8,14 @@ import {
8
8
  DEFAULT_REGISTRY_URL,
9
9
  fetchItemFile,
10
10
  validRegistryItem
11
- } from "./chunk-LAFJSYDL.js";
11
+ } from "./chunk-XVIYZU3D.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-VRW6EBHV.js";
18
+ } from "./chunk-BAKPN2D2.js";
19
19
  import {
20
20
  realProjectRoot
21
21
  } from "./chunk-OFQWTKPW.js";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  realFilePath
9
- } from "./chunk-G75ENCEZ.js";
9
+ } from "./chunk-AIJS74LG.js";
10
10
  import {
11
11
  atomicTempPath,
12
12
  isAtomicTempPath,
@@ -17,7 +17,7 @@ import {
17
17
  mkdirWithinProject
18
18
  } from "./chunk-OFQWTKPW.js";
19
19
 
20
- // ../studio-server/dist/chunk-K3H6HTVC.js
20
+ // ../studio-server/dist/chunk-Y7V6FJHS.js
21
21
  import { randomUUID as randomUUID6 } from "crypto";
22
22
  import { mkdir as mkdir2, readdir as readdir3, rm as rm3, rmdir, writeFile } from "fs/promises";
23
23
  import {
@@ -310,6 +310,11 @@ function createProjectSignature(projectDir, excluding = /* @__PURE__ */ new Set(
310
310
  return signature;
311
311
  }
312
312
  var BLOB_HASH = /^[0-9a-f]{64}$/;
313
+ function blobPath(dir, hash) {
314
+ if (!BLOB_HASH.test(hash)) throw new Error("That is not a history blob.");
315
+ return join(dir, hash.slice(0, 2), hash);
316
+ }
317
+ var readBlob = (dir, hash) => readFile(blobPath(dir, hash));
313
318
  async function hashFile(path) {
314
319
  const hash = createHash3("sha256");
315
320
  for await (const chunk of createReadStream(path)) hash.update(chunk);
@@ -333,10 +338,7 @@ async function openBlobStore(dir) {
333
338
  for (const shard of await readdir(dir))
334
339
  for (const hash of await readdir(join(dir, shard)).catch(() => []))
335
340
  sizes.set(hash, (await stat(join(dir, shard, hash))).size);
336
- const pathOf = (hash) => {
337
- if (!BLOB_HASH.test(hash)) throw new Error("That is not a history blob.");
338
- return join(dir, hash.slice(0, 2), hash);
339
- };
341
+ const pathOf = (hash) => blobPath(dir, hash);
340
342
  let total = [...sizes.values()].reduce((sum, size) => sum + size, 0);
341
343
  return {
342
344
  async put(absPath) {
@@ -356,7 +358,7 @@ async function openBlobStore(dir) {
356
358
  return hash;
357
359
  },
358
360
  has: (hash) => sizes.has(hash),
359
- read: async (hash) => readFile(pathOf(hash)),
361
+ read: async (hash) => readBlob(dir, hash),
360
362
  writeTo: async (hash, absPath, beforeReplace) => cloneOrCopy(pathOf(hash), absPath, beforeReplace),
361
363
  bytes: () => total,
362
364
  size: (hash) => sizes.get(hash) ?? 0,
@@ -798,6 +800,19 @@ function isHistoryPath(path) {
798
800
  if (KEPT_HIDDEN_PATHS.has(path)) return true;
799
801
  return !path.split("/").some((segment) => segment.startsWith("."));
800
802
  }
803
+ var logFileIn = (home) => join5(home, "log.jsonl");
804
+ function listOf(log) {
805
+ const undone = undoneIds(log.entries);
806
+ return log.entries.map((entry) => ({
807
+ ...entry,
808
+ pinned: log.pins.has(entry.id),
809
+ undone: undone.has(entry.id)
810
+ }));
811
+ }
812
+ function peekOf(log, point) {
813
+ const files = manifestAt(log, point);
814
+ return files && Object.fromEntries(files);
815
+ }
801
816
  function withoutHiddenPaths(log) {
802
817
  for (const path of log.baseline.keys()) if (!isHistoryPath(path)) log.baseline.delete(path);
803
818
  for (const entry of log.entries)
@@ -904,7 +919,7 @@ var Engine = class {
904
919
  return this.foldsCase ? path.toLowerCase() : path;
905
920
  }
906
921
  get logFile() {
907
- return join5(this.home, "log.jsonl");
922
+ return logFileIn(this.home);
908
923
  }
909
924
  now() {
910
925
  return (this.options.now ?? Date.now)();
@@ -1574,12 +1589,7 @@ var Engine = class {
1574
1589
  },
1575
1590
  list: () => {
1576
1591
  this.assertOpen();
1577
- const undone = undoneIds(this.log.entries);
1578
- return this.log.entries.map((entry) => ({
1579
- ...entry,
1580
- pinned: this.log.pins.has(entry.id),
1581
- undone: undone.has(entry.id)
1582
- }));
1592
+ return listOf(this.log);
1583
1593
  },
1584
1594
  step: (direction, who, { writeToken } = {}) => this.operation(writeToken, async () => {
1585
1595
  const target = this.next(direction, who);
@@ -1592,8 +1602,7 @@ var Engine = class {
1592
1602
  ),
1593
1603
  peek: (point) => {
1594
1604
  this.assertOpen();
1595
- const files = manifestAt(this.log, point);
1596
- return files && Object.fromEntries(files);
1605
+ return peekOf(this.log, point);
1597
1606
  },
1598
1607
  checkout: (entryId, side, emptyDir) => this.queue(async () => {
1599
1608
  this.entry(entryId);
@@ -1689,6 +1698,22 @@ async function openProjectHistory(options) {
1689
1698
  throw error;
1690
1699
  }
1691
1700
  }
1701
+ function readProjectHistory(options) {
1702
+ const dir = resolve3(options.projectDir);
1703
+ const id = readId(dir);
1704
+ const home = id && isRecordedFolder(join5(options.historyRoot, id), statSync3(dir)) ? join5(options.historyRoot, id) : null;
1705
+ const read = home && readLog(logFileIn(home), () => {
1706
+ });
1707
+ const log = withoutHiddenPaths(read || { baseline: /* @__PURE__ */ new Map(), entries: [], pins: /* @__PURE__ */ new Set() });
1708
+ return {
1709
+ list: () => listOf(log),
1710
+ peek: (point) => peekOf(log, point),
1711
+ readBlob: async (hash) => {
1712
+ if (!home) throw new Error("That is not a history blob.");
1713
+ return readBlob(join5(home, "blobs"), hash);
1714
+ }
1715
+ };
1716
+ }
1692
1717
  function historyCache(open) {
1693
1718
  const histories = /* @__PURE__ */ new Map();
1694
1719
  const get = async (projectDir) => {
@@ -1736,5 +1761,6 @@ export {
1736
1761
  UNDO_MODES,
1737
1762
  HistoryClosedError,
1738
1763
  openProjectHistory,
1764
+ readProjectHistory,
1739
1765
  historyCache
1740
1766
  };
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  FONT_ALIAS_MAP,
16
16
  resolveAliasDisplayName
17
- } from "./chunk-MQZVBHEY.js";
17
+ } from "./chunk-LFNQDTSH.js";
18
18
  import {
19
19
  parseHTML
20
20
  } from "./chunk-SDYDNHEE.js";
@@ -3848,9 +3848,9 @@ async function systemFamilyFaceRules(lookupFamily, emitFamily, log) {
3848
3848
  rules.push(buildFontFaceRule(emitFamily, dataUri, variant.weight, variant.style));
3849
3849
  }
3850
3850
  if (totalBytes > SYSTEM_FONT_SIZE_LIMIT) {
3851
- log.warn(`[Compiler] System font "${lookupFamily}" is large (${(totalBytes / 1024 / 1024).toFixed(1)} MB total across ${variants.length} variant(s)) \u2014 embedding anyway. Consider font subsetting for production.`);
3851
+ log.warn(`[Compiler] System font "${lookupFamily}" is large (${(totalBytes / 1024 / 1024).toFixed(1)} MB total across ${variants.length} variant(s)), embedding anyway. Consider font subsetting for production.`);
3852
3852
  }
3853
- log.info(`[Compiler] Embedded system font "${lookupFamily}" \u2014 ${variants.length} variant(s), ${(totalBytes / 1024).toFixed(0)} KB total`);
3853
+ log.info(`[Compiler] Embedded system font "${lookupFamily}": ${variants.length} variant(s), ${(totalBytes / 1024).toFixed(0)} KB total`);
3854
3854
  return rules;
3855
3855
  }
3856
3856
  async function resolveFamilyFaceRules(normalizedFamily, lookupFamily, emitFamily, optional, options, fontText) {
@@ -4064,7 +4064,7 @@ function fontCacheDir(slug) {
4064
4064
  const fallback = join2(ephemeralFontCacheRoot, slug);
4065
4065
  mkdirSync2(fallback, { recursive: true });
4066
4066
  if (firstFallback) {
4067
- STDERR_LOGGER.warn(`Font cache directory is unwritable (${dir}). Using temporary fallback \u2014 fonts will re-download each run. Fix with: chmod 755 ${resolveFontCacheRoot()}`);
4067
+ STDERR_LOGGER.warn(`Font cache directory is unwritable (${dir}). Using temporary fallback, so fonts will re-download each run. Fix with: chmod 755 ${resolveFontCacheRoot()}`);
4068
4068
  }
4069
4069
  return fallback;
4070
4070
  }
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-AWDFDFI3.js";
15
15
  import {
16
16
  isBlockedNetworkHost
17
- } from "./chunk-UXO2L7HJ.js";
17
+ } from "./chunk-JF5L5SQ6.js";
18
18
  import {
19
19
  DOMParser,
20
20
  parseHTML
@@ -116,7 +116,7 @@ function resolveSlideshow(manifest, scenes) {
116
116
  const sequences = {};
117
117
  for (const seq of manifest.slideSequences ?? []) {
118
118
  if (Object.prototype.hasOwnProperty.call(sequences, seq.id)) {
119
- errors.push(`duplicate slideSequence id "${seq.id}" \u2014 only the last definition is kept`);
119
+ errors.push(`duplicate slideSequence id "${seq.id}": only the last definition is kept`);
120
120
  }
121
121
  sequences[seq.id] = {
122
122
  id: seq.id,
@@ -38,7 +38,7 @@ import {
38
38
  stripEmbeddedRuntimeScripts,
39
39
  styleElementsFor,
40
40
  warnUnknownEnumValues
41
- } from "./chunk-AUWHD7RA.js";
41
+ } from "./chunk-Z6FLHIDV.js";
42
42
  import {
43
43
  cssVariableName
44
44
  } from "./chunk-VC76R6W2.js";
@@ -48,7 +48,7 @@ import {
48
48
  } from "./chunk-OFQWTKPW.js";
49
49
  import {
50
50
  lintHyperframeHtml
51
- } from "./chunk-IEIJRMLZ.js";
51
+ } from "./chunk-JDB65PPT.js";
52
52
  import {
53
53
  checkSubCompositionUsability,
54
54
  resolveSubCompositionContent