hyperframes 0.8.186 → 0.8.188

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 (182) hide show
  1. package/dist/{add-UGK7AZI6.js → add-UORF6235.js} +12 -12
  2. package/dist/{animatedGifPrep-HPZPSB43.js → animatedGifPrep-23MLSEXF.js} +7 -7
  3. package/dist/api.js +15 -15
  4. package/dist/{asset-X2GTFWOY.js → asset-DOKDVHCW.js} +2 -2
  5. package/dist/{assetCataloger-5NWEG4IU.js → assetCataloger-CD27MHEY.js} +7 -7
  6. package/dist/{audio-7PBM5F3H.js → audio-3NMZHNNU.js} +15 -15
  7. package/dist/{auth-WABSMO46.js → auth-AWKTSKGC.js} +1 -1
  8. package/dist/{autoUpdate-6SCMLTSC.js → autoUpdate-VBOI4CNU.js} +2 -2
  9. package/dist/{backgroundChecks-XOGPAAR3.js → backgroundChecks-S4R454YU.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-VR6IA77K.js → batchRender-EGPYNDHK.js} +4 -4
  12. package/dist/{beats-3IWXLMSC.js → beats-YENEQUOA.js} +4 -4
  13. package/dist/{benchmark-2SSYATCX.js → benchmark-THSJIQG7.js} +9 -9
  14. package/dist/{browser-PMRN345D.js → browser-BDMVQ6WJ.js} +3 -3
  15. package/dist/{bundleWithLocalizedFonts-TT32MZBO.js → bundleWithLocalizedFonts-3QG722YD.js} +2 -2
  16. package/dist/{capture-BDGYTE57.js → capture-WM4XDMFX.js} +2 -2
  17. package/dist/{capture-4VD6AKUJ.js → capture-Z6BGCTK3.js} +10 -10
  18. package/dist/{captureCompositionFrame-5FVLAETA.js → captureCompositionFrame-EMHSAIBZ.js} +11 -11
  19. package/dist/{catalog-HUYZO5D7.js → catalog-7TV6UNCG.js} +12 -12
  20. package/dist/{catch-up-SSGTR2ZT.js → catch-up-63IUDZRW.js} +4 -4
  21. package/dist/{check-JWUWHGM2.js → check-7RHZL4DV.js} +32 -32
  22. package/dist/{checkBrowser-X7G6YNR7.js → checkBrowser-PF56CT5X.js} +29 -29
  23. package/dist/{chunk-5ZMXGNGC.js → chunk-2DHCCBCN.js} +9 -9
  24. package/dist/{chunk-ZKBW7NU2.js → chunk-2WUDFZCR.js} +2 -2
  25. package/dist/{chunk-YNH6ERDL.js → chunk-44QWRPGE.js} +2 -2
  26. package/dist/{chunk-ACLABKEF.js → chunk-46VJ2UAV.js} +5 -5
  27. package/dist/{chunk-4AFNEKU7.js → chunk-57XL23DE.js} +1 -1
  28. package/dist/{chunk-J36JVBLR.js → chunk-5C7R55BJ.js} +1 -1
  29. package/dist/{chunk-WHMFW5ET.js → chunk-5DPV7LU3.js} +3 -3
  30. package/dist/{chunk-YQICCAVA.js → chunk-5OZI55AC.js} +1 -1
  31. package/dist/{chunk-5UBZPG74.js → chunk-6A45RKAK.js} +1 -1
  32. package/dist/{chunk-LDW3KVGK.js → chunk-6HYPEIH7.js} +2 -2
  33. package/dist/{chunk-2PZZMAME.js → chunk-6HZ7TSJJ.js} +13 -8
  34. package/dist/{chunk-ROWEDRVX.js → chunk-6OWNUXTU.js} +1 -1
  35. package/dist/{chunk-77QM6YRQ.js → chunk-6Q5CFUAP.js} +1 -1
  36. package/dist/{chunk-DTXDQ6OP.js → chunk-B2P4JRUJ.js} +1 -1
  37. package/dist/chunk-BPX7LZG6.js +3896 -0
  38. package/dist/{chunk-TH7J3JZ5.js → chunk-BU4HRISA.js} +15 -15
  39. package/dist/{chunk-UJZT6HNN.js → chunk-BWEZDN6U.js} +1 -1
  40. package/dist/{chunk-MY6CVBDD.js → chunk-CE7EQUBV.js} +1 -1
  41. package/dist/{chunk-TQ2RRB5V.js → chunk-DA4TQFSF.js} +1 -1
  42. package/dist/{chunk-RPUIMFHF.js → chunk-DG4ME554.js} +1 -1
  43. package/dist/{chunk-Y2M6XSNK.js → chunk-DLFAVRF3.js} +1 -1
  44. package/dist/{chunk-TTVHYD5R.js → chunk-EI7FP7F3.js} +1 -1
  45. package/dist/{chunk-22QKQDEE.js → chunk-FOLMMQF3.js} +11 -11
  46. package/dist/{chunk-HZ7M2MZA.js → chunk-FSTLXRIN.js} +1 -1
  47. package/dist/{chunk-4NTW45W5.js → chunk-FWVILDOZ.js} +3 -3
  48. package/dist/{chunk-FCWFV4P7.js → chunk-GYBPAKBM.js} +2269 -2270
  49. package/dist/{chunk-ID5AJ4L3.js → chunk-HKUZCSNZ.js} +2 -2
  50. package/dist/{chunk-YRAJDFIN.js → chunk-HPQSUPR7.js} +1 -1
  51. package/dist/{chunk-3YHGQJI6.js → chunk-I7C5GUEQ.js} +3 -3
  52. package/dist/{chunk-7MVODWQF.js → chunk-IA2IDJAG.js} +1 -1
  53. package/dist/{chunk-PEIV2SOG.js → chunk-IJYR4TTA.js} +1 -1
  54. package/dist/{chunk-GTMBII7X.js → chunk-JWRT2IXO.js} +1 -1
  55. package/dist/{chunk-2II34JPM.js → chunk-JYC53CW4.js} +11 -11
  56. package/dist/{chunk-U4BMRIE6.js → chunk-KDBPZOXK.js} +9 -7
  57. package/dist/{chunk-FRLTKTOR.js → chunk-KWSEIVR6.js} +1 -1
  58. package/dist/{chunk-27H2363S.js → chunk-KY7375C4.js} +1 -1
  59. package/dist/{chunk-KNLSYCI5.js → chunk-L243NE72.js} +7 -7
  60. package/dist/{chunk-R6IGQ5NO.js → chunk-LWY3PFJ7.js} +2 -2
  61. package/dist/{chunk-5ZMIVTHN.js → chunk-LWYZN7HS.js} +1 -1
  62. package/dist/{chunk-DQZMJS2P.js → chunk-MJKUCR3C.js} +1 -1
  63. package/dist/{chunk-7AUMTARQ.js → chunk-MTPPEEYZ.js} +3 -3
  64. package/dist/{chunk-UAJCTEK2.js → chunk-MXXX6WVC.js} +1 -1
  65. package/dist/{chunk-Z5233OAN.js → chunk-NFHRGHCJ.js} +5 -5
  66. package/dist/{chunk-T4RP55P2.js → chunk-NFLZNSUZ.js} +1 -1
  67. package/dist/{chunk-4XFFJAWS.js → chunk-NMOTNNP2.js} +1 -1
  68. package/dist/{chunk-WLHNIIXU.js → chunk-OJOZXWLC.js} +3 -3
  69. package/dist/{chunk-HOFX63F2.js → chunk-OKSYDQHY.js} +3 -3
  70. package/dist/{chunk-6IOBAOU7.js → chunk-PMXR3IUH.js} +1 -1
  71. package/dist/{chunk-RFJ6SX4U.js → chunk-PQLFJYGP.js} +5 -5
  72. package/dist/{chunk-PFD25NAC.js → chunk-RIJHDTM5.js} +4 -0
  73. package/dist/{chunk-BRTDLVK3.js → chunk-SMF6YAUL.js} +9 -11
  74. package/dist/{chunk-RVZNSKRH.js → chunk-T3OXKSRG.js} +2 -2
  75. package/dist/{chunk-Q447CX26.js → chunk-TSFA2Y5C.js} +60 -47
  76. package/dist/{chunk-NPDPDEPP.js → chunk-UF6RCYA5.js} +1 -1
  77. package/dist/{chunk-EZINX6HH.js → chunk-V6NM4KL3.js} +3 -3
  78. package/dist/{chunk-U7QTMRLW.js → chunk-W2KGJHUL.js} +2 -2
  79. package/dist/{chunk-7MLFYMFB.js → chunk-X556BGL7.js} +1 -1
  80. package/dist/{chunk-UJKQWGFF.js → chunk-X7HBSTCZ.js} +8 -0
  81. package/dist/{chunk-CML25PAF.js → chunk-XNFDDVJS.js} +27 -3
  82. package/dist/{chunk-ZVBEGBII.js → chunk-XPVN4R66.js} +3 -3
  83. package/dist/{chunk-7M7TMM4S.js → chunk-YCW345M4.js} +147 -118
  84. package/dist/{chunk-RNZEQTWZ.js → chunk-YV4WT7CJ.js} +4 -2
  85. package/dist/{chunk-K6KBOORN.js → chunk-YZ73IPW2.js} +1 -1
  86. package/dist/{clean-IM2JIAUT.js → clean-43O47OTN.js} +16 -16
  87. package/dist/cli.js +53 -53
  88. package/dist/{cloud-6IPBCJSX.js → cloud-ZFWKFFSU.js} +4 -4
  89. package/dist/{cloudrun-MWZ6S2I2.js → cloudrun-XBBESKEU.js} +5 -5
  90. package/dist/{compare-WD7A2TV5.js → compare-OW4ELTFZ.js} +26 -26
  91. package/dist/{compiler-2EKSMC3I.js → compiler-23MT6CX6.js} +4 -4
  92. package/dist/{component-JKALWH36.js → component-SDV7LWH6.js} +3 -3
  93. package/dist/{compositions-643NAG4A.js → compositions-DI5QZCEK.js} +11 -11
  94. package/dist/{delete-EASPXKHQ.js → delete-QY2NSQ2G.js} +4 -4
  95. package/dist/deploy-MJVC4EFY.js +300 -0
  96. package/dist/{destroy-4B5HW5FH.js → destroy-SSPAKADI.js} +13 -3
  97. package/dist/{dist-LM7AVHOU.js → dist-JH32CBQL.js} +1 -1
  98. package/dist/{dist-F6FOKRSU.js → dist-RFTGYT26.js} +3 -3
  99. package/dist/{doctor-7XUVYDJQ.js → doctor-7ZOECPHR.js} +11 -11
  100. package/dist/{events-TULV6D3G.js → events-WIX4JM2K.js} +3 -3
  101. package/dist/{events-5TTPYBKG.js → events-XVQQGECC.js} +2 -2
  102. package/dist/{feedback-4FTPWM6P.js → feedback-GBYBR6UO.js} +7 -7
  103. package/dist/{ffmpeg-MP7ZVYLZ.js → ffmpeg-QGQBYMO3.js} +7 -7
  104. package/dist/{figma-B7LFWYKO.js → figma-2CMKUGJQ.js} +3 -3
  105. package/dist/fontLocalizeCli.js +9 -9
  106. package/dist/{get-F7W4AQ2V.js → get-RWCNUOHU.js} +4 -4
  107. package/dist/{gpuPolicy-NSNVDFXC.js → gpuPolicy-UGWSN32D.js} +7 -7
  108. package/dist/{grade-compare-6QXDTLS2.js → grade-compare-J2MX7HZL.js} +27 -27
  109. package/dist/{help-RJAA4O74.js → help-SH3ID7MV.js} +1 -1
  110. package/dist/{history-OOQBDVV5.js → history-C7V5QH7J.js} +6 -6
  111. package/dist/hyperframe.manifest.json +1 -1
  112. package/dist/hyperframe.runtime.iife.js +65 -64
  113. package/dist/hyperframes-player.global.js +3 -3
  114. package/dist/{info-5OGGYYLO.js → info-ZN3JJ3IN.js} +8 -8
  115. package/dist/{init-DM3TJKW2.js → init-KRNGSRNH.js} +27 -27
  116. package/dist/{inspect-FECQCLS5.js → inspect-AYDZXTX7.js} +27 -27
  117. package/dist/{installer-WOG4VORV.js → installer-N6AIK6XQ.js} +5 -5
  118. package/dist/{keyframes-SZHWUF5Y.js → keyframes-2RFUCEDK.js} +6 -6
  119. package/dist/{lambda-JG2ZRGMC.js → lambda-VW3CF6EE.js} +20 -13
  120. package/dist/{layout-7ACF7ZKC.js → layout-OE64APE7.js} +27 -27
  121. package/dist/{lint-ZCQGMILV.js → lint-UXJTX5WS.js} +7 -7
  122. package/dist/{lintProject-JATQKR64.js → lintProject-XM3DLUKG.js} +1 -1
  123. package/dist/{list-MH2X3Y2T.js → list-KOL6JPZJ.js} +7 -7
  124. package/dist/{login-CK46WX5U.js → login-MAQXOPDG.js} +4 -4
  125. package/dist/{manager-GXTPNJVW.js → manager-3LZKRK7P.js} +8 -8
  126. package/dist/{media-treatment-EH2AT34Z.js → media-treatment-COLSXXQJ.js} +13 -13
  127. package/dist/{models-D5XP2UK6.js → models-XXWMGOD7.js} +11 -11
  128. package/dist/{motionShot-UR7D3SRQ.js → motionShot-RECBNTBZ.js} +14 -14
  129. package/dist/{normalize-audio-635JOR5W.js → normalize-audio-LKVGHZWR.js} +6 -6
  130. package/dist/{open-6WE5WFVM.js → open-UEQVSRKH.js} +12 -12
  131. package/dist/{parakeetRunner-STHZPG32.js → parakeetRunner-QVPCZ36U.js} +12 -12
  132. package/dist/{pipeline-LVEKRETU.js → pipeline-5VSMQBKW.js} +8 -8
  133. package/dist/{play-W6TDW4FE.js → play-MNEABYN4.js} +19 -19
  134. package/dist/{policies-XXNGXWHV.js → policies-MBWGLMWB.js} +17 -0
  135. package/dist/{preflight-LIMQXLR7.js → preflight-ONJ74DWQ.js} +8 -8
  136. package/dist/{present-RX5QX6UR.js → present-GQ24GTYX.js} +15 -15
  137. package/dist/{preview-KIWTWK63.js → preview-ALL7O4RG.js} +18 -18
  138. package/dist/{producer-TSNKSCUM.js → producer-43L2UDF6.js} +1 -1
  139. package/dist/{progress-NHJIHAAG.js → progress-PX3PVAIM.js} +5 -3
  140. package/dist/{projectConfig-NCP7JRH4.js → projectConfig-VJXUXK7U.js} +7 -7
  141. package/dist/{publication-5W5UZWGC.js → publication-L6E5NTFV.js} +3 -3
  142. package/dist/{publish-7WR4XJ6I.js → publish-LCLBJEPR.js} +9 -9
  143. package/dist/{remove-background-43JGBRWQ.js → remove-background-PDL4KPR4.js} +9 -9
  144. package/dist/{render-7T44HIM6.js → render-7HVKJ7T4.js} +9 -7
  145. package/dist/{render-456HCO6O.js → render-J33ZHR6I.js} +44 -28
  146. package/dist/{render-WHMLYIOI.js → render-OPCRLZVL.js} +31 -22
  147. package/dist/{render-batch-LURBJTBV.js → render-batch-ZHHIGXU3.js} +5 -5
  148. package/dist/renderSetupWorker.js +1 -1
  149. package/dist/{resolver-MBIW4VC4.js → resolver-KNNIMMBM.js} +5 -5
  150. package/dist/{sam-MC24SZHC.js → sam-FHJ7IL7T.js} +3 -1
  151. package/dist/{sherpa-5J2AALED.js → sherpa-GI62H3H5.js} +11 -11
  152. package/dist/{sites-MAVH57MO.js → sites-5PWHAMEG.js} +1 -1
  153. package/dist/skills/hyperframes/references/motion.md +1 -0
  154. package/dist/{skills-UHOXOGGF.js → skills-IUTD6VQO.js} +5 -5
  155. package/dist/{skillsUpdateCheck-PDZIFUJE.js → skillsUpdateCheck-XZE7MJG6.js} +3 -3
  156. package/dist/{snapshot-PFV7ALLH.js → snapshot-XEXTHLZP.js} +32 -32
  157. package/dist/{src-XK5YIR6L.js → src-6STRGCDC.js} +8 -8
  158. package/dist/{src-DCVSEODX.js → src-ZPIV4PGX.js} +10 -6
  159. package/dist/{state-ORRPOLMQ.js → state-JPNCCXAV.js} +3 -1
  160. package/dist/{staticProjectServer-4IE4G4JO.js → staticProjectServer-HJLT7MHE.js} +15 -15
  161. package/dist/studio/assets/{hyperframes-player-B_skzvYC.js → hyperframes-player-DwWIKKZG.js} +1 -1
  162. package/dist/studio/assets/{index-CgLbvCUo.js → index-Cjwz7_13.js} +1 -1
  163. package/dist/studio/assets/{index-Dn5FAk2e.js → index-M8lEpS0Q.js} +130 -130
  164. package/dist/studio/index.html +1 -1
  165. package/dist/{studio-api-JMWYU7KF.js → studio-api-OBHEB5ND.js} +9 -9
  166. package/dist/{studioServer-BWLSTGIG.js → studioServer-KRIZFYML.js} +45 -45
  167. package/dist/{telemetry-JCU3AV7W.js → telemetry-N5OOVBCP.js} +3 -3
  168. package/dist/templates/_shared/AGENTS.md +5 -0
  169. package/dist/templates/_shared/CLAUDE.md +5 -0
  170. package/dist/{timeline-BCIFQYOM.js → timeline-YUFH65OG.js} +17 -17
  171. package/dist/{tokens-7IXKALMQ.js → tokens-K4VYLSWJ.js} +2 -2
  172. package/dist/{transcribe-HW7HGJ4V.js → transcribe-CY4CVO54.js} +16 -16
  173. package/dist/{transcribe-ZUQD3B32.js → transcribe-GMQXKDYN.js} +10 -10
  174. package/dist/{updateCheck-Z6LNEK7B.js → updateCheck-2625RXK4.js} +2 -2
  175. package/dist/{upgrade-JYH72JGL.js → upgrade-6ZY5MSBQ.js} +2 -2
  176. package/dist/{urlDownloader-WKLFHSUH.js → urlDownloader-PVJWG7V3.js} +6 -6
  177. package/dist/{validate-QCC27YYI.js → validate-XSRHEE7E.js} +21 -21
  178. package/dist/{video-EZ7ONY6L.js → video-MBFHC54F.js} +7 -7
  179. package/dist/warmCheck.js +34 -34
  180. package/package.json +18 -2
  181. package/dist/chunk-UOZX5W5T.js +0 -3852
  182. package/dist/deploy-CDKCQ5MX.js +0 -196
