hyperframes 0.8.190 → 0.8.192

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-DBKN5H7H.js → add-TZU2UW7A.js} +17 -17
  2. package/dist/{animatedGifPrep-YVBKKLQY.js → animatedGifPrep-NLAXC3VV.js} +11 -10
  3. package/dist/api.js +24 -23
  4. package/dist/{appHistory-TH3TL6N6.js → appHistory-QVCSAOI4.js} +1 -1
  5. package/dist/{asset-2OHQKUMQ.js → asset-JAJXA6LB.js} +2 -2
  6. package/dist/{assetCataloger-O3QAUWIK.js → assetCataloger-4WTX3J4I.js} +13 -12
  7. package/dist/{audio-IR3JGCMM.js → audio-XLWC7JKS.js} +22 -21
  8. package/dist/{auth-J6TAJLGD.js → auth-5K6X3NPJ.js} +4 -4
  9. package/dist/{autoUpdate-D7BJJUT2.js → autoUpdate-RNV7SKGB.js} +4 -4
  10. package/dist/{backgroundChecks-AILHY2YZ.js → backgroundChecks-QXLVZVGX.js} +5 -5
  11. package/dist/backgroundChecksWorker.js +5 -5
  12. package/dist/{batchRender-QZKFVWEI.js → batchRender-THKSPDZR.js} +14 -7
  13. package/dist/{beats-6LOEKZPB.js → beats-K7CGCFVL.js} +53 -15
  14. package/dist/{benchmark-RJMHI3YW.js → benchmark-PHRDIXNL.js} +18 -14
  15. package/dist/{browser-Q3Q36FE3.js → browser-GN6R5ZSK.js} +7 -7
  16. package/dist/{bundleWithLocalizedFonts-RWHFMSFL.js → bundleWithLocalizedFonts-C325UNR4.js} +3 -3
  17. package/dist/{capture-2PNTGVYV.js → capture-6UBQFHZQ.js} +76 -68
  18. package/dist/{capture-FO3ZZCT4.js → capture-BZ7APOGQ.js} +3 -3
  19. package/dist/{captureCompositionFrame-WTMLWVEJ.js → captureCompositionFrame-VORSCTWC.js} +19 -16
  20. package/dist/{catalog-LUZYPUYT.js → catalog-PHU2RUZ3.js} +18 -18
  21. package/dist/{catch-up-TUTLUTFP.js → catch-up-HCNRM46J.js} +7 -7
  22. package/dist/{check-K2TBTJZS.js → check-TJ5ZLB4I.js} +43 -42
  23. package/dist/{checkBrowser-JT7CXDT6.js → checkBrowser-DWP7ZXJ7.js} +38 -37
  24. package/dist/{chunk-STJ2ANMF.js → chunk-2HP5GIQ3.js} +3 -3
  25. package/dist/{chunk-L34DPWY4.js → chunk-2J3NA3OB.js} +13 -13
  26. package/dist/{chunk-B2A56S5C.js → chunk-2MCXIY4B.js} +13 -10
  27. package/dist/{chunk-DCAI5DBR.js → chunk-2ST4WAFY.js} +9 -1
  28. package/dist/{chunk-TSFA2Y5C.js → chunk-2VXY3PEF.js} +99 -69
  29. package/dist/{chunk-AYFF3GX6.js → chunk-32NB4VMH.js} +1 -1
  30. package/dist/{chunk-IXLUTE6N.js → chunk-3422KMTD.js} +5 -1
  31. package/dist/{chunk-JB7LML5B.js → chunk-3CXIX6XS.js} +68 -7
  32. package/dist/{chunk-F6DNM676.js → chunk-3FV5BVWS.js} +2 -2
  33. package/dist/{chunk-OTQXYTQZ.js → chunk-4E75LHAL.js} +23 -3
  34. package/dist/{chunk-TMBUBLZB.js → chunk-4HCJOFMB.js} +166 -46
  35. package/dist/{chunk-UZ7RJDEC.js → chunk-5IPKQHOL.js} +17 -6
  36. package/dist/{chunk-WBUO6WH6.js → chunk-5TRFLZ5Z.js} +2 -2
  37. package/dist/{chunk-HRPWRZGF.js → chunk-6N65ZMC5.js} +1 -1
  38. package/dist/{chunk-XUXGIA7H.js → chunk-6NLPPKBO.js} +1 -2
  39. package/dist/{chunk-3QLT727N.js → chunk-6WNLQI63.js} +4 -4
  40. package/dist/{chunk-XNLYMHX2.js → chunk-6XVKMBUA.js} +9 -6
  41. package/dist/{chunk-JLSXXMRU.js → chunk-7JJMT6LN.js} +1 -1
  42. package/dist/{chunk-7JHTNUF2.js → chunk-7LLRMYP6.js} +2 -2
  43. package/dist/{chunk-BT64TTSE.js → chunk-7RSY7SZN.js} +2 -2
  44. package/dist/{chunk-DX7VEUBO.js → chunk-7UZC4N62.js} +1 -1
  45. package/dist/{chunk-YT5VLUHM.js → chunk-A4OI5ZNX.js} +1 -1
  46. package/dist/{chunk-TSQAPPRS.js → chunk-AEXVVABM.js} +83 -45
  47. package/dist/{chunk-Y5L5I4US.js → chunk-AMZJFCOX.js} +8 -8
  48. package/dist/{chunk-WCT6KGGT.js → chunk-AR46ND2Q.js} +1 -1
  49. package/dist/chunk-B2XLXD7V.js +3897 -0
  50. package/dist/{chunk-KNQQZRB2.js → chunk-BEOK6F26.js} +2 -2
  51. package/dist/{chunk-76ITJYXX.js → chunk-BPKLUHFT.js} +7 -7
  52. package/dist/{chunk-OOAVKK2W.js → chunk-BV6YE455.js} +2 -2
  53. package/dist/{chunk-XGHHVYC7.js → chunk-BY6OQ6XP.js} +2 -2
  54. package/dist/{chunk-JQYJXUJW.js → chunk-C6KE4AFW.js} +1 -1
  55. package/dist/{chunk-TMK4Q7JA.js → chunk-CFUCHO4T.js} +20 -5
  56. package/dist/{chunk-FANFO5HI.js → chunk-CXRZBWSH.js} +11 -11
  57. package/dist/chunk-CZGHFATT.js +31 -0
  58. package/dist/{chunk-CYBXXSC4.js → chunk-DIKAPMMF.js} +2 -2
  59. package/dist/{chunk-7L37AB57.js → chunk-E3P3LJG6.js} +9 -9
  60. package/dist/{chunk-EU5HTY3E.js → chunk-E5V6WEMK.js} +58 -23
  61. package/dist/{chunk-HJZ5CPZA.js → chunk-EKGGSAWR.js} +6 -5
  62. package/dist/{chunk-7KVVNF7B.js → chunk-ELP5QZWL.js} +1 -1
  63. package/dist/{chunk-QH3T4WI2.js → chunk-EXAX37XR.js} +8 -2
  64. package/dist/{chunk-EI7FP7F3.js → chunk-FBVUAH7N.js} +12 -2
  65. package/dist/{chunk-TTZTGXKG.js → chunk-GANST5K3.js} +2 -2
  66. package/dist/{chunk-EQF6TVWB.js → chunk-IMSI7IFW.js} +65 -29
  67. package/dist/{chunk-W64L7IFS.js → chunk-IW5G323T.js} +1 -1
  68. package/dist/{chunk-RBGNU7VD.js → chunk-J2ASTCU6.js} +2 -2
  69. package/dist/{chunk-SUSSMCWL.js → chunk-J2BSUF6X.js} +1 -1
  70. package/dist/{chunk-GGVGOY6M.js → chunk-JCDYDF54.js} +2 -2
  71. package/dist/{chunk-EPOYPP36.js → chunk-K2AKVYNR.js} +2 -2
  72. package/dist/{chunk-XBGEWNGQ.js → chunk-KZOZN4PI.js} +4 -4
  73. package/dist/{chunk-E7DXKMKU.js → chunk-L2YGSAOL.js} +3 -3
  74. package/dist/{chunk-2FFOLLU2.js → chunk-LOKCBZYF.js} +3 -3
  75. package/dist/{chunk-56IDMP37.js → chunk-MEE4NTPZ.js} +2 -2
  76. package/dist/{chunk-56IOFIYB.js → chunk-MGBUWPXX.js} +2 -2
  77. package/dist/{chunk-K4664CDS.js → chunk-MVIJTXN5.js} +35 -14
  78. package/dist/{chunk-S2IEO6TH.js → chunk-ODBYZIOH.js} +28 -16
  79. package/dist/{chunk-45U3KY7Z.js → chunk-OQL4AJ4X.js} +6 -6
  80. package/dist/{chunk-5C7R55BJ.js → chunk-P2I4RLJE.js} +1 -1
  81. package/dist/{chunk-S7C6EM7N.js → chunk-PFRG5P32.js} +1 -1
  82. package/dist/{chunk-RUOG4VB7.js → chunk-PKZ7RK5N.js} +5 -4
  83. package/dist/{chunk-LLFQA7XF.js → chunk-QFPBRZJD.js} +1 -1
  84. package/dist/{chunk-CWVSJA52.js → chunk-QWLES6YV.js} +3 -3
  85. package/dist/{chunk-OAPYPSEB.js → chunk-QX4TB4NH.js} +292 -79
  86. package/dist/{chunk-BWPY64WA.js → chunk-R2U2G4OS.js} +1 -1
  87. package/dist/{chunk-46HEFGXJ.js → chunk-REUL2KH2.js} +1 -1
  88. package/dist/{chunk-R4QASDTN.js → chunk-RHYOWDI6.js} +2 -2
  89. package/dist/{chunk-DYAPHNV6.js → chunk-RWGASWT7.js} +1 -1
  90. package/dist/chunk-RXATE6FZ.js +385 -0
  91. package/dist/{chunk-CWYS2UNQ.js → chunk-SBBQFPCJ.js} +1 -1
  92. package/dist/{chunk-RDHEG7RX.js → chunk-SK7TR7BL.js} +4 -4
  93. package/dist/{chunk-KNU5COPB.js → chunk-T2EUWCJE.js} +1 -1
  94. package/dist/{chunk-6HYHHMX3.js → chunk-T6O5OLN2.js} +3 -3
  95. package/dist/{chunk-FVD44EQX.js → chunk-ULTKB5FC.js} +65 -23
  96. package/dist/{chunk-B7JFAXDP.js → chunk-VNPADTDD.js} +3 -3
  97. package/dist/{chunk-FUHI34T4.js → chunk-VOM2HLUI.js} +4 -4
  98. package/dist/{chunk-IARWN467.js → chunk-VRAXIQ6I.js} +2 -2
  99. package/dist/{chunk-NAUKCKCJ.js → chunk-W24SZ5FL.js} +4 -4
  100. package/dist/{chunk-ZFFKWHXN.js → chunk-WOKVXK4J.js} +1 -1
  101. package/dist/{chunk-WLG4OYH7.js → chunk-XF77MK3J.js} +1 -1
  102. package/dist/{chunk-DRTIIAIZ.js → chunk-XX2PA4L3.js} +2 -2
  103. package/dist/{chunk-A5YHWTSP.js → chunk-YMQQXPD5.js} +2 -2
  104. package/dist/{chunk-KUMUK6QS.js → chunk-YWRQHRDY.js} +17 -12
  105. package/dist/{chunk-EUUHVDMN.js → chunk-ZEMDV6W2.js} +29 -59
  106. package/dist/{clean-UVTWBPXK.js → clean-2RNCTDBT.js} +40 -27
  107. package/dist/cli.js +69 -67
  108. package/dist/{cloud-M42IPKFD.js → cloud-NFIKESNZ.js} +4 -4
  109. package/dist/{cloudrun-CTNX64R6.js → cloudrun-7224BCX3.js} +9 -9
  110. package/dist/commands/contrast-audit.browser.js +1 -1
  111. package/dist/commands/layout-audit.browser.js +64 -3
  112. package/dist/{compare-MQI7TG5M.js → compare-HL44MXVX.js} +80 -48
  113. package/dist/{compiler-EJE3HLCS.js → compiler-WF5QTXV7.js} +8 -7
  114. package/dist/{component-QSYOSFVV.js → component-ZBZXSJBR.js} +3 -3
  115. package/dist/{compositions-ITDFE7K4.js → compositions-76P7LDDX.js} +19 -17
  116. package/dist/{contactSheet-CAGMKI3E.js → contactSheet-43ISAESM.js} +2 -2
  117. package/dist/{delete-NTGTENKJ.js → delete-4YZBYOHJ.js} +7 -7
  118. package/dist/{deploy-AOJOXEYX.js → deploy-UGUUGYLF.js} +1 -1
  119. package/dist/{deterministicFonts-EGAAE7QL.js → deterministicFonts-RO2TCMLZ.js} +3 -3
  120. package/dist/{dist-NHW2JQCA.js → dist-5KKCRFPT.js} +5 -5
  121. package/dist/{dist-JH32CBQL.js → dist-QQ26RUDV.js} +5 -4
  122. package/dist/docs/rendering.md +2 -2
  123. package/dist/{doctor-Q6DAYVSQ.js → doctor-GGVUK4NB.js} +20 -19
  124. package/dist/{events-BQIBYPCF.js → events-OXPTHVDB.js} +4 -4
  125. package/dist/{events-PV3CDO4A.js → events-V2VU4J3B.js} +5 -5
  126. package/dist/{feedback-BZH26JQE.js → feedback-HFZ5SCUK.js} +16 -16
  127. package/dist/{ffmpeg-KU7RNT3U.js → ffmpeg-3VHY7GO3.js} +13 -12
  128. package/dist/{figma-PBGZUEIL.js → figma-7SEZTLBJ.js} +3 -3
  129. package/dist/fontLocalizeCli.js +14 -13
  130. package/dist/{get-MM2JZ5ET.js → get-Y2S2PXCM.js} +7 -7
  131. package/dist/{gpuPolicy-DQE2CD5T.js → gpuPolicy-UHPOWRV5.js} +11 -10
  132. package/dist/{grade-compare-YTDQ7YXW.js → grade-compare-4VTXSQM5.js} +38 -37
  133. package/dist/{gsapParserAcorn-SKODXC2N.js → gsapParserAcorn-OOTY2MVN.js} +2 -2
  134. package/dist/{help-M4B2DN7E.js → help-HXNOACHI.js} +1 -1
  135. package/dist/{history-ZW4UYKAJ.js → history-XDJUI4LC.js} +39 -16
  136. package/dist/hyperframe.manifest.json +1 -1
  137. package/dist/hyperframe.runtime.iife.js +64 -64
  138. package/dist/hyperframes-player.global.js +3 -3
  139. package/dist/hyperframes-slideshow.global.js +1 -1
  140. package/dist/{info-L7LQAXLK.js → info-KYRI3EZV.js} +56 -22
  141. package/dist/{init-HTSQ535A.js → init-IL7EWMT5.js} +38 -45
  142. package/dist/{inspect-EWF2THRR.js → inspect-TBNH23UC.js} +36 -35
  143. package/dist/{installer-PQKH2S7C.js → installer-O2YMFSI4.js} +8 -8
  144. package/dist/{keyframes-X2QKJ4DP.js → keyframes-4GF62KAJ.js} +13 -14
  145. package/dist/{lambda-BURM66GP.js → lambda-JFL6M4XZ.js} +12 -12
  146. package/dist/{layout-3Z3SJGZZ.js → layout-7MAEFR65.js} +36 -35
  147. package/dist/{lint-OMNZ2K5J.js → lint-4AYHKYAM.js} +23 -16
  148. package/dist/{lintProject-XM3DLUKG.js → lintProject-52SLJPRC.js} +5 -4
  149. package/dist/{list-5ZSQEH6N.js → list-3DP3D3MW.js} +7 -7
  150. package/dist/{login-YNCQPHLA.js → login-T54WQYRQ.js} +7 -7
  151. package/dist/{logout-DDC4QLVK.js → logout-JYFWWUGK.js} +3 -3
  152. package/dist/{manager-UHWEKPXC.js → manager-MZIJY73J.js} +3 -3
  153. package/dist/{manager-N6XXRQN3.js → manager-QROK2IH3.js} +14 -13
  154. package/dist/{media-treatment-EOKBRJPY.js → media-treatment-4CXF7MSG.js} +20 -19
  155. package/dist/{models-6T4CCKUV.js → models-IS3I6JKU.js} +18 -17
  156. package/dist/{motionShot-KXKMYZ3A.js → motionShot-DVYJZOTQ.js} +21 -20
  157. package/dist/{normalize-3AYFSN2F.js → normalize-FASIPBUM.js} +1 -1
  158. package/dist/{normalize-audio-VWB7RHHA.js → normalize-audio-4527JIK4.js} +12 -8
  159. package/dist/{open-32SQCNUP.js → open-5JE46SAX.js} +18 -18
  160. package/dist/{parakeetRunner-BXW2WX6Q.js → parakeetRunner-7JIJGJJ7.js} +20 -19
  161. package/dist/{pipeline-V5ONFRCY.js → pipeline-YEN3WFD2.js} +15 -14
  162. package/dist/{play-BBL262JE.js → play-WFX67I7M.js} +27 -26
  163. package/dist/{policies-MBWGLMWB.js → policies-GHVXA5PE.js} +1 -1
  164. package/dist/{preflight-LCNGQFNY.js → preflight-D377HVUZ.js} +15 -14
  165. package/dist/{present-RY4HO4ZQ.js → present-XTSEKAC7.js} +24 -23
  166. package/dist/{preview-BLLPCCLG.js → preview-5XH7EK6O.js} +28 -26
  167. package/dist/{producer-QG4AQ35S.js → producer-TFFYF4ZM.js} +1 -1
  168. package/dist/{projectConfig-LN3NR5OM.js → projectConfig-6YUJHMCL.js} +10 -10
  169. package/dist/{publication-TXMCS4KM.js → publication-JK33Y55E.js} +5 -5
  170. package/dist/{publish-57VURD7Z.js → publish-JHDGXWXU.js} +18 -17
  171. package/dist/{refresh-RXTOPRBB.js → refresh-USSFPJAU.js} +3 -3
  172. package/dist/{remove-background-VEWVIO3A.js → remove-background-P44MYAPJ.js} +16 -15
  173. package/dist/{render-SP7WAUB4.js → render-HJ34EGMN.js} +10 -9
  174. package/dist/{render-XMN3NJIQ.js → render-RBINWWP5.js} +43 -42
  175. package/dist/{render-4E7QDVOI.js → render-RJ3I4E3A.js} +26 -25
  176. package/dist/{render-batch-7ULP5RIJ.js → render-batch-3D6XQYUC.js} +11 -10
  177. package/dist/renderSetupWorker.js +9 -8
  178. package/dist/{resolver-D3XERO6U.js → resolver-HCLTFZUW.js} +7 -7
  179. package/dist/{screenshotCapture-UBY6TT75.js → screenshotCapture-I5EDCITF.js} +6 -3
  180. package/dist/{sherpa-5B5G426W.js → sherpa-IPOUJM6Q.js} +19 -18
  181. package/dist/{sites-5PWHAMEG.js → sites-Q2S3DZY4.js} +2 -1
  182. package/dist/skills/hyperframes/references/captions.md +1 -1
  183. package/dist/skills/hyperframes/references/skill-lifecycle.md +8 -4
  184. package/dist/skills/hyperframes-cli/references/cloudrun.md +1 -1
  185. package/dist/skills/hyperframes-cli/references/init-and-scaffold.md +1 -1
  186. package/dist/skills/hyperframes-cli/references/lambda.md +1 -1
  187. package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +2 -2
  188. package/dist/skills/hyperframes-cli/references/preview-render.md +1 -1
  189. package/dist/skills/hyperframes-cli/references/upgrade-info-misc.md +0 -8
  190. package/dist/skills/media-use/audio/references/transcribe.md +2 -2
  191. package/dist/skills/media-use/references/audio.md +1 -1
  192. package/dist/{skills-RXHRF7O7.js → skills-P67QEERC.js} +13 -75
  193. package/dist/{skillsUpdateCheck-JOTDZJAE.js → skillsUpdateCheck-IFMLRVIF.js} +5 -5
  194. package/dist/{slideshow-YTWATJRT.js → slideshow-SJGK4RQS.js} +1 -1
  195. package/dist/{snapshot-DN4MP4VN.js → snapshot-4YM4NNWJ.js} +66 -48
  196. package/dist/{src-W6Y5ZYRQ.js → src-DCD3YMXX.js} +13 -12
  197. package/dist/{src-XSDYRKLG.js → src-SSV66L3F.js} +14 -9
  198. package/dist/{staticProjectServer-JMFGTPMX.js → staticProjectServer-C7PPGLEQ.js} +22 -21
  199. package/dist/{status-CM7IQTU2.js → status-H5WLKQDS.js} +3 -3
  200. package/dist/studio/assets/{hyperframes-player-0HXJPmYC.js → hyperframes-player-ChN3cOr0.js} +3 -3
  201. package/dist/studio/assets/{index-DsSfhjUS.js → index-BYbFcRR0.js} +1 -1
  202. package/dist/studio/assets/{index-BYw97F07.js → index-CHu83hHM.js} +126 -125
  203. package/dist/studio/assets/{index-B3vk3hfU.css → index-CYbvOVp-.css} +1 -1
  204. package/dist/studio/index.html +2 -2
  205. package/dist/{studio-api-SZ4OMFPN.js → studio-api-6YZ7PIQR.js} +17 -14
  206. package/dist/{studioServer-LWO33H7D.js → studioServer-EWHSE4GC.js} +60 -59
  207. package/dist/{telemetry-QG5AANZ4.js → telemetry-4K6CPMNT.js} +2 -2
  208. package/dist/{telemetry-K3AFDKOP.js → telemetry-GGLBHZRZ.js} +5 -5
  209. package/dist/{timeline-NYQOAQDH.js → timeline-NKHQJXJ2.js} +65 -43
  210. package/dist/{tokens-K7YWUVOK.js → tokens-FWNNDJ6R.js} +2 -2
  211. package/dist/{transcribe-QAUMODXM.js → transcribe-TRPKXZ7L.js} +27 -26
  212. package/dist/{transcribe-ANPUQDZD.js → transcribe-VD2TMMC2.js} +17 -16
  213. package/dist/{tts-A2WILYGN.js → tts-5I2AJNLM.js} +1 -1
  214. package/dist/{updateCheck-RNR4HMDI.js → updateCheck-CUPS6LU3.js} +4 -4
  215. package/dist/{upgrade-MKUGZZPA.js → upgrade-23XO6MEX.js} +4 -4
  216. package/dist/{urlDownloader-5USPXLCS.js → urlDownloader-YOAOONCK.js} +10 -9
  217. package/dist/{validate-OJHPDLC5.js → validate-BWIW24G5.js} +30 -29
  218. package/dist/{video-BCKRR6LU.js → video-XRXJS4GC.js} +12 -11
  219. package/dist/warmCheck.js +43 -42
  220. package/package.json +2 -1
  221. package/dist/chunk-DIV37NUE.js +0 -3896
  222. package/dist/chunk-I5JRXMCV.js +0 -6077
