hyperframes 0.8.174 → 0.8.175

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 (161) hide show
  1. package/dist/{add-XANMFNIP.js → add-S4AOKSNH.js} +11 -11
  2. package/dist/{animatedGifPrep-OUQ4M2T3.js → animatedGifPrep-QRDM2NMV.js} +5 -5
  3. package/dist/api.js +14 -14
  4. package/dist/{asset-SVONSQ67.js → asset-DQ45BUBL.js} +2 -2
  5. package/dist/{assetCataloger-AG77T6SF.js → assetCataloger-NPDCMAYE.js} +5 -5
  6. package/dist/{audio-DMQOTXKL.js → audio-OOAXEELO.js} +11 -11
  7. package/dist/{auth-ED7SPBS6.js → auth-33IY64LT.js} +1 -1
  8. package/dist/{autoUpdate-4QQYZOVT.js → autoUpdate-KGLJUGNZ.js} +2 -2
  9. package/dist/{backgroundChecks-2VT46P5S.js → backgroundChecks-DQPHYLVN.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-KIYAPCTG.js → batchRender-KXXTVNPB.js} +3 -3
  12. package/dist/{beats-OE7M5BEE.js → beats-WDYSCACS.js} +4 -4
  13. package/dist/{benchmark-2ZQP2RNF.js → benchmark-WOAULMYW.js} +8 -8
  14. package/dist/{browser-CSSJ3VWW.js → browser-2HX46R74.js} +3 -3
  15. package/dist/{bundleWithLocalizedFonts-ZUC4MLSO.js → bundleWithLocalizedFonts-32N7TVM6.js} +2 -2
  16. package/dist/{capture-APNSW4ZT.js → capture-5ASPHTMF.js} +8 -8
  17. package/dist/{capture-3NXAHID3.js → capture-7LR5UVM2.js} +2 -2
  18. package/dist/{catalog-CFDBIVSC.js → catalog-LVW3RT4U.js} +11 -11
  19. package/dist/{catch-up-OUK522JT.js → catch-up-W6Z73GXL.js} +4 -4
  20. package/dist/{check-PUDEOXGP.js → check-C23ZWACZ.js} +50 -44
  21. package/dist/{checkBrowser-PMRJSTFJ.js → checkBrowser-WS6FSLBJ.js} +176 -80
  22. package/dist/{chunk-CI7ZHFSV.js → chunk-3Q4Y33FT.js} +6 -6
  23. package/dist/{chunk-RLBLLBLL.js → chunk-3SWMUZ4Y.js} +2 -2
  24. package/dist/{chunk-DRR3UMIY.js → chunk-3X3CELOP.js} +1 -1
  25. package/dist/{chunk-RZ2FMZ5U.js → chunk-42T7OP4O.js} +1 -1
  26. package/dist/{chunk-JL76Y45C.js → chunk-4XM6VXLN.js} +7 -7
  27. package/dist/{chunk-HIYAJFRH.js → chunk-7E4YFL4U.js} +1 -1
  28. package/dist/{chunk-4WQUBVDO.js → chunk-7GUAZGSW.js} +3 -3
  29. package/dist/{chunk-XRQBHOBT.js → chunk-B4VT6YU2.js} +2 -2
  30. package/dist/{chunk-RNKNDYBN.js → chunk-BHMWVRNS.js} +1 -1
  31. package/dist/{chunk-TI3HKGQC.js → chunk-CEYY3SOX.js} +3 -3
  32. package/dist/{chunk-GXWV4FNV.js → chunk-DQY6WTF7.js} +1 -1
  33. package/dist/{chunk-ALCCEHX2.js → chunk-DZMWNCHM.js} +2 -2
  34. package/dist/chunk-EEXE43II.js +3805 -0
  35. package/dist/{chunk-QUK2IZKI.js → chunk-EKDTCSCL.js} +1 -1
  36. package/dist/{chunk-AR2SEGPZ.js → chunk-FRNKM4MG.js} +1 -1
  37. package/dist/{chunk-QRO2UBWS.js → chunk-G7I3WZK4.js} +1 -1
  38. package/dist/{chunk-W4AECR7V.js → chunk-IUOPF3DL.js} +1 -1
  39. package/dist/{chunk-PLYTTPVE.js → chunk-J53AJK3Q.js} +2 -2
  40. package/dist/{chunk-UQLXFITA.js → chunk-JNL3RMDG.js} +1 -1
  41. package/dist/{chunk-55LJK3H2.js → chunk-JT7PV3GL.js} +3 -3
  42. package/dist/{chunk-SH43VDEF.js → chunk-KHR4IJAW.js} +175 -119
  43. package/dist/{chunk-ONXTLGJB.js → chunk-KZHYAGC3.js} +3 -3
  44. package/dist/{chunk-LUKY7253.js → chunk-KZQGUXG5.js} +10 -10
  45. package/dist/{chunk-MXNPYP5F.js → chunk-LY2GLSOS.js} +1 -1
  46. package/dist/{chunk-UDJHYQSZ.js → chunk-LZT3NUTE.js} +1 -1
  47. package/dist/{chunk-3MDO2Q4F.js → chunk-MJZQ44NV.js} +1 -1
  48. package/dist/{chunk-SI76MFBF.js → chunk-NELZN7SV.js} +2 -2
  49. package/dist/{chunk-HB2UP4V7.js → chunk-NSWIF4VH.js} +1 -1
  50. package/dist/{chunk-S5D4Q74P.js → chunk-NWEER3QY.js} +2 -2
  51. package/dist/{chunk-4PX47Z65.js → chunk-NZRAS3FB.js} +1 -1
  52. package/dist/{chunk-2CDBTQKS.js → chunk-NZZYJOMJ.js} +41 -18
  53. package/dist/{chunk-EJZJ5AY7.js → chunk-O6FWDZYJ.js} +1 -1
  54. package/dist/{chunk-X3BE2HX4.js → chunk-OUMYTLPP.js} +3 -3
  55. package/dist/{chunk-H2BPHBDY.js → chunk-OYEDHVSI.js} +1 -1
  56. package/dist/{chunk-D2YN4FNH.js → chunk-PBKOURSI.js} +1 -1
  57. package/dist/{chunk-UKAOWORD.js → chunk-QMQZXNGU.js} +5 -5
  58. package/dist/{chunk-APMA7XXB.js → chunk-QWCXGTOH.js} +1 -1
  59. package/dist/{chunk-SEHRMJTO.js → chunk-RAZVWSU5.js} +3 -3
  60. package/dist/{chunk-XVIFWEPR.js → chunk-RERXOG54.js} +2 -2
  61. package/dist/{chunk-4VTUDCHM.js → chunk-S354WIFQ.js} +1 -1
  62. package/dist/{chunk-QJCVK7CI.js → chunk-TNDNFZOK.js} +2 -2
  63. package/dist/{chunk-RYR3LTZR.js → chunk-UWUKJDTA.js} +2 -2
  64. package/dist/{chunk-2XSAYE7U.js → chunk-V7T7WA2K.js} +2 -2
  65. package/dist/{chunk-RMKL5FVH.js → chunk-VEQ7DKPG.js} +1 -1
  66. package/dist/{chunk-B23GBPCW.js → chunk-W5USVP6Z.js} +1 -1
  67. package/dist/{chunk-6HF2WFPV.js → chunk-WDFLYDKN.js} +4 -4
  68. package/dist/{chunk-W3YVQ6VI.js → chunk-XDK2FUAC.js} +9 -9
  69. package/dist/{chunk-EAR5LFOH.js → chunk-XRRDVRCY.js} +1 -1
  70. package/dist/{chunk-CSMKMVGG.js → chunk-YCSCDQDS.js} +5 -5
  71. package/dist/{chunk-JKPI7VLI.js → chunk-YMU42UU2.js} +1 -1
  72. package/dist/{chunk-G4UUEQDT.js → chunk-Z2R7CFWH.js} +1 -1
  73. package/dist/{chunk-SEXAKOK3.js → chunk-ZD7QKZSS.js} +2 -2
  74. package/dist/{chunk-HZZYJV7K.js → chunk-ZDOWJ3NS.js} +10 -10
  75. package/dist/{chunk-HZZZ6C6Z.js → chunk-ZGSLXWH2.js} +1 -1
  76. package/dist/{chunk-LR72ON5B.js → chunk-ZXHEOTYW.js} +1 -1
  77. package/dist/{clean-6SVCU47L.js → clean-KBNXV6DP.js} +13 -13
  78. package/dist/cli.js +53 -53
  79. package/dist/{cloud-TIISRMZV.js → cloud-BWWKDRR6.js} +4 -4
  80. package/dist/{cloudrun-4TMBWELQ.js → cloudrun-P35BPQCO.js} +4 -4
  81. package/dist/commands/contrast-audit.browser.js +18 -50
  82. package/dist/{compare-YV2XTKYX.js → compare-UWJRKF5K.js} +23 -23
  83. package/dist/{compiler-O5R3ZZDV.js → compiler-5TFPJPQQ.js} +2 -2
  84. package/dist/{component-7LWSMRKZ.js → component-SWOGSIO2.js} +3 -3
  85. package/dist/{compositions-5VTSC4M3.js → compositions-PIPVEXE3.js} +9 -9
  86. package/dist/{delete-AV2SKLZW.js → delete-OXIDK7N3.js} +3 -3
  87. package/dist/{deterministicFonts-RWGQPEZU.js → deterministicFonts-L7YEEFGI.js} +1 -1
  88. package/dist/{dist-4FY5EEH5.js → dist-U2HCECNB.js} +2 -2
  89. package/dist/{doctor-XOCYSEAZ.js → doctor-KLQLFPCF.js} +9 -9
  90. package/dist/{events-MAZUZI43.js → events-EGCYD45B.js} +3 -3
  91. package/dist/{events-6QPRKX45.js → events-EVTTGISX.js} +2 -2
  92. package/dist/{feedback-MGRILBMP.js → feedback-G4WZLOVD.js} +6 -6
  93. package/dist/{ffmpeg-YCULCUB2.js → ffmpeg-QIYSAPHO.js} +5 -5
  94. package/dist/{figma-UMBACTCG.js → figma-Q4CKDE7M.js} +3 -3
  95. package/dist/fontLocalizeCli.js +8 -8
  96. package/dist/{get-LWEOLWYN.js → get-NPRQH64W.js} +3 -3
  97. package/dist/{gpuPolicy-MCIQK5Z7.js → gpuPolicy-L72BQRFR.js} +5 -5
  98. package/dist/{grade-compare-MZQOTX3F.js → grade-compare-H4NJEL4P.js} +24 -24
  99. package/dist/{help-THPG2NRP.js → help-2S3XXDEA.js} +1 -1
  100. package/dist/{history-2IQYTDU5.js → history-X4CGCVEQ.js} +6 -6
  101. package/dist/hyperframe-runtime.js +59 -59
  102. package/dist/hyperframe.manifest.json +1 -1
  103. package/dist/hyperframe.runtime.iife.js +59 -59
  104. package/dist/hyperframes-player.global.js +3 -3
  105. package/dist/{info-CXMADV6K.js → info-YYUISGL7.js} +7 -7
  106. package/dist/{init-Y5GU454D.js → init-BAAI4ZMR.js} +25 -25
  107. package/dist/{inspect-S7JDKEMJ.js → inspect-LXJ3XJUZ.js} +24 -24
  108. package/dist/{installer-AY23RPEZ.js → installer-NY5E5HCO.js} +4 -4
  109. package/dist/{keyframes-FKYT6QAJ.js → keyframes-NXXJSQWG.js} +6 -6
  110. package/dist/{lambda-7WMZGRH5.js → lambda-PG3JKNWS.js} +5 -5
  111. package/dist/{layout-LL4GOS6G.js → layout-CBFO36IE.js} +24 -24
  112. package/dist/{lint-2M7FY4ZT.js → lint-Y6NWQTKF.js} +6 -6
  113. package/dist/{list-SZBMUHBW.js → list-VY6KIYTX.js} +3 -3
  114. package/dist/{login-QRACITGK.js → login-426Q3H3P.js} +4 -4
  115. package/dist/{manager-W2BTPAVT.js → manager-3RRUFZ4H.js} +6 -6
  116. package/dist/{media-treatment-E4VJETTT.js → media-treatment-ZVIXMJZJ.js} +11 -11
  117. package/dist/{models-AHO3MYE7.js → models-KC2QBPVK.js} +9 -9
  118. package/dist/{motionShot-LMMYPGPT.js → motionShot-3ZSLQJ4D.js} +12 -12
  119. package/dist/{normalize-audio-RDWIWZOO.js → normalize-audio-DRU5LFYU.js} +4 -4
  120. package/dist/{open-WOKRHFDH.js → open-LPBZQ4DC.js} +11 -11
  121. package/dist/{parakeetRunner-RY2KIE63.js → parakeetRunner-IFY6NK5G.js} +11 -11
  122. package/dist/{pipeline-LEA32KLW.js → pipeline-AGMCDT5A.js} +6 -6
  123. package/dist/{play-3S46XG66.js → play-WVWXNQED.js} +16 -16
  124. package/dist/{preflight-MCOFNWFQ.js → preflight-I5JGCCKM.js} +6 -6
  125. package/dist/{present-GR7F4CTI.js → present-IPTWJUKY.js} +12 -12
  126. package/dist/{preview-TKEAF3KR.js → preview-JVLRQVD7.js} +16 -16
  127. package/dist/{producer-BJ5SUPVD.js → producer-HKGHSAON.js} +1 -1
  128. package/dist/{projectConfig-YJBYWSNK.js → projectConfig-HDALEM6S.js} +6 -6
  129. package/dist/{publication-2HXIW4LS.js → publication-NX4VC7UU.js} +2 -2
  130. package/dist/{publish-LHJFEKEI.js → publish-AZRRQUXM.js} +7 -7
  131. package/dist/{remove-background-AQUUVAPD.js → remove-background-WY7KA77M.js} +7 -7
  132. package/dist/{render-B5S7FLLS.js → render-BEDATKWV.js} +9 -9
  133. package/dist/{render-AXTGGHVZ.js → render-HGT3EGIK.js} +3 -3
  134. package/dist/{render-AOHXNGIM.js → render-P3PFNCBA.js} +25 -25
  135. package/dist/{render-batch-DMQG3QWK.js → render-batch-MUCDZ2WF.js} +3 -3
  136. package/dist/{resolver-FV54X3T2.js → resolver-FLQ42X2Y.js} +4 -4
  137. package/dist/{sherpa-RKURBTUM.js → sherpa-SQGEFX3S.js} +10 -10
  138. package/dist/{skills-YUXI4IRF.js → skills-D2FIQ2JN.js} +5 -5
  139. package/dist/{skillsUpdateCheck-HK3GDYD6.js → skillsUpdateCheck-2OLTHCBX.js} +3 -3
  140. package/dist/{snapshot-D6Q52Z4X.js → snapshot-R7U73M3N.js} +27 -27
  141. package/dist/{src-MRYINZ62.js → src-4COYCAFY.js} +4 -4
  142. package/dist/{src-DPR7JBU3.js → src-WOD4AEI3.js} +7 -7
  143. package/dist/{staticProjectServer-RT7JATD2.js → staticProjectServer-DG4VZO4G.js} +12 -12
  144. package/dist/studio/assets/{hyperframes-player-B4KfQdfl.js → hyperframes-player-BByRREAU.js} +1 -1
  145. package/dist/studio/assets/{index-Bsc8xBh9.js → index-CULLUqJo.js} +1 -1
  146. package/dist/studio/assets/{index-DGl_Zvb3.js → index-Wz-WEqHg.js} +97 -97
  147. package/dist/studio/index.html +1 -1
  148. package/dist/{studio-api-NL2RMVB5.js → studio-api-RGNBVLLL.js} +6 -6
  149. package/dist/{studioServer-VL2GUVCR.js → studioServer-LC5T4OXQ.js} +42 -42
  150. package/dist/{telemetry-5PJWDFSZ.js → telemetry-BLOE3TWY.js} +3 -3
  151. package/dist/{timeline-OH35TN25.js → timeline-QQPPMADL.js} +14 -14
  152. package/dist/{tokens-YISVK7W2.js → tokens-E3SHBFDU.js} +2 -2
  153. package/dist/{transcribe-KRPN2FWA.js → transcribe-D5N7SBDO.js} +15 -15
  154. package/dist/{transcribe-6KBSE76Q.js → transcribe-O2AQ5E2L.js} +8 -8
  155. package/dist/{updateCheck-QCZTFFSQ.js → updateCheck-ELOZ2CID.js} +2 -2
  156. package/dist/{upgrade-DRFQISI6.js → upgrade-JDFZEPZY.js} +2 -2
  157. package/dist/{urlDownloader-CJDXTKMC.js → urlDownloader-32OGC3EW.js} +4 -4
  158. package/dist/{validate-BKY3FIJC.js → validate-LQQEABER.js} +18 -18
  159. package/dist/{video-3UEJ57Q7.js → video-HXIM27TO.js} +5 -5
  160. package/package.json +1 -1
  161. package/dist/chunk-UKJECUDK.js +0 -3805
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
 
