hyperframes 0.8.188 → 0.8.190-hdr.1

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 (167) hide show
  1. package/dist/{add-UORF6235.js → add-42OFT2PY.js} +11 -11
  2. package/dist/{animatedGifPrep-23MLSEXF.js → animatedGifPrep-ADGDO7XY.js} +5 -5
  3. package/dist/api.js +13 -13
  4. package/dist/{asset-DOKDVHCW.js → asset-O67VPO3R.js} +2 -2
  5. package/dist/{assetCataloger-CD27MHEY.js → assetCataloger-6XITUU4Q.js} +5 -5
  6. package/dist/{audio-3NMZHNNU.js → audio-XKJ3ZIDS.js} +11 -11
  7. package/dist/{auth-AWKTSKGC.js → auth-OQPI6LUT.js} +1 -1
  8. package/dist/{autoUpdate-VBOI4CNU.js → autoUpdate-A2N5A6DZ.js} +2 -2
  9. package/dist/{backgroundChecks-S4R454YU.js → backgroundChecks-WMA3TUHP.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-EGPYNDHK.js → batchRender-QZKFVWEI.js} +3 -3
  12. package/dist/{beats-YENEQUOA.js → beats-36HTUETR.js} +4 -4
  13. package/dist/{benchmark-THSJIQG7.js → benchmark-PPJOA4I5.js} +8 -8
  14. package/dist/{browser-BDMVQ6WJ.js → browser-ZVRJHCG5.js} +3 -3
  15. package/dist/{bundleWithLocalizedFonts-3QG722YD.js → bundleWithLocalizedFonts-R64YXJL5.js} +2 -2
  16. package/dist/{capture-Z6BGCTK3.js → capture-U7E5PPGU.js} +8 -8
  17. package/dist/{capture-WM4XDMFX.js → capture-YFK4OMCA.js} +2 -2
  18. package/dist/{captureCompositionFrame-EMHSAIBZ.js → captureCompositionFrame-DSKY6NL7.js} +11 -11
  19. package/dist/{catalog-7TV6UNCG.js → catalog-AYZ2KQMV.js} +11 -11
  20. package/dist/{catch-up-63IUDZRW.js → catch-up-EXF4BC4Z.js} +4 -4
  21. package/dist/{check-7RHZL4DV.js → check-4CTWFC7P.js} +34 -33
  22. package/dist/{checkBrowser-PF56CT5X.js → checkBrowser-JCZJGHYX.js} +29 -30
  23. package/dist/{chunk-5OZI55AC.js → chunk-2ICQSIZZ.js} +1 -1
  24. package/dist/{chunk-I7C5GUEQ.js → chunk-3B35XAD2.js} +3 -3
  25. package/dist/{chunk-OKSYDQHY.js → chunk-3Q5WJY5E.js} +3 -3
  26. package/dist/{chunk-YCW345M4.js → chunk-4BINHKAB.js} +359 -211
  27. package/dist/{chunk-KY7375C4.js → chunk-4TFBD773.js} +1 -1
  28. package/dist/{chunk-YV4WT7CJ.js → chunk-56IOFIYB.js} +12 -1
  29. package/dist/{chunk-46VJ2UAV.js → chunk-5XD6QAMF.js} +5 -5
  30. package/dist/{chunk-HKUZCSNZ.js → chunk-6HYHHMX3.js} +2 -2
  31. package/dist/{chunk-PQLFJYGP.js → chunk-6OJBN6P4.js} +5 -5
  32. package/dist/{chunk-6OWNUXTU.js → chunk-6TBDO6H6.js} +1 -1
  33. package/dist/{chunk-FWVILDOZ.js → chunk-7DJCW4YE.js} +3 -3
  34. package/dist/{chunk-NMOTNNP2.js → chunk-7KTMMDHC.js} +1 -1
  35. package/dist/{chunk-IA2IDJAG.js → chunk-A4WDFBHY.js} +1 -1
  36. package/dist/{chunk-NFLZNSUZ.js → chunk-AGUVIOZR.js} +1 -1
  37. package/dist/{chunk-V6NM4KL3.js → chunk-AMGFHO6X.js} +2 -2
  38. package/dist/{chunk-JWRT2IXO.js → chunk-ATQTK7CJ.js} +1 -1
  39. package/dist/{chunk-HPQSUPR7.js → chunk-AYFF3GX6.js} +1 -1
  40. package/dist/{chunk-W2KGJHUL.js → chunk-B7JFAXDP.js} +2 -2
  41. package/dist/{chunk-LWYZN7HS.js → chunk-BT64TTSE.js} +219 -79
  42. package/dist/{chunk-ZIRIDSDB.js → chunk-BWPY64WA.js} +1 -1
  43. package/dist/{chunk-44QWRPGE.js → chunk-CWRAVNDW.js} +2 -2
  44. package/dist/chunk-DIV37NUE.js +3896 -0
  45. package/dist/{chunk-57XL23DE.js → chunk-E65UJDKR.js} +1 -1
  46. package/dist/{chunk-MTPPEEYZ.js → chunk-E6BMTU6F.js} +16 -8
  47. package/dist/{chunk-LWY3PFJ7.js → chunk-EPOYPP36.js} +2 -2
  48. package/dist/{chunk-KDBPZOXK.js → chunk-EQXUGT5K.js} +11 -11
  49. package/dist/{chunk-6HYPEIH7.js → chunk-EYBS6GH2.js} +2 -2
  50. package/dist/{chunk-T3OXKSRG.js → chunk-EZFGQAYH.js} +2 -2
  51. package/dist/{chunk-FSTLXRIN.js → chunk-GWE3UEGX.js} +1 -1
  52. package/dist/{chunk-XPVN4R66.js → chunk-HJZ5CPZA.js} +31 -7
  53. package/dist/{chunk-BU4HRISA.js → chunk-ID4S5OVW.js} +91 -24
  54. package/dist/{chunk-GYBPAKBM.js → chunk-ILIPOK4L.js} +53 -31
  55. package/dist/{chunk-BWEZDN6U.js → chunk-JVG4G46L.js} +1 -1
  56. package/dist/{chunk-MJKUCR3C.js → chunk-KVZ4ZANT.js} +2 -2
  57. package/dist/{chunk-6HZ7TSJJ.js → chunk-L34DPWY4.js} +15 -11
  58. package/dist/{chunk-KWSEIVR6.js → chunk-LJKMM3XW.js} +1 -1
  59. package/dist/{chunk-L243NE72.js → chunk-O6NHRPQV.js} +7 -7
  60. package/dist/{chunk-2DHCCBCN.js → chunk-OAZGGUCB.js} +9 -9
  61. package/dist/{chunk-NFHRGHCJ.js → chunk-PFMLW2WE.js} +4 -4
  62. package/dist/{chunk-DA4TQFSF.js → chunk-PWEK5IYU.js} +1 -1
  63. package/dist/{chunk-5DPV7LU3.js → chunk-RDHEG7RX.js} +2 -2
  64. package/dist/{chunk-DLFAVRF3.js → chunk-SUSSMCWL.js} +1 -1
  65. package/dist/{chunk-YZ73IPW2.js → chunk-T6MUUXE3.js} +2 -2
  66. package/dist/{chunk-U6RXZNZE.js → chunk-TMBUBLZB.js} +55 -23
  67. package/dist/{chunk-SMF6YAUL.js → chunk-TSQAPPRS.js} +1 -1
  68. package/dist/{chunk-OJOZXWLC.js → chunk-U4DWSOH5.js} +3 -3
  69. package/dist/{chunk-JYC53CW4.js → chunk-UASUPXBJ.js} +97 -30
  70. package/dist/{chunk-UF6RCYA5.js → chunk-UQMPHIOA.js} +1 -1
  71. package/dist/{chunk-PMXR3IUH.js → chunk-UWSJL63I.js} +1 -1
  72. package/dist/{chunk-DG4ME554.js → chunk-UZ7RJDEC.js} +1 -1
  73. package/dist/{chunk-X556BGL7.js → chunk-WBUO6WH6.js} +1 -1
  74. package/dist/{chunk-IJYR4TTA.js → chunk-XBZEQTBH.js} +1 -1
  75. package/dist/{chunk-B2P4JRUJ.js → chunk-XNLYMHX2.js} +1 -1
  76. package/dist/{chunk-FOLMMQF3.js → chunk-XRYN74FP.js} +13 -13
  77. package/dist/{chunk-2WUDFZCR.js → chunk-XSDZ3H5H.js} +2 -2
  78. package/dist/{chunk-MXXX6WVC.js → chunk-YDGW5KWX.js} +1 -1
  79. package/dist/{chunk-FH7WODJH.js → chunk-ZFFKWHXN.js} +8 -0
  80. package/dist/{chunk-6Q5CFUAP.js → chunk-ZKWXDQAE.js} +1 -1
  81. package/dist/{clean-43O47OTN.js → clean-2JS7FOL5.js} +14 -14
  82. package/dist/cli.js +53 -53
  83. package/dist/{cloud-ZFWKFFSU.js → cloud-HCB6VY6B.js} +4 -4
  84. package/dist/{cloudrun-XBBESKEU.js → cloudrun-CTNX64R6.js} +4 -4
  85. package/dist/{compare-OW4ELTFZ.js → compare-ISRKIX34.js} +26 -26
  86. package/dist/{compiler-23MT6CX6.js → compiler-EJE3HLCS.js} +2 -2
  87. package/dist/{component-SDV7LWH6.js → component-ZBPQXTNP.js} +3 -3
  88. package/dist/{compositions-DI5QZCEK.js → compositions-WOZU3EYH.js} +9 -9
  89. package/dist/{delete-QY2NSQ2G.js → delete-NX3DWOKP.js} +2 -2
  90. package/dist/{deploy-MJVC4EFY.js → deploy-RW7L3BHN.js} +1 -1
  91. package/dist/{dist-RFTGYT26.js → dist-NHW2JQCA.js} +4 -2
  92. package/dist/{doctor-7ZOECPHR.js → doctor-KFHSQJWL.js} +9 -9
  93. package/dist/{events-XVQQGECC.js → events-RY3Z2CFX.js} +2 -2
  94. package/dist/{events-WIX4JM2K.js → events-YT6WKFUT.js} +3 -3
  95. package/dist/{feedback-GBYBR6UO.js → feedback-GRNEVOPP.js} +6 -6
  96. package/dist/{ffmpeg-QGQBYMO3.js → ffmpeg-BTEY5DB5.js} +5 -5
  97. package/dist/{figma-2CMKUGJQ.js → figma-WN7BLU45.js} +3 -3
  98. package/dist/fontLocalizeCli.js +7 -7
  99. package/dist/{get-RWCNUOHU.js → get-DVXYGS3H.js} +2 -2
  100. package/dist/{gpuPolicy-UGWSN32D.js → gpuPolicy-MWZSLJFR.js} +5 -5
  101. package/dist/{grade-compare-J2MX7HZL.js → grade-compare-LQXE5JYS.js} +27 -27
  102. package/dist/{help-SH3ID7MV.js → help-22RCD5VH.js} +1 -1
  103. package/dist/{history-C7V5QH7J.js → history-IF553ERO.js} +7 -7
  104. package/dist/hyperframe.manifest.json +1 -1
  105. package/dist/hyperframe.runtime.iife.js +62 -62
  106. package/dist/hyperframes-player.global.js +3 -3
  107. package/dist/{info-ZN3JJ3IN.js → info-VQGFR3XN.js} +7 -7
  108. package/dist/{init-KRNGSRNH.js → init-UPM6HJKO.js} +25 -25
  109. package/dist/{inspect-AYDZXTX7.js → inspect-S2XEY7E2.js} +27 -27
  110. package/dist/{installer-N6AIK6XQ.js → installer-PQKH2S7C.js} +4 -4
  111. package/dist/{keyframes-2RFUCEDK.js → keyframes-54Q3I2A5.js} +6 -6
  112. package/dist/{lambda-VW3CF6EE.js → lambda-6IGRFK3D.js} +6 -6
  113. package/dist/{layout-OE64APE7.js → layout-ZIE7P36K.js} +27 -27
  114. package/dist/{lint-UXJTX5WS.js → lint-ONB3UNVL.js} +6 -6
  115. package/dist/{list-KOL6JPZJ.js → list-P5VNTBT4.js} +2 -2
  116. package/dist/{login-MAQXOPDG.js → login-7ROFE2PP.js} +4 -4
  117. package/dist/{manager-3LZKRK7P.js → manager-4IBU76NA.js} +6 -6
  118. package/dist/{media-treatment-COLSXXQJ.js → media-treatment-GUZYPOL5.js} +11 -11
  119. package/dist/{models-XXWMGOD7.js → models-POH5ZYWG.js} +9 -9
  120. package/dist/{motionShot-RECBNTBZ.js → motionShot-TXQ7EFJW.js} +16 -16
  121. package/dist/{normalize-audio-LKVGHZWR.js → normalize-audio-SFFU7VUW.js} +4 -4
  122. package/dist/{open-UEQVSRKH.js → open-2MY4ESCL.js} +11 -11
  123. package/dist/{parakeetRunner-QVPCZ36U.js → parakeetRunner-7UPEE7SO.js} +10 -10
  124. package/dist/{pipeline-5VSMQBKW.js → pipeline-VZMOR53B.js} +6 -6
  125. package/dist/{play-MNEABYN4.js → play-IOELJ2NM.js} +17 -17
  126. package/dist/{preflight-ONJ74DWQ.js → preflight-MGUBNYUV.js} +6 -6
  127. package/dist/{present-GQ24GTYX.js → present-7LOVKMN7.js} +13 -13
  128. package/dist/{preview-ALL7O4RG.js → preview-XN7YD5ZP.js} +16 -16
  129. package/dist/{producer-43L2UDF6.js → producer-BLRL4SQP.js} +1 -1
  130. package/dist/{projectConfig-VJXUXK7U.js → projectConfig-LN3NR5OM.js} +6 -6
  131. package/dist/{publication-L6E5NTFV.js → publication-TXMCS4KM.js} +2 -2
  132. package/dist/{publish-LCLBJEPR.js → publish-57VURD7Z.js} +7 -7
  133. package/dist/{remove-background-PDL4KPR4.js → remove-background-OOF3QB2R.js} +7 -7
  134. package/dist/{render-J33ZHR6I.js → render-E27W7W3K.js} +27 -27
  135. package/dist/{render-OPCRLZVL.js → render-IDI4KMVH.js} +12 -12
  136. package/dist/{render-7HVKJ7T4.js → render-SP7WAUB4.js} +5 -5
  137. package/dist/{render-batch-ZHHIGXU3.js → render-batch-7ULP5RIJ.js} +5 -5
  138. package/dist/{resolver-KNNIMMBM.js → resolver-D3XERO6U.js} +4 -4
  139. package/dist/{sherpa-GI62H3H5.js → sherpa-B7HLM6FV.js} +9 -9
  140. package/dist/skills/hyperframes/references/motion.md +1 -1
  141. package/dist/{skills-IUTD6VQO.js → skills-JASL5NGP.js} +5 -5
  142. package/dist/{skillsUpdateCheck-XZE7MJG6.js → skillsUpdateCheck-OTF363HZ.js} +3 -3
  143. package/dist/{snapshot-XEXTHLZP.js → snapshot-MWBENTZA.js} +31 -31
  144. package/dist/{src-ZPIV4PGX.js → src-65S55XOQ.js} +6 -4
  145. package/dist/{src-6STRGCDC.js → src-OGTPL3Q6.js} +6 -6
  146. package/dist/{staticProjectServer-HJLT7MHE.js → staticProjectServer-JMFGTPMX.js} +15 -13
  147. package/dist/studio/assets/{hyperframes-player-DwWIKKZG.js → hyperframes-player-BV6dTpsG.js} +1 -1
  148. package/dist/studio/assets/{index-CESvLzz0.css → index-B3vk3hfU.css} +1 -1
  149. package/dist/studio/assets/{index-Cjwz7_13.js → index-CPVUyhno.js} +1 -1
  150. package/dist/studio/assets/{index-M8lEpS0Q.js → index-Ct_WfjBH.js} +127 -127
  151. package/dist/studio/index.html +2 -2
  152. package/dist/{studio-api-OBHEB5ND.js → studio-api-SZ4OMFPN.js} +7 -7
  153. package/dist/{studioServer-KRIZFYML.js → studioServer-6JDUXBF7.js} +44 -44
  154. package/dist/{telemetry-N5OOVBCP.js → telemetry-R7QKFTNL.js} +3 -3
  155. package/dist/{timeline-YUFH65OG.js → timeline-GTUWGREV.js} +15 -15
  156. package/dist/{tokens-K4VYLSWJ.js → tokens-2JZSWS5F.js} +2 -2
  157. package/dist/{transcribe-CY4CVO54.js → transcribe-M7OSQ5OU.js} +14 -14
  158. package/dist/{transcribe-GMQXKDYN.js → transcribe-PSZC4HH6.js} +8 -8
  159. package/dist/{updateCheck-2625RXK4.js → updateCheck-Y4MKTYXE.js} +2 -2
  160. package/dist/{upgrade-6ZY5MSBQ.js → upgrade-WHEHL2KG.js} +2 -2
  161. package/dist/{urlDownloader-PVJWG7V3.js → urlDownloader-VN2X7CIY.js} +4 -4
  162. package/dist/{validate-XSRHEE7E.js → validate-TC66RN5I.js} +21 -21
  163. package/dist/{video-MBFHC54F.js → video-SNGPARSX.js} +5 -5
  164. package/dist/warmCheck.js +34 -35
  165. package/package.json +1 -1
  166. package/dist/chunk-BPX7LZG6.js +0 -3896
  167. package/dist/chunk-KANNRHY7.js +0 -53
