hyperframes 0.8.107 → 0.8.109

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 (169) hide show
  1. package/dist/{add-DXZ3HNQI.js → add-7NAK3TQ6.js} +15 -15
  2. package/dist/{animatedGifPrep-2IQB4DGE.js → animatedGifPrep-NMGFOSIL.js} +6 -6
  3. package/dist/{asset-KZIG3MZN.js → asset-X7GUEAHC.js} +2 -2
  4. package/dist/{assetCataloger-4GE6PIUA.js → assetCataloger-FXEHOUA3.js} +2 -2
  5. package/dist/{auth-5IYF3H67.js → auth-EBWBTIGU.js} +2 -2
  6. package/dist/{autoUpdate-5C3FXM6Y.js → autoUpdate-DJBTMGAR.js} +2 -2
  7. package/dist/{backgroundChecks-75WGW4NB.js → backgroundChecks-QUMUVLYU.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-FKKS3YBX.js → batchRender-ZTHFMHZY.js} +3 -3
  10. package/dist/{beats-ISR36NSK.js → beats-XUYNHYGB.js} +18 -12
  11. package/dist/{benchmark-U6TQ6DS2.js → benchmark-L45UHXEE.js} +12 -12
  12. package/dist/{browser-VDS6QAVA.js → browser-EM76PRMN.js} +9 -9
  13. package/dist/{bundleWithLocalizedFonts-PMWWW5YG.js → bundleWithLocalizedFonts-4Q3ETTHW.js} +2 -2
  14. package/dist/{capture-BKA3UCZS.js → capture-4OPH4PMK.js} +7 -7
  15. package/dist/{capture-5KE34KCD.js → capture-OG6532RA.js} +2 -2
  16. package/dist/{catalog-ZXOSU27O.js → catalog-V42BPLQ4.js} +15 -15
  17. package/dist/{check-MZMZCXPN.js → check-3XQLHR2I.js} +30 -29
  18. package/dist/{checkBrowser-UIZJXYCQ.js → checkBrowser-56BV4TW3.js} +29 -28
  19. package/dist/{chunk-TI5Z4SWP.js → chunk-2IN77NP6.js} +3 -3
  20. package/dist/{chunk-WBVPQC7J.js → chunk-2JXJ5SGK.js} +1 -1
  21. package/dist/{chunk-QH6UFY2O.js → chunk-32P7FTFC.js} +4 -4
  22. package/dist/{chunk-7BI5BYMQ.js → chunk-3CPYTXZH.js} +5 -5
  23. package/dist/{chunk-OGTR33KN.js → chunk-3T4RQK6C.js} +2 -2
  24. package/dist/{chunk-HGL4WJDI.js → chunk-44UOKZIC.js} +9 -9
  25. package/dist/{chunk-KTPQ67TX.js → chunk-4PY6UPHN.js} +1 -1
  26. package/dist/{chunk-SGBOZ2HF.js → chunk-5ER3PYYP.js} +1 -1
  27. package/dist/{normalize-audio-J2PG6YXH.js → chunk-5ON5GH3X.js} +101 -209
  28. package/dist/{chunk-NHTRUAMD.js → chunk-AWUZ3AUD.js} +1 -1
  29. package/dist/{chunk-VMDEGITC.js → chunk-B25H4M4V.js} +1 -1
  30. package/dist/{chunk-QM2NUN2B.js → chunk-BAVM2XBR.js} +87 -3
  31. package/dist/{chunk-4W4UDPCH.js → chunk-C4TZBEHY.js} +2 -2
  32. package/dist/{chunk-FLUBCMNT.js → chunk-CFC3EEDQ.js} +1 -1
  33. package/dist/{chunk-3CYAZWF2.js → chunk-CPO5INJ5.js} +3 -3
  34. package/dist/{chunk-C3KEF3UA.js → chunk-CQRF7VU3.js} +1 -1
  35. package/dist/{chunk-6QWHIARJ.js → chunk-E4AYSXMS.js} +1 -1
  36. package/dist/{chunk-BRTGJ73L.js → chunk-HQGJLZB6.js} +2 -2
  37. package/dist/{chunk-HJCTKNXF.js → chunk-I5WWEBDG.js} +1 -1
  38. package/dist/{chunk-GLTHJJIF.js → chunk-ITBEN3QD.js} +2 -2
  39. package/dist/{chunk-3LBFLW7E.js → chunk-JTTAS7N6.js} +1 -1
  40. package/dist/{chunk-T4Z4UNSX.js → chunk-JWPSBANO.js} +3 -3
  41. package/dist/{chunk-P7XRDAWU.js → chunk-LAQEZHOH.js} +1 -1
  42. package/dist/{chunk-73VPF3SS.js → chunk-M224DAMG.js} +1 -1
  43. package/dist/{chunk-PU2IOWX4.js → chunk-MGFVNTIB.js} +2 -2
  44. package/dist/{chunk-NX6G66F4.js → chunk-MP25ID6H.js} +2 -2
  45. package/dist/{chunk-4DJXCVQJ.js → chunk-MR2LOG32.js} +577 -66
  46. package/dist/{chunk-3WG63KFW.js → chunk-N32ITJ7L.js} +25 -11
  47. package/dist/{chunk-D5EJCP26.js → chunk-OF3RKOPU.js} +79 -64
  48. package/dist/{chunk-J6CSEDK7.js → chunk-OORTZAJ7.js} +4 -4
  49. package/dist/{chunk-L7XDI3DT.js → chunk-RB7AHUOR.js} +1 -1
  50. package/dist/{chunk-YVEZT6WT.js → chunk-TBYUUOJG.js} +1 -1
  51. package/dist/{chunk-T3BOWXPX.js → chunk-TIZQC44K.js} +1 -1
  52. package/dist/{chunk-R4IB642V.js → chunk-U4TDAJZE.js} +2 -2
  53. package/dist/{chunk-TPPIERG3.js → chunk-WMN4NBJQ.js} +3 -3
  54. package/dist/{chunk-AO4PBESP.js → chunk-X2QJUTZL.js} +7 -7
  55. package/dist/{chunk-SKPL32FI.js → chunk-XKNYXDJN.js} +1 -1
  56. package/dist/{chunk-JNY3VJWB.js → chunk-XYVFPDNU.js} +1 -1
  57. package/dist/{chunk-Z4UAXNWV.js → chunk-YIXEH4TF.js} +2 -2
  58. package/dist/chunk-YLVI7VL5.js +3541 -0
  59. package/dist/{chunk-ADP6TMYP.js → chunk-YRTKK45P.js} +8 -8
  60. package/dist/{chunk-I73Z6OOE.js → chunk-ZKBSOLPY.js} +1 -1
  61. package/dist/{chunk-YY5J75H5.js → chunk-ZU54D6MI.js} +135 -5
  62. package/dist/{clean-46MZVA37.js → clean-45QMNXLN.js} +15 -14
  63. package/dist/cli.js +50 -50
  64. package/dist/{cloud-GAZQGPCW.js → cloud-YRYTNHMQ.js} +4 -4
  65. package/dist/{cloudrun-ZWL7SLDD.js → cloudrun-LVZ4OPPC.js} +3 -3
  66. package/dist/{compare-66AAJESM.js → compare-GODD3JD2.js} +24 -23
  67. package/dist/{compiler-3N7XQRH6.js → compiler-C32VXLE2.js} +3 -3
  68. package/dist/{component-3OCOHK2B.js → component-UMNTDLG3.js} +3 -3
  69. package/dist/{compositions-H2BP4N6F.js → compositions-EIRLTOYW.js} +11 -11
  70. package/dist/{delete-WNJLVPGO.js → delete-7P55EZOW.js} +2 -2
  71. package/dist/{dist-AY2RBEXL.js → dist-FMHQMEMX.js} +1 -1
  72. package/dist/{dist-HSEMXPG3.js → dist-YUIPB7OX.js} +8 -2
  73. package/dist/{doctor-IFOZS45N.js → doctor-UYSIF4PX.js} +10 -10
  74. package/dist/{events-6TH3FU3F.js → events-A2MYVK2Z.js} +9 -9
  75. package/dist/{events-5EKFJCCZ.js → events-LXYVOH3X.js} +8 -8
  76. package/dist/{feedback-QRQNMORT.js → feedback-46DWSEAZ.js} +10 -10
  77. package/dist/{figma-WONEPLUQ.js → figma-C5DHRI6P.js} +3 -3
  78. package/dist/fontLocalizeCli.js +8 -8
  79. package/dist/{get-C7FCYNI2.js → get-IRSUDICU.js} +2 -2
  80. package/dist/{gpuPolicy-BXXQF3VC.js → gpuPolicy-CA6KRFQQ.js} +6 -6
  81. package/dist/{grade-compare-SCCSZ5P3.js → grade-compare-BLHXB3UR.js} +24 -23
  82. package/dist/{help-FJOUNXVD.js → help-HMYF4Y3E.js} +1 -1
  83. package/dist/{history-OZY36NEC.js → history-K5BD64QP.js} +15 -14
  84. package/dist/hyperframe-runtime.js +54 -54
  85. package/dist/hyperframe.manifest.json +1 -1
  86. package/dist/hyperframe.runtime.iife.js +54 -54
  87. package/dist/hyperframes-player.global.js +3 -3
  88. package/dist/{info-RG4SZQ2C.js → info-QR2FYDJ7.js} +11 -11
  89. package/dist/{init-YGZCDKSS.js → init-L6BY7IV4.js} +22 -22
  90. package/dist/{inspect-X547EZ4I.js → inspect-D3MC4VH3.js} +25 -24
  91. package/dist/{installer-6J24NTIV.js → installer-NBEN3ZIP.js} +4 -4
  92. package/dist/{keyframes-EIWEION2.js → keyframes-TPMFVG6O.js} +12 -12
  93. package/dist/{lambda-DSZDMP7P.js → lambda-BFHJMMCG.js} +4 -4
  94. package/dist/{layout-B7KCBLBH.js → layout-AOYCSBIL.js} +25 -24
  95. package/dist/{lint-RBDG4ERJ.js → lint-L4MN7QPF.js} +12 -12
  96. package/dist/{lintProject-CMPAR7BS.js → lintProject-X7L7EZWZ.js} +1 -1
  97. package/dist/{list-BPHPHLDJ.js → list-LKXCKBRX.js} +2 -2
  98. package/dist/{login-HV7KBW2J.js → login-4WEDFAIY.js} +4 -4
  99. package/dist/{media-treatment-RS6BZSQC.js → media-treatment-H6YAFA3H.js} +12 -12
  100. package/dist/{models-K4U7GRXV.js → models-RILNQV3Z.js} +7 -7
  101. package/dist/{motionShot-5AI2DALY.js → motionShot-5F4DCMWC.js} +10 -10
  102. package/dist/normalize-audio-DFK5FTE5.js +276 -0
  103. package/dist/{pipeline-HIUESSET.js → pipeline-5UY45ELH.js} +6 -6
  104. package/dist/{play-TTLQXBAH.js → play-HFD4CPWF.js} +20 -19
  105. package/dist/{preflight-63ODQ625.js → preflight-3V5IHGWQ.js} +7 -7
  106. package/dist/{present-XKGZ26FQ.js → present-JGDYENOT.js} +16 -15
  107. package/dist/{preview-O2YEKMYJ.js → preview-GLI7KBCA.js} +17 -17
  108. package/dist/{producer-ZTQIJO7E.js → producer-7JGAPEAF.js} +1 -1
  109. package/dist/{projectConfig-VVFH7XW5.js → projectConfig-JHEWPAA5.js} +6 -6
  110. package/dist/{publication-NALPAHDC.js → publication-7XA2H7UB.js} +2 -2
  111. package/dist/{publish-G7OL45EL.js → publish-257VZMWI.js} +8 -8
  112. package/dist/{remove-background-LOLKFKLT.js → remove-background-EV6XVADN.js} +7 -7
  113. package/dist/{render-I65IU7RM.js → render-4C3YKVZI.js} +3 -3
  114. package/dist/{render-ULQLUIWD.js → render-K6YASB4G.js} +12 -12
  115. package/dist/{render-EXSRG666.js → render-Y6LOQDCD.js} +21 -21
  116. package/dist/{render-batch-RSNCREPB.js → render-batch-AFDBPDMM.js} +3 -3
  117. package/dist/{renderCancellation-2WB4SGXR.js → renderCancellation-VIZELWDD.js} +6 -6
  118. package/dist/renderSetupWorker.js +1 -1
  119. package/dist/{resolver-CVN2IM2R.js → resolver-S72XBTEQ.js} +4 -4
  120. package/dist/{sherpa-OJUI54HG.js → sherpa-BAADWCHB.js} +7 -7
  121. package/dist/{skills-CPS5E5YP.js → skills-TEVVW6TR.js} +11 -11
  122. package/dist/{skillsUpdateCheck-3IT5CJWU.js → skillsUpdateCheck-4Y3NJPB5.js} +3 -3
  123. package/dist/{snapshot-MSGC7HTA.js → snapshot-63X5B7GR.js} +25 -24
  124. package/dist/{src-SV7CNZXN.js → src-GD7RGV5U.js} +5 -5
  125. package/dist/{src-EZBJT4VH.js → src-GRC63B6L.js} +7 -7
  126. package/dist/{staticProjectServer-5JAGMYT7.js → staticProjectServer-SFINO3DE.js} +14 -13
  127. package/dist/{status-4W3EJYEH.js → status-LXQL3L3H.js} +6 -6
  128. package/dist/studio/assets/{hyperframes-player-h4mktSdm.js → hyperframes-player-CJYtikAy.js} +1 -1
  129. package/dist/studio/assets/{index-lrT-gfHa.css → index-BQZBDqMs.css} +1 -1
  130. package/dist/studio/assets/{index-zoqPmBF6.js → index-CMSgrT2F.js} +1 -1
  131. package/dist/studio/assets/{index-CM1xA_jD.js → index-CYP6dMd7.js} +212 -210
  132. package/dist/studio/assets/{index-D8GKc2D9.js → index-HTFVHUJ4.js} +1 -1
  133. package/dist/studio/{chunk-NCUBAVGK.js → chunk-5VSXRGIX.js} +4 -4
  134. package/dist/studio/chunk-5VSXRGIX.js.map +1 -0
  135. package/dist/studio/chunk-6LUNLTHR.js +611 -0
  136. package/dist/studio/chunk-6LUNLTHR.js.map +1 -0
  137. package/dist/studio/{chunk-46XP7J3B.js → chunk-PQFEBX32.js} +5 -3
  138. package/dist/studio/chunk-PQFEBX32.js.map +1 -0
  139. package/dist/studio/{chunk-4OZC426H.js → chunk-QUXZVHOJ.js} +10 -504
  140. package/dist/studio/chunk-QUXZVHOJ.js.map +1 -0
  141. package/dist/studio/{domEditingLayers-AQBDFNUC.js → domEditingLayers-JQPQGGT7.js} +3 -3
  142. package/dist/studio/index.d.ts +53 -4
  143. package/dist/studio/index.html +2 -2
  144. package/dist/studio/index.js +15746 -13173
  145. package/dist/studio/index.js.map +1 -1
  146. package/dist/studio/player.js +3 -3
  147. package/dist/studio/styles.css +1 -1
  148. package/dist/studio/ui.js +1 -1
  149. package/dist/{studio-api-L2TJ2JTK.js → studio-api-WRSCXPWS.js} +8 -7
  150. package/dist/{studioServer-UV7YRYWN.js → studioServer-HPG3FVTJ.js} +44 -38
  151. package/dist/{system-OL4MXRPK.js → system-EEWYEHYX.js} +6 -6
  152. package/dist/{telemetry-WRUU725E.js → telemetry-UIZ5O7NL.js} +9 -9
  153. package/dist/{timeline-P43A53BW.js → timeline-L56HML42.js} +41 -21
  154. package/dist/{tokens-NUHTJM2V.js → tokens-DLPYLGLW.js} +2 -2
  155. package/dist/{transcribe-FSVNIFGF.js → transcribe-FBPTYMVZ.js} +12 -12
  156. package/dist/{transcribe-TRLZJK73.js → transcribe-GCKJF5A6.js} +7 -7
  157. package/dist/{updateCheck-33TAG46I.js → updateCheck-GQBMZGU3.js} +2 -2
  158. package/dist/{upgrade-AJ6QBTH2.js → upgrade-6LR7ZK3Q.js} +2 -2
  159. package/dist/{urlDownloader-MP6GJIDV.js → urlDownloader-NYXPEBUN.js} +5 -5
  160. package/dist/{validate-VL3A6VTJ.js → validate-VY6RJRHE.js} +15 -15
  161. package/dist/{video-KO7VT63P.js → video-KWQ5TSVD.js} +6 -6
  162. package/package.json +1 -1
  163. package/dist/chunk-PMLZPNIB.js +0 -3431
  164. package/dist/studio/chunk-46XP7J3B.js.map +0 -1
  165. package/dist/studio/chunk-4OZC426H.js.map +0 -1
  166. package/dist/studio/chunk-DI4LCJHL.js +0 -102
  167. package/dist/studio/chunk-DI4LCJHL.js.map +0 -1
  168. package/dist/studio/chunk-NCUBAVGK.js.map +0 -1
  169. /package/dist/studio/{domEditingLayers-AQBDFNUC.js.map → domEditingLayers-JQPQGGT7.js.map} +0 -0