8
8
  // src/utils/producer.ts
9
9
  async function loadProducer() {
10
- return await import("./src-DPR7JBU3.js");
10
+ return await import("./src-WOD4AEI3.js");
11
11
  }
12
12
 
13
13
  export {
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  setHostHandlesSigint
9
- } from "./chunk-XVIFWEPR.js";
9
+ } from "./chunk-RERXOG54.js";
10
10
  import {
11
11
  processAncestorSnapshot,
12
12
  processIdentity,
@@ -1278,7 +1278,7 @@ async function withFigmaErrors(command, fn) {
1278
1278
  } catch (err) {
1279
1279
  if (err instanceof Error) {
1280
1280
  try {
1281
- const { trackCommandFailure } = await import("./events-MAZUZI43.js");
1281
+ const { trackCommandFailure } = await import("./events-EGCYD45B.js");
1282
1282
  trackCommandFailure(
1283
1283
  command,
1284
1284
  err,
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-HIYAJFRH.js";
9
+ } from "./chunk-7E4YFL4U.js";
10
10
  import {
11
11
  DEFAULT_HISTORY_ROOT,
12
12
  HistoryBusyError,
@@ -6,10 +6,10 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  getMimeType
9
- } from "./chunk-CI7ZHFSV.js";
9
+ } from "./chunk-3Q4Y33FT.js";
10
10
  import {
11
11
  injectTagsAtHeadStart
12
- } from "./chunk-UKJECUDK.js";
12
+ } from "./chunk-EEXE43II.js";
13
13
 
14
14
  // src/utils/compositionServer.ts
15
15
  import { createHash } from "crypto";
@@ -37,7 +37,7 @@ import {
37
37
  stripEmbeddedRuntimeScripts,
38
38
  styleElementsFor,
39
39
  warnUnknownEnumValues
40
- } from "./chunk-UKJECUDK.js";
40
+ } from "./chunk-EEXE43II.js";
41
41
  import {
42
42
  cssVariableName
43
43
  } from "./chunk-VC76R6W2.js";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  downloadToFile
9
- } from "./chunk-2CDBTQKS.js";
9
+ } from "./chunk-NZZYJOMJ.js";
10
10
  import {
11
11
  CACHE_DIR,
12
12
  PINNED_PACKAGES,
@@ -21,10 +21,10 @@ import {
21
21
  emitWords,
22
22
  getPreparedWavDurationSeconds,
23
23
  prepareWav
24
- } from "./chunk-TI3HKGQC.js";
24
+ } from "./chunk-CEYY3SOX.js";
25
25
  import {
26
26
  stoppedByCancelSignal
27
- } from "./chunk-AR2SEGPZ.js";
27
+ } from "./chunk-FRNKM4MG.js";
28
28
  import {
29
29
  PARAKEET_MODEL_LABEL,
30
30
  SHERPA_ERROR_PREFIX,
@@ -12,25 +12,25 @@ import {
12
12
  launchManagedBrowser,
13
13
  resolveManagedGpuMode,
14
14
  rethrowAfterBrowserCleanup
15
- } from "./chunk-EAR5LFOH.js";
15
+ } from "./chunk-XRRDVRCY.js";
16
16
  import {
17
17
  pageNavigationTimeoutMs,
18
18
  windowsChromeCrashRemediation
19
- } from "./chunk-SEHRMJTO.js";
19
+ } from "./chunk-RAZVWSU5.js";
20
20
  import {
21
21
  oneProcessOverPipe
22
22
  } from "./chunk-BRHI7EIA.js";
