hyperframes 0.8.191 → 0.8.193

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 (213) hide show
  1. package/dist/{add-S2ZQYG52.js → add-JC6DKZKC.js} +17 -17
  2. package/dist/{animatedGifPrep-3JA2CQ3U.js → animatedGifPrep-S6KXJGEL.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-2CNTAPOC.js → asset-XITFIFE6.js} +2 -2
  6. package/dist/{assetCataloger-5HXLXL7C.js → assetCataloger-K5FNKG35.js} +13 -12
  7. package/dist/{audio-DZTSYHXS.js → audio-364UHTY4.js} +22 -21
  8. package/dist/{auth-GX3M6TJ4.js → auth-5JEESRE6.js} +4 -4
  9. package/dist/{autoUpdate-EDIWE4Z5.js → autoUpdate-RVVYEHAA.js} +5 -5
  10. package/dist/{backgroundChecks-VPUPJ7UI.js → backgroundChecks-DCBIYWIQ.js} +5 -5
  11. package/dist/backgroundChecksWorker.js +5 -5
  12. package/dist/{batchRender-JHIIDBJR.js → batchRender-ZZ4QMBAA.js} +14 -7
  13. package/dist/{beats-PZRVTRYW.js → beats-YEL65M6G.js} +53 -15
  14. package/dist/{benchmark-22UFDW2N.js → benchmark-RBTRPA76.js} +18 -14
  15. package/dist/{browser-VRDWYIUM.js → browser-BVAYXT4R.js} +7 -7
  16. package/dist/{bundleWithLocalizedFonts-23QDKFSN.js → bundleWithLocalizedFonts-JLB2OYMT.js} +3 -3
  17. package/dist/{capture-TOCLXYMJ.js → capture-GBXTMYLZ.js} +76 -68
  18. package/dist/{capture-NFCBXHDE.js → capture-NIFX6IRS.js} +3 -3
  19. package/dist/{captureCompositionFrame-BEM6MF7F.js → captureCompositionFrame-ATNNKUL5.js} +17 -16
  20. package/dist/{catalog-NXS35KM7.js → catalog-AGIF5SM5.js} +18 -18
  21. package/dist/{catch-up-6WJBUI2C.js → catch-up-SZ3ULDTI.js} +7 -7
  22. package/dist/{check-WVEBMWN5.js → check-YLQS3TF4.js} +43 -42
  23. package/dist/{checkBrowser-RT45HJ36.js → checkBrowser-QH4FMCBO.js} +38 -37
  24. package/dist/{chunk-JOLZ3BSL.js → chunk-2LSCYS2H.js} +2 -2
  25. package/dist/{chunk-B2A56S5C.js → chunk-2MCXIY4B.js} +13 -10
  26. package/dist/{chunk-TADJOIFW.js → chunk-2NERNYCJ.js} +4 -4
  27. package/dist/{chunk-KGMHMYWI.js → chunk-2SFDWMSW.js} +2 -2
  28. package/dist/{chunk-DCAI5DBR.js → chunk-2ST4WAFY.js} +9 -1
  29. package/dist/{chunk-3NRB7YXW.js → chunk-2VXY3PEF.js} +96 -67
  30. package/dist/{chunk-IXLUTE6N.js → chunk-3422KMTD.js} +5 -1
  31. package/dist/{chunk-VYQYVYQ5.js → chunk-3W4B6G7Y.js} +83 -45
  32. package/dist/{chunk-JYSSPQDT.js → chunk-4LXZJIVY.js} +11 -11
  33. package/dist/{chunk-WHAEJX26.js → chunk-4PPWAQYV.js} +17 -12
  34. package/dist/{chunk-COWQITWP.js → chunk-4TKJWWPL.js} +1 -1
  35. package/dist/{chunk-NXMYHJAL.js → chunk-4VYPICIA.js} +29 -1
  36. package/dist/{chunk-RE3EEBWC.js → chunk-5J6TWLFG.js} +4 -4
  37. package/dist/{chunk-TFMZ4RKM.js → chunk-6DLCOQR4.js} +474 -429
  38. package/dist/{chunk-KV72BP7O.js → chunk-6LWUPIKD.js} +11 -11
  39. package/dist/{chunk-HRPWRZGF.js → chunk-6N65ZMC5.js} +1 -1
  40. package/dist/{chunk-XUXGIA7H.js → chunk-6NLPPKBO.js} +1 -2
  41. package/dist/{chunk-JJJCFKMF.js → chunk-6XUJVEY2.js} +17 -6
  42. package/dist/{chunk-GM3WIOO6.js → chunk-7HTH5PFK.js} +2 -2
  43. package/dist/{chunk-LBNEH6IQ.js → chunk-7QNIXBQD.js} +1 -1
  44. package/dist/{chunk-OV6KHXLX.js → chunk-7YKJF5JV.js} +1 -1
  45. package/dist/{chunk-COETAXRN.js → chunk-7YSFE4SZ.js} +2 -2
  46. package/dist/{chunk-3WJT2JCX.js → chunk-AR3DQYRR.js} +52 -23
  47. package/dist/{chunk-HYW6HTAK.js → chunk-BJAS2JLW.js} +2 -2
  48. package/dist/{chunk-RWYUK7LM.js → chunk-BP4EMEGH.js} +2 -2
  49. package/dist/{chunk-XGHHVYC7.js → chunk-BY6OQ6XP.js} +2 -2
  50. package/dist/{chunk-TMBUBLZB.js → chunk-C4Y3ZREE.js} +185 -46
  51. package/dist/{chunk-JQYJXUJW.js → chunk-C6KE4AFW.js} +1 -1
  52. package/dist/{chunk-TMK4Q7JA.js → chunk-CFUCHO4T.js} +20 -5
  53. package/dist/{chunk-JGTRVG32.js → chunk-CGTZOY53.js} +1 -1
  54. package/dist/chunk-CZGHFATT.js +31 -0
  55. package/dist/{chunk-NJGTNWQY.js → chunk-D625D4TV.js} +6 -6
  56. package/dist/{chunk-CYBXXSC4.js → chunk-DIKAPMMF.js} +2 -2
  57. package/dist/{chunk-CXMXJEVY.js → chunk-DSQ72G5I.js} +1 -1
  58. package/dist/{chunk-GLG5JWLI.js → chunk-DYNHVCBF.js} +2 -2
  59. package/dist/{chunk-7L37AB57.js → chunk-E3P3LJG6.js} +9 -9
  60. package/dist/{chunk-EFCKV7MY.js → chunk-E77ALFLW.js} +1 -1
  61. package/dist/{chunk-WQ3X5OH4.js → chunk-EFXMETRK.js} +2 -2
  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-7A65UCMI.js → chunk-F5LLORBP.js} +2 -2
  65. package/dist/{chunk-EI7FP7F3.js → chunk-FBVUAH7N.js} +12 -2
  66. package/dist/{chunk-XWOCXIKR.js → chunk-GKHMSSGY.js} +1 -1
  67. package/dist/{chunk-DOOSC34Z.js → chunk-GR5DQKDR.js} +8 -8
  68. package/dist/{chunk-W64L7IFS.js → chunk-IW5G323T.js} +1 -1
  69. package/dist/{chunk-NAUKCKCJ.js → chunk-KU3UFQN7.js} +9 -12
  70. package/dist/{chunk-NMDUSCCE.js → chunk-L4JB7LI4.js} +478 -129
  71. package/dist/{chunk-ALEF2F5N.js → chunk-L5YLA54L.js} +2 -2
  72. package/dist/{chunk-MSM6VRQ4.js → chunk-LFUVTS6V.js} +2 -2
  73. package/dist/{chunk-7ZJEQY7Q.js → chunk-LMNZLZMJ.js} +23 -3
  74. package/dist/{chunk-AQB5M53R.js → chunk-M3KZBDPB.js} +3 -3
  75. package/dist/{chunk-BFFLKQVB.js → chunk-MFUNDJEV.js} +4 -4
  76. package/dist/{chunk-7NKJS5KM.js → chunk-OFV3WSOE.js} +1 -1
  77. package/dist/{chunk-CINKQY6M.js → chunk-OFYW4J7Y.js} +3 -3
  78. package/dist/{chunk-5C7R55BJ.js → chunk-P2I4RLJE.js} +1 -1
  79. package/dist/{chunk-RUOG4VB7.js → chunk-PKZ7RK5N.js} +5 -4
  80. package/dist/{chunk-LLFQA7XF.js → chunk-QFPBRZJD.js} +1 -1
  81. package/dist/{chunk-TRZVS6TL.js → chunk-QKX7ITER.js} +3 -3
  82. package/dist/{chunk-46HEFGXJ.js → chunk-REUL2KH2.js} +1 -1
  83. package/dist/{chunk-TFGO5YMI.js → chunk-RTLPWOO6.js} +2 -2
  84. package/dist/{chunk-DYAPHNV6.js → chunk-RWGASWT7.js} +1 -1
  85. package/dist/chunk-RXATE6FZ.js +385 -0
  86. package/dist/{chunk-U5GTDAQL.js → chunk-SOY2FPOR.js} +7 -7
  87. package/dist/{chunk-KNU5COPB.js → chunk-T2EUWCJE.js} +1 -1
  88. package/dist/{chunk-RQBB7PYT.js → chunk-TY3LDJA3.js} +5 -12
  89. package/dist/{chunk-KAC2WR7P.js → chunk-TZEKVLPV.js} +3 -3
  90. package/dist/{chunk-TJKE4EYX.js → chunk-UB7BIDBS.js} +3 -3
  91. package/dist/{chunk-WY3TQ2PT.js → chunk-UIC7B5KW.js} +2 -2
  92. package/dist/{chunk-2WNVHZHA.js → chunk-UNATIAOT.js} +13 -13
  93. package/dist/chunk-USWPZXEA.js +3897 -0
  94. package/dist/{chunk-FBDOHH3Q.js → chunk-V7ZA2BNW.js} +29 -59
  95. package/dist/{chunk-7LUJE3II.js → chunk-VLLFORE2.js} +1 -1
  96. package/dist/{chunk-T5YF32WV.js → chunk-VPC4XIVI.js} +6 -5
  97. package/dist/{chunk-7FF36MAD.js → chunk-VW63MHQU.js} +9 -6
  98. package/dist/{chunk-ZHKUIC7X.js → chunk-WFS6S65A.js} +21 -14
  99. package/dist/{chunk-UNR3P7IF.js → chunk-WIVOXGEP.js} +3 -3
  100. package/dist/{chunk-3XI7MIZB.js → chunk-X5CECNCK.js} +1 -1
  101. package/dist/{chunk-KHCTBZGJ.js → chunk-XQPA4W3M.js} +4 -4
  102. package/dist/{chunk-XMSQRDAK.js → chunk-YS4JUGNI.js} +2 -2
  103. package/dist/{chunk-SMEF3TRJ.js → chunk-ZH7J2ZUL.js} +15 -15
  104. package/dist/{chunk-WJEVUPVD.js → chunk-ZT45TCY3.js} +1 -1
  105. package/dist/{chunk-JTPHFYZI.js → chunk-ZTKFRXJB.js} +68 -7
  106. package/dist/{chunk-W3CS2KFV.js → chunk-ZZPBXRYQ.js} +2 -2
  107. package/dist/{clean-3VIU2BSK.js → clean-5HGESK5A.js} +40 -27
  108. package/dist/cli.js +70 -68
  109. package/dist/{cloud-NA3J4XW2.js → cloud-746PHS32.js} +4 -4
  110. package/dist/{cloudrun-4MHOF7UT.js → cloudrun-DO7WFLSM.js} +9 -9
  111. package/dist/commands/contrast-audit.browser.js +1 -1
  112. package/dist/{compare-ZR7XRPPT.js → compare-66YPRNG2.js} +76 -47
  113. package/dist/{compiler-MA2ELZPG.js → compiler-R4UYDWXO.js} +8 -7
  114. package/dist/{component-ZJSOPUAM.js → component-EQ3H6RFP.js} +3 -3
  115. package/dist/{compositions-WA5V2SHF.js → compositions-ZZ7P5HT2.js} +19 -17
  116. package/dist/{contactSheet-CAGMKI3E.js → contactSheet-SZBJDOMT.js} +2 -2
  117. package/dist/{delete-UC427UEA.js → delete-Z5MSLJSR.js} +7 -7
  118. package/dist/{deploy-B5UO4UIK.js → deploy-RGSAC2K5.js} +1 -1
  119. package/dist/{deterministicFonts-EGAAE7QL.js → deterministicFonts-RO2TCMLZ.js} +3 -3
  120. package/dist/{dist-XGPSPKKP.js → dist-QQ26RUDV.js} +5 -4
  121. package/dist/{dist-BPK37SAB.js → dist-RKK4YLAD.js} +5 -5
  122. package/dist/{doctor-ZERCTKEK.js → doctor-W4ZZDRTU.js} +20 -19
  123. package/dist/{events-DCOZQERS.js → events-BSSL4A4W.js} +4 -4
  124. package/dist/{events-CNIXB2QK.js → events-UACT7PX3.js} +5 -5
  125. package/dist/{feedback-YBD5ITTY.js → feedback-47ILDLQG.js} +16 -16
  126. package/dist/{ffmpeg-V4BBFDTG.js → ffmpeg-IEHSUNUT.js} +13 -12
  127. package/dist/{figma-Z45ZYVGE.js → figma-PLFIIYRU.js} +3 -3
  128. package/dist/fontLocalizeCli.js +14 -13
  129. package/dist/{get-23NXQWCD.js → get-PDWGJYNL.js} +7 -7
  130. package/dist/{gpuPolicy-H6ABHVEB.js → gpuPolicy-6UBXO6ME.js} +11 -10
  131. package/dist/{grade-compare-ZPX2G3UV.js → grade-compare-5VWLQGM7.js} +38 -37
  132. package/dist/{gsapParserAcorn-SKODXC2N.js → gsapParserAcorn-OOTY2MVN.js} +2 -2
  133. package/dist/{help-EP4CDPLO.js → help-DS3KMWYO.js} +1 -1
  134. package/dist/{history-E5OSXO74.js → history-OC326NVZ.js} +41 -17
  135. package/dist/hyperframe.manifest.json +1 -1
  136. package/dist/hyperframe.runtime.iife.js +62 -62
  137. package/dist/hyperframes-player.global.js +3 -3
  138. package/dist/hyperframes-slideshow.global.js +1 -1
  139. package/dist/{info-2HHGSW5H.js → info-AUIFV6MX.js} +56 -22
  140. package/dist/{init-ENEG6RZT.js → init-MRTWWDFW.js} +38 -45
  141. package/dist/{inspect-PVQK4E2A.js → inspect-55NOAXI2.js} +36 -35
  142. package/dist/{installer-YGGLEOSF.js → installer-YSFFGBBV.js} +8 -8
  143. package/dist/{keyframes-UWSYS2SL.js → keyframes-OO2BX2IB.js} +13 -14
  144. package/dist/{lambda-L3LPXC2M.js → lambda-CXXY6QT3.js} +11 -11
  145. package/dist/{layout-JVL4QREC.js → layout-57GJXKDK.js} +36 -35
  146. package/dist/{lint-JXQ72DDB.js → lint-J4FK3Z6G.js} +23 -16
  147. package/dist/{lintProject-F7IC7WY4.js → lintProject-52SLJPRC.js} +5 -4
  148. package/dist/{list-UFMLM3VV.js → list-VDQUJ76B.js} +7 -7
  149. package/dist/{login-CKGMWQJN.js → login-TJSEALWW.js} +7 -7
  150. package/dist/{logout-DDC4QLVK.js → logout-JYFWWUGK.js} +3 -3
  151. package/dist/{manager-U6OP3EXB.js → manager-4PLYEEWP.js} +14 -13
  152. package/dist/{manager-UHWEKPXC.js → manager-MZIJY73J.js} +3 -3
  153. package/dist/{media-treatment-MFMEWCDY.js → media-treatment-GXP4PMJH.js} +20 -19
  154. package/dist/{models-QA3TJ75Y.js → models-HQQQKEEP.js} +18 -17
  155. package/dist/{motionShot-NV2OPJHD.js → motionShot-2BT5D7DC.js} +21 -20
  156. package/dist/{normalize-3AYFSN2F.js → normalize-FASIPBUM.js} +1 -1
  157. package/dist/{normalize-audio-JWJRUKK2.js → normalize-audio-SOLFMHNP.js} +12 -8
  158. package/dist/{open-PTJNDRER.js → open-KHEUODFQ.js} +18 -18
  159. package/dist/{parakeetRunner-B5FCWWOO.js → parakeetRunner-BHU5NCAX.js} +20 -19
  160. package/dist/{pipeline-N26NA6ZG.js → pipeline-WFV5HDTD.js} +15 -14
  161. package/dist/{play-45D6X6TV.js → play-GB34CANJ.js} +27 -26
  162. package/dist/{policies-MBWGLMWB.js → policies-GHVXA5PE.js} +1 -1
  163. package/dist/{preflight-MFOHPUOI.js → preflight-REF3VSJ7.js} +15 -14
  164. package/dist/{present-IFBUDI4D.js → present-SIUTA7TD.js} +24 -23
  165. package/dist/{preview-MQRLXQOV.js → preview-T2GE7Z4A.js} +27 -26
  166. package/dist/{producer-2QG7HLAW.js → producer-23KVQZAB.js} +1 -1
  167. package/dist/{projectConfig-I4FTZXHB.js → projectConfig-DBSNBPNP.js} +10 -10
  168. package/dist/{publication-3GOFXCGU.js → publication-IXPUKYWJ.js} +5 -5
  169. package/dist/{publish-3B2TZCFH.js → publish-3BA5VHXJ.js} +18 -17
  170. package/dist/{refresh-RXTOPRBB.js → refresh-USSFPJAU.js} +3 -3
  171. package/dist/{remove-background-RK4BJDBF.js → remove-background-RMSCJVVQ.js} +16 -15
  172. package/dist/{render-SJ4HFPFU.js → render-6RNE2MLU.js} +26 -25
  173. package/dist/{render-PW3XGS7B.js → render-XGOZMMWX.js} +42 -41
  174. package/dist/{render-BV6FWFX3.js → render-Y6CTQ3YW.js} +8 -8
  175. package/dist/{render-batch-GKX54O6N.js → render-batch-VUR6N6EY.js} +9 -9
  176. package/dist/renderSetupWorker.js +9 -8
  177. package/dist/{resolver-RQJ7CNXD.js → resolver-GJCUH57W.js} +7 -7
  178. package/dist/{screenshotCapture-UBY6TT75.js → screenshotCapture-I5EDCITF.js} +6 -3
  179. package/dist/{sherpa-XZPG7QFF.js → sherpa-VVAKRCPL.js} +19 -18
  180. package/dist/skills/hyperframes/references/format.md +1 -0
  181. package/dist/skills/hyperframes/references/skill-lifecycle.md +8 -4
  182. package/dist/skills/hyperframes-cli/references/init-and-scaffold.md +1 -1
  183. package/dist/{skills-EYLB2V6F.js → skills-ZHBURVQG.js} +13 -75
  184. package/dist/{skillsUpdateCheck-TE6K5ROM.js → skillsUpdateCheck-VMDAL2O2.js} +5 -5
  185. package/dist/{slideshow-YTWATJRT.js → slideshow-SJGK4RQS.js} +1 -1
  186. package/dist/{snapshot-FE4T3SCN.js → snapshot-KEOG56SL.js} +61 -53
  187. package/dist/{src-ZOXSEJCD.js → src-BH5NICGQ.js} +24 -9
  188. package/dist/{src-SEJ7LNNB.js → src-TZLGFRRX.js} +13 -12
  189. package/dist/{staticProjectServer-LSVIRDRO.js → staticProjectServer-BKXL5CXB.js} +22 -21
  190. package/dist/{status-CM7IQTU2.js → status-H5WLKQDS.js} +3 -3
  191. package/dist/studio/assets/{hyperframes-player-Bv9hQ3v7.js → hyperframes-player-BMcUdmDb.js} +3 -3
  192. package/dist/studio/assets/{index-CBO8uz7-.css → index-CYbvOVp-.css} +1 -1
  193. package/dist/studio/assets/{index-D_QqfWhx.js → index-Ca-mgTnS.js} +122 -122
  194. package/dist/studio/assets/{index-Df14bh-L.js → index-Ci6GuloR.js} +1 -1
  195. package/dist/studio/index.html +2 -2
  196. package/dist/{studio-api-SL2Z76NU.js → studio-api-A5U6QAMC.js} +19 -14
  197. package/dist/{studioServer-BADWVIHU.js → studioServer-5EC5CP4W.js} +60 -59
  198. package/dist/{telemetry-QG5AANZ4.js → telemetry-4K6CPMNT.js} +2 -2
  199. package/dist/{telemetry-RN6VYEID.js → telemetry-BCKJXDSW.js} +5 -5
  200. package/dist/{timeline-JBTCIPLU.js → timeline-AZWAXTAY.js} +65 -43
  201. package/dist/{tokens-A7V7UHNK.js → tokens-X7NC3V7C.js} +2 -2
  202. package/dist/{transcribe-E4BOSNM4.js → transcribe-7NCY7QZ2.js} +17 -16
  203. package/dist/{transcribe-NTUCJGFI.js → transcribe-SH26H755.js} +26 -25
  204. package/dist/{tts-A2WILYGN.js → tts-5I2AJNLM.js} +1 -1
  205. package/dist/{updateCheck-M7UAYLUR.js → updateCheck-Y7FUWQM4.js} +4 -4
  206. package/dist/{upgrade-A2COSIMB.js → upgrade-ZHGEVL65.js} +4 -4
  207. package/dist/{urlDownloader-MBSQYART.js → urlDownloader-FPILIT7M.js} +10 -9
  208. package/dist/{validate-NODZYBHY.js → validate-KQOZR4F6.js} +30 -29
  209. package/dist/{video-LBCUUYK7.js → video-N2QAETFB.js} +12 -11
  210. package/dist/warmCheck.js +43 -42
  211. package/package.json +2 -1
  212. package/dist/chunk-I5JRXMCV.js +0 -6077
  213. package/dist/chunk-LM265QNK.js +0 -3896