@@ -8,7 +8,7 @@ import {
8
8
  EncoderInterruptedError,
9
9
  encoderFailureError,
10
10
  prepareAnimatedGifInputs
11
- } from "./chunk-2WUDFZCR.js";
11
+ } from "./chunk-XSDZ3H5H.js";
12
12
  import {
13
13
  GENERIC_FAMILIES,
14
14
  collectFontFamilyCustomProperties,
@@ -41,6 +41,7 @@ import {
41
41
  analyzeCompositionHdr,
42
42
  analyzeKeyframeIntervals,
43
43
  appendRenderProvenanceArgs,
44
+ appendSoftwareEncoderThreadsArg,
44
45
  applyConcreteGpuScreenshotClamp,
45
46
  applyDomLayerMask,
46
47
  applyFaststart,
@@ -155,7 +156,7 @@ import {
155
156
  validateEngineConfigSnapshot,
156
157
  verifyDiskDrawElementSamples,
157
158
  writeCapturedFrame
158
- } from "./chunk-YCW345M4.js";
159
+ } from "./chunk-4BINHKAB.js";
159
160
  import {
160
161
  DISTRIBUTED_FPS,
161
162
  HF_VFX_ATTR,
@@ -170,7 +171,7 @@ import {
170
171
  parseVfxChain,
171
172
  resolveAuthoredTimingWindow,
172
173
  toFps
173
- } from "./chunk-YV4WT7CJ.js";
174
+ } from "./chunk-56IOFIYB.js";
174
175
  import {
175
176
  assignBundledRuntimeCompositionIds,
176
177
  buildVariablesByCompScript,
@@ -183,7 +184,7 @@ import {
183
184
  isTemplateEntry,
184
185
  parsesAsScript,
185
186
  prepareFlattenedInnerRoot
186
- } from "./chunk-SMF6YAUL.js";
187
+ } from "./chunk-TSQAPPRS.js";
187
188
  import {
188
189
  COMPOSITION_SOURCE_URL,
189
190
  HF_COLOR_GRADING_ATTR,
@@ -211,7 +212,7 @@ import {
211
212
  shouldClampResolvedMediaDuration,
212
213
  sourceTimeAt,
213
214
  styleElementsFor
214
- } from "./chunk-BPX7LZG6.js";
215
+ } from "./chunk-DIV37NUE.js";
215
216
  import {
216
217
  MAX_AUDIO_GAIN
217
218
  } from "./chunk-X7HBSTCZ.js";
@@ -1412,6 +1413,14 @@ function materializeExtractedFramesForCompiledDir(extracted, compiledDir, option
1412
1413
  }
1413
1414
  }