23
23
  import {
24
24
  resolveLocalBrowserGpuMode,
25
25
  resolveLocalWebGpu
26
- } from "./chunk-2XSAYE7U.js";
26
+ } from "./chunk-V7T7WA2K.js";
27
27
  import {
28
28
  c
29
29
  } from "./chunk-ZTZA4UWZ.js";
30
30
  import {
31
31
  assertWebGpuAdapterAvailable,
32
32
  compositionRequiresWebGpu
33
- } from "./chunk-XVIFWEPR.js";
33
+ } from "./chunk-RERXOG54.js";
34
34
  import {
35
35
  normalizeErrorMessage
36
36
  } from "./chunk-KNU5COPB.js";
@@ -39,13 +39,17 @@ import {
39
39
  import { spawn } from "child_process";
40
40
  var SHADER_TRANSITIONS_TIMEOUT_MS = 9e4;
41
41
  var CAPTURE_SETTLE_MS = 1500;
42
+ var NETWORK_IDLE_MS = 100;
42
43
  var PREFERRED_SEEK_TARGET_WAIT_MS = 500;
43
44
  var DEFAULT_POST_SEEK_FONT_WAIT_MS = 500;
44
45
  var AUDIT_SEEK_OPTIONS = {
45
46
  fallbackToBridgeAndTimelines: true,
46
47
  animationFrameSettle: "double",
47
- waitForFontsMs: 500,
48
- settleMs: 120
48
+ waitForFontsMs: 500
49
+ };
50
+ var SCREENSHOT_SEEK_OPTIONS = {
51
+ ...AUDIT_SEEK_OPTIONS,
52
+ waitForImagesMs: 120
49
53
  };
50
54
  var DENSE_GEOMETRY_SEEK_OPTIONS = {
51
55
  ...AUDIT_SEEK_OPTIONS,
@@ -101,11 +105,41 @@ async function waitForCompositionSettle(page, options) {
101
105
  }).catch(() => {
102
106
  console.warn(` ${c.warn("\u26A0")} Shader transitions did not finish pre-rendering`);
103
107
  });
104
- await page.evaluate(() => document.fonts.ready).catch(() => {
105
- });
106
- await new Promise((resolveSettle) => setTimeout(resolveSettle, CAPTURE_SETTLE_MS));
108
+ await waitForLateSubresources(page);
107
109
  return runtimeReady;
108
110
  }