@@ -5897,6 +5897,53 @@ function findRuntimeMediaSrcMutationFindings(ctx) {
5897
5897
  }
5898
5898
  return findings;
5899
5899
  }
5900
+ var VOID_ELEMENTS = /* @__PURE__ */ new Set([
5901
+ "area",
5902
+ "base",
5903
+ "br",
5904
+ "col",
5905
+ "embed",
5906
+ "hr",
5907
+ "img",
5908
+ "input",
5909
+ "link",
5910
+ "meta",
5911
+ "source",
5912
+ "track",
5913
+ "wbr"
5914
+ ]);
5915
+ var closeTag = (name) => new RegExp(`</${name}>`, "gi");
5916
+ function innermostTimedWrapper(source, tags, media) {
5917
+ let found = null;
5918
+ for (const parent of tags) {
5919
+ if (parent.index >= media.index) break;
5920
+ if (parent.name === "video" || parent.name === "audio" || VOID_ELEMENTS.has(parent.name))
5921
+ continue;
5922
+ if (readDecodedAttr(parent.raw, "data-composition-id")) continue;
5923
+ const start = readAttr(parent.raw, "data-start");
5924
+ if (!start) continue;
5925
+ const events = [
5926
+ ...tags.filter((t) => t.name === parent.name && t.index > parent.index && t.index < media.index).map((t) => [t.index, 1]),
5927
+ ...[...source.substring(parent.index, media.index).matchAll(closeTag(parent.name))].map(
5928
+ (m) => [parent.index + m.index, -1]
5929
+ )
5930
+ ];
5931
+ let depth = 1;
5932
+ for (const [, delta] of events.sort((x, y) => x[0] - y[0])) {
5933
+ depth += delta;
5934
+ if (depth === 0) break;
5935
+ }
5936
+ if (depth > 0) {
5937
+ found = {
5938
+ name: parent.name,
5939
+ id: readAttr(parent.raw, "id") || void 0,
5940
+ start,
5941
+ duration: readAttr(parent.raw, "data-duration")
5942
+ };
5943
+ }
5944
+ }
5945
+ return found;
5946
+ }
5900
5947
  var mediaRules = [
5901
5948
  findNestedMediaStartBasisFindings,
5902
5949
  findSpeedRampOnNonMediaFindings,
@@ -6033,54 +6080,19 @@ var mediaRules = [
6033
6080
  // video_nested_in_timed_element
6034
6081
  ({ source, tags }) => {
6035
6082
  const findings = [];
6036
- const voidElements = /* @__PURE__ */ new Set([
6037
- "area",
6038
- "base",
6039
- "br",
6040
- "col",
6041
- "embed",
6042
- "hr",
6043
- "img",
6044
- "input",
6045
- "link",
6046
- "meta",
6047
- "source",
6048
- "track",
6049
- "wbr"
6050
- ]);
6051
- const timedTagPositions = [];
6052
- for (const tag of tags) {
6053
- if (tag.name === "video" || tag.name === "audio") continue;
6054
- if (voidElements.has(tag.name)) continue;
6055
- if (readDecodedAttr(tag.raw, "data-composition-id")) continue;
6056
- if (readAttr(tag.raw, "data-start")) {
6057
- timedTagPositions.push({
6058
- name: tag.name,
6059
- start: tag.index,
6060
- id: readAttr(tag.raw, "id") || void 0
6061
- });
6062
- }
6063
- }
6064
6083
  for (const tag of tags) {
6065
6084
  if (tag.name !== "video") continue;
6066
6085
  if (!readAttr(tag.raw, "data-start")) continue;
6067
- for (const parent of timedTagPositions) {
6068
- if (parent.start < tag.index) {
6069
- const parentClosePattern = new RegExp(`</${parent.name}>`, "gi");
6070
- const between = source.substring(parent.start, tag.index);
6071
- if (!parentClosePattern.test(between)) {
6072
- findings.push({
6073
- code: "video_nested_in_timed_element",
6074
- severity: "error",
6075
- message: `<video> with data-start is nested inside <${parent.name}${parent.id ? ` id="${parent.id}"` : ""}> which also has data-start. The frame extractor resolves the video's start from its own data-start without the wrapper's offset, while visibility uses the wrapper's window, so the two disagree: the clip shows the wrong source frames and then disappears partway through its slot.`,
6076
- elementId: readAttr(tag.raw, "id") || void 0,
6077
- fixHint: "Time the wrapper OR the video, never both: remove data-start from the wrapper (use it as a non-timed visual container), or move the <video> up to be a direct child of the stage.",
6078
- snippet: truncateSnippet(tag.raw)
6079
- });
6080
- break;
6081
- }
6082
- }
6083
- }
6086
+ const parent = innermostTimedWrapper(source, tags, tag);
6087
+ if (!parent) continue;
6088
+ findings.push({
6089
+ code: "video_nested_in_timed_element",
6090
+ severity: "error",
6091
+ message: `<video> with data-start is nested inside <${parent.name}${parent.id ? ` id="${parent.id}"` : ""}> which also has data-start. The frame extractor resolves the video's start from its own data-start without the wrapper's offset, while visibility uses the wrapper's window, so the two disagree: the clip shows the wrong source frames and then disappears partway through its slot.`,
6092
+ elementId: readAttr(tag.raw, "id") || void 0,
6093
+ fixHint: "Time the wrapper OR the video, never both: remove data-start from the wrapper (use it as a non-timed visual container), or move the <video> up to be a direct child of the stage.",
6094
+ snippet: truncateSnippet(tag.raw)
6095
+ });
6084
6096
  }
6085
6097
  return findings;
6086
6098
  },
@@ -6148,7 +6160,7 @@ var mediaRules = [
6148
6160
  return findings;
6149
6161
  },
6150
6162
  // media_missing_data_start + media_missing_id + media_missing_src + media_preload_none
6151
- ({ tags }) => {
6163
+ ({ source, tags }) => {
6152
6164
  const findings = [];
6153
6165
  for (const tag of tags) {
6154
6166
  if (tag.name !== "video" && tag.name !== "audio") continue;
@@ -6156,12 +6168,13 @@ var mediaRules = [
6156
6168
  const hasId = readAttr(tag.raw, "id");
6157
6169
  const hasSrc = mediaHasResolvableSrc(tag, tags);
6158
6170
  if (hasSrc && !hasDataStart) {
6171
+ const wrapper = tag.name === "video" ? innermostTimedWrapper(source, tags, tag) : null;
6159
6172
  findings.push({
6160
6173
  code: "media_missing_data_start",
6161
6174
  severity: "error",
6162
6175
  message: `<${tag.name}${hasId ? ` id="${hasId}"` : ""}> has src but no data-start. HyperFrames cannot own playback for untimed media, so preview and render behavior can diverge.`,
6163
6176
  elementId: hasId || void 0,
6164
- fixHint: `Add data-start="0" (or the intended start time) and data-duration if the clip should stop before the source ends.`,
6177
+ fixHint: wrapper ? `This <${tag.name}> sits inside the timed <${wrapper.name}${wrapper.id ? ` id="${wrapper.id}"` : ""}> (data-start="${wrapper.start}"), and the wrapper's data-start would then clash. Move the <${tag.name}> out as a direct child of the stage and give it that wrapper's data-start="${wrapper.start}"${wrapper.duration ? ` and data-duration="${wrapper.duration}"` : ""}.` : `Add data-start="0" (or the intended start time) and data-duration if the clip should stop before the source ends.`,
6165
6178
  snippet: truncateSnippet(tag.raw)
6166
6179
  });
6167
6180
  }
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  sherpaParakeetInstalled,
9
9
  sherpaUnsupportedReason
10
- } from "./chunk-4NTW45W5.js";
10
+ } from "./chunk-FWVILDOZ.js";
11
11
  import {
12
12
  findParakeet
13
13
  } from "./chunk-JZIEZCQM.js";
@@ -7,14 +7,14 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  trackLintReport,
9
9
  trackLintRuleStreak
10
- } from "./chunk-77QM6YRQ.js";
10
+ } from "./chunk-6Q5CFUAP.js";
11
11
  import {
12
12
  shouldTrack
13
- } from "./chunk-6IOBAOU7.js";
13
+ } from "./chunk-PMXR3IUH.js";
14
14
  import {
15
15
  LINT_RULE_COUNT,
16
16
  LINT_RULE_GROUP_COUNTS
17
- } from "./chunk-Q447CX26.js";
17
+ } from "./chunk-TSFA2Y5C.js";
18
18
 