@@ -17,45 +17,46 @@ import {
17
17
  sherpaRuntimeLoadError,
18
18
  sherpaUnsupportedReason,
19
19
  transcribeWithSherpa
20
- } from "./chunk-BFFLKQVB.js";
20
+ } from "./chunk-MFUNDJEV.js";
21
21
  import "./chunk-CZUAX3BV.js";
22
- import "./chunk-QH3T4WI2.js";
22
+ import "./chunk-EXAX37XR.js";
23
23
  import "./chunk-6BEFEWFB.js";
24
- import "./chunk-AQB5M53R.js";
25
- import "./chunk-RWYUK7LM.js";
26
- import "./chunk-7LUJE3II.js";
24
+ import "./chunk-M3KZBDPB.js";
25
+ import "./chunk-BP4EMEGH.js";
26
+ import "./chunk-VLLFORE2.js";
27
27
  import "./chunk-WQ6ZXHFQ.js";
28
- import "./chunk-GLG5JWLI.js";
28
+ import "./chunk-DYNHVCBF.js";
29
29
  import "./chunk-EOVYQ3IG.js";
30
- import "./chunk-NMDUSCCE.js";
30
+ import "./chunk-L4JB7LI4.js";
31
31
  import "./chunk-IZCW2NKT.js";
32
- import "./chunk-GM3WIOO6.js";
32
+ import "./chunk-7HTH5PFK.js";
33
33
  import "./chunk-RQVDTPGD.js";