@@ -11,20 +11,20 @@ import {
11
11
  } from "./chunk-57GN6KWT.js";
12
12
  import {
13
13
  captureArtifactRevision
14
- } from "./chunk-56IDMP37.js";
14
+ } from "./chunk-MEE4NTPZ.js";
15
15
  import {
16
16
  loadProducer
17
- } from "./chunk-DX7VEUBO.js";
17
+ } from "./chunk-7UZC4N62.js";
18
18
  import {
19
19
  trackLintRun
20
- } from "./chunk-E7DXKMKU.js";
20
+ } from "./chunk-L2YGSAOL.js";
21
21
  import {
22
22
  beginCheckSnapshots,
23
23
  checkSnapshotDirectory,
24
24
  finishCheckSnapshots,
25
25
  preResolveHostileMediaProxies,
26
26
  rectToBbox
27
- } from "./chunk-K4664CDS.js";
27
+ } from "./chunk-MVIJTXN5.js";
28
28
  import {
29
29
  CONTENT_OVERLAP_HELD_ERROR_MS,
30
30
  DEFAULT_MAX_STATIC_SEC,
@@ -47,27 +47,27 @@ import {
47
47
  mergeSampleTimes,
48
48
  parseAt,
49
49
  readMotionSpec
50
- } from "./chunk-FANFO5HI.js";
50
+ } from "./chunk-CXRZBWSH.js";
51
51
  import {
52
52
  resolveProject
53
- } from "./chunk-OTQXYTQZ.js";
53
+ } from "./chunk-4E75LHAL.js";
54
54
  import {
55
55
  recordArtifacts
56
- } from "./chunk-TMBUBLZB.js";
56
+ } from "./chunk-4HCJOFMB.js";
57
57
  import {
58
58
  BrowserCleanupError,
59
59
  closeManagedBrowser
60
- } from "./chunk-GGVGOY6M.js";
60
+ } from "./chunk-JCDYDF54.js";
61
61
  import {
62
62
  withRemainingBudget
63
63
  } from "./chunk-EHSBBBR2.js";