19
19
  // src/telemetry/lintStreaks.ts
20
20
  import { createHash } from "crypto";
@@ -12,10 +12,10 @@ import {
12
12
  } from "./chunk-DCAI5DBR.js";
13
13
  import {
14
14
  createProjectConfig
15
- } from "./chunk-RPUIMFHF.js";
15
+ } from "./chunk-DG4ME554.js";
16
16
  import {
17
17
  isHyperframesProject
18
- } from "./chunk-RNZEQTWZ.js";
18
+ } from "./chunk-YV4WT7CJ.js";
19
19
 
20
20
  // src/utils/desktopApp.ts
21
21
  import { spawn, spawnSync } from "child_process";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  formatVariableValidationIssue,
21
21
  validateVariables
22
- } from "./chunk-RNZEQTWZ.js";
22
+ } from "./chunk-YV4WT7CJ.js";
23
23
  import {
24
24
  extractCompositionMetadata
25
25
  } from "./chunk-B2A56S5C.js";
@@ -29,6 +29,12 @@ function clampAudioGain(value) {
29
29
  return 1;
30
30
  return Math.max(0, Math.min(MAX_AUDIO_GAIN, value));
31
31
  }
32
+ function gainTimesLane(gain, lane) {
33
+ return clampAudioGain(gain * lane);
34
+ }
35
+ function clipGain(volume, tweened) {
36
+ return tweened ? 1 : clampAudioGain(volume);
37
+ }
32
38
  function formatAudioGain(gain) {
33
39
  return clampAudioGain(gain).toFixed(6).replace(/\.?0+$/, "");
34
40
  }