34
- import "./chunk-VYQYVYQ5.js";
35
- import "./chunk-LM265QNK.js";
34
+ import "./chunk-3W4B6G7Y.js";
35
+ import "./chunk-USWPZXEA.js";
36
36
  import "./chunk-VC76R6W2.js";
37
37
  import "./chunk-X7HBSTCZ.js";
38
- import "./chunk-B2A56S5C.js";
38
+ import "./chunk-2MCXIY4B.js";
39
39
  import "./chunk-OFQWTKPW.js";
40
40
  import "./chunk-DPVXBVLL.js";
41
41
  import "./chunk-3GXQPCJC.js";
42
42
  import "./chunk-634HSJ3J.js";
43
43
  import "./chunk-FXMKHHPO.js";
44
- import "./chunk-W64L7IFS.js";
45
- import "./chunk-DYAPHNV6.js";
44
+ import "./chunk-IW5G323T.js";
45
+ import "./chunk-RWGASWT7.js";
46
46
  import "./chunk-XT6MXC7A.js";
47
47
  import "./chunk-4UMPIPCQ.js";
48
- import "./chunk-3NRB7YXW.js";
48
+ import "./chunk-2VXY3PEF.js";
49
49
  import "./chunk-VAS6HQX3.js";
50
50
  import "./chunk-6BNTGNGD.js";