64
64
  import {
65
65
  resolveLocalBrowserGpuMode
66
- } from "./chunk-KNQQZRB2.js";
66
+ } from "./chunk-BEOK6F26.js";
67
67
  import {
68
68
  trackCheckReport,
69
69
  trackCommandFailure
70
- } from "./chunk-OOAVKK2W.js";
70
+ } from "./chunk-BV6YE455.js";
71
71
  import {
72
72
  swallowedFlagUsageError
73
73
  } from "./chunk-HTIUNMTP.js";
@@ -87,20 +87,20 @@ import {
87
87
  import {
88
88
  extractMediaMetadata,
89
89
  findHdrAutoPromotion
90
- } from "./chunk-OAPYPSEB.js";
90
+ } from "./chunk-QX4TB4NH.js";
91
91
  import {
92
92
  lintProject,
93
93
  shouldBlockRender
94
- } from "./chunk-TSFA2Y5C.js";
94
+ } from "./chunk-2VXY3PEF.js";
95
95
  import {
96
96
  resolveProjectRelativeSrc
97
97
  } from "./chunk-6BNTGNGD.js";
98
98
  import {
99
99
  withMeta
100
- } from "./chunk-STJ2ANMF.js";
100
+ } from "./chunk-2HP5GIQ3.js";
101
101
  import {
102
102
  normalizeErrorMessage
103
- } from "./chunk-KNU5COPB.js";
103
+ } from "./chunk-T2EUWCJE.js";
104
104
 