@@ -37,6 +43,8 @@ export {
37
43
  MAX_AUDIO_GAIN_DB,
38
44
  MAX_AUDIO_GAIN,
39
45
  clampAudioGain,
46
+ gainTimesLane,
47
+ clipGain,
40
48
  formatAudioGain,
41
49
  AUDIBLE_VIDEO_QUALIFIER,
42
50
  AUDIBLE_MEDIA_SELECTOR,
@@ -49,7 +49,11 @@ function parseReservedConcurrency(raw) {
49
49
  }
50
50
  function samDeploy(opts) {
51
51
  assertSamAvailable();
52
- const paramOverrides = [`ChromeSource=${opts.chromeSource ?? "sparticuz"}`];
52
+ const paramOverrides = [
53
+ `ChromeSource=${opts.chromeSource ?? "sparticuz"}`,
54
+ // Always sent: omitted, SAM's UsePreviousValue would keep a video function the user dropped.
55
+ `VideoImageUri=${opts.videoImageUri ?? '""'}`
56
+ ];
53
57
  if (opts.reservedConcurrency !== void 0) {
54
58
  paramOverrides.push(`ReservedConcurrency=${opts.reservedConcurrency}`);
55
59
  }
@@ -133,14 +137,34 @@ function fetchStackOutputs(opts) {
133
137
  // for cost math + CloudWatch lookups.
134
138
  functionName: functionName.split(":").pop() ?? functionName,
135
139
  stateMachineArn,
136
- reservedConcurrency: reserved > 0 ? reserved : void 0
140
+ reservedConcurrency: reserved > 0 ? reserved : void 0,
141
+ videoFunctionName: byKey.get("VideoFunctionArn")?.split(":").pop()
137
142
  };
138
143
  }
144
+ function deleteEcrRepository(opts) {
145
+ assertAwsCliAvailable();
146
+ const args = [
147
+ "ecr",
148
+ "delete-repository",
149
+ "--repository-name",
150
+ opts.repositoryName,
151
+ "--force",
152
+ "--region",
153
+ opts.region
154
+ ];
155
+ if (opts.awsProfile) args.push("--profile", opts.awsProfile);
156
+ const result = spawnSync("aws", args, { encoding: "utf-8" });
157
+ if (result.status === 0 || result.stderr?.includes("RepositoryNotFoundException")) return;
158
+ throw new Error(
159
+ `[lambda] aws ecr delete-repository ${opts.repositoryName} exited with code ${result.status ?? "unknown"}: ${result.stderr ?? ""}`
160
+ );
161
+ }
139
162
 
140
163
  export {
141
164
  locateSamTemplate,
142
165
  parseReservedConcurrency,
143
166
  samDeploy,
144
167
  samDelete,
145
- fetchStackOutputs
168
+ fetchStackOutputs,
169
+ deleteEcrRepository
146
170
  };
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  getMimeType,
9
9
  injectMediaCodecMapIntoHtml
10
- } from "./chunk-2PZZMAME.js";
10
+ } from "./chunk-6HZ7TSJJ.js";
11
11
  import {
12
12
  PROXY_VARIANT_CONFIG,
13
13
  ProxyCapacityError,
@@ -18,10 +18,10 @@ import {
18
18
  recordProxyRequest,
19
19
  resolveProxy,
20
20
  resolveProxyVariantRequest
21
- } from "./chunk-5ZMIVTHN.js";
21
+ } from "./chunk-LWYZN7HS.js";
22
22
  import {
23
23
  resolveAutoProxy
24
- } from "./chunk-RPUIMFHF.js";
24
+ } from "./chunk-DG4ME554.js";
25
25
  import {
26
26
  decodeWellFormedEscapes
27
27
  } from "./chunk-BSQ7XANM.js";