hyperframes 0.8.166 → 0.8.168

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 (166) hide show
  1. package/dist/{add-MCSKPN2J.js → add-VCX3UE2B.js} +13 -13
  2. package/dist/{animatedGifPrep-3HO4C3YA.js → animatedGifPrep-TWD5BNVK.js} +8 -8
  3. package/dist/api.js +14 -14
  4. package/dist/{asset-XVO3H37J.js → asset-BBJ3GAL7.js} +2 -2
  5. package/dist/{assetCataloger-RHSKUXJV.js → assetCataloger-S47GINRQ.js} +8 -8
  6. package/dist/{audio-G4CPBGIP.js → audio-MEDCANA3.js} +15 -15
  7. package/dist/{auth-GRFFMOB5.js → auth-LZYMCNTB.js} +1 -1
  8. package/dist/{autoUpdate-CHDEIEGO.js → autoUpdate-AXTW2NKX.js} +2 -2
  9. package/dist/{backgroundChecks-VAZLRTGT.js → backgroundChecks-3YDYYI3D.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-ILOPDVDM.js → batchRender-UDE7TOKY.js} +4 -4
  12. package/dist/{beats-B3BZKIWQ.js → beats-HHXMPMGT.js} +5 -5
  13. package/dist/{benchmark-OAPEWN3B.js → benchmark-2BY7PBAP.js} +9 -9
  14. package/dist/{browser-IG6NUNE2.js → browser-CXB4KTJP.js} +3 -3
  15. package/dist/{bundleWithLocalizedFonts-ZUM7SYTY.js → bundleWithLocalizedFonts-M7CRHOS7.js} +2 -2
  16. package/dist/{capture-4A3RN6PP.js → capture-PRTE4Z7E.js} +3 -3
  17. package/dist/{capture-XXKHHDGW.js → capture-WHG37ZLF.js} +19 -53
  18. package/dist/{captureTimeout-PA4FYWT5.js → captureTimeout-K2JNVVCI.js} +1 -1
  19. package/dist/{catalog-OT6XSKQS.js → catalog-WRM2373Z.js} +13 -13
  20. package/dist/{catch-up-JEU6V6DR.js → catch-up-WHLD6E5F.js} +4 -4
  21. package/dist/{check-6FSM25VP.js → check-R5E7WLKF.js} +112 -56
  22. package/dist/{checkBrowser-MECIATAM.js → checkBrowser-Y4CZVGIV.js} +42 -33
  23. package/dist/chunk-2F7S7OK2.js +20 -0
  24. package/dist/{chunk-APTXSODN.js → chunk-2GSGFDEP.js} +5 -5
  25. package/dist/{chunk-OBZWOV4Q.js → chunk-4CIMRQQY.js} +11 -5
  26. package/dist/{chunk-EUCDNWPK.js → chunk-4LXK7TOM.js} +7 -7
  27. package/dist/{chunk-FALELQTO.js → chunk-4PHDDZVL.js} +37 -15
  28. package/dist/{chunk-F67VJSSH.js → chunk-4WPRJ7ID.js} +1 -1
  29. package/dist/{chunk-CQFNLIGE.js → chunk-54MI3SGP.js} +3 -3
  30. package/dist/{chunk-WC6QG6WU.js → chunk-5VGEWXJL.js} +2 -2
  31. package/dist/{chunk-SZDHUSQ5.js → chunk-AQZZZTFL.js} +2 -2
  32. package/dist/{chunk-7PYUADWL.js → chunk-ATCB4PMO.js} +1 -1
  33. package/dist/{chunk-KX4VIWIV.js → chunk-ATOXD5VV.js} +1 -1
  34. package/dist/{chunk-HTDDV7CM.js → chunk-BC2XZL6O.js} +2 -2
  35. package/dist/{chunk-TPLNKI23.js → chunk-BOT7PGM5.js} +2 -2
  36. package/dist/{chunk-GDJGBAV6.js → chunk-BTCUP5ZY.js} +2 -2
  37. package/dist/{chunk-HLCB2VAN.js → chunk-BV2NH7ZA.js} +1 -1
  38. package/dist/{chunk-BTXLF6DV.js → chunk-BWFUUGIZ.js} +1 -1
  39. package/dist/{chunk-ZUQ2K4YF.js → chunk-C3WPYYGK.js} +1 -1
  40. package/dist/{chunk-BSXI5VWK.js → chunk-CAHSX6IW.js} +26 -21
  41. package/dist/{chunk-UKTXHF3Q.js → chunk-CDDIEZ4D.js} +13 -11
  42. package/dist/{chunk-AL7XYJTK.js → chunk-DO3UPPO4.js} +2 -2
  43. package/dist/{chunk-6U47Q57N.js → chunk-E7CIMKJS.js} +1 -1
  44. package/dist/{chunk-CBNI34SD.js → chunk-EEP5Y5IE.js} +1 -1
  45. package/dist/{chunk-CABYCNUK.js → chunk-EKEK3GOB.js} +3 -3
  46. package/dist/{chunk-L7PJO2A4.js → chunk-EW2QBTYO.js} +23 -17
  47. package/dist/{chunk-WP4QEC2Q.js → chunk-EXMTTXKQ.js} +2 -2
  48. package/dist/{chunk-DOONKIF5.js → chunk-FA3TWKZO.js} +2 -2
  49. package/dist/{chunk-I3B4A3LF.js → chunk-HL6GWREP.js} +1 -1
  50. package/dist/{chunk-BTTGDEGI.js → chunk-ID7B7NGN.js} +1 -1
  51. package/dist/{chunk-KPPC3C4I.js → chunk-KDC5D5VM.js} +25 -21
  52. package/dist/{chunk-ATF6UESJ.js → chunk-LGCHE2F4.js} +1 -1
  53. package/dist/{chunk-DDEFEMA3.js → chunk-LUSWL6OJ.js} +2 -2
  54. package/dist/{chunk-PORNXOQP.js → chunk-LZGRJDNJ.js} +1 -1
  55. package/dist/{chunk-3QATT3QF.js → chunk-M4N6IHCQ.js} +4 -4
  56. package/dist/{chunk-ULJB5UY4.js → chunk-MD4S2RXW.js} +13 -17
  57. package/dist/{chunk-2WYDNKVV.js → chunk-MOJKJ4K4.js} +4 -4
  58. package/dist/{chunk-4UNBVCLJ.js → chunk-N7QCMEQG.js} +2844 -2674
  59. package/dist/{chunk-BIOWX4AM.js → chunk-NT3WPYAU.js} +3 -3
  60. package/dist/{chunk-QNZQTITL.js → chunk-NYIKKCMC.js} +1 -1
  61. package/dist/{chunk-ZIL7S3L6.js → chunk-O7BABHM4.js} +1 -1
  62. package/dist/{chunk-THA3FI4Z.js → chunk-OQGORCT3.js} +2 -2
  63. package/dist/{chunk-3VGU2SH7.js → chunk-OYLO6TYK.js} +8 -1
  64. package/dist/{chunk-2742O5DO.js → chunk-PLWORQFC.js} +38 -34
  65. package/dist/{chunk-ZH3TWH4D.js → chunk-PYSGYMM4.js} +3 -3
  66. package/dist/chunk-QE7XLLGT.js +3803 -0
  67. package/dist/{chunk-AKBFKGJM.js → chunk-QKJ4KGNR.js} +1 -1
  68. package/dist/{chunk-W3SLIE72.js → chunk-RG66EU4L.js} +10 -10
  69. package/dist/{chunk-AWNBM3MZ.js → chunk-RGHQID2E.js} +3 -3
  70. package/dist/{chunk-MMSCLNCJ.js → chunk-SYKPCN32.js} +8 -2
  71. package/dist/{chunk-TIZRYBKL.js → chunk-TW7H5CJO.js} +2 -2
  72. package/dist/{chunk-FLTPIUGU.js → chunk-UWQL2MP4.js} +100 -2
  73. package/dist/{chunk-TAANFVLO.js → chunk-VTBME36F.js} +1 -1
  74. package/dist/{chunk-25CSBTM2.js → chunk-XOODFU75.js} +1 -1
  75. package/dist/{chunk-WPNE5NEP.js → chunk-XR3XDG7V.js} +19 -5
  76. package/dist/{chunk-ALLKNYC3.js → chunk-YMS5FOMC.js} +31 -18
  77. package/dist/{chunk-V652CBKA.js → chunk-YTZA25TZ.js} +1 -1
  78. package/dist/{chunk-B4VG7PGX.js → chunk-YULVV525.js} +1 -1
  79. package/dist/{clean-QWXJ5QJQ.js → clean-UPXYD6VX.js} +15 -15
  80. package/dist/cli.js +53 -53
  81. package/dist/{cloud-UCQ33ODM.js → cloud-74GU7KDD.js} +4 -4
  82. package/dist/{cloudrun-2NQXQI4T.js → cloudrun-KHMVQL7C.js} +16 -11
  83. package/dist/commands/layout-audit.browser.js +16 -1
  84. package/dist/{compare-ZGW25GT6.js → compare-BG77ZXYF.js} +29 -27
  85. package/dist/{compiler-VQ7QYOSB.js → compiler-OSQ4L7FP.js} +5 -5
  86. package/dist/{component-W2QGYUEG.js → component-34PVECJG.js} +3 -3
  87. package/dist/{compositions-DOIAPDMU.js → compositions-KCVIKKSR.js} +12 -12
  88. package/dist/{delete-PCSBLAVX.js → delete-NU2ENZYQ.js} +2 -2
  89. package/dist/{deploy-5G4Z6LPA.js → deploy-4MK3Y67M.js} +1 -0
  90. package/dist/{deterministicFonts-LNNVHVS2.js → deterministicFonts-KXVO7QEL.js} +3 -3
  91. package/dist/{dist-6TKXILZL.js → dist-3VKMLNXT.js} +7 -3
  92. package/dist/{dist-ROVMAL74.js → dist-OTCFZEKF.js} +2 -2
  93. package/dist/{doctor-2FMEUV4B.js → doctor-GVELHIHI.js} +10 -10
  94. package/dist/{events-V2KF4OKH.js → events-E6CVR42M.js} +2 -2
  95. package/dist/{events-QPODC7BK.js → events-UP3IQXPM.js} +3 -3
  96. package/dist/{feedback-NC2YHCYF.js → feedback-IRYQ4YKX.js} +7 -7
  97. package/dist/{figma-RP23MXHX.js → figma-BLQBHAPG.js} +3 -3
  98. package/dist/fontLocalizeCli.js +14 -14
  99. package/dist/{get-FIWRIPCT.js → get-HESG62RX.js} +2 -2
  100. package/dist/{gpuPolicy-4YD2BS3P.js → gpuPolicy-CHXUX2ZT.js} +8 -8
  101. package/dist/{grade-compare-HVLIDLEO.js → grade-compare-ZDJMJUYY.js} +29 -27
  102. package/dist/{help-EDA6FXKG.js → help-2BQBFF4Z.js} +1 -1
  103. package/dist/{history-7Z763GGS.js → history-4IZQ6NRV.js} +9 -9
  104. package/dist/hyperframe-runtime.js +72 -70
  105. package/dist/hyperframe.manifest.json +1 -1
  106. package/dist/hyperframe.runtime.iife.js +72 -70
  107. package/dist/hyperframes-player.global.js +3 -3
  108. package/dist/{info-OHDJXJKQ.js → info-JNGAI3JU.js} +8 -8
  109. package/dist/{init-BKYY2CXY.js → init-ZQO6G5C7.js} +23 -23
  110. package/dist/{inspect-CX3AFG2K.js → inspect-DWMKJEVE.js} +30 -28
  111. package/dist/{installer-5YWMYX5C.js → installer-UKZT4SKK.js} +6 -6
  112. package/dist/{keyframes-LBK4Y2T2.js → keyframes-FC273E5N.js} +6 -6
  113. package/dist/{lambda-HIC2Z3GQ.js → lambda-GSZCV77P.js} +31 -18
  114. package/dist/{layout-NSIMPYKJ.js → layout-ASSCBJCO.js} +30 -28
  115. package/dist/{lint-YH6HNXVM.js → lint-PSCEVVNL.js} +8 -8
  116. package/dist/{lintProject-BGDYHF3F.js → lintProject-PXB5Y6TX.js} +2 -2
  117. package/dist/{list-KZXJYWKZ.js → list-KO4N2VJL.js} +2 -2
  118. package/dist/{login-CBNG6TFS.js → login-ZJEBRFV5.js} +4 -4
  119. package/dist/{media-treatment-TZTGSXQW.js → media-treatment-HGHLLZR3.js} +11 -11
  120. package/dist/{models-6PJD6KNN.js → models-NTAVDCAV.js} +11 -11
  121. package/dist/{motionShot-ATCNOMLE.js → motionShot-SJENYTRO.js} +19 -17
  122. package/dist/{normalize-audio-JYRAP3I5.js → normalize-audio-PQIC7IPK.js} +4 -4
  123. package/dist/{open-2IWIMS7X.js → open-EI7UEAZZ.js} +4 -4
  124. package/dist/{parakeetRunner-4RECECZC.js → parakeetRunner-7SDEI3IZ.js} +11 -11
  125. package/dist/{pipeline-W5ON6TOA.js → pipeline-EXHHCUE7.js} +8 -8
  126. package/dist/{play-UWEP74BP.js → play-Y4EMM2OJ.js} +19 -19
  127. package/dist/{present-LBW3UKGD.js → present-LFMGQGX6.js} +15 -15
  128. package/dist/{preview-ZJVWEZDQ.js → preview-EYQG7L6X.js} +18 -18
  129. package/dist/{producer-STNCPEUU.js → producer-FKOEAHJW.js} +1 -1
  130. package/dist/{projectConfig-QIZWOCOO.js → projectConfig-SXW3QMZE.js} +8 -8
  131. package/dist/{publication-YNDABZNC.js → publication-ZC4LDEXQ.js} +3 -3
  132. package/dist/{publish-4UNNKLPE.js → publish-4ZCLHA5W.js} +10 -10
  133. package/dist/{remove-background-77IFDTYA.js → remove-background-IGDRS2QV.js} +9 -9
  134. package/dist/{render-5LL5JCRH.js → render-QJCBJQOM.js} +38 -30
  135. package/dist/{render-VFPSVKGX.js → render-TA3DG3LZ.js} +9 -9
  136. package/dist/{render-NUZPUBQO.js → render-ZN777RDD.js} +11 -6
  137. package/dist/{render-batch-QU7ZWEJZ.js → render-batch-2JQNFAL4.js} +10 -6
  138. package/dist/renderSetupWorker.js +2 -2
  139. package/dist/{resolver-SPF7J6MA.js → resolver-JZF5G6YC.js} +5 -5
  140. package/dist/{screenshotCapture-3JXXUZND.js → screenshotCapture-XAYELJK7.js} +1 -1
  141. package/dist/{sherpa-XPHQUCHY.js → sherpa-MDVSUF6Y.js} +10 -10
  142. package/dist/skills/hyperframes/references/skill-lifecycle.md +2 -0
  143. package/dist/{skills-FVEEVJS7.js → skills-JVNMX37H.js} +30 -5
  144. package/dist/{skillsUpdateCheck-C64VYL4I.js → skillsUpdateCheck-KNTQFGOI.js} +3 -3
  145. package/dist/{snapshot-IMGLO7XP.js → snapshot-RDQTFIPX.js} +35 -33
  146. package/dist/{src-DG7XW5WW.js → src-5XO7KBBL.js} +7 -7
  147. package/dist/{src-ZUYRJWHE.js → src-ZPEZRIUC.js} +13 -13
  148. package/dist/{staticProjectServer-H6GKJPVR.js → staticProjectServer-RLERPIY6.js} +15 -15
  149. package/dist/studio/assets/{hyperframes-player-BhRLDR30.js → hyperframes-player-mYPt9XVX.js} +1 -1
  150. package/dist/studio/assets/{index-DQ_I6X0d.js → index-B-v5xQjD.js} +97 -97
  151. package/dist/studio/assets/{index-CCRXiiFo.js → index-DtHmIKM0.js} +1 -1
  152. package/dist/studio/index.html +1 -1
  153. package/dist/{studio-api-72FF3CQG.js → studio-api-4INCUOCU.js} +9 -9
  154. package/dist/{studioServer-2YBG4HV2.js → studioServer-DMDE7IZU.js} +54 -52
  155. package/dist/{telemetry-DCFWJC6H.js → telemetry-4Y5DYI6H.js} +3 -3
  156. package/dist/{timeline-IN6TQ6AQ.js → timeline-XJRKELVE.js} +37 -24
  157. package/dist/{tokens-2ELEYMMJ.js → tokens-G4VKTABI.js} +2 -2
  158. package/dist/{transcribe-GGNTXYJS.js → transcribe-JRSQRPVH.js} +9 -9
  159. package/dist/{transcribe-KELKHOAQ.js → transcribe-Y46B2ZVD.js} +15 -15
  160. package/dist/{updateCheck-IK3VKZ2E.js → updateCheck-NGYDWGQL.js} +2 -2
  161. package/dist/{upgrade-JND5YLA5.js → upgrade-M2LQP5S7.js} +2 -2
  162. package/dist/{urlDownloader-XCHPVCAE.js → urlDownloader-UFDUP3VF.js} +7 -7
  163. package/dist/{validate-4PJYWIXX.js → validate-B3AUFCC5.js} +24 -22
  164. package/dist/{video-53CDAVK2.js → video-WLCNVSVU.js} +8 -8
  165. package/package.json +1 -1
  166. package/dist/chunk-LGAKMIEX.js +0 -3795