51
- import "./chunk-RUOG4VB7.js";
51
+ import "./chunk-CZGHFATT.js";
52
+ import "./chunk-PKZ7RK5N.js";
52
53
  import "./chunk-MMQ52NIZ.js";
53
54
  import "./chunk-BSQ7XANM.js";
54
55
  import "./chunk-SDYDNHEE.js";
55
- import "./chunk-IXLUTE6N.js";
56
- import "./chunk-I5JRXMCV.js";
56
+ import "./chunk-3422KMTD.js";
57
+ import "./chunk-RXATE6FZ.js";
57
58
  import "./chunk-W2LGJSEN.js";
58
- import "./chunk-KNU5COPB.js";
59
+ import "./chunk-T2EUWCJE.js";
59
60
  import "./chunk-JZIEZCQM.js";
60
61
  import "./chunk-UOFAE5RF.js";
61
62
  import "./chunk-IR35BCLK.js";
@@ -94,6 +94,7 @@ The detail behind the contract in `SKILL.md`. Full references: `npx hyperframes
94
94
  ## Fonts
95
95
 
96
96
  - Bundled, so they resolve by name: Inter, Montserrat, Outfit, Nunito, Oswald, League Gothic, Archivo Black, Space Mono, IBM Plex Mono, JetBrains Mono, EB Garamond, Playfair Display, Source Code Pro, Noto Sans JP, Roboto, Open Sans, Lato, Poppins. Common system fonts (Helvetica, Arial, Times, Menlo and the like) are swapped for the nearest of these.
97
+ - The bundle only has Latin text at a few weights per family (Inter: 400, 700, 900). The compiler still fetches each of these families from Google Fonts for the other weights and scripts, and caches the result in `~/.cache/hyperframes/fonts`.
97
98
  - Any other family needs `@font-face` in the file that uses it, or lint fails `font_family_without_font_face`: `src: url('assets/fonts/x.woff2')` for a file in the project (a capture's own fonts, or one you download there), or `local('Exact Name')` for a font installed on this machine.
98
99
 
99
100
  ## Timing and the timeline
@@ -9,11 +9,15 @@ For a plugin installation, follow [plugin execution rules](plugin-installation.m
9
9
 
10
10
  ## What `init` does
11
11
 
12
- `npx hyperframes init` checks GitHub and refreshes the core set plus other skills already installed. A current install is a no-op. Offline or rate-limited checks degrade gracefully and do not fail project scaffolding.
12
+ `npx hyperframes init` installs the core set when it is missing and leaves every skill that is already installed as it is: it never refreshes, replaces or removes one. Updating is `npx hyperframes skills update`, run by you. Offline or rate-limited checks degrade gracefully and do not fail project scaffolding.
13
13
 
14
- The `--skip-skills` CLI flag is temporarily ignored. CI and tests may opt out with `HYPERFRAMES_SKIP_SKILLS=1`.
14
+ `--skip-skills` makes `init` leave skills alone. `HYPERFRAMES_SKIP_SKILLS=1` does the same for CI and tests.
15
15
 
16
- `HYPERFRAMES_SKIP_SKILLS=1` also makes `skills update` (bare or named) and bare `skills` exit 0 without installing or pruning, so an install pinned to one commit stays pinned.
16
+ `HYPERFRAMES_SKIP_SKILLS=1` also makes `skills update` (bare or named) and bare `skills` exit 0 without installing, so an install pinned to one commit stays pinned.
17
+
18
+ ## Stale-skills notice
19
+
20
+ After `render`, `lint` and `validate`, the CLI prints `N HyperFrames skills out of date or missing` to stderr when the cached check finds stale skills, so an agent run without a terminal sees it too. It is off in CI, in dev, with `HYPERFRAMES_NO_UPDATE_CHECK=1` and with `HYPERFRAMES_SKIP_SKILLS=1`, and runs with `--json` too, since it only writes stderr and leaves `--json` stdout untouched.
17
21
 
18
22
  ## Diagnose and update
19
23
 
@@ -26,7 +30,7 @@ npx hyperframes skills
26
30
  ```
27
31
 
28
32
  - `skills check` exits non-zero when an installed skill is stale or the core set is incomplete. Skills available on demand but not installed are not failures.
29
- - Bare `skills update` refreshes the core set and everything already installed, and removes skills that are no longer published.
33
+ - Bare `skills update` refreshes the core set and the HyperFrames skills already installed. It never removes a skill, and it leaves a skill the install record attributes to another publisher alone, even when the name matches one of ours.
30
34
  - Named `skills update <name...>` also installs those named skills.
31
35
  - Bare `skills` installs the full published set explicitly.
32
36
 