1414
1415
 
1416
+ // ../producer/src/services/render/frameCacheBudget.ts
1417
+ function frameCacheOptions(cfg, workers) {
1418
+ return {
1419
+ frameDataUriCacheLimit: cfg.frameDataUriCacheLimit,
1420
+ frameDataUriCacheBytesLimitMb: Math.floor(cfg.frameDataUriCacheBytesLimitMb / (workers || 1))
1421
+ };
1422
+ }
1423
+
1415
1424
  // ../producer/src/services/render/cleanup.ts
1416
1425
  import { freemem } from "os";
1417
1426
 
@@ -12102,10 +12111,7 @@ async function executeRenderPipeline(input) {
12102
12111
  });
12103
12112
  }
12104
12113
  });
12105
- const createRenderVideoFrameInjector = () => createVideoFrameInjector(frameLookup, {
12106
- frameDataUriCacheLimit: cfg.frameDataUriCacheLimit,
12107
- frameDataUriCacheBytesLimitMb: cfg.frameDataUriCacheBytesLimitMb
12108
- });
12114
+ const createRenderVideoFrameInjector = () => createVideoFrameInjector(frameLookup, frameCacheOptions(cfg, workerCount));
12109
12115
  let captureCalibration;
12110
12116
  const htmlInCanvasDetected = compiled.renderModeHints.reasons.some(
12111
12117
  (r) => r.code === "htmlInCanvas"
@@ -13714,12 +13720,13 @@ var RenderChunkValidationError = class extends Error {
13714
13720
  this.code = code;
13715
13721
  }
13716
13722
  };