105
105
  // src/commands/check.ts
106
106
  import { randomUUID } from "crypto";
@@ -143,11 +143,18 @@ var CheckDeadline = class {
143
143
  phase = "waiting";
144
144
  work;
145
145
  spent = /* @__PURE__ */ new Map();
146
+ partials = [];
146
147
  constructor() {
147
148
  this.expiry = new Promise((_, reject) => {
148
149
  this.rejectExpiry = reject;
149
150
  });
150
151
  }
152
+ keepPartial = (read) => {
153
+ this.partials.push(read);
154
+ };
155
+ partialResult() {
156
+ return Object.assign({}, ...this.partials.map((read) => read()));
157
+ }
151
158
  enter = (phase) => {
152
159
  if (this.expired) return;
153
160
  const now = Date.now();
@@ -613,7 +620,7 @@ function round(value) {
613
620
 
614
621
  // src/utils/hdrPromotion.ts
615
622
  async function bundleProjectHtml(projectDir) {
616
- const { bundleToSingleHtml } = await import("./compiler-EJE3HLCS.js");
623
+ const { bundleToSingleHtml } = await import("./compiler-WF5QTXV7.js");
617
624
  return bundleToSingleHtml(projectDir);
618
625
  }
619
626
  async function collectBundledRenderMedia(html) {
@@ -973,7 +980,7 @@ async function collectSampleAt(driver, options, grid, motion, sets, time) {
973
980
  await collectContrastAt(driver, options, time, issuesAtTime, collected);
974
981
  return collected;
975
982
  }
976
- async function collectGridSamples(driver, options, grid, motion, helpers, enter) {
983
+ async function collectGridSamples(driver, options, grid, motion, helpers, enter, report, keep) {
977
984
  const geometryEnabled = grid.captionSamples.length > 0 || grid.frameSamples.length > 0;
978
985
  const sets = {
979
986
  layout: new Set(grid.layoutSamples),
@@ -984,12 +991,25 @@ async function collectGridSamples(driver, options, grid, motion, helpers, enter)
984
991
  const times = mergeSampleTimes(grid.layoutSamples, motion.times);
985
992
  const pending = times.map((_, index) => index);
986
993
  const perTime = [];
994
+ keep(() => {
995
+ const so = emptyGridSamples();
996
+ for (const samples of perTime) if (samples) appendGridSamples(so, samples);
997
+ const contrast = buildContrastResults(so.contrastEntries);
998
+ return {
999
+ layoutIssues: so.layoutIssues,
1000
+ contrastFindings: contrast.findings,
1001
+ contrastChecked: so.contrastEntries.length,
1002
+ contrastPassed: contrast.passed
1003
+ };
1004
+ });
1005
+ let finished = 0;
987
1006
  const work = async (worker, taken = []) => {
988
1007
  for (let index = pending.shift(); index !== void 0; index = pending.shift()) {
989
1008
  taken.push(index);
990
1009
  const time = times[index] ?? 0;
991
1010
  perTime[index] = await collectSampleAt(worker, options, grid, motion, sets, time);
992
1011
  enter("samples");
1012
+ report("samples", ++finished, times.length);
993
1013
  }
994
1014
  };
995
1015
  const helpWith = async (helper) => {
@@ -1025,7 +1045,8 @@ async function collectGridSamples(driver, options, grid, motion, helpers, enter)
1025
1045
  collected,
1026
1046
  options.range,
1027
1047
  craftEnabled(driver, options),
1028
- () => enter("overlap")
1048
+ () => enter("overlap"),
1049
+ report
1029
1050
  );
1030
1051
  enter("samples");
1031
1052
  return collected;
@@ -1109,28 +1130,31 @@ async function denseOverlapTimes(driver, grid, range) {
1109
1130
  const overlapTimes = buildOverlapSampleTimes(range ? range[1] - range[0] : grid.duration, edges);
1110
1131
  return range ? mergeSampleTimes(overlapTimes.map((time) => time + range[0])) : overlapTimes;
1111
1132
  }
1112
- async function collectOverlapGridInBatches(driver, times, progress) {
1133
+ async function collectOverlapGridInBatches(driver, times, progress, report) {
1113
1134
  const issues = [];
1135
+ const batches = Math.ceil(times.length / OVERLAP_BATCH);
1114
1136
  for (let from = 0; from < times.length; from += OVERLAP_BATCH) {
1115
1137
  issues.push(...await driver.collectOverlapGrid(times.slice(from, from + OVERLAP_BATCH)));
1116
1138
  progress();
1139
+ report("overlap", from / OVERLAP_BATCH + 1, batches);
1117
1140
  }
1118
1141
  return issues;
1119
1142
  }
1120
- async function collectMotionOverlapSamples(driver, grid, collected, range, craft, progress) {
1143
+ async function collectMotionOverlapSamples(driver, grid, collected, range, craft, progress, report) {
1121
1144
  const baseTimes = new Set(grid.layoutSamples);
1122
1145
  const shiftedTimes = await denseOverlapTimes(driver, grid, range);
1123
1146
  if (craft) {
1124
- for (const time of buildCraftSampleTimes(grid.duration)) {
1125
- if (time >= grid.duration) continue;
1147
+ const craftTimes = buildCraftSampleTimes(grid.duration).filter((time) => time < grid.duration);
1148
+ for (const [index, time] of craftTimes.entries()) {
1126
1149
  await driver.seekGeometry(time);
1127
1150
  collected.craftFrames.push(...await collectCraftFrame(driver, time));
1128
1151
  progress();
1152
+ report("craft", index + 1, craftTimes.length);
1129
1153
  }
1130
1154
  }
1131
1155
  const probeHold = holdProber(driver, collected, range ? range[1] : grid.duration);
1132
1156
  const gridTimes = shiftedTimes.filter((t) => !baseTimes.has(t));
1133
- const gridIssues = await collectOverlapGridInBatches(driver, gridTimes, progress);
1157
+ const gridIssues = await collectOverlapGridInBatches(driver, gridTimes, progress, report);
1134
1158
  let sample = 0;
1135
1159
  for (const [index, time] of shiftedTimes.entries()) {
1136
1160
  if (baseTimes.has(time)) continue;
@@ -1600,6 +1624,8 @@ function disabledCraft() {
1600
1624
  return { enabled: false, step: 0, samples: 0, findings: [] };
1601
1625
  }
1602
1626
  async function runAuditGrid(driver, options, motion, helpers = Promise.resolve([]), enter = () => {
1627
+ }, report = () => {
1628
+ }, keep = () => {
1603
1629
  }) {
1604
1630
  enter("samples");
1605
1631
  await driver.initialize(options.contrast);
@@ -1610,7 +1636,16 @@ async function runAuditGrid(driver, options, motion, helpers = Promise.resolve([
1610
1636
  grid.duration
1611
1637
  );
1612
1638
  const seekLoopStart = Date.now();
1613
- const collected = await collectGridSamples(driver, options, grid, plan, helpers, enter);
1639
+ const collected = await collectGridSamples(
1640
+ driver,
1641
+ options,
1642
+ grid,
1643
+ plan,
1644
+ helpers,
1645
+ enter,
1646
+ report,
1647
+ keep
1648
+ );
1614
1649
  const seekLoopMs = Date.now() - seekLoopStart;
1615
1650
  let motionIssues = plan.preflightIssues;
1616
1651
  if (motion.kind === "valid" && plan.assertions.length > 0 && collected.motionFrames.length > 0) {
@@ -1750,8 +1785,9 @@ async function runCheckPipeline(project, options, dependencies = DEFAULT_DEPENDE
1750
1785
  () => dependencies.runBrowserCheck(project, options, motion, deadline, browserAhead)
1751
1786
  );
1752
1787
  } catch (error) {
1753
- browser = emptyBrowserResult();
1754
- browser.runtimeFindings.push(runtimeFailure(error));
1788
+ const found = deadline.partialResult();
1789
+ browser = { ...emptyBrowserResult(), ...found, skipped: Object.keys(found).length === 0 };
1790
+ browser.runtimeFindings = [...browser.runtimeFindings, runtimeFailure(error)];
1755
1791
  }
1756
1792
  const snapshotFiles = options.snapshots ? await writeContrastSnapshots(dependencies, project.dir, browser) : [];
1757
1793
  const report = buildReport(
@@ -2155,7 +2191,7 @@ function resolveMotionSpec(projectDir) {
2155
2191
  };
2156
2192
  }
2157
2193
  async function runBrowserCheck(project, options, motion, deadline, prelaunched) {
2158
- const module = await import("./checkBrowser-JT7CXDT6.js");
2194
+ const module = await import("./checkBrowser-DWP7ZXJ7.js");
2159
2195
  return module.runBrowserCheck(project, options, motion, runAuditGrid, deadline, prelaunched);
2160
2196
  }
2161
2197
  var adoptedBrowser;
@@ -2169,7 +2205,7 @@ async function prelaunchBrowser(project, options) {
2169
2205
  if (adopted) return adopted;
2170
2206
  const html = await readFile(project.indexPath, "utf8").catch(() => void 0);
2171
2207
  if (html === void 0) return void 0;
2172
- const { prelaunchCompositionBrowser } = await import("./captureCompositionFrame-WTMLWVEJ.js");
2208
+ const { prelaunchCompositionBrowser } = await import("./captureCompositionFrame-VORSCTWC.js");
2173
2209
  return prelaunchCompositionBrowser(html, options.browserGpuMode);
2174
2210
  }
2175
2211
  async function writeSnapshot(projectDir, index, time, pngBase64) {
@@ -2181,7 +2217,7 @@ async function writeSnapshot(projectDir, index, time, pngBase64) {
2181
2217
  return relative(projectDir, path);
2182
2218
  }
2183
2219
  async function captureFindingCrops(project, options, requests, deadline) {
2184
- const module = await import("./checkBrowser-JT7CXDT6.js");
2220
+ const module = await import("./checkBrowser-DWP7ZXJ7.js");
2185
2221
  return module.captureFindingCrops(project, options, requests, deadline);
2186
2222
  }
2187
2223
  var DEFAULT_DEPENDENCIES2 = {
@@ -2220,7 +2256,7 @@ var DEFAULT_COMMAND_DEPENDENCIES = {
2220
2256
  }
2221
2257
  },
2222
2258
  async prepareMedia(project, options) {
2223
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-RWHFMSFL.js");
2259
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-C325UNR4.js");
2224
2260
  const html = await bundleWithLocalizedFonts(project.dir);
2225
2261
  return (await preResolveHostileMediaProxies(project.dir, html, options.autoProxy)).files;
2226
2262
  },
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  runRenderSetupWorker
9
- } from "./chunk-DYAPHNV6.js";
9
+ } from "./chunk-RWGASWT7.js";
10
10
  import {
11
11
  terminateProcessTree
12
12
  } from "./chunk-KGPLIH7B.js";
@@ -6,12 +6,12 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  setHostHandlesSigint
9
- } from "./chunk-OAPYPSEB.js";
9
+ } from "./chunk-QX4TB4NH.js";
10
10
  import {
11
11
  processAncestorSnapshot,
12
12
  processIdentity,
13
13
  processParentPid
14
- } from "./chunk-W64L7IFS.js";
14
+ } from "./chunk-IW5G323T.js";
15
15
  import {
16
16
  processIsAlive
17
17
  } from "./chunk-KGPLIH7B.js";
@@ -11,7 +11,7 @@ import {
11
11
  DEFAULT_REGISTRY_URL,
12
12
  fetchItemManifest,
13
13
  fetchRegistryManifest
14
- } from "./chunk-AYFF3GX6.js";
14
+ } from "./chunk-32NB4VMH.js";
15
15
 
16
16
  // src/registry/resolver.ts
17
17
  function defaultWarn(message) {
@@ -14,13 +14,13 @@ import {
14
14
  } from "./chunk-DKPNNYBZ.js";
15
15
  import {
16
16
  resolveCaptureBrowserGpuMode
17
- } from "./chunk-KNQQZRB2.js";
17
+ } from "./chunk-BEOK6F26.js";
18
18
  import {
19
19
  requestCliExit
20
20
  } from "./chunk-JVBRJMOP.js";
21
21
  import {
22
22
  normalizeErrorMessage
23
- } from "./chunk-KNU5COPB.js";
23
+ } from "./chunk-T2EUWCJE.js";
24
24
  import {
25
25
  processIsAlive
26
26
  } from "./chunk-KGPLIH7B.js";
@@ -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-L34DPWY4.js";
9
+ } from "./chunk-2J3NA3OB.js";
10
10
  import {
11
11
  injectTagsAtHeadStart
12
- } from "./chunk-DIV37NUE.js";
12
+ } from "./chunk-B2XLXD7V.js";
13
13
 
14
14
  // src/utils/compositionServer.ts
15
15
  import { createHash } from "crypto";
@@ -11,14 +11,14 @@ import {
11
11
  distroLabel,
12
12
  getFFmpegInstallHint,
13
13
  parseLddMissingLibs
14
- } from "./chunk-IARWN467.js";
14
+ } from "./chunk-VRAXIQ6I.js";
15
15
  import {
16
16
  ensureBrowser,
17
17
  findBrowser
18
- } from "./chunk-CYBXXSC4.js";
18
+ } from "./chunk-DIKAPMMF.js";
19
19
  import {
20
20
  runCancellableProcess
21
- } from "./chunk-DYAPHNV6.js";
21
+ } from "./chunk-RWGASWT7.js";
22
22
  import {
23
23
  getFreeDiskMb
24
24
  } from "./chunk-T6AGUTZJ.js";
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-VAS6HQX3.js";
30
30
  import {
31
31
  normalizeErrorMessage
32
- } from "./chunk-KNU5COPB.js";
32
+ } from "./chunk-T2EUWCJE.js";
33
33
 
34
34
  // src/browser/preflight.ts
35
35
  import { existsSync } from "fs";
@@ -7,14 +7,14 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  trackLintReport,
9
9
  trackLintRuleStreak
10
- } from "./chunk-OOAVKK2W.js";
10
+ } from "./chunk-BV6YE455.js";
11
11
  import {
12
12
  shouldTrack
13
- } from "./chunk-TTZTGXKG.js";
13
+ } from "./chunk-GANST5K3.js";
14
14
  import {
15
15
  LINT_RULE_COUNT,
16
16
  LINT_RULE_GROUP_COUNTS
17
- } from "./chunk-TSFA2Y5C.js";
17
+ } from "./chunk-2VXY3PEF.js";
18
18
 