111
+ async function waitForLateSubresources(page) {
112
+ let cap;
113
+ const deadline = Date.now() + CAPTURE_SETTLE_MS;
114
+ const ready = (async () => {
115
+ await page.waitForFunction(() => document.readyState === "complete", {
116
+ timeout: CAPTURE_SETTLE_MS
117
+ });
118
+ await page.waitForNetworkIdle({
119
+ idleTime: NETWORK_IDLE_MS,
120
+ timeout: Math.max(1, deadline - Date.now())
121
+ });
122
+ await page.evaluate(async () => {
123
+ await Promise.all(Array.from(document.images, (image) => image.decode().catch(() => {
124
+ })));
125
+ await document.fonts.ready;
126
+ });
127
+ })();
128
+ try {
129
+ await Promise.race([
130
+ ready,
131
+ new Promise((resolveCap) => {
132
+ cap = setTimeout(resolveCap, CAPTURE_SETTLE_MS);
133
+ })
134
+ ]);
135
+ } catch {
136
+ await new Promise((resolveCap) => setTimeout(resolveCap, Math.max(0, deadline - Date.now())));
137
+ } finally {
138
+ clearTimeout(cap);
139
+ ready.catch(() => {
140
+ });
141
+ }
142
+ }
109
143
  async function installPageFunctionGuard(page) {
110
144
  await page.evaluateOnNewDocument("self.__name = self.__name || ((fn) => fn);");
111
145
  }