@@ -24,7 +24,7 @@ Other useful flags:
24
24
 
25
25
  - `--resolution` — preset: `landscape` (1920×1080), `portrait` (1080×1920), `landscape-4k`, `portrait-4k`, `square` (1080×1080), `square-4k`. Aliases: `1080p`, `4k`, `uhd`, `1080p-square`, `4k-square`.
26
26
  - `--skill=<slug>` — record the owning skill (e.g. `hyperframes`) in `hyperframes.json`, so every later render of this project — re-renders, `npm run render`, `--batch` — is attributed to it on anonymous telemetry without re-passing the flag. You rarely pass it by hand.
27
- - `--skip-skills` — **temporarily ignored**: `init` always checks AI coding skills against GitHub while the skills.sh registry catches up. To opt out (CI/tests), set the `HYPERFRAMES_SKIP_SKILLS=1` env var instead.
27
+ - `--skip-skills` — leave AI coding skills alone: `init` does not install the core set. `HYPERFRAMES_SKIP_SKILLS=1` does the same.
28
28
  - `--skip-transcribe` — don't auto-transcribe `--audio` / `--video` with Whisper.
29
29
  - `--model`, `--language` — Whisper model / language for the auto-transcription.
30
30
 
@@ -15,8 +15,8 @@ import {
15
15
  } from "./chunk-WMQNIQDJ.js";
16
16
  import {
17
17
  trackSkillsInstallSkipped
18
- } from "./chunk-TFGO5YMI.js";
19
- import "./chunk-W3CS2KFV.js";
18
+ } from "./chunk-RTLPWOO6.js";
19
+ import "./chunk-ZZPBXRYQ.js";
20
20
  import {
21
21
  diag
22
22
  } from "./chunk-VWG7OQKU.js";
@@ -39,24 +39,22 @@ import "./chunk-W2LGJSEN.js";
39
39
  import {
40
40
  FALLBACK_CORE_SKILLS,
41
41
  RETIRED_SKILLS,
42
- SKILLS_CLI_LOCK_PATHS_VERIFIED_AT,
43
42
  checkSkills,
44
43
  hyperframesSkillNames,
45
44
  invalidateSkillsCache,
46
45
  isCoreSkill,
47
46
  presentSkills,
48
- pruneOrphanedLockEntries,
49
47
  retiredSkillNotice
50
- } from "./chunk-FBDOHH3Q.js";
48
+ } from "./chunk-V7ZA2BNW.js";
51
49
  import {
52
50
  withMeta
53
- } from "./chunk-KAC2WR7P.js";
51
+ } from "./chunk-TZEKVLPV.js";
54
52
  import "./chunk-K4WIOZFP.js";
55
- import "./chunk-XUXGIA7H.js";
53
+ import "./chunk-6NLPPKBO.js";
56
54
  import "./chunk-WERLJGIC.js";
57
55
  import "./chunk-ISN5GRYI.js";
58
- import "./chunk-MSM6VRQ4.js";
59
- import "./chunk-KNU5COPB.js";
56
+ import "./chunk-LFUVTS6V.js";
57
+ import "./chunk-T2EUWCJE.js";
60
58
  import "./chunk-M2WBOQ2Q.js";
61
59
 
62
60
  // src/commands/skills.ts
@@ -421,15 +419,6 @@ function runSkillsAdd(source, selection, opts = {}) {
421
419
  );
422
420
  }
423
421
  var PLAIN_SKILL_NAME = /^[a-z0-9][a-z0-9._-]*$/i;
424
- function runSkillsRemove(names, opts) {
425
- const safe = names.filter((n) => PLAIN_SKILL_NAME.test(n));
426
- const rejected = names.filter((n) => !PLAIN_SKILL_NAME.test(n));
427
- if (rejected.length) {
428
- R.warn(c.warn(`Skipping unexpected skill name(s): ${rejected.join(", ")}`));
429
- }
430
- if (!safe.length) return Promise.resolve();
431
- return spawnNpx(["skills", "remove", ...safe, ...opts.global ? ["-g"] : [], "--yes"]);
432
- }
433
422
  var SOURCES = [{ name: "HyperFrames", url: "https://github.com/heygen-com/hyperframes" }];