19
19
  // src/telemetry/lintStreaks.ts
20
20
  import { createHash } from "crypto";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  stoppedByCancelSignal
9
- } from "./chunk-RBGNU7VD.js";
9
+ } from "./chunk-J2ASTCU6.js";
10
10
  import {
11
11
  DEFAULT_MODEL,
12
12
  ensureModel,
@@ -14,12 +14,12 @@ import {
14
14
  hasFFmpeg,
15
15
  pinnedWhisperModel,
16
16
  sha256File
17
- } from "./chunk-S7C6EM7N.js";
17
+ } from "./chunk-PFRG5P32.js";
18
18
  import {
19
19
  findFFmpeg,
20
20
  findFFprobe,
21
21
  getFFmpegInstallHint
22
- } from "./chunk-IARWN467.js";
22
+ } from "./chunk-VRAXIQ6I.js";
23
23
  import {
24
24
  findWavChunk
25
25
  } from "./chunk-UOFAE5RF.js";
@@ -6,11 +6,11 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  withOwner
9
- } from "./chunk-7JHTNUF2.js";
9
+ } from "./chunk-7LLRMYP6.js";
10
10
  import {
11
11
  HistoryBusyError,
12
12
  beginArtifactCapture
13
- } from "./chunk-TMBUBLZB.js";
13
+ } from "./chunk-4HCJOFMB.js";
14
14
 