@@ -32,21 +32,21 @@ import {
32
32
  import {
33
33
  getUpdateMeta,
34
34
  withMeta
35
- } from "./chunk-ZIL7S3L6.js";
35
+ } from "./chunk-O7BABHM4.js";
36
36
  import {
37
37
  CONFIG_PATH,
38
38
  withFileLock
39
39
  } from "./chunk-XUXGIA7H.js";
40
40
  import {
41
41
  VERSION
42
- } from "./chunk-HTDDV7CM.js";
42
+ } from "./chunk-BC2XZL6O.js";
43
43
  import {
44
44
  OPTIONAL_PACKAGES,
45
45
  installedOptionalPackageVersion
46
46
  } from "./chunk-3DKN5WKL.js";
47
47
  import {
48
48
  resolveExtractCacheDir
49
- } from "./chunk-BSXI5VWK.js";
49
+ } from "./chunk-CAHSX6IW.js";
50
50
  import {
51
51
  normalizeErrorMessage
52
52
  } from "./chunk-KNU5COPB.js";
@@ -10,7 +10,7 @@ import {
10
10
  isDevice,
11
11
  isQuality,
12
12
  render
13
- } from "./chunk-DDEFEMA3.js";
13
+ } from "./chunk-LUSWL6OJ.js";
14
14
 