434
423
  function mirrorToInstalledAgents() {
435
424
  try {
@@ -533,7 +522,7 @@ async function updateSkills(opts = {}) {
533
522
  }
534
523
  return { ...await updateSkillsOffline(requested, { strict, cwd: opts.cwd }), retired };
535
524
  }
536
- const manifestSkills = check.skills.filter((s) => s.status !== "removed");
525
+ const manifestSkills = check.skills;
537
526
  const manifestNames = new Set(manifestSkills.map((s) => s.name));
538
527
  const unknown = requested.filter((name) => !manifestNames.has(name));
539
528
  if (unknown.length) {
@@ -544,7 +533,9 @@ async function updateSkills(opts = {}) {
544
533
  const targets = manifestSkills.filter(
545
534
  (s) => opts.all === true || requested.includes(s.name) || isCoreSkill(s.name) || opts.refreshInstalled === true && s.status !== "missing"
546
535
  );
547
- const toInstall = targets.filter((s) => s.status === "missing" || s.status === "outdated");
536
+ const toInstall = targets.filter(
537
+ (s) => s.status === "missing" || s.status === "outdated" && opts.onlyMissing !== true
538
+ );
548
539
  const result = {
549
540
  targets: targets.map((s) => s.name),
550
541
  installed: toInstall.map((s) => s.name),
@@ -619,7 +610,6 @@ function renderCheck(result) {
619
610
  if (summary.outdated) parts.push(c.warn(`\u2191 ${summary.outdated} outdated`));
620
611
  if (summary.coreMissing) parts.push(c.warn(`\u25E6 ${summary.coreMissing} core not installed`));
621
612
  if (onDemandMissing) parts.push(c.dim(`\u25E6 ${onDemandMissing} available on demand`));
622
- if (summary.removed) parts.push(c.warn(`\u2717 ${summary.removed} removed upstream`));
623
613
  console.log(` ${parts.join(" ")}`);
624
614
  printSkillSection(result, "outdated", "Outdated:", "\u2191", c.warn);
625
615
  printSkillSection(
@@ -638,22 +628,6 @@ function renderCheck(result) {
638
628
  c.dim,
639
629
  (s) => !isCoreSkill(s.name)
640
630
  );
641
- printSkillSection(
642
- result,
643
- "removed",
644
- "Removed upstream (renamed or dropped \u2014 no longer published):",
645
- "\u2717",
646
- c.warn
647
- );
648
- if (result.lockMissing) {
649
- console.log();
650
- console.log(
651
- ` ${c.warn(`! Skills lock not found \u2014 can't check for skills removed upstream.`)}`
652
- );
653
- console.log(
654
- ` ${c.dim(` (lock paths verified against ${SKILLS_CLI_LOCK_PATHS_VERIFIED_AT})`)}`
655
- );
656
- }
657
631
  console.log();
658
632
  if (result.updateAvailable) {
659
633
  console.log(` ${c.accent("Update: npx hyperframes skills update")}`);
@@ -737,26 +711,12 @@ function reportUpdateFailure(message, json) {
737
711
  var updateCommand = defineCommand({
738
712
  meta: {
739
713
  name: "update",
740
- description: "Update the core set plus every installed HyperFrames skill to the latest, and remove any no longer published. Pass skill names to also install those (how on-demand skills install) \u2014 without names it never expands a partial install"
714
+ description: "Update the core set plus every installed HyperFrames skill to the latest. Pass skill names to also install those (how on-demand skills install) \u2014 without names it never expands a partial install, and it never removes a skill"
741
715
  },
742
- // Mirror `check`'s flags: the prune step runs the same removed-detection, so it
743
- // must respect the same overrides. Without these, `update`'s internal
744
- // checkSkills() fell back to defaults — pruning the auto-detected install
745
- // against the default manifest even when the user pointed `check` elsewhere.
746
716
  args: {
747
- json: { type: "boolean", description: "Output as JSON", default: false },
748
- dir: {
749
- type: "string",
750
- description: "Skills dir for removed-detection only \u2014 scopes the prune, not the install (default: auto-detect)"
751
- },
752
- source: {
753
- type: "string",
754
- description: "Where 'latest' comes from for removed-detection (local path, owner/repo, or URL) \u2014 does not change the install source"
755
- }
717
+ json: { type: "boolean", description: "Output as JSON", default: false }
756
718
  },
757
719
  async run({ args }) {
758
- const dir = args.dir;
759
- const source = args.source;
760
720
  const { requested, rejected } = requestedNamesFrom(args._ ?? []);
761
721
  if (rejected.length) {
762
722
  reportUpdateFailure(`Invalid skill name(s): ${rejected.join(", ")}`, args.json === true);
@@ -775,28 +735,6 @@ var updateCommand = defineCommand({
775
735
  setCommandExitCode(1);
776
736
  return;
777
737
  }
778
- try {
779
- const { skills, scope } = await checkSkills({ dir, source, canonical: true });
780
- const removed = skills.filter((s) => s.status === "removed").map((s) => s.name);
781
- if (removed.length) {
782
- console.log();
783
- console.log(
784
- c.dim(`Removing ${removed.length} skill(s) no longer published: ${removed.join(", ")}`)
785
- );
786
- await runSkillsRemove(removed, { global: scope === "global" });
787
- const scopeForPrune = scope ?? "global";
788
- const stillOrphaned = pruneOrphanedLockEntries(removed, scopeForPrune);
789
- if (stillOrphaned.length) {
790
- console.log(
791
- c.dim(
792
- `Reconciled ${stillOrphaned.length} orphaned lock entr${stillOrphaned.length === 1 ? "y" : "ies"} with no on-disk bundle: ${stillOrphaned.join(", ")}`
793
- )
794
- );
795
- }
796
- }
797
- } catch (err) {
798
- R.warn(c.warn(`Skipped removed-skill cleanup: ${err.message}`));
799
- }
800
738
  }
801
739
  });
802
740
  var skills_default = defineCommand({
@@ -9,14 +9,14 @@ import {
9
9
  printSkillsUpdateNotice,
10
10
  refreshSkillsCache,
11
11
  skillsCheckDue
12
- } from "./chunk-FBDOHH3Q.js";
13
- import "./chunk-KAC2WR7P.js";
12
+ } from "./chunk-V7ZA2BNW.js";
13
+ import "./chunk-TZEKVLPV.js";
14
14
  import "./chunk-K4WIOZFP.js";
15
- import "./chunk-XUXGIA7H.js";
15
+ import "./chunk-6NLPPKBO.js";
16
16
  import "./chunk-WERLJGIC.js";
17
17
  import "./chunk-ISN5GRYI.js";
18
- import "./chunk-MSM6VRQ4.js";
19
- import "./chunk-KNU5COPB.js";
18
+ import "./chunk-LFUVTS6V.js";
19
+ import "./chunk-T2EUWCJE.js";
20
20
  import "./chunk-M2WBOQ2Q.js";
21
21
  export {
22
22
  invalidateSkillsCache,
@@ -12,7 +12,7 @@ import {
12
12
  parseSlideshowManifest,
13
13
  resolveSlideshow,
14
14
  slideshowIslandRegex
15
- } from "./chunk-IXLUTE6N.js";
15
+ } from "./chunk-3422KMTD.js";
16
16
  import "./chunk-M2WBOQ2Q.js";
17
17
  export {
18
18
  SLIDESHOW_ISLAND_TYPE,
@@ -19,13 +19,13 @@ import {
19
19
  import {
20
20
  loadInstalledSharp,
21
21
  loadOptionalPackage
22
- } from "./chunk-QH3T4WI2.js";
22
+ } from "./chunk-EXAX37XR.js";
23
23
  import "./chunk-6BEFEWFB.js";
24
24
  import {
25
25
  findFFmpeg,
26
26
  findFFprobe,
27
27
  getFFmpegInstallHint
28
- } from "./chunk-GLG5JWLI.js";
28
+ } from "./chunk-DYNHVCBF.js";
29
29
  import {
30
30
  pngDimensions,
31
31
  reportArtifacts,
@@ -33,30 +33,30 @@ import {
33
33
  } from "./chunk-57GN6KWT.js";
34
34
  import {
35
35
  captureArtifactRevision
36
- } from "./chunk-7A65UCMI.js";
37
- import "./chunk-JOLZ3BSL.js";
36
+ } from "./chunk-F5LLORBP.js";
37
+ import "./chunk-2LSCYS2H.js";
38
38
  import "./chunk-X7MTZ4T2.js";
39
39
  import {
40
40
  resolveProject
41
- } from "./chunk-7ZJEQY7Q.js";
41
+ } from "./chunk-LMNZLZMJ.js";
42
42
  import {
43
43
  serveStaticProjectHtml
44
- } from "./chunk-T5YF32WV.js";
45
- import "./chunk-ALEF2F5N.js";
44
+ } from "./chunk-VPC4XIVI.js";
45
+ import "./chunk-L5YLA54L.js";
46
46
  import "./chunk-X7MTZ4T2.js";
47
47
  import "./chunk-XUHOIDKG.js";
48
- import "./chunk-2WNVHZHA.js";
49
- import "./chunk-KHCTBZGJ.js";
48
+ import "./chunk-UNATIAOT.js";
49
+ import "./chunk-XQPA4W3M.js";
50
50
  import "./chunk-6JR2XUEE.js";
51
- import "./chunk-EI7FP7F3.js";
51
+ import "./chunk-FBVUAH7N.js";
52
52
  import {
53
53
  artifactDirectory,
54
54
  finishSnapshotRun,
55
55
  forgetRecordedArtifacts,
56
56
  recordArtifacts,
57
57
  retainSnapshotOutput
58
- } from "./chunk-TMBUBLZB.js";
59
- import "./chunk-COETAXRN.js";
58
+ } from "./chunk-C4Y3ZREE.js";
59
+ import "./chunk-7YSFE4SZ.js";
60
60
  import "./chunk-ALVXFXUG.js";
61
61
  import {
62
62
  DEFAULT_ZOOM_SCALE,
@@ -68,37 +68,37 @@ import {
68
68
  runFfmpegOnce,
69
69
  seekCompositionTimelineOnly,
70
70
  settleCompositionSeek
71
- } from "./chunk-JYSSPQDT.js";
72
- import "./chunk-WY3TQ2PT.js";
71
+ } from "./chunk-4LXZJIVY.js";
72
+ import "./chunk-UIC7B5KW.js";
73
73
  import "./chunk-MOEGCMKI.js";
74
- import "./chunk-TJKE4EYX.js";
74
+ import "./chunk-UB7BIDBS.js";
75
75
  import "./chunk-DKPNNYBZ.js";
76
- import "./chunk-7FF36MAD.js";
76
+ import "./chunk-VW63MHQU.js";
77
77
  import "./chunk-K2FLNJVB.js";
78
78
  import "./chunk-EHSBBBR2.js";
79
- import "./chunk-COWQITWP.js";
79
+ import "./chunk-4TKJWWPL.js";
80
80
  import "./chunk-442JNXRM.js";
81
81
  import "./chunk-DQBY7FRR.js";
82
82
  import {
83
83
  resolveLocalBrowserGpuMode
84
- } from "./chunk-XMSQRDAK.js";
85
- import "./chunk-JJJCFKMF.js";
84
+ } from "./chunk-YS4JUGNI.js";
85
+ import "./chunk-6XUJVEY2.js";
86
86
  import "./chunk-XT7X6QCP.js";
87
87
  import "./chunk-4YYJOFKS.js";
88
88
  import "./chunk-HVW7ABXD.js";
89
- import "./chunk-3XI7MIZB.js";
89
+ import "./chunk-X5CECNCK.js";
90
90
  import {
91
91
  runWithConcurrencyLimit
92
92
  } from "./chunk-JHOCK3DG.js";
93
- import "./chunk-TRZVS6TL.js";
94
- import "./chunk-LBNEH6IQ.js";
93
+ import "./chunk-QKX7ITER.js";
94
+ import "./chunk-7QNIXBQD.js";
95
95
  import "./chunk-AWDFDFI3.js";
96
96
  import "./chunk-P6LJ4Y32.js";
97
97
  import "./chunk-GMECXFAN.js";
98
- import "./chunk-7L37AB57.js";
98
+ import "./chunk-E3P3LJG6.js";
99
99
  import "./chunk-EOVYQ3IG.js";
100
- import "./chunk-TFGO5YMI.js";
101
- import "./chunk-W3CS2KFV.js";
100
+ import "./chunk-RTLPWOO6.js";
101
+ import "./chunk-ZZPBXRYQ.js";
102
102
  import "./chunk-VWG7OQKU.js";
103
103
  import {
104
104
  defineCommand
@@ -114,26 +114,26 @@ import {
114
114
  import "./chunk-KLIKCX6Q.js";
115
115
  import "./chunk-EVMY7IPL.js";
116
116
  import "./chunk-7FMUTGOH.js";
117
- import "./chunk-NMDUSCCE.js";
117
+ import "./chunk-L4JB7LI4.js";
118
118
  import "./chunk-IZCW2NKT.js";
119
119
  import {
120
120
  createRuntimeStartTimeResolver,
121
121
  isClipVisibleAt,
122
122
  isInClipWindow
123
- } from "./chunk-GM3WIOO6.js";
123
+ } from "./chunk-7HTH5PFK.js";
124
124
  import "./chunk-RQVDTPGD.js";
125
- import "./chunk-VYQYVYQ5.js";
125
+ import "./chunk-3W4B6G7Y.js";
126
126
  import {
127
127
  readElementRateSpec,
128
128
  sourceTimeAt,
129
129
  timeAtSourceTime
130
- } from "./chunk-LM265QNK.js";
130
+ } from "./chunk-USWPZXEA.js";
131
131
  import "./chunk-VC76R6W2.js";
132
132
  import "./chunk-X7HBSTCZ.js";
133
133
  import {
134
134
  topLevelElements,
135
135
  trackKindOf
136
- } from "./chunk-B2A56S5C.js";
136
+ } from "./chunk-2MCXIY4B.js";
137
137
  import "./chunk-OFQWTKPW.js";
138
138
  import "./chunk-DPVXBVLL.js";
139
139
  import "./chunk-3GXQPCJC.js";
@@ -141,7 +141,7 @@ import "./chunk-634HSJ3J.js";
141
141
  import "./chunk-FXMKHHPO.js";
142
142
  import {
143
143
  runCancellableProcess
144
- } from "./chunk-DYAPHNV6.js";
144
+ } from "./chunk-RWGASWT7.js";
145
145
  import {
146
146
  definitiveEntryMismatchComposition,
147
147
  hasDefinitiveEntryMismatch
@@ -151,29 +151,30 @@ import "./chunk-XT6MXC7A.js";
151
151
  import "./chunk-4UMPIPCQ.js";
152
152
  import {
153
153
  lintProject
154
- } from "./chunk-3NRB7YXW.js";
154
+ } from "./chunk-2VXY3PEF.js";
155
155
  import "./chunk-VAS6HQX3.js";
156
156
  import "./chunk-6BNTGNGD.js";
157
- import "./chunk-RUOG4VB7.js";
157
+ import "./chunk-CZGHFATT.js";
158
+ import "./chunk-PKZ7RK5N.js";
158
159
  import "./chunk-MMQ52NIZ.js";
159
160
  import "./chunk-BSQ7XANM.js";
160
161
  import {
161
162
  parseHTML
162
163
  } from "./chunk-SDYDNHEE.js";
163
- import "./chunk-IXLUTE6N.js";
164
- import "./chunk-I5JRXMCV.js";
164
+ import "./chunk-3422KMTD.js";
165
+ import "./chunk-RXATE6FZ.js";
165
166
  import "./chunk-W2LGJSEN.js";
166
167
  import {
167
168
  withMeta
168
- } from "./chunk-KAC2WR7P.js";
169
+ } from "./chunk-TZEKVLPV.js";
169
170
  import "./chunk-K4WIOZFP.js";
170
- import "./chunk-XUXGIA7H.js";
171
+ import "./chunk-6NLPPKBO.js";
171
172
  import "./chunk-WERLJGIC.js";
172
173
  import "./chunk-ISN5GRYI.js";
173
- import "./chunk-MSM6VRQ4.js";
174
+ import "./chunk-LFUVTS6V.js";
174
175
  import {
175
176
  normalizeErrorMessage
176
- } from "./chunk-KNU5COPB.js";
177
+ } from "./chunk-T2EUWCJE.js";
177
178
  import "./chunk-KGPLIH7B.js";
178
179
  import "./chunk-M2WBOQ2Q.js";
179
180
 
@@ -185,6 +186,12 @@ function parseSnapshotRange(value) {
185
186
  throw new Error("--range must be START,END in seconds, with 0 <= START < END");
186
187
  return [range[0], range[1]];
187
188
  }
189
+ function parseSnapshotAt(value) {
190
+ const times = value.split(",").map((part) => part.trim() === "" ? NaN : Number(part));
191
+ if (!times.every((time) => Number.isFinite(time) && time >= 0))
192
+ throw new Error("--at must be comma-separated times in seconds, each 0 or more");
193
+ return times;
194
+ }
188
195
  function sampleSnapshotRange([start, end], frames, duration, exclusiveEnd = false) {
189
196
  if (!Number.isInteger(frames) || frames < 1)
190
197
  throw new Error("--frames must be a positive integer");
@@ -380,7 +387,7 @@ function reviewFrames(plan) {
380
387
  }
381
388
  var BEAT_SHEET_PAGE = 16;
382
389
  async function writeReviewSheets(dir, frames, written) {
383
- const { createContactSheet } = await import("./contactSheet-CAGMKI3E.js");
390
+ const { createContactSheet } = await import("./contactSheet-SZBJDOMT.js");
384
391
  const { join: join2 } = await import("path");
385
392
  const captured = frames.flatMap((frame) => {
386
393
  const path = written(frame);
@@ -461,6 +468,7 @@ var VIDEO_FRAME_EXTRACT_CONCURRENCY = 4;
461
468
  function formatSnapshotTimestamp(time) {
462
469
  return `${Number(time.toFixed(3))}s`;
463
470
  }
471
+ var SNAPSHOT_IMAGE_NAME = /^(?:(?:frame-\d+-|ref-(?:\d+-)?)?at-[\d.]+s\.png|pair-(?:\d+-)?at-[\d.]+s\.jpg|(?:beat-\d+|seam-\d+-\d+)-at-[\d.]+s\.png|(?:contact-sheet|review-beats|review-phone)(?:-\d+)?\.jpg|review-seam-\d+\.jpg)$/;
464
472
  function assertDistinctKeepNames(times) {
465
473
  const timeByLabel = /* @__PURE__ */ new Map();
466
474
  for (const time of times) {
@@ -594,6 +602,7 @@ async function probeContainingSourceFrameSeek(videoPath, time, holdLastFrame) {
594
602
  const landed = await landing(candidate.pts);
595
603
  if (landed === null) break;
596
604
  if (landed <= 0 || landed > frame) continue;
605
+ if (landed < candidate.pts - 1e-6) return { seek: candidate.pts, select: mid - candidate.pts };
597
606
  const again = Math.abs(landed - candidate.pts) < 1e-6 ? landed : await landing(landed);
598
607
  if (again !== null && Math.abs(again - landed) < 1e-6)
599
608
  return { seek: landed, select: mid - landed };
@@ -696,7 +705,7 @@ function serveCapturePage(projectDir, html, proxy) {
696
705
  }
697
706
  async function captureSnapshots(projectDir, opts) {
698
707
  const log = opts.log ?? ((message) => console.log(message));
699
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-23QDKFSN.js");
708
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-JLB2OYMT.js");
700
709
  const capture = await captureArtifactRevision(projectDir).catch(warnSnapshotsNotRecorded);
701
710
  const invocation = randomUUID();
702
711
  const artifacts = [];
@@ -816,7 +825,7 @@ async function captureSnapshots(projectDir, opts) {
816
825
  try {
817
826
  const { readdirSync } = await import("fs");
818
827
  for (const file of opts.keep ? [] : readdirSync(snapshotDir)) {
819
- if (/\.(png|jpg|jpeg)$/i.test(file)) {
828
+ if (SNAPSHOT_IMAGE_NAME.test(file)) {
820
829
  const path = resolve(snapshotDir, file);
821
830
  replaced.push(path);
822
831
  rmSync(path, { force: true });
@@ -828,7 +837,7 @@ async function captureSnapshots(projectDir, opts) {
828
837
  let syncVideoFrameVisibility = null;
829
838
  let extractMediaMetadata = null;
830
839
  try {
831
- const engine = await import("./src-ZOXSEJCD.js");
840
+ const engine = await import("./src-BH5NICGQ.js");
832
841
  injectVideoFramesBatch = engine.injectVideoFramesBatch;
833
842
  syncVideoFrameVisibility = engine.syncVideoFrameVisibility;
834
843
  extractMediaMetadata = engine.extractMediaMetadata;
@@ -1023,7 +1032,7 @@ async function captureSnapshots(projectDir, opts) {
1023
1032
  const refPath = join(snapshotDir, `ref-${slot}.png`);
1024
1033
  writeCaptureFileSync(refPath, refPng);
1025
1034
  const pairPath = join(snapshotDir, `pair-${slot}.jpg`);
1026
- const { createContactSheet } = await import("./contactSheet-CAGMKI3E.js");
1035
+ const { createContactSheet } = await import("./contactSheet-SZBJDOMT.js");
1027
1036
  await createContactSheet([framePath, refPath], pairPath, {
1028
1037
  cols: 2,
1029
1038
  maxImages: 2,
@@ -1268,6 +1277,8 @@ var snapshot_default = defineCommand({
1268
1277
  }
1269
1278
  const frames = parseInt(args.frames, 10) || 5;
1270
1279
  const range = args.range === void 0 ? void 0 : parseSnapshotRange(String(args.range));
1280
+ const atTimestamps = args.at === void 0 ? void 0 : parseSnapshotAt(String(args.at));
1281
+ if (args.keep === true && atTimestamps) assertDistinctKeepNames(atTimestamps);
1271
1282
  const composition = args.composition === void 0 ? void 0 : String(args.composition).trim();
1272
1283
  if (composition === "") throw new Error("--composition requires a composition ID");
1273
1284
  const project = resolveProject(args.dir);
@@ -1303,8 +1314,6 @@ var snapshot_default = defineCommand({
1303
1314
  failCommand();
1304
1315
  }
1305
1316
  const timeout = parseInt(args.timeout, 10) || 5e3;
1306
- const atTimestamps = args.at ? String(args.at).split(",").map((s) => parseFloat(s.trim())).filter((n) => !isNaN(n)) : void 0;
1307
- if (args.keep === true && atTimestamps) assertDistinctKeepNames(atTimestamps);
1308
1317
  const describeArg = args.describe === void 0 ? "true" : String(args.describe) === "false" ? null : String(args.describe);
1309
1318
  const camera = args.angle ? parseAngle(String(args.angle)) : void 0;
1310
1319
  const zoomTarget = args.zoom ? parseZoomTarget(String(args.zoom)) : void 0;
@@ -1340,11 +1349,8 @@ var snapshot_default = defineCommand({
1340
1349
  log
1341
1350
  });
1342
1351
  const paths = captured.paths;
1343
- reportArtifacts(
1344
- "snapshot",
1345
- "frame",
1346
- paths.map((path) => resolve(project.dir, path))
1347
- );
1352
+ const framePaths = paths.map((path) => resolve(project.dir, path));
1353
+ reportArtifacts("snapshot", "frame", framePaths);
1348
1354
  if (paths.length === 0) {
1349
1355
  fail(`
1350
1356
  ${c.error("\u2717")} Could not determine composition duration \u2014 no frames captured`);
@@ -1362,7 +1368,7 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${snapshotDir}`);
1362
1368
  let contactSheets = [];
1363
1369
  let reviewSheets;
1364
1370
  try {
1365
- const { createSnapshotContactSheet } = await import("./contactSheet-CAGMKI3E.js");
1371
+ const { createSnapshotContactSheet } = await import("./contactSheet-SZBJDOMT.js");
1366
1372
  if (captured.review) {
1367
1373
  const written = new Map(
1368
1374
  captured.review.frames.map((frame) => [frame.file, frame.path])
@@ -1376,7 +1382,7 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${snapshotDir}`);
1376
1382
  printReview(captured.review, reviewSheets, log);
1377
1383
  } else if (args.keep !== true) {
1378
1384
  contactSheets = await createSnapshotContactSheet(
1379
- snapshotDir,
1385
+ framePaths,
1380
1386
  join(snapshotDir, "contact-sheet.jpg")
1381
1387
  );
1382
1388
  }
@@ -1498,6 +1504,7 @@ ${c.error("\u2717")} Snapshot failed: ${msg}`);
1498
1504
  }
1499
1505
  });
1500
1506
  export {
1507
+ SNAPSHOT_IMAGE_NAME,
1501
1508
  computeSnapshotTimes,
1502
1509
  containingSourceFrameIndex,
1503
1510
  snapshot_default as default,
@@ -1505,6 +1512,7 @@ export {
1505
1512
  extractVideoFrameToBuffer,
1506
1513
  formatSnapshotTimestamp,
1507
1514
  parseZoomScale,
1515
+ probeContainingSourceFrameSeek,
1508
1516
  recaptureSnapshotComposite,
1509
1517
  requireSnapshotFfmpeg,
1510
1518
  resolveSnapshotVideoClipStart,