@@ -17,7 +17,7 @@ import {
17
17
  EncoderInterruptedError,
18
18
  encoderFailureError,
19
19
  prepareAnimatedGifInputs
20
- } from "./chunk-Z4UAXNWV.js";
20
+ } from "./chunk-YIXEH4TF.js";
21
21
  import {
22
22
  createStudioPositionSeekReapplyScript
23
23
  } from "./chunk-KC5XXX3X.js";
@@ -145,7 +145,7 @@ import {
145
145
  validateEngineConfigSnapshot,
146
146
  verifyDiskDrawElementSamples,
147
147
  writeCapturedFrame
148
- } from "./chunk-D5EJCP26.js";
148
+ } from "./chunk-OF3RKOPU.js";
149
149
  import {
150
150
  HF_VFX_ATTR,
151
151
  MEDIA_START_BASIS_ATTR,
@@ -162,7 +162,7 @@ import {
162
162
  resolveAbsoluteMediaStartSeconds,
163
163
  resolveAuthoredTimingWindow,
164
164
  toFps
165
- } from "./chunk-VMDEGITC.js";
165
+ } from "./chunk-B25H4M4V.js";
166
166
  import {
167
167
  CANVAS_DIMENSIONS,
168
168
  HTML_BODY_CSS_HEIGHT_FIRST_RE,
@@ -186,7 +186,7 @@ import {
186
186
  inlineSubCompositions,
187
187
  prepareFlattenedInnerRoot,
188
188
  styleElementsFor
189
- } from "./chunk-R4IB642V.js";
189
+ } from "./chunk-U4TDAJZE.js";
190
190
  import {
191
191
  HF_COLOR_GRADING_ATTR,
192
192
  MAX_AUDIO_GAIN,
@@ -207,7 +207,7 @@ import {
207
207
  resolveNaturalMediaTimelineDurationFromValues,
208
208
  shouldClampResolvedMediaDuration,
209
209
  sourceTimeAt
210
- } from "./chunk-PMLZPNIB.js";
210
+ } from "./chunk-YLVI7VL5.js";
211
211
  import {
212
212
  chromeMajorCeiling
213
213
  } from "./chunk-TWWSYAKJ.js";