13717
- function createChunkVideoFrameInjectorFactory(frameLookup) {
13718
- if (!(frameLookup instanceof Promise)) return () => createVideoFrameInjector(frameLookup);
13723
+ function createChunkVideoFrameInjectorFactory(frameLookup, options) {
13724
+ if (!(frameLookup instanceof Promise))
13725
+ return () => createVideoFrameInjector(frameLookup, options);
13719
13726
  return () => {
13720
13727
  let hook;
13721
13728
  return async (page, time, heldVideoTime) => {
13722
- hook ??= createVideoFrameInjector(await frameLookup);
13729
+ hook ??= createVideoFrameInjector(await frameLookup, options);
13723
13730
  await hook?.(page, time, heldVideoTime);
13724
13731
  };
13725
13732
  };
@@ -15499,7 +15506,7 @@ async function compilePlanComposition(projectDir, config, planDir, options) {
15499
15506
  if (probeResult.fileServer) closeFileServerSafely(probeResult.fileServer, "plan", log);
15500
15507
  if (probeResult.probeSession) {
15501
15508
  try {
15502
- const { closeCaptureSession: closeCaptureSession2 } = await import("./src-ZPIV4PGX.js");
15509
+ const { closeCaptureSession: closeCaptureSession2 } = await import("./src-65S55XOQ.js");
15503
15510
  await closeCaptureSession2(probeResult.probeSession);
15504
15511
  } catch (err) {
15505
15512
  log.warn("[plan] probe session close failed", {
@@ -17148,7 +17155,7 @@ function startServer(options = {}) {
17148
17155
  });
17149
17156
  async function shutdown(signal) {
17150
17157
  log.info(`Received ${signal}, shutting down`);
17151
- const { drainBrowserPool } = await import("./src-ZPIV4PGX.js");
17158
+ const { drainBrowserPool } = await import("./src-65S55XOQ.js");
17152
17159
  await drainBrowserPool().catch(() => {
17153
17160
  });
17154
17161
  const handle = await Promise.race([
@@ -18193,10 +18200,9 @@ function readAssemblePlan(planDir, chunkPaths) {
18193
18200
  function videoInputArgs(ctx, videoSources) {
18194
18201
  return videoSources.length === 1 ? ["-i", videoSources[0]] : concatDemuxerInput(videoSources, ctx.workDir, ctx.fpsArg);
18195
18202
  }
18196
- async function reencodeCfr(ctx, chunkPaths, encoder) {
18197
- const cfrOutputPath = join39(ctx.workDir, `cfr.${ctx.format}`);
18198
- const cfrArgs = [
18199
- ...videoInputArgs(ctx, chunkPaths),
18203
+ function cfrEncodeArgs(inputArgs, encoder, fpsArg) {
18204
+ const args = [
18205
+ ...inputArgs,
18200
18206
  "-c:v",
18201
18207
  "libx264",
18202
18208
  ...cfrRateControlArgs(encoder),
@@ -18205,8 +18211,14 @@ async function reencodeCfr(ctx, chunkPaths, encoder) {
18205
18211
  "-fps_mode",
18206
18212
  "cfr",
18207
18213
  "-r",
18208
- ctx.fpsArg
18214
+ fpsArg
18209
18215
  ];
18216
+ appendSoftwareEncoderThreadsArg(args, "libx264");
18217
+ return args;
18218
+ }
18219
+ async function reencodeCfr(ctx, chunkPaths, encoder) {
18220
+ const cfrOutputPath = join39(ctx.workDir, `cfr.${ctx.format}`);
18221
+ const cfrArgs = cfrEncodeArgs(videoInputArgs(ctx, chunkPaths), encoder, ctx.fpsArg);
18210
18222
  appendRenderProvenanceArgs(cfrArgs, cfrOutputPath);
18211
18223
  cfrArgs.push("-y", cfrOutputPath);
18212
18224
  await ctx.timed(
@@ -18440,6 +18452,23 @@ async function createVerifiedDistributedCaptureSession(serverUrl, framesDir, cap
18440
18452
  function isCaptureMode(value) {
18441
18453
  return value === "beginframe" || value === "screenshot" || value === "drawelement";
18442
18454
  }
18455
+ var MixedCaptureModesError = class extends Error {
18456
+ constructor(modes) {
18457
+ super(`[renderChunk] capture workers reported inconsistent modes: ${modes.join(",")}`);
18458
+ this.modes = modes;
18459
+ this.name = "MixedCaptureModesError";
18460
+ }
18461
+ modes;
18462
+ };
18463
+ function observedChunkCaptureMode(perfs) {
18464
+ const modes = [...new Set(perfs.map((perf) => perf.captureMode))];
18465
+ if (modes.length > 1) throw new MixedCaptureModesError(modes);
18466
+ const [mode] = modes;
18467
+ if (!mode || !isCaptureMode(mode)) {
18468
+ throw new Error(`[renderChunk] capture workers reported an invalid mode: ${mode ?? "<none>"}`);
18469
+ }
18470
+ return mode;
18471
+ }
18443
18472
  function shouldRetryChunkCaptureWithScreenshot(error) {
18444
18473
  const failure = classifyCaptureFailure(error);
18445
18474
  if (failure.kind === "cancelled" || failure.kind === "memory_exhaustion") return false;
@@ -18737,7 +18766,10 @@ async function renderChunk(planDir, chunkIndex, outputChunkPath, options) {
18737
18766
  ) : null;
18738
18767
  videoFrameLookup?.catch(() => {
18739
18768
  });
18740
- const createChunkVideoFrameInjector = createChunkVideoFrameInjectorFactory(videoFrameLookup);
18769
+ const createChunkVideoFrameInjector = createChunkVideoFrameInjectorFactory(
18770
+ videoFrameLookup,
18771
+ frameCacheOptions(cfg, chunkWorkerCount)
18772
+ );
18741
18773
  const captureStarted = Date.now();
18742
18774
  captureMode = await runCaptureWithScreenshotFallback({
18743
18775
  forceScreenshot: forceScreenshotForChunk,
@@ -18791,17 +18823,7 @@ async function renderChunk(planDir, chunkIndex, outputChunkPath, options) {
18791
18823
  },
18792
18824
  frameRange: range
18793
18825
  });
18794
- const observedModes = new Set(capturePerfs.map((perf) => perf.captureMode));
18795
- if (observedModes.size !== 1 || ![...observedModes].every(isCaptureMode)) {
18796
- throw new Error(
18797
- `[renderChunk] capture workers reported invalid or inconsistent modes: ${[...observedModes].join(",") || "<none>"}`
18798
- );
18799
- }
18800
- const [observedMode] = observedModes;
18801
- if (!observedMode || !isCaptureMode(observedMode)) {
18802
- throw new Error("[renderChunk] capture completed without an observed mode");
18803
- }
18804
- return observedMode;
18826
+ return observedChunkCaptureMode(capturePerfs);
18805
18827
  },
18806
18828
  resetForScreenshotRetry: () => {
18807
18829
  rmSync16(workDir, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 });
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  shouldTrack
9
- } from "./chunk-PMXR3IUH.js";
9
+ } from "./chunk-UWSJL63I.js";
10
10
 
11
11
  // src/telemetry/renderObservability.ts
12
12
  function renderObservabilityTelemetryPayload(observability) {
@@ -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-YZ73IPW2.js";
9
+ } from "./chunk-T6MUUXE3.js";
10
10
  import {
11
11
  HistoryBusyError,
12
12
  beginArtifactCapture
13
- } from "./chunk-U6RXZNZE.js";
13
+ } from "./chunk-TMBUBLZB.js";
14
14
 
15
15
  // src/utils/artifactCapture.ts
16
16
  var SKIP_BUSY_HISTORY = { ownerWaitMs: 0 };
@@ -19,7 +19,7 @@ import {
19
19
  splitElementInHtml,
20
20
  unwrapElementsFromHtml,
21
21
  wrapElementsInHtml
22
- } from "./chunk-5DPV7LU3.js";
22
+ } from "./chunk-RDHEG7RX.js";
23
23
  import {
24
24
  MEDIA_LINK_ATTR,
25
25
  relinkSplitHalves
@@ -46,7 +46,7 @@ import {
46
46
  resolveProjectAndSignature,
47
47
  resolveProjectSignature,
48
48
  settledFileTag
49
- } from "./chunk-U6RXZNZE.js";
49
+ } from "./chunk-TMBUBLZB.js";
50
50
  import {
51
51
  PROXY_PARAMS_VERSION,
52
52
  PROXY_PENDING_RETRY_AFTER_SECONDS,
@@ -68,7 +68,7 @@ import {
68
68
  scanProjectMediaCodecMap,
69
69
  shouldPrewarmProxy,
70
70
  waitForProxy
71
- } from "./chunk-LWYZN7HS.js";
71
+ } from "./chunk-BT64TTSE.js";
72
72
  import {
73
73
  STUDIO_MOTION_PATH,
74
74
  createStudioMotionRenderBodyScript,
@@ -109,12 +109,12 @@ import {
109
109
  motionPathPluginUrl,
110
110
  parseFps,
111
111
  parsePreviewProxyBox
112
- } from "./chunk-YV4WT7CJ.js";
112
+ } from "./chunk-56IOFIYB.js";
113
113
  import {
114
114
  addScenePartsManifest,
115
115
  ensureHfIds,
116
116
  stampHfIdsInPlace
117
- } from "./chunk-SMF6YAUL.js";
117
+ } from "./chunk-TSQAPPRS.js";
118
118
  import {
119
119
  AFTER_FONTS_SCRIPT_TYPE,
120
120
  RUNTIME_BOOTSTRAP_ATTR,
@@ -128,7 +128,7 @@ import {
128
128
  resolveRateSpec,
129
129
  sourceTimeAt,
130
130
  stripEmbeddedRuntimeScripts
131
- } from "./chunk-BPX7LZG6.js";
131
+ } from "./chunk-DIV37NUE.js";
132
132
  import {
133
133
  HTML_ATTRIBUTE_ENTITIES,
134
134
  MagicString,
@@ -306,7 +306,7 @@ function clearElementScreenshotIsolation() {
306
306
  page.__hfThumbnailFaded = [];
307
307
  }
308
308
 
309
- // ../studio-server/dist/chunk-T5CGF7VZ.js
309
+ // ../studio-server/dist/chunk-HTHV7ZM6.js
310
310
  import { resolve } from "path";
311
311
  function isAutoProxyEnabled(adapter) {
312
312
  return adapter.autoProxy !== false;
@@ -318,7 +318,7 @@ function proxyEtagSalt(raw, box) {
318
318
  if (raw === void 0) return "";
319
319
  return `:proxy:${raw}:${PROXY_PARAMS_VERSION}${box ? `:${formatPreviewProxyBox(box)}` : ""}`;
320
320
  }
321
- async function injectMediaCodecMapIntoHtml(html, projectDir, htmlSources, probeCache, prewarm = true, signal) {
321
+ async function injectMediaCodecMapIntoHtml(html, projectDir, htmlSources, probeCache, prewarm = true, signal, box) {
322
322
  let map;
323
323
  try {
324
324
  map = await scanProjectMediaCodecMap(
@@ -337,7 +337,7 @@ async function injectMediaCodecMapIntoHtml(html, projectDir, htmlSources, probeC
337
337
  projectDir,
338
338
  resolve(projectDir, rootRelativePathname.replace(/^\/+/, "")),
339
339
  proxyVariantFor(facts),
340
- void 0,
340
+ box,
341
341
  { signal }
342
342
  ).catch(() => {
343
343
  });
@@ -3640,6 +3640,7 @@ import { createHash as createHash22 } from "crypto";
3640
3640
 
3641
3641
  // ../core/dist/studioPreviewMark.js
3642
3642
  var STUDIO_PREVIEW_MARK_META = "hyperframes-studio-preview";
3643
+ var STUDIO_PREVIEW_CAPTURE_MODE = "capture";
3643
3644
  var STUDIO_PREVIEW_LAZY_ATTR = "data-hf-preview-lazy";
3644
3645
  var STUDIO_PREVIEW_ERRORS = "__hfPreviewErrors";
3645
3646
 
@@ -5499,7 +5500,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
5499
5500
  let block = extractGsapScriptBlock(html);
5500
5501
  if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
5501
5502
  const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
5502
- const { GSAP_CDN } = await import("./dist-RFTGYT26.js");
5503
+ const { GSAP_CDN } = await import("./dist-NHW2JQCA.js");
5503
5504
  const bootstrap = [
5504
5505
  `<script src="${GSAP_CDN}"></script>`,
5505
5506
  "<script>",
@@ -7548,7 +7549,10 @@ var PREVIEW_CAPTURE_PARAM = "hf-capture";
7548
7549
  var EARLY_ERRORS_SCRIPT = `<script>(function(){var seen=window.${STUDIO_PREVIEW_ERRORS}=[];
7549
7550
  addEventListener("error",function(e){seen.push(e.message||String(e))});})();</script>`;
7550
7551
  function injectStudioPreviewAugmentations(html, adapter, projectDir, activeCompositionPath, capture) {
7551
- const marked = capture ? html : injectTagsAtHeadStart(
7552
+ const marked = capture ? injectTagsAtHeadStart(
7553
+ html,
7554
+ `<meta name="${STUDIO_PREVIEW_MARK_META}" content="${STUDIO_PREVIEW_CAPTURE_MODE}">`
7555
+ ) : injectTagsAtHeadStart(
7552
7556
  lazyPreviewImages(html),
7553
7557
  `<meta name="${STUDIO_PREVIEW_MARK_META}">${EARLY_ERRORS_SCRIPT}`
7554
7558
  );
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-ISN5GRYI.js";
18
18
  import {
19
19
  VERSION
20
- } from "./chunk-6HYPEIH7.js";
20
+ } from "./chunk-EYBS6GH2.js";
21
21
 
22
22
  // src/utils/updateCheck.ts
23
23
  import { existsSync, readFileSync } from "fs";
@@ -7,29 +7,29 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  RegistryCompatibilityError,
9
9
  gateRegistryItemsCompatibility
10
- } from "./chunk-57XL23DE.js";
10
+ } from "./chunk-E65UJDKR.js";
11
11
  import {
12
12
  DEFAULT_PROJECT_CONFIG,
13
13
  createProjectConfig,
14
14
  loadProjectConfig,
15
15
  projectConfigPath,
16
16
  recordProjectRegistryItems
17
- } from "./chunk-DG4ME554.js";
17
+ } from "./chunk-UZ7RJDEC.js";
18
18
  import {
19
19
  resolveItemWithDependencies,
20
20
  resolveItemsByTag
21
- } from "./chunk-DLFAVRF3.js";
21
+ } from "./chunk-SUSSMCWL.js";
22
22
  import {
23
23
  InvalidVariableValuesError,
24
24
  prepareItem,
25
25
  publishItem
26
- } from "./chunk-HKUZCSNZ.js";
26
+ } from "./chunk-6HYHHMX3.js";
27
27
  import {
28
28
  DEFAULT_REGISTRY_URL
29
- } from "./chunk-HPQSUPR7.js";
29
+ } from "./chunk-AYFF3GX6.js";
30
30
  import {
31
31
  trackRegistryItemAdded
32
- } from "./chunk-6Q5CFUAP.js";
32
+ } from "./chunk-ZKWXDQAE.js";
33
33
  import {
34
34
  defineCommand
35
35
  } from "./chunk-S3S4TGEH.js";
@@ -41,7 +41,7 @@ import {
41
41
  } from "./chunk-ZTZA4UWZ.js";
42
42
  import {
43
43
  ITEM_TYPE_DIRS
44
- } from "./chunk-YV4WT7CJ.js";
44
+ } from "./chunk-56IOFIYB.js";
45
45
  import {
46
46
  isProjectRootMissing,
47
47
  realpath
@@ -6,27 +6,27 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-FSTLXRIN.js";
9
+ } from "./chunk-GWE3UEGX.js";
10
10
  import {
11
11
  serveStaticProjectHtml
12
- } from "./chunk-XPVN4R66.js";
12
+ } from "./chunk-HJZ5CPZA.js";
13
13
  import {
14
14
  AUDIT_SEEK_OPTIONS,
15
15
  installPageFunctionGuard,
16
16
  seekCompositionTimeline,
17
17
  waitForCompositionFonts,
18
18
  waitForRuntimeReady
19
- } from "./chunk-KDBPZOXK.js";
19
+ } from "./chunk-EQXUGT5K.js";
20
20
  import {
21
21
  launchManagedBrowser,
22
22
  resolveManagedGpuMode
23
- } from "./chunk-MXXX6WVC.js";
23
+ } from "./chunk-YDGW5KWX.js";
24
24
  import {
25
25
  gotoWhenSent
26
26
  } from "./chunk-MOEGCMKI.js";
27
27
  import {
28
28
  pageNavigationTimeoutMs
29
- } from "./chunk-MTPPEEYZ.js";
29
+ } from "./chunk-E6BMTU6F.js";
30
30
  import {
31
31
  defineCommand
32
32
  } from "./chunk-S3S4TGEH.js";
@@ -40,7 +40,7 @@ import {
40
40
  import {
41
41
  printDeprecationNotice,
42
42
  withMeta
43
- } from "./chunk-KWSEIVR6.js";
43
+ } from "./chunk-LJKMM3XW.js";
44
44
  import {
45
45
  normalizeErrorMessage
46
46
  } from "./chunk-KNU5COPB.js";
@@ -715,7 +715,7 @@ async function collectTweenBoundaries(page) {
715
715
  });
716
716
  }
717
717
  async function bundleProjectHtml(projectDir) {
718
- const { bundleToSingleHtml } = await import("./compiler-23MT6CX6.js");
718
+ const { bundleToSingleHtml } = await import("./compiler-EJE3HLCS.js");
719
719
  return bundleToSingleHtml(projectDir);
720
720
  }
721
721
  async function alignViewportToComposition(page, url) {
@@ -734,13 +734,13 @@ async function alignViewportToComposition(page, url) {
734
734
  async function runLayoutAudit(projectDir, opts) {
735
735
  const { ensureBrowser } = await import("./manager-UHWEKPXC.js");
736
736
  const puppeteer = await import("puppeteer-core");
737
- const { buildChromeArgs } = await import("./src-ZPIV4PGX.js");
737
+ const { buildChromeArgs } = await import("./src-65S55XOQ.js");
738
738
  const {
739
739
  assertWebGpuAdapterAvailable,
740
740
  compositionRequiresWebGpu,
741
741
  resolveLocalBrowserGpuMode,
742
742
  resolveLocalWebGpu
743
- } = await import("./gpuPolicy-UGWSN32D.js");
743
+ } = await import("./gpuPolicy-MWZSLJFR.js");
744
744
  const html = await bundleProjectHtml(projectDir);
745
745
  const server = await serveStaticProjectHtml(
746
746
  projectDir,
@@ -14,24 +14,24 @@ import {
14
14
  } from "./chunk-6JR2XUEE.js";
15
15
  import {
16
16
  readCompositionFps
17
- } from "./chunk-B2P4JRUJ.js";
17
+ } from "./chunk-XNLYMHX2.js";
18
18
  import {
19
19
  HF_AUDIO_GROUP_ATTR,
20
20
  extractAudioMetadata,
21
21
  extractMediaMetadata
22
- } from "./chunk-YCW345M4.js";
22
+ } from "./chunk-4BINHKAB.js";
23
23
  import {
24
24
  byStart,
25
25
  fpsToNumber,
26
26
  parseFpsWithDefault
27
- } from "./chunk-YV4WT7CJ.js";
27
+ } from "./chunk-56IOFIYB.js";
28
28
  import {
29
29
  HF_AUDIO_AUTOMATION_ATTR,
30
30
  HF_AUDIO_FX_ATTR,
31
31
  parseAudioFxChain,
32
32
  parseAutomation,
33
33
  resolveAutomation
34
- } from "./chunk-BPX7LZG6.js";
34
+ } from "./chunk-DIV37NUE.js";
35
35
  import {
36
36
  isSubCompositionHost,
37
37
  topLevelElements,
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-AWDFDFI3.js";
18
18
  import {
19
19
  isBlockedNetworkHost
20
- } from "./chunk-YCW345M4.js";
20
+ } from "./chunk-4BINHKAB.js";
21
21
  import {
22
22
  DOMParser,
23
23
  parseHTML
@@ -11,13 +11,13 @@ import {
11
11
  isAllowedHtmlAttribute,
12
12
  isSafeAttributeValue,
13
13
  sanitizeRichTextChildren
14
- } from "./chunk-YV4WT7CJ.js";
14
+ } from "./chunk-56IOFIYB.js";
15
15
  import {
16
16
  EXCLUDED_TAGS,
17
17
  ensureHfIds,
18
18
  mintHfId,
19
19
  walkCompositionDescendants
20
- } from "./chunk-SMF6YAUL.js";
20
+ } from "./chunk-TSQAPPRS.js";
21
21
  import {
22
22
  decodedUrlPath,
23
23
  removeElementWithGsapCascade
@@ -11,7 +11,7 @@ import {
11
11
  DEFAULT_REGISTRY_URL,
12
12
  fetchItemManifest,
13
13
  fetchRegistryManifest
14
- } from "./chunk-HPQSUPR7.js";
14
+ } from "./chunk-AYFF3GX6.js";
15
15
 
16
16
  // src/registry/resolver.ts
17
17
  function defaultWarn(message) {
@@ -6,14 +6,14 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-FSTLXRIN.js";
9
+ } from "./chunk-GWE3UEGX.js";
10
10
  import {
11
11
  DEFAULT_HISTORY_ROOT,
12
12
  HistoryBusyError,
13
13
  MAX_WINDOW_IDLE_MS,
14
14
  openProjectHistory,
15
15
  readProjectHistory
16
- } from "./chunk-U6RXZNZE.js";
16
+ } from "./chunk-TMBUBLZB.js";
17
17
  import {
18
18
  findPreviewServerForProject,
19
19
  studioApiUrl