@@ -114,9 +148,9 @@ async function openSettledCompositionPage(html, url, options) {
114
148
  const { ensureBrowser, findSystemBrowser } = await import("./manager-HEUPD2YB.js");
115
149
  const browser = await ensureBrowser({ signal: options.signal });
116
150
  const puppeteer = await import("puppeteer-core");
117
- const { buildChromeArgs } = await import("./src-MRYINZ62.js");
151
+ const { buildChromeArgs } = await import("./src-4COYCAFY.js");
118
152
  const requestedGpuMode = options.browserGpuMode ?? resolveCliChromeGpuMode();
119
- const answer = (await import("./staticProjectServer-RT7JATD2.js")).inProcessAnswer(url);
153
+ const answer = (await import("./staticProjectServer-DG4VZO4G.js")).inProcessAnswer(url);
120
154
  const requiresWebGpu = compositionRequiresWebGpu(html);
121
155
  let softwareWebGpu = false;
122
156
  const launch = async (executablePath) => {
@@ -183,97 +217,96 @@ ${remediation}`,
183
217
  return rethrowAfterBrowserCleanup(chromeBrowser, err);
184
218
  }
185
219
  }
220
+ function seekInPage(t, fallbackToBridgeAndTimelines, exactTime, skipDraws) {
221
+ const getProperty = (target, key) => {
222
+ if ((typeof target !== "object" || target === null) && typeof target !== "function") {
223
+ return void 0;
224
+ }
225
+ return Reflect.get(target, key);
226
+ };
227
+ const call = (fn, receiver, args) => {
228
+ if (typeof fn !== "function") return false;
229
+ Reflect.apply(fn, receiver, args);
230
+ return true;
231
+ };
232
+ const player = Reflect.get(window, "__player");
233
+ if (!player && !fallbackToBridgeAndTimelines) return;
234
+ const safe = Math.max(0, Number(t) || 0);
235
+ const renderSeek = getProperty(player, "renderSeek");
236
+ const playerSeek = getProperty(player, "seek");
237
+ const hf = Reflect.get(window, "__hf");
238
+ const bridgeSeek = getProperty(hf, "seek");
239
+ const gsap = Reflect.get(window, "gsap");
240
+ const ticker = getProperty(gsap, "ticker");
241
+ const seekTo = (time) => {
242
+ if (call(renderSeek, player, exactTime ? [time, { exact: true }] : [time])) {
243
+ } else if (fallbackToBridgeAndTimelines && call(bridgeSeek, hf, [time])) {
244
+ } else if (call(playerSeek, player, [time])) {
245
+ } else if (fallbackToBridgeAndTimelines) {
246
+ const timelines = Reflect.get(window, "__timelines");
247
+ if (typeof timelines === "object" && timelines !== null) {
248
+ for (const key of Object.keys(timelines)) {
249
+ const timeline = Reflect.get(timelines, key);
250
+ call(getProperty(timeline, "pause"), timeline, []);
251
+ call(getProperty(timeline, "seek"), timeline, [time]);
252
+ }
253
+ }
254
+ }
255
+ call(getProperty(ticker, "tick"), ticker, []);
256
+ };
257
+ const gateSlot = /* @__PURE__ */ Symbol.for("hyperframes.webglDrawGate");
258
+ let gate = Reflect.get(window, gateSlot);
259
+ if (skipDraws && !gate) {
260
+ const installed = { skip: false, skipped: false };
261
+ for (const name of ["WebGLRenderingContext", "WebGL2RenderingContext"]) {
262
+ const proto = getProperty(Reflect.get(window, name), "prototype");
263
+ if (!proto) continue;
264
+ for (const method of [
265
+ "clear",
266
+ "drawArrays",
267
+ "drawElements",
268
+ "drawArraysInstanced",
269
+ "drawElementsInstanced",
270
+ "drawRangeElements",
271
+ "blitFramebuffer"
272
+ ]) {
273
+ const draw = getProperty(proto, method);
274
+ if (typeof draw !== "function") continue;
275
+ Reflect.set(proto, method, function(...args) {
276
+ if (!installed.skip) return Reflect.apply(draw, this, args);
277
+ installed.skipped = true;
278
+ return void 0;
279
+ });
280
+ }
281
+ }
282
+ Reflect.set(window, gateSlot, installed);
283
+ gate = installed;
284
+ }
285
+ const seekWithoutDraws = (time) => {
286
+ if (!gate) return seekTo(time);
287
+ gate.skip = true;
288
+ try {
289
+ seekTo(time);
290
+ } finally {
291
+ gate.skip = false;
292
+ }
293
+ };
294
+ if (skipDraws) {
295
+ seekWithoutDraws(safe);
296
+ return;
297
+ }
298
+ if (gate?.skipped) {
299
+ seekWithoutDraws(safe >= 1e-3 ? safe - 1e-3 : safe + 1e-3);
300
+ gate.skipped = false;
301
+ }
302
+ seekTo(safe);
303
+ }
186
304
  async function seekCompositionTimeline(page, timeSeconds, options = {}) {
187
305
  if (options.waitForPreferredSeekTargetMs !== void 0) {
188
306
  await waitForPreferredSeekTarget(page, options.waitForPreferredSeekTargetMs);
189
307
  }
190
308
  await page.evaluate(
191
- // Serialized into the page; the seek-target cascade must stay one function.
192
- // fallow-ignore-next-line complexity
193
- (t, fallbackToBridgeAndTimelines, exactTime, skipDraws) => {
194
- const getProperty = (target, key) => {
195
- if ((typeof target !== "object" || target === null) && typeof target !== "function") {
196
- return void 0;
197
- }
198
- return Reflect.get(target, key);
199
- };
200
- const call = (fn, receiver, args) => {
201
- if (typeof fn !== "function") return false;
202
- Reflect.apply(fn, receiver, args);
203
- return true;
204
- };
205
- const player = Reflect.get(window, "__player");
206
- if (!player && !fallbackToBridgeAndTimelines) return;
207
- const safe = Math.max(0, Number(t) || 0);
208
- const renderSeek = getProperty(player, "renderSeek");
209
- const playerSeek = getProperty(player, "seek");
210
- const hf = Reflect.get(window, "__hf");
211
- const bridgeSeek = getProperty(hf, "seek");
212
- const gsap = Reflect.get(window, "gsap");
213
- const ticker = getProperty(gsap, "ticker");
214
- const seekTo = (time) => {
215
- if (call(renderSeek, player, exactTime ? [time, { exact: true }] : [time])) {
216
- } else if (fallbackToBridgeAndTimelines && call(bridgeSeek, hf, [time])) {
217
- } else if (call(playerSeek, player, [time])) {
218
- } else if (fallbackToBridgeAndTimelines) {
219
- const timelines = Reflect.get(window, "__timelines");
220
- if (typeof timelines === "object" && timelines !== null) {
221
- for (const key of Object.keys(timelines)) {
222
- const timeline = Reflect.get(timelines, key);
223
- call(getProperty(timeline, "pause"), timeline, []);
224
- call(getProperty(timeline, "seek"), timeline, [time]);
225
- }
226
- }
227
- }
228
- call(getProperty(ticker, "tick"), ticker, []);
229
- };
230
- const gateSlot = /* @__PURE__ */ Symbol.for("hyperframes.webglDrawGate");
231
- let gate = Reflect.get(window, gateSlot);
232
- if (skipDraws && !gate) {
233
- const installed = { skip: false, skipped: false };
234
- for (const name of ["WebGLRenderingContext", "WebGL2RenderingContext"]) {
235
- const proto = getProperty(Reflect.get(window, name), "prototype");
236
- if (!proto) continue;
237
- for (const method of [
238
- "clear",
239
- "drawArrays",
240
- "drawElements",
241
- "drawArraysInstanced",
242
- "drawElementsInstanced",
243
- "drawRangeElements",
244
- "blitFramebuffer"
245
- ]) {
246
- const draw = getProperty(proto, method);
247
- if (typeof draw !== "function") continue;
248
- Reflect.set(proto, method, function(...args) {
249
- if (!installed.skip) return Reflect.apply(draw, this, args);
250
- installed.skipped = true;
251
- return void 0;
252
- });
253
- }
254
- }
255
- Reflect.set(window, gateSlot, installed);
256
- gate = installed;
257
- }
258
- const seekWithoutDraws = (time) => {
259
- if (!gate) return seekTo(time);
260
- gate.skip = true;
261
- try {
262
- seekTo(time);
263
- } finally {
264
- gate.skip = false;
265
- }
266
- };
267
- if (skipDraws) {
268
- seekWithoutDraws(safe);
269
- return;
270
- }
271
- if (gate?.skipped) {
272
- seekWithoutDraws(safe >= 1e-3 ? safe - 1e-3 : safe + 1e-3);
273
- gate.skipped = false;
274
- }
275
- seekTo(safe);
276
- },
309
+ seekInPage,
277
310
  timeSeconds,
278
311
  options.fallbackToBridgeAndTimelines === true,
279
312
  options.exactTime === true,
@@ -289,6 +322,7 @@ async function seekCompositionTimeline(page, timeSeconds, options = {}) {
289
322
  { videoFrames: options.waitForVideoFrames !== false }
290
323
  );
291
324
  const animationFrameSettle = options.animationFrameSettle ?? "race";
325
+ const waitForFontsMs = options.waitForFontsMs ?? DEFAULT_POST_SEEK_FONT_WAIT_MS;
292
326
  if (animationFrameSettle === "race") {
293
327
  await page.evaluate(`new Promise(function(r) {
294
328
  var settled = false;
@@ -296,17 +330,17 @@ async function seekCompositionTimeline(page, timeSeconds, options = {}) {
296
330
  window.setTimeout(finish, 100);
297
331
  requestAnimationFrame(function() { requestAnimationFrame(finish); });
298
332
  })`);
299
- } else if (animationFrameSettle === "double") {
333
+ } else if (animationFrameSettle === "double" && !(waitForFontsMs > 0)) {
300
334
  await page.evaluate(
301
335
  () => new Promise(
302
336
  (resolveFrame) => requestAnimationFrame(() => requestAnimationFrame(() => resolveFrame()))
303
337
  )
304
338
  );
305
339
  }
306
- const waitForFontsMs = options.waitForFontsMs ?? DEFAULT_POST_SEEK_FONT_WAIT_MS;
307
340
  if (waitForFontsMs > 0) {
308
- await waitForCompositionFonts(page, waitForFontsMs);
341
+ await waitForCompositionFonts(page, waitForFontsMs, animationFrameSettle === "double" ? 2 : 1);
309
342
  }
343
+ if (options.waitForImagesMs) await waitForCompositionImages(page, options.waitForImagesMs);
310
344
  if (options.settleMs !== void 0) {
311
345
  const settleMs = Math.max(0, options.settleMs);
312
346
  await new Promise((resolveSettle) => setTimeout(resolveSettle, settleMs));
@@ -328,28 +362,48 @@ async function waitForPreferredSeekTarget(page, timeoutMs = PREFERRED_SEEK_TARGE
328
362
  } catch {
329
363
  }
330
364
  }
331
- async function waitForCompositionFonts(page, timeoutMs) {
332
- await page.evaluate((ms) => {
333
- const fonts = Reflect.get(document, "fonts");
334
- if (typeof fonts !== "object" || fonts === null) return Promise.resolve();
335
- void document.body?.offsetHeight;
336
- return new Promise((resolveWait) => {
365
+ async function waitForCompositionImages(page, timeoutMs) {
366
+ await page.evaluate(
367
+ (ms) => new Promise((resolveWait) => {
337
368
  const deadline = setTimeout(resolveWait, ms);
338
- requestAnimationFrame(() => {
339
- const status = Reflect.get(fonts, "status");
340
- const ready = Reflect.get(fonts, "ready");
341
- if (status !== "loading" || !ready) {
342
- clearTimeout(deadline);
343
- resolveWait();
344
- return;
345
- }
346
- Promise.resolve(ready).then(() => {
347
- clearTimeout(deadline);
348
- resolveWait();
369
+ void Promise.all(
370
+ Array.from(document.images, (image) => image.decode().catch(() => {
371
+ }))
372
+ ).then(() => {
373
+ clearTimeout(deadline);
374
+ resolveWait();
375
+ });
376
+ }),
377
+ timeoutMs
378
+ );
379
+ }
380
+ async function waitForCompositionFonts(page, timeoutMs, frames = 1) {
381
+ await page.evaluate(
382
+ ({ ms, frames: count }) => {
383
+ const fonts = Reflect.get(document, "fonts");
384
+ void document.body?.offsetHeight;
385
+ const afterFrames = (left, then) => {
386
+ requestAnimationFrame(() => left > 1 ? afterFrames(left - 1, then) : then());
387
+ };
388
+ return new Promise((resolveWait) => {
389
+ const deadline = setTimeout(resolveWait, ms);
390
+ afterFrames(count, () => {
391
+ const status = fonts ? Reflect.get(fonts, "status") : void 0;
392
+ const ready = fonts ? Reflect.get(fonts, "ready") : void 0;
393
+ if (status !== "loading" || !ready) {
394
+ clearTimeout(deadline);
395
+ resolveWait();
396
+ return;
397
+ }
398
+ Promise.resolve(ready).then(() => {
399
+ clearTimeout(deadline);
400
+ resolveWait();
401
+ });
349
402
  });
350
403
  });
351
- });
352
- }, timeoutMs).catch(() => {
404
+ },
405
+ { ms: timeoutMs, frames }
406
+ ).catch(() => {
353
407
  });
354
408
  }
355
409
  var ZOOM_REGION_PATTERN = /^-?\d+(?:\.\d+)?(?:,-?\d+(?:\.\d+)?){3}$/;
@@ -446,11 +500,13 @@ async function answerPageInProcess(page, url, answer) {
446
500
 
447
501
  export {
448
502
  AUDIT_SEEK_OPTIONS,
503
+ SCREENSHOT_SEEK_OPTIONS,
449
504
  DENSE_GEOMETRY_SEEK_OPTIONS,
450
505
  resolveCliChromeGpuMode,
451
506
  waitForRuntimeReady,
452
507
  installPageFunctionGuard,
453
508
  openSettledCompositionPage,
509
+ seekInPage,
454
510
  seekCompositionTimeline,
455
511
  waitForPreferredSeekTarget,
456
512
  waitForCompositionFonts,
@@ -7,10 +7,10 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parseFeedbackRating,
9
9
  trackRenderFeedback
10
- } from "./chunk-D2YN4FNH.js";
10
+ } from "./chunk-PBKOURSI.js";
11
11
  import {
12
12
  shouldTrack
13
- } from "./chunk-B23GBPCW.js";
13
+ } from "./chunk-W5USVP6Z.js";
14
14
  import {
15
15
  detectAgentRuntime
16
16
  } from "./chunk-T6AGUTZJ.js";
@@ -84,7 +84,7 @@ async function getDoctorSummary() {
84
84
  try {
85
85
  const [{ getSystemMeta }, { findFFmpeg }] = await Promise.all([
86
86
  import("./system-7F3UEHQT.js"),
87
- import("./ffmpeg-YCULCUB2.js")
87
+ import("./ffmpeg-QIYSAPHO.js")
88
88
  ]);
89
89
  const sys = getSystemMeta();
90
90
  const parts = [
@@ -17,12 +17,12 @@ import {
17
17
  iterateFontFamilyDeclarations,
18
18
  normalizeSystemFontPrimaryFamilies,
19
19
  resolveFontFamilyDeclarationFamilies
20
- } from "./chunk-XRQBHOBT.js";
20
+ } from "./chunk-B4VT6YU2.js";
21
21
  import {
22
22
  EncoderInterruptedError,
23
23
  encoderFailureError,
24
24
  prepareAnimatedGifInputs
25
- } from "./chunk-RYR3LTZR.js";
25
+ } from "./chunk-UWUKJDTA.js";
26
26
  import {
27
27
  BROWSER_GPU_NOT_SOFTWARE,
28
28
  CaptureFailure,
@@ -151,7 +151,7 @@ import {
151
151
  validateEngineConfigSnapshot,
152
152
  verifyDiskDrawElementSamples,
153
153
  writeCapturedFrame
154
- } from "./chunk-XVIFWEPR.js";
154
+ } from "./chunk-RERXOG54.js";
155
155
  import {
156
156
  assignBundledRuntimeCompositionIds,
157
157
  buildVariablesByCompScript,
@@ -164,7 +164,7 @@ import {
164
164
  isTemplateEntry,
165
165
  parsesAsScript,
166
166
  prepareFlattenedInnerRoot
167
- } from "./chunk-UQLXFITA.js";
167
+ } from "./chunk-JNL3RMDG.js";
168
168
  import {
169
169
  LOW_MEMORY_TOTAL_MB_THRESHOLD,
170
170
  getCgroupMemoryLimitMb,
@@ -190,7 +190,7 @@ import {
190
190
  resolveAbsoluteMediaStartSeconds,
191
191
  resolveAuthoredTimingWindow,
192
192
  toFps
193
- } from "./chunk-RMKL5FVH.js";
193
+ } from "./chunk-VEQ7DKPG.js";
194
194
  import {
195
195
  COMPOSITION_SOURCE_URL,
196
196
  HF_COLOR_GRADING_ATTR,
@@ -218,7 +218,7 @@ import {
218
218
  shouldClampResolvedMediaDuration,
219
219
  sourceTimeAt,
220
220
  styleElementsFor
221
- } from "./chunk-UKJECUDK.js";
221
+ } from "./chunk-EEXE43II.js";
222
222
  import {
223
223
  MAX_AUDIO_GAIN
224
224
  } from "./chunk-UJKQWGFF.js";
@@ -6574,7 +6574,7 @@ async function readLocalFont(absPath) {
6574
6574
  return { kind: "inline", buffer: Buffer.concat(chunks, totalBytes) };
6575
6575
  }
6576
6576
  async function embedLocalFontFaces(html, projectDir) {
6577
- const { fontToDataUri: toDataUri } = await import("./deterministicFonts-RWGQPEZU.js");
6577
+ const { fontToDataUri: toDataUri } = await import("./deterministicFonts-L7YEEFGI.js");
6578
6578
  const styleBlockRe = /<style\b[^>]*>([\s\S]*?)<\/style>/gi;
6579
6579
  const fontFaceRe = /@font-face\s*\{([^}]*)\}/gi;
6580
6580
  let result = html;
@@ -6612,7 +6612,7 @@ async function embedLocalFontFaces(html, projectDir) {
6612
6612
  embeddedPaths.add(localPath);
6613
6613
  continue;
6614
6614
  }
6615
- dataUri = await toDataUri(font.buffer, ext);
6615
+ dataUri = await toDataUri(font.buffer, ext, { compressToWoff2: false });
6616
6616
  dataUriByAbsolutePath.set(absPath, dataUri);
6617
6617
  defaultLogger.info(
6618
6618
  `[Compiler] Embedded local font file: ${localPath} (${(font.buffer.length / 1024).toFixed(0)} KB \u2192 data URI)`
@@ -14418,7 +14418,7 @@ async function buildLocalExecutionPlan(projectDir, config, executionPlanDir, opt
14418
14418
  if (probeResult.fileServer) closeFileServerSafely(probeResult.fileServer, "plan", log);
14419
14419
  if (probeResult.probeSession) {
14420
14420
  try {
14421
- const { closeCaptureSession: closeCaptureSession2 } = await import("./src-MRYINZ62.js");
14421
+ const { closeCaptureSession: closeCaptureSession2 } = await import("./src-4COYCAFY.js");
14422
14422
  await closeCaptureSession2(probeResult.probeSession);
14423
14423
  } catch (err) {
14424
14424
  log.warn("[plan] probe session close failed", {
@@ -15964,7 +15964,7 @@ function startServer(options = {}) {
15964
15964
  });
15965
15965
  async function shutdown(signal) {
15966
15966
  log.info(`Received ${signal}, shutting down`);
15967
- const { drainBrowserPool } = await import("./src-MRYINZ62.js");
15967
+ const { drainBrowserPool } = await import("./src-4COYCAFY.js");
15968
15968
  await drainBrowserPool().catch(() => {
15969
15969
  });
15970
15970
  const handle = await Promise.race([
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  formatVariableValidationIssue,
21
21
  validateVariables
22
- } from "./chunk-RMKL5FVH.js";
22
+ } from "./chunk-VEQ7DKPG.js";
23
23
  import {
24
24
  extractCompositionMetadata
25
25
  } from "./chunk-YMS5FOMC.js";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-HVW7ABXD.js";
13
13
  import {
14
14
  DEFAULT_REGISTRY_URL
15
- } from "./chunk-H2BPHBDY.js";
15
+ } from "./chunk-OYEDHVSI.js";
16
16
 
17
17
  // src/utils/projectConfig.ts
18
18
  import { readFileSync, writeFileSync } from "fs";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  updateNoticesSuppressed
9
- } from "./chunk-JKPI7VLI.js";
9
+ } from "./chunk-YMU42UU2.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";
@@ -6,8 +6,8 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
 
8
8
  // src/version.ts
9
- var VERSION = true ? "0.8.174" : "0.0.0-dev";
10
- var PRODUCER_VERSION = true ? "0.8.174" : "0.0.0-dev";
9
+ var VERSION = true ? "0.8.175" : "0.0.0-dev";
10
+ var PRODUCER_VERSION = true ? "0.8.175" : "0.0.0-dev";
11
11
 
12
12
  export {
13
13
  VERSION,
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-PO2SDVQA.js";
10
10
  import {
11
11
  findFFmpeg
12
- } from "./chunk-4VTUDCHM.js";
12
+ } from "./chunk-S354WIFQ.js";
13
13
  import {
14
14
  stoppableExecFile
15
15
  } from "./chunk-HU2SPFNG.js";
@@ -8,14 +8,14 @@ import {
8
8
  DEFAULT_REGISTRY_URL,
9
9
  fetchItemFile,
10
10
  validRegistryItem
11
- } from "./chunk-H2BPHBDY.js";
11
+ } from "./chunk-OYEDHVSI.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-RMKL5FVH.js";
18
+ } from "./chunk-VEQ7DKPG.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
  VERSION
9
- } from "./chunk-SI76MFBF.js";
9
+ } from "./chunk-NELZN7SV.js";
10
10
 
11
11
  // src/registry/compatibility.ts
12
12
  import { compareVersions } from "compare-versions";