15
15
  // src/utils/artifactCapture.ts
16
16
  var SKIP_BUSY_HISTORY = { ownerWaitMs: 0 };
@@ -9,7 +9,7 @@ import {
9
9
  parseStrictFiniteTimingNumber,
10
10
  resolveNaturalMediaTimelineDuration,
11
11
  resolveTimedImageDurationSeconds
12
- } from "./chunk-DIV37NUE.js";
12
+ } from "./chunk-B2XLXD7V.js";
13
13
  import {
14
14
  CANVAS_DIMENSIONS,
15
15
  isCompositionElement,
@@ -17,7 +17,7 @@ import {
17
17
  isTextElement,
18
18
  keyframesToGsapAnimations,
19
19
  serializeGsapAnimations
20
- } from "./chunk-B2A56S5C.js";
20
+ } from "./chunk-2MCXIY4B.js";
21
21
  import {
22
22
  COMPOSITION_ATTRIBUTES,
23
23
  MEDIA_START_BASIS_ATTR,
@@ -7,19 +7,19 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  ambiguousIssue,
9
9
  loadBrowserScript
10
- } from "./chunk-FANFO5HI.js";
10
+ } from "./chunk-CXRZBWSH.js";
11
11
  import {
12
12
  auditClipDurations,
13
13
  shouldIgnoreHttpError,
14
14
  shouldIgnoreRequestFailure
15
- } from "./chunk-S2IEO6TH.js";
15
+ } from "./chunk-ODBYZIOH.js";
16
16
  import {
17
17
  serveStaticProjectHtml
18
- } from "./chunk-HJZ5CPZA.js";
18
+ } from "./chunk-EKGGSAWR.js";
19
19
  import {
20
20
  artifactDirectory,
21
21
  finishSnapshotRun
22
- } from "./chunk-TMBUBLZB.js";
22
+ } from "./chunk-4HCJOFMB.js";
23
23
  import {
24
24
  FfmpegUnavailableError,
25
25
  decideMediaProxyEligibility,
@@ -27,7 +27,7 @@ import {
27
27
  proxyVariantFor,
28
28
  resolveProxies,
29
29
  scanProjectMediaCodecMap
30
- } from "./chunk-BT64TTSE.js";
30
+ } from "./chunk-7RSY7SZN.js";
31
31
  import {
32
32
  AUDIT_SEEK_OPTIONS,
33
33
  DEFAULT_ZOOM_PADDING_PX,
@@ -41,20 +41,25 @@ import {
41
41
  seekCompositionTimeline,
42
42
  seekInPage,
43
43
  waitForPreferredSeekTarget
44
- } from "./chunk-EU5HTY3E.js";
44
+ } from "./chunk-E5V6WEMK.js";
45
45
  import {
46
46
  BrowserCleanupError,
47
47
  closeManagedBrowser
48
- } from "./chunk-GGVGOY6M.js";
48
+ } from "./chunk-JCDYDF54.js";
49
49
  import {
50
50
  findStageProxyBox
51
- } from "./chunk-ZFFKWHXN.js";
51
+ } from "./chunk-WOKVXK4J.js";
52
52
  import {
53
53
  resolveAutoProxy
54
- } from "./chunk-UZ7RJDEC.js";
54
+ } from "./chunk-5IPKQHOL.js";
55
55
  import {
56
56
  normalizeErrorMessage
57
- } from "./chunk-KNU5COPB.js";
57
+ } from "./chunk-T2EUWCJE.js";
58
+
59
+ // src/utils/checkProgress.ts
60
+ function logCheckProgress(stage, done, total) {
61
+ console.error(`[hyperframes] check: ${stage} ${done}/${total}`);
62
+ }
58
63
 