@@ -216,7 +216,7 @@ import {
216
216
  lintHyperframeHtml,
217
217
  readProjectFile,
218
218
  resolveProjectRelativeSrc
219
- } from "./chunk-QM2NUN2B.js";
219
+ } from "./chunk-BAVM2XBR.js";
220
220
  import {
221
221
  CSS_URL_RE,
222
222
  checkSubCompositionUsability,
@@ -9850,6 +9850,7 @@ async function padOrTrimAudioToVideoFrameCount(input) {
9850
9850
  } finally {
9851
9851
  for (const path of plan2.cleanupPaths) rmSync7(path, { force: true });
9852
9852
  }
9853
+ let loweredDb = 0;
9853
9854
  if (probeTruePeak) {
9854
9855
  const correction = await enforceAacTruePeak({
9855
9856
  audioPath: input.outputPath,
@@ -9869,13 +9870,15 @@ async function padOrTrimAudioToVideoFrameCount(input) {
9869
9870
  failureReason: correction.failureReason
9870
9871
  };
9871
9872
  }
9873
+ loweredDb = correction.loweredDb ?? 0;
9872
9874
  }
9873
9875
  return {
9874
9876
  success: true,
9875
9877
  outputPath: input.outputPath,
9876
9878
  targetDurationSeconds,
9877
9879
  sourceDurationSeconds: audioInfo.durationSeconds,
9878
- operation: plan2.operation
9880
+ operation: plan2.operation,
9881
+ ...loweredDb > 0 ? { audioLoweredDb: loweredDb } : {}
9879
9882
  };
9880
9883
  }
9881
9884
  async function enforceAacTruePeak(input) {
@@ -9896,8 +9899,9 @@ async function enforceAacTruePeak(input) {
9896
9899
  return { success: false, error: "audioPadTrim: FFmpeg reported an invalid true peak" };
9897
9900
  }
9898
9901
  if (truePeakDbfs <= AAC_DELIVERY_TRUE_PEAK_DBFS) {
9899
- if (measuredPath === correctedPath) renameSync3(correctedPath, input.audioPath);
9900
- return { success: true };
9902
+ if (measuredPath !== correctedPath) return { success: true };
9903
+ renameSync3(correctedPath, input.audioPath);
9904
+ return { success: true, loweredDb: Number((-attenuationDb).toFixed(2)) };
9901
9905
  }
9902
9906
  if (pass === MAX_TRUE_PEAK_CORRECTION_PASSES) break;
9903
9907
  attenuationDb += correctionTargetDbfs - truePeakDbfs;
@@ -10069,6 +10073,15 @@ async function runFfprobeJson(args, signal) {
10069
10073
  }
10070
10074
 
10071
10075
  // ../producer/src/services/render/stages/assembleStage.ts
10076
+ function recordLimiterAttenuation(job, audioLoweredDb) {
10077
+ if (audioLoweredDb === void 0) return;
10078
+ job.audioLoweredDb = audioLoweredDb;
10079
+ const ceiling = `\u2212${Math.abs(AAC_DELIVERY_TRUE_PEAK_DBFS)} dBTP`;
10080
+ (job.config.logger ?? defaultLogger).info(
10081
+ `Audio lowered by ${audioLoweredDb.toFixed(1)} dB to stay under ${ceiling}`,
10082
+ { audioLoweredDb }
10083
+ );
10084
+ }
10072
10085
  async function runAssembleStage(input) {
10073
10086
  const {
10074
10087
  job,
@@ -10098,6 +10111,7 @@ async function runAssembleStage(input) {
10098
10111
  if (!normalizeResult.success) {
10099
10112
  throw encoderFailureError("Audio duration normalization failed", normalizeResult);
10100
10113
  }
10114
+ recordLimiterAttenuation(job, normalizeResult.audioLoweredDb);
10101
10115
  if (isHls) {
10102
10116
  await runHlsPackaging(input, normalizeResult.outputPath);
10103
10117
  } else {
@@ -14130,7 +14144,7 @@ function startServer(options = {}) {
14130
14144
  });
14131
14145
  async function shutdown(signal) {
14132
14146
  log.info(`Received ${signal}, shutting down`);
14133
- const { drainBrowserPool } = await import("./src-SV7CNZXN.js");
14147
+ const { drainBrowserPool } = await import("./src-GD7RGV5U.js");
14134
14148
  await drainBrowserPool().catch(() => {
14135
14149
  });
14136
14150
  const handle = await Promise.race([
@@ -15253,7 +15267,7 @@ async function buildLocalExecutionPlan(projectDir, config, executionPlanDir, opt
15253
15267
  if (probeResult.fileServer) closeFileServerSafely(probeResult.fileServer, "plan", log);
15254
15268
  if (probeResult.probeSession) {
15255
15269
  try {
15256
- const { closeCaptureSession: closeCaptureSession2 } = await import("./src-SV7CNZXN.js");
15270
+ const { closeCaptureSession: closeCaptureSession2 } = await import("./src-GD7RGV5U.js");
15257
15271
  await closeCaptureSession2(probeResult.probeSession);
15258
15272
  } catch (err) {
15259
15273
  log.warn("[plan] probe session close failed", {
@@ -22,7 +22,7 @@ import {
22
22
  renderFrameIdForRenderId,
23
23
  resolveAuthoredTimingWindow,
24
24
  toFps
25
- } from "./chunk-VMDEGITC.js";
25
+ } from "./chunk-B25H4M4V.js";
26
26
  import {
27
27
  AUDIO_GROUP_RENDER_ID_ATTR,
28
28
  COLOR_GRADING_SOURCE_HIDDEN_ATTR,
@@ -36,6 +36,7 @@ import {
36
36
  enabledAudioFxNodes,
37
37
  fxAutomationTarget,
38
38
  injectScriptsIntoHtml,
39
+ isAudibleVideoElement,
39
40
  normalizeAudioFxParams,
40
41
  normalizePlaybackRate,
41
42
  normalizeRateSpec,
@@ -51,7 +52,7 @@ import {
51
52
  shiftRateLane,
52
53
  sourceTimeAt,
53
54
  timeAtSourceTime
54
- } from "./chunk-PMLZPNIB.js";
55
+ } from "./chunk-YLVI7VL5.js";
55
56
  import {
56
57
  chromeMajorCeiling,
57
58
  exceedsChromeCeiling
@@ -59,7 +60,7 @@ import {
59
60
  import {
60
61
  isWithinProjectRoot,
61
62
  resolveProjectRelativeSrc
62
- } from "./chunk-QM2NUN2B.js";
63
+ } from "./chunk-BAVM2XBR.js";
63
64
  import {
64
65
  FFMPEG_PATH_ENV,
65
66
  FFPROBE_PATH_ENV,
@@ -9460,6 +9461,60 @@ FFmpeg stopped after ${streamingTimeout} ms without consuming a frame.` : "";
9460
9461
  return encoder;
9461
9462
  }
9462
9463
 
9464
+ // ../core/dist/audioGroups.js
9465
+ var HF_AUDIO_GROUP_TAG = "hf-audio-group";
9466
+ var HF_AUDIO_GROUP_ATTR = "data-audio-group";
9467
+ function readAudioGroupVolume(el) {
9468
+ const raw = el?.getAttribute("data-volume");
9469
+ const parsed = raw ? parseFloat(raw) : 1;
9470
+ return Number.isFinite(parsed) ? parsed : 1;
9471
+ }
9472
+ function buildGroup(id, memberIds, el) {
9473
+ const fxChain = el?.getAttribute(HF_AUDIO_FX_ATTR);
9474
+ const automation = el?.getAttribute(HF_AUDIO_AUTOMATION_ATTR);
9475
+ return {
9476
+ id,
9477
+ label: el?.getAttribute("data-label") || id,
9478
+ memberIds,
9479
+ ...fxChain ? { fxChain } : {},
9480
+ ...automation ? { automation } : {},
9481
+ volume: readAudioGroupVolume(el),
9482
+ hidden: el?.hasAttribute("data-hidden") ?? false
9483
+ };
9484
+ }
9485
+ function resolveAudioGroups(root) {
9486
+ const membersByGroup = /* @__PURE__ */ new Map();
9487
+ const candidates = root.querySelectorAll(`audio[${HF_AUDIO_GROUP_ATTR}], video[${HF_AUDIO_GROUP_ATTR}]`);
9488
+ for (const member of candidates) {
9489
+ if (!isGroupableMember(member))
9490
+ continue;
9491
+ const groupId = member.getAttribute(AUDIO_GROUP_RENDER_ID_ATTR) ?? member.getAttribute(HF_AUDIO_GROUP_ATTR);
9492
+ if (!groupId || !member.id)
9493
+ continue;
9494
+ const members = membersByGroup.get(groupId);
9495
+ if (members)
9496
+ members.push(member.id);
9497
+ else
9498
+ membersByGroup.set(groupId, [member.id]);
9499
+ }
9500
+ const groupElements = /* @__PURE__ */ new Map();
9501
+ for (const el of root.querySelectorAll(HF_AUDIO_GROUP_TAG)) {
9502
+ const key = el.getAttribute(MEDIA_RENDER_ID_ATTR) ?? el.id;
9503
+ if (key)
9504
+ groupElements.set(key, el);
9505
+ }
9506
+ const groups = [];
9507
+ for (const [id, memberIds] of membersByGroup) {
9508
+ groups.push(buildGroup(id, memberIds, groupElements.get(id)));
9509
+ }
9510
+ return groups;
9511
+ }
9512
+ function isGroupableMember(el) {
9513
+ if (el.tagName.toLowerCase() === "audio")
9514
+ return true;
9515
+ return typeof el.hasAttribute === "function" && isAudibleVideoElement(el);
9516
+ }
9517
+
9463
9518
  // ../engine/src/services/mediaHidden.ts
9464
9519
  function isSelfOrAncestorHidden(el) {
9465
9520
  for (let current = el; current; current = current.parentElement) {
@@ -9467,6 +9522,16 @@ function isSelfOrAncestorHidden(el) {
9467
9522
  }
9468
9523
  return false;
9469
9524
  }
9525
+ function memberGroupKey(el) {
9526
+ return el.getAttribute(AUDIO_GROUP_RENDER_ID_ATTR) ?? el.getAttribute(HF_AUDIO_GROUP_ATTR);
9527
+ }
9528
+ function audioGroupsById(document2) {
9529
+ return new Map(resolveAudioGroups(document2).map((group) => [group.id, group]));
9530
+ }
9531
+ function isMemberGroupHidden(groupsById, el) {
9532
+ const groupId = memberGroupKey(el);
9533
+ return groupId ? groupsById.get(groupId)?.hidden ?? false : false;
9534
+ }
9470
9535
 
9471
9536
  // ../engine/src/services/videoFrameExtractor.ts
9472
9537
  import { copyFileSync as copyFileSync2, existsSync as existsSync8, linkSync as linkSync2, mkdirSync as mkdirSync6, rmSync as rmSync3 } from "fs";
@@ -11143,6 +11208,7 @@ function parseVideoElements(html) {
11143
11208
  const { document: document2 } = parseHTML(unwrapTemplate(html));
11144
11209
  const startCache = /* @__PURE__ */ new Map();
11145
11210
  const visiting = /* @__PURE__ */ new Set();
11211
+ const groupsById = audioGroupsById(document2);
11146
11212
  const videoEls = document2.querySelectorAll("video");
11147
11213
  let autoIdCounter = 0;
11148
11214
  for (const el of videoEls) {
@@ -11177,7 +11243,7 @@ function parseVideoElements(html) {
11177
11243
  playbackRate: readElementRateSpec(el),
11178
11244
  loop: el.hasAttribute("loop"),
11179
11245
  hasAudio: hasAudioAttr === "true",
11180
- ...isSelfOrAncestorHidden(el) ? { hidden: true } : {}
11246
+ ...isSelfOrAncestorHidden(el) || isAudibleVideoElement(el) && isMemberGroupHidden(groupsById, el) ? { hidden: true } : {}
11181
11247
  });
11182
11248
  }
11183
11249
  return videos;
@@ -13205,52 +13271,6 @@ function chainTailSeconds(chain, automation) {
13205
13271
  return Math.min(MAX_FX_TAIL_SECONDS, total);
13206
13272
  }
13207
13273
 
13208
- // ../core/dist/audioGroups.js
13209
- var HF_AUDIO_GROUP_TAG = "hf-audio-group";
13210
- var HF_AUDIO_GROUP_ATTR = "data-audio-group";
13211
- function readAudioGroupVolume(el) {
13212
- const raw = el?.getAttribute("data-volume");
13213
- const parsed = raw ? parseFloat(raw) : 1;
13214
- return Number.isFinite(parsed) ? parsed : 1;
13215
- }
13216
- function buildGroup(id, memberIds, el) {
13217
- const fxChain = el?.getAttribute(HF_AUDIO_FX_ATTR);
13218
- const automation = el?.getAttribute(HF_AUDIO_AUTOMATION_ATTR);
13219
- return {
13220
- id,
13221
- label: el?.getAttribute("data-label") || id,
13222
- memberIds,
13223
- ...fxChain ? { fxChain } : {},
13224
- ...automation ? { automation } : {},
13225
- volume: readAudioGroupVolume(el),
13226
- hidden: el?.hasAttribute("data-hidden") ?? false
13227
- };
13228
- }
13229
- function resolveAudioGroups(root) {
13230
- const membersByGroup = /* @__PURE__ */ new Map();
13231
- for (const member of root.querySelectorAll(`audio[${HF_AUDIO_GROUP_ATTR}]`)) {
13232
- const groupId = member.getAttribute(AUDIO_GROUP_RENDER_ID_ATTR) ?? member.getAttribute(HF_AUDIO_GROUP_ATTR);
13233
- if (!groupId || !member.id)
13234
- continue;
13235
- const members = membersByGroup.get(groupId);
13236
- if (members)
13237
- members.push(member.id);
13238
- else
13239
- membersByGroup.set(groupId, [member.id]);
13240
- }
13241
- const groupElements = /* @__PURE__ */ new Map();
13242
- for (const el of root.querySelectorAll(HF_AUDIO_GROUP_TAG)) {
13243
- const key = el.getAttribute(MEDIA_RENDER_ID_ATTR) ?? el.id;
13244
- if (key)
13245
- groupElements.set(key, el);
13246
- }
13247
- const groups = [];
13248
- for (const [id, memberIds] of membersByGroup) {
13249
- groups.push(buildGroup(id, memberIds, groupElements.get(id)));
13250
- }
13251
- return groups;
13252
- }
13253
-
13254
13274
  // ../engine/src/services/audioFxRender.ts
13255
13275
  import { existsSync as existsSync9, mkdtempSync as mkdtempSync4, readFileSync as readFileSync6, rmSync as rmSync5, writeFileSync as writeFileSync5 } from "fs";
13256
13276
  import { tmpdir as tmpdir2 } from "os";
@@ -13511,9 +13531,6 @@ function envelopeWalkerFor(envelope) {
13511
13531
 
13512
13532
  // ../engine/src/services/audioMixer.ts
13513
13533
  var MIXED_AUDIO_FILENAME = "audio.m4a";
13514
- function memberGroupKey(el) {
13515
- return el.getAttribute(AUDIO_GROUP_RENDER_ID_ATTR) ?? el.getAttribute(HF_AUDIO_GROUP_ATTR);
13516
- }
13517
13534
  function clampVolume(volume) {
13518
13535
  return clampAudioGain(volume);
13519
13536
  }
@@ -13815,17 +13832,14 @@ function parseAudioElements(html) {
13815
13832
  const groupsById = new Map(
13816
13833
  resolveAudioGroups(document2).map((group) => [group.id, group])
13817
13834
  );
13818
- const memberGroupHidden = (el) => {
13819
- const groupId = memberGroupKey(el);
13820
- return groupId ? groupsById.get(groupId)?.hidden ?? false : false;
13821
- };
13822
- const build = (el, id, src, type) => {
13835
+ const memberGroupHidden = (el) => isMemberGroupHidden(groupsById, el);
13836
+ const build = (el, id, src, type, joinsGroup) => {
13823
13837
  const layerAttr = el.getAttribute("data-layer");
13824
13838
  const volumeAttr = el.getAttribute("data-volume");
13825
13839
  const fades = readElementFades(el);
13826
13840
  const fxChain = el.getAttribute(HF_AUDIO_FX_ATTR);
13827
13841
  const automation = el.getAttribute(HF_AUDIO_AUTOMATION_ATTR);
13828
- const groupId = type === "audio" ? memberGroupKey(el) : null;
13842
+ const groupId = joinsGroup ? memberGroupKey(el) : null;
13829
13843
  const group = groupId ? groupsById.get(groupId) : void 0;
13830
13844
  return {
13831
13845
  id,
@@ -13855,14 +13869,15 @@ function parseAudioElements(html) {
13855
13869
  const src = resolveMediaElementSrc(el);
13856
13870
  if (!id || !src || isHidden(el) || memberGroupHidden(el)) continue;
13857
13871
  if (isKnownInactiveTimelineWindow(el, resolveStart(el))) continue;
13858
- elements.push(build(el, id, src, "audio"));
13872
+ elements.push(build(el, id, src, "audio", true));
13859
13873
  }
13860
13874
  for (const el of document2.querySelectorAll('video[id][data-has-audio="true"]')) {
13875
+ if (!isAudibleVideoElement(el)) continue;
13861
13876
  const id = trackId(el);
13862
13877
  const src = resolveMediaElementSrc(el);
13863
- if (!id || !src || isHidden(el)) continue;
13878
+ if (!id || !src || isHidden(el) || memberGroupHidden(el)) continue;
13864
13879
  if (isKnownInactiveTimelineWindow(el, resolveStart(el))) continue;
13865
- elements.push(build(el, `${id}-audio`, src, "video"));
13880
+ elements.push(build(el, `${id}-audio`, src, "video", true));
13866
13881
  }
13867
13882
  return elements;
13868
13883
  }
@@ -15865,6 +15880,8 @@ export {
15865
15880
  applyFaststart,
15866
15881
  createFrameReorderBuffer,
15867
15882
  spawnStreamingEncoder,
15883
+ HF_AUDIO_GROUP_TAG,
15884
+ HF_AUDIO_GROUP_ATTR,
15868
15885
  resolveReferencedStart,
15869
15886
  resolveReferencedDuration,
15870
15887
  safeDownloadUrlIdentity,
@@ -15908,8 +15925,6 @@ export {
15908
15925
  fingerprintElementId,
15909
15926
  isNotMediaPayload,
15910
15927
  assertMediaPayload,
15911
- HF_AUDIO_GROUP_TAG,
15912
- HF_AUDIO_GROUP_ATTR,
15913
15928
  MIXED_AUDIO_FILENAME,
15914
15929
  parseAudioElements,
15915
15930
  processCompositionAudio,
@@ -7,16 +7,16 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parseFeedbackRating,
9
9
  trackRenderFeedback
10
- } from "./chunk-TPPIERG3.js";
10
+ } from "./chunk-WMN4NBJQ.js";
11
11
  import {
12
12
  shouldTrack
13
- } from "./chunk-3CYAZWF2.js";
13
+ } from "./chunk-CPO5INJ5.js";
14
14
  import {
15
15
  c
16
16
  } from "./chunk-ZTZA4UWZ.js";
17
17
  import {
18
18
  detectAgentRuntime
19
- } from "./chunk-C3KEF3UA.js";
19
+ } from "./chunk-CQRF7VU3.js";
20
20
  import {
21
21
  readConfig,
22
22
  writeConfig
@@ -83,7 +83,7 @@ async function maybePromptRenderFeedback(opts) {
83
83
  async function getDoctorSummary() {
84
84
  try {
85
85
  const [{ getSystemMeta }, { findFFmpeg }] = await Promise.all([
86
- import("./system-OL4MXRPK.js"),
86
+ import("./system-EEWYEHYX.js"),
87
87
  import("./ffmpeg-QIUFEFTY.js")
88
88
  ]);
89
89
  const sys = getSystemMeta();
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  VERSION
9
- } from "./chunk-OGTR33KN.js";
9
+ } from "./chunk-3T4RQK6C.js";
10
10
 
11
11
  // src/registry/compatibility.ts
12
12
  import { compareVersions } from "compare-versions";
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-ISN5GRYI.js";
18
18
  import {
19
19
  VERSION
20
- } from "./chunk-OGTR33KN.js";
20
+ } from "./chunk-3T4RQK6C.js";
21
21
 
22
22
  // src/utils/updateCheck.ts
23
23
  import { existsSync, readFileSync } from "fs";
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-PBN6GBJE.js";
16
16
  import {
17
17
  parseFps
18
- } from "./chunk-VMDEGITC.js";
18
+ } from "./chunk-B25H4M4V.js";
19
19
 
20
20
  // src/utils/renderArgs.ts
21
21
  import { readFileSync } from "fs";
@@ -21,7 +21,7 @@ import {
21
21
  shouldClampResolvedMediaDuration,
22
22
  stripEmbeddedRuntimeScripts,
23
23
  warnUnknownEnumValues
24
- } from "./chunk-PMLZPNIB.js";
24
+ } from "./chunk-YLVI7VL5.js";
25
25
  import {
26
26
  cssVariableName
27
27
  } from "./chunk-VC76R6W2.js";
@@ -31,7 +31,7 @@ import {
31
31
  } from "./chunk-OFQWTKPW.js";
32
32
  import {
33
33
  lintHyperframeHtml
34
- } from "./chunk-QM2NUN2B.js";
34
+ } from "./chunk-BAVM2XBR.js";
35
35
  import {
36
36
  CSS_URL_RE,
37
37
  checkSubCompositionUsability,
@@ -8,16 +8,16 @@ import {
8
8
  flush,
9
9
  shouldTrack,
10
10
  trackEvent
11
- } from "./chunk-3CYAZWF2.js";
11
+ } from "./chunk-CPO5INJ5.js";
12
12
  import {
13
13
  getPowerState
14
- } from "./chunk-C3KEF3UA.js";
14
+ } from "./chunk-CQRF7VU3.js";
15
15
  import {
16
16
  CliRuntimeError
17
17
  } from "./chunk-PBN6GBJE.js";
18
18
  import {
19
19
  redactTelemetryString
20
- } from "./chunk-VMDEGITC.js";
20
+ } from "./chunk-B25H4M4V.js";
21
21
  import {
22
22
  readConfig
23
23
  } from "./chunk-XUXGIA7H.js";
@@ -7,29 +7,29 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  RegistryCompatibilityError,
9
9
  gateRegistryItemsCompatibility
10
- } from "./chunk-L7XDI3DT.js";
10
+ } from "./chunk-RB7AHUOR.js";
11
11
  import {
12
12
  DEFAULT_PROJECT_CONFIG,
13
13
  createProjectConfig,
14
14
  loadProjectConfig,
15
15
  projectConfigPath,
16
16
  recordProjectRegistryItems
17
- } from "./chunk-P7XRDAWU.js";
17
+ } from "./chunk-LAQEZHOH.js";
18
18
  import {
19
19
  resolveItemWithDependencies,
20
20
  resolveItemsByTag
21
- } from "./chunk-JNY3VJWB.js";
21
+ } from "./chunk-XYVFPDNU.js";
22
22
  import {
23
23
  InvalidVariableValuesError,
24
24
  prepareItem,
25
25
  publishItem
26
- } from "./chunk-BRTGJ73L.js";
26
+ } from "./chunk-HQGJLZB6.js";
27
27
  import {
28
28
  DEFAULT_REGISTRY_URL
29
- } from "./chunk-NHTRUAMD.js";
29
+ } from "./chunk-AWUZ3AUD.js";
30
30
  import {
31
31
  trackRegistryItemAdded
32
- } from "./chunk-TPPIERG3.js";
32
+ } from "./chunk-WMN4NBJQ.js";
33
33
  import {
34
34
  c
35
35
  } from "./chunk-ZTZA4UWZ.js";
@@ -41,7 +41,7 @@ import {
41
41
  } from "./chunk-PBN6GBJE.js";
42
42
  import {
43
43
  ITEM_TYPE_DIRS
44
- } from "./chunk-VMDEGITC.js";
44
+ } from "./chunk-B25H4M4V.js";
45
45
  import {
46
46
  isProjectRootMissing,
47
47
  realpath
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  updateNoticesSuppressed
9
- } from "./chunk-YVEZT6WT.js";
9
+ } from "./chunk-TBYUUOJG.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";
@@ -8,7 +8,7 @@ import {
8
8
  DEFAULT_REGISTRY_URL,
9
9
  fetchItemManifest,
10
10
  fetchRegistryManifest
11
- } from "./chunk-NHTRUAMD.js";
11
+ } from "./chunk-AWUZ3AUD.js";
12
12
 
13
13
  // src/registry/resolver.ts
14
14
  function defaultWarn(message) {
@@ -8,10 +8,10 @@ import {
8
8
  DEFAULT_VP9_CPU_USED,
9
9
  isHttpUrl,
10
10
  runFfmpeg
11
- } from "./chunk-D5EJCP26.js";
11
+ } from "./chunk-OF3RKOPU.js";
12
12
  import {
13
13
  parseAnimatedGifMetadata
14
- } from "./chunk-VMDEGITC.js";
14
+ } from "./chunk-B25H4M4V.js";
15
15
  import {
16
16
  parseHTML
17
17
  } from "./chunk-GK4AIFIH.js";