15
15
  // src/api/removeBackground.ts
16
16
  import { resolve } from "path";
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-ISN5GRYI.js";
18
18
  import {
19
19
  VERSION
20
- } from "./chunk-HTDDV7CM.js";
20
+ } from "./chunk-BC2XZL6O.js";
21
21
 
22
22
  // src/utils/updateCheck.ts
23
23
  import { existsSync, readFileSync } from "fs";
@@ -20,7 +20,7 @@ import {
20
20
  typeDirPath,
21
21
  updateRecord,
22
22
  withFigmaErrors
23
- } from "./chunk-I3B4A3LF.js";
23
+ } from "./chunk-HL6GWREP.js";
24
24
  import {
25
25
  defineCommand
26
26
  } from "./chunk-S3S4TGEH.js";
@@ -229,7 +229,7 @@ var asset_default = defineCommand({
229
229
  rendered > 0 ? `(${results.length} nodes, ${rendered} rendered in 1 figma request)` : `(${results.length} nodes, all reused from cache \u2014 no figma request)`
230
230
  );
231
231
  }
232
- const { trackFigmaImport } = await import("./telemetry-DCFWJC6H.js");
232
+ const { trackFigmaImport } = await import("./telemetry-4Y5DYI6H.js");
233
233
  trackFigmaImport({
234
234
  phase: "asset",
235
235
  reused: results.every((r) => r.reused),
@@ -16,7 +16,14 @@ var CANVAS_DIMENSIONS = {
16
16
  "landscape-4k": { width: 3840, height: 2160 },
17
17
  "portrait-4k": { width: 2160, height: 3840 },
18
18
  square: { width: 1080, height: 1080 },
19
- "square-4k": { width: 2160, height: 2160 }
19
+ "square-4k": { width: 2160, height: 2160 },
20
+ "landscape-720p": { width: 1280, height: 720 },
21
+ "portrait-720p": { width: 720, height: 1280 },
22
+ "square-720p": { width: 720, height: 720 },
23
+ // 480 tall at 16:9 is 853.33 wide: 854 keeps both sides even for 4:2:0 encoders.
24
+ "landscape-480p": { width: 854, height: 480 },
25
+ "portrait-480p": { width: 480, height: 854 },
26
+ "square-480p": { width: 480, height: 480 }
20
27
  };
21
28
  var VALID_CANVAS_RESOLUTIONS = Object.keys(
22
29
  CANVAS_DIMENSIONS
@@ -25,7 +25,7 @@ import {
25
25
  extractMediaSrcMutations,
26
26
  isSafeMediaUrl,
27
27
  resolveAliasDisplayName
28
- } from "./chunk-3VGU2SH7.js";
28
+ } from "./chunk-OYLO6TYK.js";
29
29
  import {
30
30
  findFfBinary
31
31
  } from "./chunk-VAS6HQX3.js";
@@ -6475,8 +6475,9 @@ function stylesheetCanvasZoomHits(styles, rootId, rootClasses) {
6475
6475
  const hits = [];
6476
6476
  for (const style of styles) {
6477
6477
  const ruleWithBody = /([^{}]+)\{([^{}]*)\}/g;
6478
+ const content = stripCssComments(style.content);
6478
6479
  let match;
6479
- while ((match = ruleWithBody.exec(stripCssComments(style.content))) !== null) {
6480
+ while ((match = ruleWithBody.exec(content)) !== null) {
6480
6481
  const hit = canvasZoomInRule(match[1] ?? "", match[2] ?? "", rootId, rootClasses);
6481
6482
  if (hit) hits.push(hit);
6482
6483
  }
@@ -7122,37 +7123,6 @@ var compositionRules = [
7122
7123
  // defaults aren't applied.
7123
7124
  // Checked on every element that declares: <html>, or the composition root.
7124
7125
  ({ tags }) => tags.filter((tag) => readJsonAttr(tag.raw, "data-composition-variables")).flatMap((tag) => variablesDeclarationFindings(tag, tags)),
7125
- // html_dir_attribute_breaks_render — valid non-LTR dir values on
7126
- // <html> renders correctly in preview/snapshot but produces a fully
7127
- // blank/black video from render, with no other lint/validate/inspect
7128
- // check catching it (output file size, far smaller than expected, is the
7129
- // only tell). Confirmed independently by two separate reports, both
7130
- // diagnosing the same exact trigger and the same fix: drop dir from
7131
- // <html>, keep lang, and scope `direction: rtl` to individual
7132
- // text-containing elements via CSS instead (text still bidi-shapes
7133
- // correctly). Advisory-only — this does not attempt to fix the render
7134
- // pipeline's own root cause (suspected to be a capture step that clips a
7135
- // fixed top-left-origin screenshot region, which RTL layout can shift the
7136
- // actual content away from), only surfaces the already-confirmed footgun
7137
- // before someone hits it blind.
7138
- ({ tags }) => {
7139
- const htmlTag = findHtmlTag(tags);
7140
- if (!htmlTag) return [];
7141
- const dir = readAttr(htmlTag.raw, "dir");
7142
- if (!dir) return [];
7143
- const normalizedDir = dir.toLowerCase();
7144
- if (normalizedDir !== "rtl" && normalizedDir !== "auto") return [];
7145
- const scopedDirection = normalizedDir === "auto" ? 'dir="auto"' : `direction: ${normalizedDir}`;
7146
- return [
7147
- {
7148
- code: "html_dir_attribute_breaks_render",
7149
- severity: "error",
7150
- message: `<html dir="${dir}"> renders correctly in preview/snapshot but produces a fully blank/black video from render. This is a confirmed, silent failure.`,
7151
- fixHint: `Remove dir="${dir}" from <html>. Keep lang, and scope ${scopedDirection} to individual text-containing elements instead. Text still shapes correctly via the browser's own bidi algorithm.`,
7152
- snippet: truncateSnippet(htmlTag.raw)
7153
- }
7154
- ];
7155
- },
7156
7126
  // subcomposition_blanks_before_host
7157
7127
  // Warns when a full-bleed sub-composition slot ends before the host composition
7158
7128
  // does, leaving the slot blank for the remainder (issue #1540). Scoped narrowly to
@@ -9948,7 +9918,8 @@ var NODE_ATTRS = [
9948
9918
  "data-track-index",
9949
9919
  "data-track-kind",
9950
9920
  "data-composition-id",
9951
- "data-composition-src"
9921
+ "data-composition-src",
9922
+ "data-hf-media-start-basis"
9952
9923
  ];
9953
9924
  function toNode(open) {
9954
9925
  const attrs = {};
@@ -10056,6 +10027,33 @@ function clipsPastRootFindings(root, rows) {
10056
10027
  ];
10057
10028
  });
10058
10029
  }
10030
+ function followsParentVisibility(clip) {
10031
+ return clip.tag !== "audio" && clip.attrs["data-hf-media-start-basis"] !== "global";
10032
+ }
10033
+ function isTimed(timing) {
10034
+ return timing.start !== null && timing.end !== null;
10035
+ }
10036
+ function neverVisibleNestedFindings(parent, severity) {
10037
+ const window = readClipTiming({ getAttribute: (name) => parent.attrs[name] ?? null });
10038
+ return topLevelElements(parent).flatMap((clip) => {
10039
+ const inner = isSubCompositionHost(clip) ? [] : neverVisibleNestedFindings(clip, severity);
10040
+ const own = readClipTiming({ getAttribute: (name) => clip.attrs[name] ?? null });
10041
+ if (!followsParentVisibility(clip) || !isTimed(window) || !isTimed(own)) return inner;
10042
+ if (own.end > window.start && own.start < window.end) return inner;
10043
+ const shows = `${hundredths(window.start)}s to ${hundredths(window.end)}s`;
10044
+ return [
10045
+ {
10046
+ code: "nested_clip_never_visible",
10047
+ severity,
10048
+ message: `${describe(clip)} plays from ${hundredths(own.start)}s to ${hundredths(own.end)}s, but it sits inside ${describe(parent)}, which only shows from ${shows}, so it never appears. A nested data-start counts from the composition's start, not from ${describe(parent)}.`,
10049
+ elementId: clip.attrs.id,
10050
+ fixHint: `Give ${describe(clip)} a data-start between ${shows} in composition time, or move it out of ${describe(parent)}.`,
10051
+ snippet: truncateSnippet(clip.open.raw)
10052
+ },
10053
+ ...inner
10054
+ ];
10055
+ });
10056
+ }
10059
10057
  var structureRules = [
10060
10058
  (ctx) => {
10061
10059
  if (ctx.options.isSubComposition) return [];
@@ -10069,6 +10067,12 @@ var structureRules = [
10069
10067
  ...captionFindings(rows, severity),
10070
10068
  ...clipsPastRootFindings(root, rows)
10071
10069
  ];
10070
+ },
10071
+ (ctx) => {
10072
+ const root = buildTree(ctx);
10073
+ if (!root) return [];
10074
+ const severity = ctx.options.host === "studio" ? "error" : "warning";
10075
+ return topLevelElements(root).filter((row) => !isSubCompositionHost(row)).flatMap((row) => neverVisibleNestedFindings(row, severity));
10072
10076
  }
10073
10077
  ];
10074
10078
  function withoutComments(source) {
@@ -7,14 +7,14 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  trackLintReport,
9
9
  trackLintRuleStreak
10
- } from "./chunk-V652CBKA.js";
10
+ } from "./chunk-YTZA25TZ.js";
11
11
  import {
12
12
  shouldTrack
13
- } from "./chunk-B4VG7PGX.js";
13
+ } from "./chunk-YULVV525.js";
14
14
  import {
15
15
  LINT_RULE_COUNT,
16
16
  LINT_RULE_GROUP_COUNTS
17
- } from "./chunk-2742O5DO.js";
17
+ } from "./chunk-PLWORQFC.js";
18
18
 
19
19
  // src/telemetry/lintStreaks.ts
20
20
  import { createHash } from "crypto";