59
64
  // src/utils/checkMotionBlur.ts
60
65
  var OFF_HINTS = {
@@ -218,6 +223,8 @@ function tweenTailMessage(tail) {
218
223
  function collectTweenRecords() {
219
224
  const NOT_PROPERTIES = /* @__PURE__ */ new Set([
220
225
  "duration",
226
+ "force3D",
227
+ "autoRound",
221
228
  "delay",
222
229
  "ease",
223
230
  "repeat",
@@ -382,7 +389,7 @@ function proxyFailedDraft(message) {
382
389
  return { code: "media_proxy_failed", severity: "warning", message, time: 0 };
383
390
  }
384
391
  async function runBrowserCheck(project, options, motion, runGrid, deadline, prelaunched) {
385
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-RWHFMSFL.js");
392
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-C325UNR4.js");
386
393
  const html = await bundleWithLocalizedFonts(project.dir);
387
394
  deadline?.enter("copies");
388
395
  const { findings: drafts, failedPaths } = await preResolveHostileMediaProxies(
@@ -428,8 +435,14 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
428
435
  const page = session.page;
429
436
  await waitForPreferredSeekTarget(page);
430
437
  const rootAnchor = await resolveRootAnchor(page);
438
+ deadline?.keepPartial(() => ({
439
+ runtimeFindings: dropFailedProxyEchoes(
440
+ keepBrokenImageAborts(drafts, /* @__PURE__ */ new Set()),
441
+ failedPaths
442
+ ).map((draft) => runtimeFinding(draft, rootAnchor))
443
+ }));
431
444
  const launchSettleMs = Date.now() - launchSettleStart;
432
- const { analyzeClipMediaFit } = await import("./src-XSDYRKLG.js");
445
+ const { analyzeClipMediaFit } = await import("./src-SSV66L3F.js");
433
446
  for (const entry of await auditClipDurations(page, analyzeClipMediaFit, options.timeout)) {
434
447
  drafts.push({ code: "clip_media_fit", severity: entry.level, message: entry.text, time: 0 });
435
448
  }
@@ -441,7 +454,15 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
441
454
  drafts.push(...blur);
442
455
  const sampleLog = sampleWindow(drafts);
443
456
  const driver = createPageDriver(page, clock, sampleLog);
444
- const result = await runGrid(driver, options, motion, helpers, deadline?.enter);
457
+ const result = await runGrid(
458
+ driver,
459
+ options,
460
+ motion,
461
+ helpers,
462
+ deadline?.enter,
463
+ logCheckProgress,
464
+ deadline?.keepPartial
465
+ );
445
466
  helperSession?.stop();
446
467
  const helper = await helperOpen?.catch(() => void 0);
447
468
  const merged = helper ? mergeHelperDrafts(sampleLog, helper.sampleLog) : drafts;
@@ -538,7 +559,7 @@ function mergeHelperDrafts(primary, helper) {
538
559
  }
539
560
  async function captureFindingCrops(project, options, requests, deadline) {
540
561
  if (requests.length === 0) return [];
541
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-RWHFMSFL.js");
562
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-C325UNR4.js");
542
563
  const html = await bundleWithLocalizedFonts(project.dir);
543
564
  const server = await serveStaticProjectHtml(
544
565
  project.dir,
@@ -6,23 +6,23 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-OTQXYTQZ.js";
9
+ } from "./chunk-4E75LHAL.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-EU5HTY3E.js";
15
+ } from "./chunk-E5V6WEMK.js";
16
16
  import {
17
17
  launchManagedBrowser,
18
18
  resolveManagedGpuMode
19
- } from "./chunk-GGVGOY6M.js";
19
+ } from "./chunk-JCDYDF54.js";
20
20
  import {
21
21
  pageNavigationTimeoutMs
22
- } from "./chunk-CWVSJA52.js";
22
+ } from "./chunk-QWLES6YV.js";
23
23
  import {
24
24
  resolveCompositionViewportFromHtml
25
- } from "./chunk-ZFFKWHXN.js";
25
+ } from "./chunk-WOKVXK4J.js";
26
26
  import {
27
27
  defineCommand
28
28
  } from "./chunk-S3S4TGEH.js";
@@ -33,16 +33,19 @@ import {
33
33
  import {
34
34
  c
35
35
  } from "./chunk-ZTZA4UWZ.js";
36
+ import {
37
+ resolveNaturalMediaTimelineDuration
38
+ } from "./chunk-B2XLXD7V.js";
36
39
  import {
37
40
  decodeWellFormedEscapes
38
41
  } from "./chunk-BSQ7XANM.js";
39
42
  import {
40
43
  printDeprecationNotice,
41
44
  withMeta
42
- } from "./chunk-STJ2ANMF.js";
45
+ } from "./chunk-2HP5GIQ3.js";
43
46
  import {
44
47
  normalizeErrorMessage
45
- } from "./chunk-KNU5COPB.js";
48
+ } from "./chunk-T2EUWCJE.js";
46
49
 
47
50
  // src/commands/validate.ts
48
51
  import { existsSync, mkdtempSync, readFileSync, rmSync } from "fs";
@@ -139,7 +142,12 @@ async function auditClipDurations(page, analyzeClipMediaFit, extraWaitMs) {
139
142
  id: el.id || el.getAttribute("src") || `(${el.tagName.toLowerCase()})`,
140
143
  kind: el.tagName === "AUDIO" ? "Audio" : "Video",
141
144
  slot,
142
- mediaStart: parseFloat(el.getAttribute("data-media-start") ?? "0") || 0,
145
+ attributes: {
146
+ "data-media-start": el.getAttribute("data-media-start"),
147
+ "data-playback-start": el.getAttribute("data-playback-start"),
148
+ "data-playback-rate": el.getAttribute("data-playback-rate"),
149
+ "data-automation": el.getAttribute("data-automation")
150
+ },
143
151
  duration: el.duration,
144
152
  loop: el.loop || el.getAttribute("data-loop") === "true"
145
153
  });
@@ -153,7 +161,11 @@ async function auditClipDurations(page, analyzeClipMediaFit, extraWaitMs) {
153
161
  unreadable.push(clip.id);
154
162
  continue;
155
163
  }
156
- const mediaSeconds = Math.max(0, clip.duration - clip.mediaStart);
164
+ const mediaSeconds = resolveNaturalMediaTimelineDuration(
165
+ { getAttribute: (name) => clip.attributes[name] ?? null },
166
+ clip.duration
167
+ );
168
+ if (mediaSeconds === null) continue;
157
169
  const fit = analyzeClipMediaFit({ slotSeconds: clip.slot, mediaSeconds, loop: clip.loop });
158
170
  if (!fit) continue;
159
171
  warnings.push({
@@ -227,7 +239,7 @@ function extractCompositionErrorsFromLint(lintResult) {
227
239
  async function localizeRemoteAssets(html) {
228
240
  let dir;
229
241
  try {
230
- const { loadProducer } = await import("./producer-QG4AQ35S.js");
242
+ const { loadProducer } = await import("./producer-TFFYF4ZM.js");
231
243
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
232
244
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
233
245
  const assetDir = dir;
@@ -248,10 +260,10 @@ async function localizeRemoteAssets(html) {
248
260
  }
249
261
  async function validateInBrowser(project, opts) {
250
262
  const projectDir = project.dir;
251
- const { bundleToSingleHtml } = await import("./compiler-EJE3HLCS.js");
252
- const { ensureBrowser } = await import("./manager-UHWEKPXC.js");
253
- const { serveStaticProjectHtml } = await import("./staticProjectServer-JMFGTPMX.js");
254
- const { lintProject } = await import("./lintProject-XM3DLUKG.js");
263
+ const { bundleToSingleHtml } = await import("./compiler-WF5QTXV7.js");
264
+ const { ensureBrowser } = await import("./manager-MZIJY73J.js");
265
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-C7PPGLEQ.js");
266
+ const { lintProject } = await import("./lintProject-52SLJPRC.js");
255
267
  const lintResult = await lintProject(projectDir);
256
268
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
257
269
  const html = await bundleToSingleHtml(projectDir);
@@ -272,9 +284,9 @@ async function validateInBrowser(project, opts) {
272
284
  try {
273
285
  const browser = await ensureBrowser();
274
286
  const puppeteer = await import("puppeteer-core");
275
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-XSDYRKLG.js");
287
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-SSV66L3F.js");
276
288
  const requestedGpuMode = resolveCliChromeGpuMode();
277
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-DQE2CD5T.js");
289
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-UHPOWRV5.js");
278
290
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
279
291
  const requiresWebGpu = compositionRequiresWebGpu(html);
280
292
  const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);