hyperframes 0.8.156 → 0.8.158

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 (177) hide show
  1. package/dist/{add-U35DO2JR.js → add-VBBOJ3RB.js} +14 -14
  2. package/dist/{animatedGifPrep-MRGFHBVF.js → animatedGifPrep-MTJRHJ5G.js} +9 -9
  3. package/dist/api.js +17 -17
  4. package/dist/{asset-HS4Q6LS2.js → asset-3MLXYJCT.js} +2 -2
  5. package/dist/{assetCataloger-SRTQYA6J.js → assetCataloger-DI7FC5KZ.js} +3 -3
  6. package/dist/{auth-HS6GAILF.js → auth-RJCTHSMH.js} +2 -2
  7. package/dist/{autoUpdate-MRQ4ULBI.js → autoUpdate-VD6R34HF.js} +2 -2
  8. package/dist/{backgroundChecks-K2ZMA43S.js → backgroundChecks-CWWIZDTW.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-CMVCRSWP.js → batchRender-FTZ67377.js} +4 -4
  11. package/dist/{beats-JYECNCTZ.js → beats-6CN4BEXJ.js} +16 -15
  12. package/dist/{benchmark-JGMKJSPN.js → benchmark-4QSNJZXI.js} +11 -11
  13. package/dist/{browser-63WITJVS.js → browser-H7PRFBJV.js} +5 -5
  14. package/dist/{bundleWithLocalizedFonts-5SLYBFXL.js → bundleWithLocalizedFonts-IVO43QBQ.js} +2 -2
  15. package/dist/{capture-T6QSEGKM.js → capture-GZSY7LZJ.js} +2 -2
  16. package/dist/{capture-7MFOIE4K.js → capture-IEEQTPAS.js} +22 -12
  17. package/dist/{catalog-KVE5KJJT.js → catalog-PD25CVG3.js} +14 -14
  18. package/dist/{catch-up-E3WYWSDY.js → catch-up-2TGBK342.js} +6 -6
  19. package/dist/{check-QRP5WCP2.js → check-HFNJEV3O.js} +36 -35
  20. package/dist/{checkBrowser-5XFA6PXF.js → checkBrowser-767LAZKF.js} +34 -32
  21. package/dist/{chunk-KMSS5TOQ.js → chunk-23VDPRQ3.js} +1 -1
  22. package/dist/{chunk-RXTEP3NB.js → chunk-2XUQPJ3W.js} +2 -2
  23. package/dist/{chunk-JKCKXGIC.js → chunk-3FRK53UC.js} +1 -1
  24. package/dist/{chunk-YNFJWJHW.js → chunk-3MQBIZHG.js} +7 -7
  25. package/dist/{chunk-U3BCDVZO.js → chunk-3QATT3QF.js} +1 -1
  26. package/dist/{chunk-VCCOO2TO.js → chunk-3UMNI4XZ.js} +5 -5
  27. package/dist/{chunk-DRNTIYT3.js → chunk-4R6OZQGX.js} +3 -3
  28. package/dist/{chunk-DDSQBREC.js → chunk-4YDQQQY6.js} +2 -2
  29. package/dist/{chunk-DSX7R5M7.js → chunk-56QTFOWH.js} +4 -4
  30. package/dist/{chunk-YOEGUBBY.js → chunk-7F3B5YYT.js} +82 -14
  31. package/dist/{chunk-MBE4SEL7.js → chunk-7FGHFHWD.js} +5 -5
  32. package/dist/{chunk-OBXWIVYN.js → chunk-7KDQAD2W.js} +5 -11
  33. package/dist/{chunk-YZEHYWOH.js → chunk-7ZWOLEGS.js} +1 -1
  34. package/dist/{chunk-VY23BB2D.js → chunk-BB2SFTMY.js} +4 -4
  35. package/dist/{chunk-FSZAFCU7.js → chunk-CBNI34SD.js} +1 -1
  36. package/dist/{chunk-VK5JRYJL.js → chunk-DCQCGE2W.js} +13 -12
  37. package/dist/{chunk-7U27WUMQ.js → chunk-DISITOR6.js} +5 -4
  38. package/dist/{chunk-SCMNFRL5.js → chunk-EDEFAJI5.js} +10 -9
  39. package/dist/{chunk-56AEM2EL.js → chunk-EEEUI3ON.js} +11 -11
  40. package/dist/{chunk-444O62RL.js → chunk-EGKIQS5J.js} +1 -1
  41. package/dist/{chunk-YGLM2DHX.js → chunk-EY6ISRP3.js} +1 -1
  42. package/dist/{chunk-2K5YII2L.js → chunk-FJT35XBA.js} +3 -3
  43. package/dist/{chunk-Q7FDYQR4.js → chunk-GPUVPZRK.js} +1 -1
  44. package/dist/{chunk-WLYSVHZE.js → chunk-H6BWNY56.js} +2 -2
  45. package/dist/{chunk-YUTUYCGK.js → chunk-IRRRH66M.js} +39 -31
  46. package/dist/{chunk-XXTOOXZ7.js → chunk-J4SSEVRU.js} +2 -2
  47. package/dist/{chunk-TLUGPEW4.js → chunk-J6SJCYAQ.js} +5 -5
  48. package/dist/{chunk-SNMMFFKZ.js → chunk-J7WFHOCW.js} +1 -1
  49. package/dist/chunk-KCF6GHJP.js +250 -0
  50. package/dist/{chunk-SCOXM5LP.js → chunk-KEGTYA7V.js} +1 -1
  51. package/dist/{chunk-DDK6E66K.js → chunk-L6AJC7UQ.js} +1 -1
  52. package/dist/{chunk-VPOEKLZL.js → chunk-LAAGHMRC.js} +13 -2
  53. package/dist/{chunk-HBKKW3NL.js → chunk-LAPUMJOC.js} +6 -6
  54. package/dist/chunk-LPOTN5GW.js +3795 -0
  55. package/dist/{chunk-FIL6QPZT.js → chunk-LQXHRO6F.js} +2 -2
  56. package/dist/{chunk-IOBKVP27.js → chunk-NFX4K6OW.js} +1 -1
  57. package/dist/{chunk-HG6H2ICP.js → chunk-NNQP5TNO.js} +3 -3
  58. package/dist/{chunk-OOCONATR.js → chunk-OTG5H2VM.js} +3 -3
  59. package/dist/{chunk-7K3CHJS3.js → chunk-PKHDQELW.js} +10 -10
  60. package/dist/{chunk-COBIO7VC.js → chunk-QH2PL6J4.js} +1 -1
  61. package/dist/{chunk-YLSSI4XB.js → chunk-QRPYTJBW.js} +1 -1
  62. package/dist/{chunk-7FFGZC2X.js → chunk-QWQ6GQTI.js} +1 -1
  63. package/dist/{chunk-SO44ETGW.js → chunk-RU6AIVON.js} +2 -2
  64. package/dist/{chunk-3THJEW7G.js → chunk-SGIZMTWO.js} +2 -2
  65. package/dist/{chunk-JJERZGVE.js → chunk-SHEVPNUR.js} +1 -1
  66. package/dist/{chunk-LZ2PZIVS.js → chunk-SLUFA6UM.js} +2 -2
  67. package/dist/{chunk-QJEHLWM4.js → chunk-SQHWDFTV.js} +1 -1
  68. package/dist/{chunk-M4CRDGC4.js → chunk-T243WV6D.js} +1 -1
  69. package/dist/{chunk-LJHF4SKT.js → chunk-T76NSAXO.js} +2 -2
  70. package/dist/{chunk-HVQQN4NG.js → chunk-W2SNLHKF.js} +1 -1
  71. package/dist/{chunk-C7WALYAY.js → chunk-Y6E2PW7Z.js} +1 -1
  72. package/dist/{chunk-QOP5D3UM.js → chunk-YB26LWR2.js} +2 -2
  73. package/dist/{chunk-GVJ4LG62.js → chunk-YVD5M26L.js} +2 -2
  74. package/dist/{chunk-NV2JPSI4.js → chunk-Z347DFOL.js} +1 -1
  75. package/dist/{chunk-SCXATNSP.js → chunk-ZZ3ZWTOI.js} +3 -3
  76. package/dist/{clean-4HTCYML6.js → clean-FQUVFH6H.js} +18 -18
  77. package/dist/cli.js +52 -52
  78. package/dist/{cloud-HFBG33UU.js → cloud-BHAYVT6F.js} +4 -4
  79. package/dist/{cloudrun-QK56WQY3.js → cloudrun-STLNWUBW.js} +5 -5
  80. package/dist/commands/contrast-audit.browser.js +25 -8
  81. package/dist/commands/layout-audit.browser.js +117 -12
  82. package/dist/{compare-4RYN3LLC.js → compare-2FRBIK5Z.js} +28 -27
  83. package/dist/{compiler-JPA25IUF.js → compiler-VFJVUZWR.js} +5 -5
  84. package/dist/{component-7ARXR4KZ.js → component-DRKXJVXB.js} +3 -3
  85. package/dist/{compositions-DNBHEIGP.js → compositions-D3SN64J3.js} +14 -14
  86. package/dist/{delete-4XYV72EU.js → delete-NA5WC2IR.js} +2 -2
  87. package/dist/{deterministicFonts-EOMDR6ZF.js → deterministicFonts-LNNVHVS2.js} +2 -2
  88. package/dist/{dist-2YYJYYPY.js → dist-2VXSQLXO.js} +1 -1
  89. package/dist/{dist-SKUIM4QJ.js → dist-SVTSOG4Q.js} +3 -3
  90. package/dist/docker/Dockerfile.render +21 -1
  91. package/dist/{doctor-5PHSH7IK.js → doctor-VXCMPOY3.js} +14 -14
  92. package/dist/{events-FOGRN2KV.js → events-QAHWXFFG.js} +4 -4
  93. package/dist/{events-GQCOQY5E.js → events-ZJEPMUWT.js} +5 -5
  94. package/dist/{feedback-6T6ZJOTM.js → feedback-UGOQ57TU.js} +9 -9
  95. package/dist/{ffmpeg-VJXXLKI6.js → ffmpeg-2ROTISBL.js} +2 -2
  96. package/dist/{figma-PZLGUS6C.js → figma-YO2MJZDP.js} +3 -3
  97. package/dist/fontLocalizeCli.js +12 -12
  98. package/dist/{get-XUNYSY2Z.js → get-WMJAYRNF.js} +2 -2
  99. package/dist/{gpuPolicy-SWCZJRZR.js → gpuPolicy-VXNJ4UBN.js} +9 -9
  100. package/dist/{grade-compare-S27N2NRU.js → grade-compare-QZ7BG2AP.js} +28 -28
  101. package/dist/{help-4HZ75YVH.js → help-AR4MX2AH.js} +1 -1
  102. package/dist/{history-NENOG3BT.js → history-NF764OFQ.js} +8 -8
  103. package/dist/hyperframe-runtime.js +15 -15
  104. package/dist/hyperframe.manifest.json +1 -1
  105. package/dist/hyperframe.runtime.iife.js +15 -15
  106. package/dist/hyperframes-player.global.js +1 -1
  107. package/dist/{info-IDEUAYJZ.js → info-476ERK4G.js} +10 -10
  108. package/dist/{init-KWGZEC7F.js → init-M6YUOBBZ.js} +40 -35
  109. package/dist/{inspect-3WLT3EHZ.js → inspect-QYPUG3UZ.js} +29 -28
  110. package/dist/{installer-I3SLBB7G.js → installer-HF5BXXXM.js} +5 -5
  111. package/dist/{keyframes-7HPN5DKO.js → keyframes-MTZRE34W.js} +8 -8
  112. package/dist/{lambda-MJH6U52V.js → lambda-ZCX7KGTY.js} +6 -6
  113. package/dist/{layout-ZEW4RZRP.js → layout-DLX4HQFL.js} +29 -28
  114. package/dist/{lint-3TNKI4PK.js → lint-OQ5QWCHZ.js} +9 -9
  115. package/dist/{lintProject-XQWXJYSC.js → lintProject-JGHKRO5L.js} +1 -1
  116. package/dist/{list-BJR2IXU4.js → list-AZ6OIOIK.js} +2 -2
  117. package/dist/{login-EA27W5T2.js → login-DJPYT4YZ.js} +4 -4
  118. package/dist/{manager-3EUU5UX6.js → manager-JNJE54OQ.js} +3 -3
  119. package/dist/{media-treatment-3JZFCG6I.js → media-treatment-4YKC4LGB.js} +14 -14
  120. package/dist/{models-IRFIJOIW.js → models-WHDUQZQZ.js} +13 -13
  121. package/dist/{motionShot-S4M7QSW3.js → motionShot-KEHC5AMK.js} +16 -15
  122. package/dist/{normalize-audio-IOY3NRHJ.js → normalize-audio-ATAQGUPX.js} +6 -6
  123. package/dist/{open-SCBC3NF5.js → open-4DXBEX2U.js} +6 -6
  124. package/dist/{parakeetRunner-FGTIYDG7.js → parakeetRunner-5PNBGCGH.js} +14 -14
  125. package/dist/{pipeline-JEFEWIZ3.js → pipeline-QA2422UI.js} +10 -10
  126. package/dist/{play-4TCSBDHO.js → play-SKTSHZM5.js} +21 -21
  127. package/dist/{preflight-OIHM57E7.js → preflight-BH2XUQBS.js} +4 -4
  128. package/dist/{present-S6UBG5VI.js → present-KSQ5GASH.js} +17 -17
  129. package/dist/{preview-HBDXDJCV.js → preview-TDD3QDR3.js} +20 -20
  130. package/dist/{producer-KSAUIT6F.js → producer-PQMZ7OYH.js} +1 -1
  131. package/dist/{projectConfig-CNAK65RI.js → projectConfig-EYYDESVO.js} +7 -7
  132. package/dist/{publication-AUWZFGJI.js → publication-MJY3XYYV.js} +3 -3
  133. package/dist/{publish-EMNP3VCC.js → publish-5TZIKVLW.js} +9 -9
  134. package/dist/{remove-background-GICM6TE5.js → remove-background-HT73ZUIG.js} +11 -11
  135. package/dist/{render-DMHQZMV4.js → render-ADBL3C7S.js} +27 -27
  136. package/dist/{render-PHEQSRHV.js → render-KJCDJEGI.js} +11 -11
  137. package/dist/{render-WMRNH7HO.js → render-YTJ3SMCD.js} +4 -4
  138. package/dist/{render-batch-OUTHTWN5.js → render-batch-AFB2XK3I.js} +4 -4
  139. package/dist/renderSetupWorker.js +1 -1
  140. package/dist/{resolver-NTB6HOZC.js → resolver-F2D2YCSQ.js} +5 -5
  141. package/dist/{sherpa-3YJNJ6TF.js → sherpa-IBKSF6GX.js} +13 -13
  142. package/dist/skills/hyperframes/SKILL.md +1 -1
  143. package/dist/skills/hyperframes/references/frame-worker-core.md +1 -1
  144. package/dist/skills/hyperframes/references/intent-interview.md +2 -2
  145. package/dist/skills/hyperframes/references/production-loop.md +11 -11
  146. package/dist/skills/hyperframes/references/review-loop.md +6 -6
  147. package/dist/skills/hyperframes/references/storyboard-format.md +1 -1
  148. package/dist/skills/hyperframes-cli/SKILL.md +1 -1
  149. package/dist/{skills-MKEJGL35.js → skills-E75DFHGG.js} +7 -7
  150. package/dist/{skillsUpdateCheck-RTLARPPP.js → skillsUpdateCheck-EPTKOBR6.js} +3 -3
  151. package/dist/{snapshot-KMLGFZWY.js → snapshot-Z6T4I5TE.js} +31 -31
  152. package/dist/{src-4HB343JW.js → src-4GCHM2LX.js} +11 -11
  153. package/dist/{src-HJ2NF55P.js → src-NDI4KNT3.js} +8 -8
  154. package/dist/{staticProjectServer-4XX72J23.js → staticProjectServer-ITNEQNQ7.js} +15 -15
  155. package/dist/{status-BMXWFO4L.js → status-RGHSK3DJ.js} +2 -2
  156. package/dist/studio/assets/{hyperframes-player-u2w3bDWo.js → hyperframes-player-DX8LgKgb.js} +1 -1
  157. package/dist/studio/assets/{index-D8B6eEBj.js → index-7Ljcoa9s.js} +83 -83
  158. package/dist/studio/assets/{index-BG28fXIT.js → index-BdnuQ7ta.js} +1 -1
  159. package/dist/studio/assets/{index-WD9j53l5.js → index-DB0YwjiT.js} +1 -1
  160. package/dist/studio/index.html +1 -1
  161. package/dist/{studio-api-LPHMA57T.js → studio-api-JMWUSAG7.js} +9 -9
  162. package/dist/{studioServer-P7GSE74X.js → studioServer-MWZNMAVJ.js} +45 -45
  163. package/dist/{system-QRHPVRPP.js → system-VRXC6S4A.js} +2 -2
  164. package/dist/{telemetry-576VTLGI.js → telemetry-D6A2TRK6.js} +5 -5
  165. package/dist/{timeline-BO7LJJ24.js → timeline-VIF4G3IT.js} +17 -17
  166. package/dist/{tokens-TCYANQDA.js → tokens-ORS6MFMG.js} +2 -2
  167. package/dist/{transcribe-6HLMGCL2.js → transcribe-DNRG7OGE.js} +19 -19
  168. package/dist/{transcribe-6PTFIBO6.js → transcribe-DZ6O6EG5.js} +12 -12
  169. package/dist/{updateCheck-ZLYIZPPQ.js → updateCheck-YY4BPYNT.js} +2 -2
  170. package/dist/{upgrade-DZHQE2PV.js → upgrade-CUDVTTF5.js} +2 -2
  171. package/dist/{urlDownloader-PJTOCTJA.js → urlDownloader-INLS5A6I.js} +8 -8
  172. package/dist/{validate-3I45WC7I.js → validate-CQCQVHUX.js} +23 -22
  173. package/dist/{video-AQFXGGKN.js → video-3GLT6U6Z.js} +9 -9
  174. package/package.json +1 -1
  175. package/dist/chunk-NE55C6S5.js +0 -118
  176. package/dist/chunk-OE4WEQMH.js +0 -3795
  177. /package/dist/{chunk-VYKPBRCB.js → chunk-ALLKNYC3.js} +0 -0
@@ -25,7 +25,7 @@ import {
25
25
  reportVariableIssues,
26
26
  resolveVariablesArg,
27
27
  validateVariablesAgainstProject
28
- } from "./chunk-LZ2PZIVS.js";
28
+ } from "./chunk-SLUFA6UM.js";
29
29
  import {
30
30
  buildPublishFileMap,
31
31
  zipPublishFileMap
@@ -35,17 +35,17 @@ import "./chunk-KMAAOHLO.js";
35
35
  import "./chunk-NAMGMP3R.js";
36
36
  import {
37
37
  resolveProject
38
- } from "./chunk-DDK6E66K.js";
38
+ } from "./chunk-L6AJC7UQ.js";
39
39
  import {
40
40
  errorBox,
41
41
  formatBytes,
42
42
  formatDuration
43
43
  } from "./chunk-K2FLNJVB.js";
44
44
  import "./chunk-442JNXRM.js";
45
- import "./chunk-RXTEP3NB.js";
46
- import "./chunk-WLYSVHZE.js";
45
+ import "./chunk-2XUQPJ3W.js";
46
+ import "./chunk-H6BWNY56.js";
47
47
  import "./chunk-VWG7OQKU.js";
48
- import "./chunk-7FFGZC2X.js";
48
+ import "./chunk-QWQ6GQTI.js";
49
49
  import {
50
50
  defineCommand
51
51
  } from "./chunk-S3S4TGEH.js";
@@ -58,24 +58,24 @@ import {
58
58
  } from "./chunk-ZTZA4UWZ.js";
59
59
  import {
60
60
  withMeta
61
- } from "./chunk-COBIO7VC.js";
61
+ } from "./chunk-QH2PL6J4.js";
62
62
  import "./chunk-K4WIOZFP.js";
63
63
  import "./chunk-XUXGIA7H.js";
64
64
  import "./chunk-WERLJGIC.js";
65
65
  import "./chunk-ISN5GRYI.js";
66
- import "./chunk-SO44ETGW.js";
66
+ import "./chunk-RU6AIVON.js";
67
67
  import {
68
68
  downloadToFile
69
69
  } from "./chunk-BXCMXMJQ.js";
70
70
  import "./chunk-EOVYQ3IG.js";
71
71
  import "./chunk-XT6MXC7A.js";
72
72
  import "./chunk-JYVGYKXG.js";
73
- import "./chunk-OBXWIVYN.js";
74
- import "./chunk-3THJEW7G.js";
75
- import "./chunk-OE4WEQMH.js";
73
+ import "./chunk-7KDQAD2W.js";
74
+ import "./chunk-SGIZMTWO.js";
75
+ import "./chunk-LPOTN5GW.js";
76
76
  import "./chunk-VC76R6W2.js";
77
77
  import "./chunk-UJKQWGFF.js";
78
- import "./chunk-VYKPBRCB.js";
78
+ import "./chunk-ALLKNYC3.js";
79
79
  import "./chunk-OFQWTKPW.js";
80
80
  import "./chunk-DPVXBVLL.js";
81
81
  import "./chunk-T76PLPD6.js";
@@ -15,7 +15,7 @@ import {
15
15
  reportVariableIssues,
16
16
  resolveVariablesArg,
17
17
  validateVariablesAgainstProject
18
- } from "./chunk-LZ2PZIVS.js";
18
+ } from "./chunk-SLUFA6UM.js";
19
19
  import "./chunk-FH7WODJH.js";
20
20
  import "./chunk-K2FLNJVB.js";
21
21
  import "./chunk-442JNXRM.js";
@@ -25,11 +25,11 @@ import {
25
25
  import {
26
26
  c
27
27
  } from "./chunk-ZTZA4UWZ.js";
28
- import "./chunk-3THJEW7G.js";
29
- import "./chunk-OE4WEQMH.js";
28
+ import "./chunk-SGIZMTWO.js";
29
+ import "./chunk-LPOTN5GW.js";
30
30
  import "./chunk-VC76R6W2.js";
31
31
  import "./chunk-UJKQWGFF.js";
32
- import "./chunk-VYKPBRCB.js";
32
+ import "./chunk-ALLKNYC3.js";
33
33
  import "./chunk-OFQWTKPW.js";
34
34
  import "./chunk-DPVXBVLL.js";
35
35
  import "./chunk-T76PLPD6.js";
@@ -14,7 +14,7 @@ import {
14
14
  loadProjectVariableSchema,
15
15
  reportVariableIssues,
16
16
  validateVariablesAgainstSchema
17
- } from "./chunk-LZ2PZIVS.js";
17
+ } from "./chunk-SLUFA6UM.js";
18
18
  import "./chunk-FH7WODJH.js";
19
19
  import {
20
20
  errorBox
@@ -27,11 +27,11 @@ import {
27
27
  import {
28
28
  c
29
29
  } from "./chunk-ZTZA4UWZ.js";
30
- import "./chunk-3THJEW7G.js";
31
- import "./chunk-OE4WEQMH.js";
30
+ import "./chunk-SGIZMTWO.js";
31
+ import "./chunk-LPOTN5GW.js";
32
32
  import "./chunk-VC76R6W2.js";
33
33
  import "./chunk-UJKQWGFF.js";
34
- import "./chunk-VYKPBRCB.js";
34
+ import "./chunk-ALLKNYC3.js";
35
35
  import "./chunk-OFQWTKPW.js";
36
36
  import "./chunk-DPVXBVLL.js";
37
37
  import "./chunk-T76PLPD6.js";
@@ -20,7 +20,7 @@ import {
20
20
  import "./chunk-TWWSYAKJ.js";
21
21
  import {
22
22
  lintProject
23
- } from "./chunk-YOEGUBBY.js";
23
+ } from "./chunk-7F3B5YYT.js";
24
24
  import "./chunk-IWFLMU2N.js";
25
25
  import "./chunk-3VGU2SH7.js";
26
26
  import "./chunk-VAS6HQX3.js";
@@ -11,16 +11,16 @@ import {
11
11
  resolveItemWithDependencies,
12
12
  resolveItemsByTag,
13
13
  unreachableRegistryMessage
14
- } from "./chunk-JKCKXGIC.js";
15
- import "./chunk-YLSSI4XB.js";
14
+ } from "./chunk-3FRK53UC.js";
15
+ import "./chunk-QRPYTJBW.js";
16
16
  import "./chunk-AWDFDFI3.js";
17
17
  import "./chunk-P6LJ4Y32.js";
18
18
  import "./chunk-GMECXFAN.js";
19
- import "./chunk-3THJEW7G.js";
20
- import "./chunk-OE4WEQMH.js";
19
+ import "./chunk-SGIZMTWO.js";
20
+ import "./chunk-LPOTN5GW.js";
21
21
  import "./chunk-VC76R6W2.js";
22
22
  import "./chunk-UJKQWGFF.js";
23
- import "./chunk-VYKPBRCB.js";
23
+ import "./chunk-ALLKNYC3.js";
24
24
  import "./chunk-OFQWTKPW.js";
25
25
  import "./chunk-DPVXBVLL.js";
26
26
  import "./chunk-T76PLPD6.js";
@@ -16,27 +16,27 @@ import {
16
16
  sherpaRuntimeLoadError,
17
17
  sherpaUnsupportedReason,
18
18
  transcribeWithSherpa
19
- } from "./chunk-DDSQBREC.js";
19
+ } from "./chunk-4YDQQQY6.js";
20
20
  import "./chunk-BXCMXMJQ.js";
21
21
  import "./chunk-3DKN5WKL.js";
22
22
  import "./chunk-EOVYQ3IG.js";
23
- import "./chunk-SCXATNSP.js";
24
- import "./chunk-M4CRDGC4.js";
23
+ import "./chunk-ZZ3ZWTOI.js";
24
+ import "./chunk-T243WV6D.js";
25
25
  import "./chunk-6BEFEWFB.js";
26
- import "./chunk-QJEHLWM4.js";
26
+ import "./chunk-SQHWDFTV.js";
27
27
  import "./chunk-PO2SDVQA.js";
28
- import "./chunk-SCOXM5LP.js";
28
+ import "./chunk-KEGTYA7V.js";
29
29
  import "./chunk-XT6MXC7A.js";
30
- import "./chunk-YUTUYCGK.js";
31
- import "./chunk-2K5YII2L.js";
32
- import "./chunk-NE55C6S5.js";
30
+ import "./chunk-IRRRH66M.js";
31
+ import "./chunk-FJT35XBA.js";
32
+ import "./chunk-KCF6GHJP.js";
33
33
  import "./chunk-JYVGYKXG.js";
34
- import "./chunk-OBXWIVYN.js";
35
- import "./chunk-3THJEW7G.js";
36
- import "./chunk-OE4WEQMH.js";
34
+ import "./chunk-7KDQAD2W.js";
35
+ import "./chunk-SGIZMTWO.js";
36
+ import "./chunk-LPOTN5GW.js";
37
37
  import "./chunk-VC76R6W2.js";
38
38
  import "./chunk-UJKQWGFF.js";
39
- import "./chunk-VYKPBRCB.js";
39
+ import "./chunk-ALLKNYC3.js";
40
40
  import "./chunk-OFQWTKPW.js";
41
41
  import "./chunk-DPVXBVLL.js";
42
42
  import "./chunk-T76PLPD6.js";
@@ -45,7 +45,7 @@ import "./chunk-RQVDTPGD.js";
45
45
  import "./chunk-YIJMVFEJ.js";
46
46
  import "./chunk-54DMWFQZ.js";
47
47
  import "./chunk-TWWSYAKJ.js";
48
- import "./chunk-YOEGUBBY.js";
48
+ import "./chunk-7F3B5YYT.js";
49
49
  import "./chunk-IWFLMU2N.js";
50
50
  import "./chunk-3VGU2SH7.js";
51
51
  import "./chunk-VAS6HQX3.js";
@@ -80,7 +80,7 @@ Before finalizing the route, read `references/routes/<workflow>.md` — one smal
80
80
  - An explicitly short motion graphic may use a URL, tweet, article, or screenshot as source material. A generic "make a video from this site" request is `/product-launch-video`.
81
81
  - Existing footage with captions routes to `/embedded-captions`; footage with designed information cards routes to `/talking-head-recut`. Retiming, reordering, recoloring, reframing, or remixing footage is a custom edit and falls through to `/general-video`.
82
82
  - A music file selects `/music-to-video` only when its beat grid drives the piece. Music used as a bed does not override the subject-matched route.
83
- - "I want a storyboard" changes the review process, not the workflow. With no other routing signal, use `/general-video`. A confirmed sketched `storyboard.html` may itself be the requested deliverable; the review loop defines that stop point.
83
+ - "I want a storyboard" changes the review process, not the workflow. With no other routing signal, use `/general-video`. A confirmed board (`boards/storyboard.html`, format in `/hyperframes-creative` `references/storyboard-recipe.md`) may itself be the requested deliverable; the review loop defines that stop point.
84
84
  - Specialized narrative workflows support up to about 3 minutes and are strongest around 30–90s. Route a clearly longer piece to `/general-video`. Length never overrides an explicit port, deck, caption, overlay, or music-driven deliverable.
85
85
 
86
86
  ## 3. Route once, then leave
@@ -29,7 +29,7 @@ You build the frame composition file(s) assigned in your dispatch and nothing el
29
29
 
30
30
  ## When a confirmed sketch exists
31
31
 
32
- In collaborative runs the orchestrator sketches every frame first as a cell of `storyboard.html` (`id="frame-NN"`), so your frame may have a **user-confirmed wireframe** there — your dispatch says whether it does (a target file found on a retry is your own prior output, not a sketch). Read that cell first and **keep its composition**: the placement, hierarchy, and copy were approved — don't move or drop them. Everything else is yours to finish: the finished content where the sketch used stand-in blocks (what that content is — real assets, invented visuals, a code block — is the delta's call, since the sketch already carries the full `frame.md` treatment), and the motion — map each Scene onto a timeline phase, reveal each piece on its `voiceover` cue with `fromTo` entrances, adding DOM only where a phase needs it. The frame's landed state must still read as the approved sketch, now moving.
32
+ In collaborative runs the orchestrator first poses every frame in its composition and shows it as a still on the board (`boards/storyboard.html`, stills in `boards/stills/`, format in `hyperframes-creative/references/storyboard-recipe.md`), so your frame may have a **user-confirmed wireframe**: the posed composition at your target file — your dispatch says whether it does (a target file found on a retry is your own prior output, not a sketch). Read that file and its still first and **keep its composition**: the placement, hierarchy, and copy were approved — don't move or drop them. Everything else is yours to finish: the finished content where the sketch used stand-in blocks (what that content is — real assets, invented visuals, a code block — is the delta's call, since the sketch already carries the full `frame.md` treatment), and the motion — map each Scene onto a timeline phase, reveal each piece on its `voiceover` cue with `fromTo` entrances, adding DOM only where a phase needs it. The frame's landed state must still read as the approved sketch, now moving.
33
33
 
34
34
  ## You do NOT decide
35
35
 
@@ -26,7 +26,7 @@ A GitHub PR URL is not a website source. A named or adopted recipe already carri
26
26
  - **Remembered defaults.** Let `<MEDIA_DIR>` be the installed `/media-use` skill directory. For an existing project, `<MEMORY_ROOT>` is its root. Before scaffolding, use a deliberately nonexistent probe path with no `.media`, such as `/tmp/hyperframes-intent-memory-<run-id>`; never use the current workspace. Run `node <MEDIA_DIR>/scripts/prefs.mjs get --hyperframes <MEMORY_ROOT> --json`. Make each remembered value the recommended option and name its source. The pre-project probe sees only the personal tier; do not claim project provenance.
27
27
  - **Recipes.** Run `node <MEDIA_DIR>/scripts/recipe.mjs list --hyperframes <MEMORY_ROOT> --json`. If the user names a recipe, says "like last time," or a recipe matches the probable route, ask whether to adopt it before other brief questions — and make the offer earn the yes: say why it matches and what adopting saves ("this matches your launch-promo recipe — adopting fills destination, aspect, language, and the design spec; you'd confirm the message and the two run-shape questions"). When several match, list them and include "none." An adopted recipe locks the fields it contains; ask only its missing fields and the run-shape questions. It does not remove review or render approval gates.
28
28
 
29
- **2 — Triage the input.** What is the video about — a website (sold or shown), a PR, a topic, a music track, existing footage? And is the request **formed** — the message, the material, and the occasion readable from what the user gave — or **unformed**, a subject with no take on it? Source material doesn't settle this by itself: a site, document, or PR carries its own thesis, but five tellings of that thesis are five different videos — a request whose only shape comes from its source ("make a video about this URL") is formed about the facts and unformed about the telling, and enters the round to pitch the telling. A formed request runs the layer exactly as it always has; nothing below is added for it. An unformed one goes through the pitch round after routing (step 4) and earns one question here, before anything is generated: what is the user already picturing? Their answer seeds the round (`pitch-round.md`). A user who says they don't know video at all gets that reference's decision map instead of a question sequence. For a genuinely exploratory request ("we need a video but I'm not sure what kind"), don't interrogate — establish the subject and what exists to show, one question at a time, then close by **recommending** a route plus how the run will review: a plan in chat first, with optional wireframe sketches on a `storyboard.html` sheet before the full build (`review-loop.md`). The user hears the process before any workflow starts.
29
+ **2 — Triage the input.** What is the video about — a website (sold or shown), a PR, a topic, a music track, existing footage? And is the request **formed** — the message, the material, and the occasion readable from what the user gave — or **unformed**, a subject with no take on it? Source material doesn't settle this by itself: a site, document, or PR carries its own thesis, but five tellings of that thesis are five different videos — a request whose only shape comes from its source ("make a video about this URL") is formed about the facts and unformed about the telling, and enters the round to pitch the telling. A formed request runs the layer exactly as it always has; nothing below is added for it. An unformed one goes through the pitch round after routing (step 4) and earns one question here, before anything is generated: what is the user already picturing? Their answer seeds the round (`pitch-round.md`). A user who says they don't know video at all gets that reference's decision map instead of a question sequence. For a genuinely exploratory request ("we need a video but I'm not sure what kind"), don't interrogate — establish the subject and what exists to show, one question at a time, then close by **recommending** a route plus how the run will review: a plan in chat first, with optional stills on a board (`boards/storyboard.html`, format in `hyperframes-creative/references/storyboard-recipe.md`) before the full build (`review-loop.md`). The user hears the process before any workflow starts.
30
30
 
31
31
  **3 — Pick the route** (the route table and ambiguity rules in the SKILL.md), then read `routes/<workflow>.md`. Its Interview section lists the must-have questions to ask now, the **deferred asks** to announce, whether the two run-shape questions apply, and which fields the pitch round may answer.
32
32
 
@@ -36,7 +36,7 @@ A GitHub PR URL is not a website source. A named or adopted recipe already carri
36
36
 
37
37
  **6 — The two run-shape questions** — where the route's entry applies them, asked after the must-haves, each on its own:
38
38
 
39
- - **(a) Storyboard?** Review the plan in chat, wireframe sketches on a `storyboard.html` sheet, and the finished piece pass by pass (`review-loop.md`) — recommended for anything beyond a couple of scenes — or skip the review and get one finished video from the confirmed brief.
39
+ - **(a) Storyboard?** Review the plan in chat, stills on a board (`boards/storyboard.html`, format in `hyperframes-creative/references/storyboard-recipe.md`), and the finished piece pass by pass (`review-loop.md`) — recommended for anything beyond a couple of scenes — or skip the review and get one finished video from the confirmed brief.
40
40
  - **(b) Automation or companion?** **Automation** — the matched workflow's pipeline executes the brief end to end. **Companion** — build it together in `/general-video` with every HyperFrames capability on the table; the route's answers still describe the video, general-video executes them.
41
41
 
42
42
  These two are **orthogonal — never merge them into one menu.** All four `flow` × `storyboard` combinations are valid user choices (a companion run runs the same review passes when `storyboard: yes`); a flattened three-option list ("storyboard review / one shot / companion") silently makes companion-with-storyboard unselectable. When a diagram or source material summarizes the outcomes as three branches, that is the derived behavior (`brief-contract.md` § 1), not the question shape. In a form-style question UI, keep (a) and (b) as two separate selects.
@@ -4,17 +4,17 @@ The stages between a plan the user has agreed to and a video in their hands, wri
4
4
 
5
5
  The shipped narrative workflows implement these stages with their own scripts; a freeform build follows this file directly, borrowing tools where the capability menu says they live (`hyperframes/references/capability-menu.md`).
6
6
 
7
- | Stage | Needs | Produces | Where the capability lives |
8
- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
9
- | **Blocks & assets** | the approved plan | registry blocks installed **once, before any parallel work** (parallel workers race the registry); user assets staged; logos / images / grades resolved | `npx hyperframes add <block>` per block the plan names; staging, adoption, and `resolve` via the menu's media rows |
10
- | **Audio** | narration text (when narrated); the storyboard's `music:` mood | voice files + **word timings** + BGM + SFX → `audio_meta.json`; **when BGM plays under a voice, the bed is carved** (`hyperframes-audio/scripts/carve.mjs`) before Verify — a duck alone is not a finished mix | the one engine — `media-use/audio/scripts/audio.mjs`, run in the background; `wait-bgm.mjs` before render when BGM generates |
11
- | **Frames** | design spec + the plan (+ a confirmed sketch cell in `storyboard.html` when one exists — dress that layout, never redraw it: `review-loop.md` § 3) | each scene at `compositions/frames/NN-*.html`, marked `animated` in the storyboard as it lands | `frame.md` + `hyperframes-animation` blueprints / rules (+ the genre lens, menu § Genre lenses); parallel dispatch per `subagent-dispatch.md` |
12
- | **Duration sync** | word timings + frames | scene durations trued to real voice length — real duration wins, silent scenes keep estimates, synced values are never hand-edited | a mechanical rule; the narrative workflows' audio scripts apply it, a freeform build applies it by hand |
13
- | **Assembly** | frames | the index composition — scenes as sub-compositions on tracks | `sub-compositions.md` + `tracks-and-clips.md`; borrowable `assemble-index.mjs` (menu) |
14
- | **Transitions** | the assembled index | scene handoffs injected | `hyperframes-animation/transitions/overview.md` → `catalog.md`; borrowable `transitions.mjs` (menu) |
15
- | **Captions** | word timings + the index | the caption track | borrowable `captions.mjs` (menu); no script to time against → `media-use` `scripts/transcribe.mjs` first |
16
- | **Verify** | the index (+ captions / transitions when present) | `npx hyperframes lint` and `npx hyperframes check` **passing**; a contact-sheet glance (`snapshot --at <frame-midpoints>`) | `hyperframes-cli` |
17
- | **Deliver** | verify passing | the final-look pause → on approval `render` → optionally `publish` (a stable hosted link, private by default) → the recipe offer | final approval and recipe offer: `review-loop.md` § 4; render / publish: `hyperframes-cli` |
7
+ | Stage | Needs | Produces | Where the capability lives |
8
+ | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
9
+ | **Blocks & assets** | the approved plan | registry blocks installed **once, before any parallel work** (parallel workers race the registry); user assets staged; logos / images / grades resolved | `npx hyperframes add <block>` per block the plan names; staging, adoption, and `resolve` via the menu's media rows |
10
+ | **Audio** | narration text (when narrated); the storyboard's `music:` mood | voice files + **word timings** + BGM + SFX → `audio_meta.json`; **when BGM plays under a voice, the bed is carved** (`hyperframes-audio/scripts/carve.mjs`) before Verify — a duck alone is not a finished mix | the one engine — `media-use/audio/scripts/audio.mjs`, run in the background; `wait-bgm.mjs` before render when BGM generates |
11
+ | **Frames** | design spec + the plan (+ a confirmed still on the board (`boards/storyboard.html`, format in `hyperframes-creative/references/storyboard-recipe.md`) when one exists — dress that layout, never redraw it: `review-loop.md` § 3) | each scene at `compositions/frames/NN-*.html`, marked `animated` in the storyboard as it lands | `frame.md` + `hyperframes-animation` blueprints / rules (+ the genre lens, menu § Genre lenses); parallel dispatch per `subagent-dispatch.md` |
12
+ | **Duration sync** | word timings + frames | scene durations trued to real voice length — real duration wins, silent scenes keep estimates, synced values are never hand-edited | a mechanical rule; the narrative workflows' audio scripts apply it, a freeform build applies it by hand |
13
+ | **Assembly** | frames | the index composition — scenes as sub-compositions on tracks | `sub-compositions.md` + `tracks-and-clips.md`; borrowable `assemble-index.mjs` (menu) |
14
+ | **Transitions** | the assembled index | scene handoffs injected | `hyperframes-animation/transitions/overview.md` → `catalog.md`; borrowable `transitions.mjs` (menu) |
15
+ | **Captions** | word timings + the index | the caption track | borrowable `captions.mjs` (menu); no script to time against → `media-use` `scripts/transcribe.mjs` first |
16
+ | **Verify** | the index (+ captions / transitions when present) | `npx hyperframes lint` and `npx hyperframes check` **passing**; a contact-sheet glance (`snapshot --at <frame-midpoints>`) | `hyperframes-cli` |
17
+ | **Deliver** | verify passing | the final-look pause → on approval `render` → optionally `publish` (a stable hosted link, private by default) → the recipe offer | final approval and recipe offer: `review-loop.md` § 4; render / publish: `hyperframes-cli` |
18
18
 
19
19
  The Frames stage follows the plan's citations: a scene planned on a blueprint or on named rules is built by reading that recipe's body (`hyperframes-animation/blueprints/<id>.md`, `rules/<id>.md`) before its motion is written — names come from the indexes, never invented, and a scene the plan left uncited gets its citation at build time, not improvised motion.
20
20
 
@@ -1,6 +1,6 @@
1
1
  # The review loop — plan, sketch, build
2
2
 
3
- How a `storyboard: yes` run earns fidelity one pass at a time: the plan is reviewed as text in chat, the layouts as a sketched `storyboard.html` the user opens in a browser, and the finished piece as the assembled video. Collaborative mode waits at each checkpoint. Autonomous mode posts the same checkpoint summaries and continues, keeping exactly one question before render.
3
+ How a `storyboard: yes` run earns fidelity one pass at a time: the plan is reviewed as text in chat, the layouts as stills on the board (`boards/storyboard.html`), and the finished piece as the assembled video. Collaborative mode waits at each checkpoint. Autonomous mode posts the same checkpoint summaries and continues, keeping exactly one question before render.
4
4
 
5
5
  This is the shared process for any workflow that plans on a storyboard. The contracts it leans on live next door: interaction mode and gate types in `brief-contract.md`; the `STORYBOARD.md` format and the `outline → built → animated` statuses in `storyboard-format.md`. How to make the storyboard itself, and the page it is reviewed on, is `hyperframes-creative/references/storyboard-recipe.md`. A workflow's SKILL.md says **when** its steps hit each pass and supplies its **sketch stand-ins** (what the plain blocks represent); how the loop runs is defined here, once. The stage mechanics between the passes — audio, frames, assembly, transitions, captions, verify — live in `production-loop.md`; this file owns only the user-facing pauses.
6
6
 
@@ -16,19 +16,19 @@ This is a **checkpoint gate** (`brief-contract.md` § 1). A run that starts auto
16
16
 
17
17
  The moment the plan is approved, sketch every frame yourself — no sub-agents, no waiting on other steps (sketches don't use timings), straight from the approved frame table.
18
18
 
19
- A sketch is a **static frame, not an unstyled one**: the frame's layout at its key moment, drawn with the full `frame.md` treatment (real fonts, real colors, the actual headline / stat / label text placed where it will live) exactly as `storyboard-recipe.md` § 3 describes a cell, using plain blocks only for panels, charts, diagrams, and media the workflow hasn't produced yet (the workflow says what its blocks stand in for). **No motion** — that arrives with the build pass; the layout, copy and brand treatment are already locked here.
19
+ A sketch is a **static frame, not an unstyled one**: the frame's layout at its key moment, posed in the composition with the full `frame.md` treatment (real fonts, real colors, the actual headline / stat / label text placed where it will live) as `storyboard-recipe.md` § 1 describes, using plain blocks only for panels, charts, diagrams, and media the workflow hasn't produced yet (the workflow says what its blocks stand in for). **No motion** — that arrives with the build pass; the layout, copy and brand treatment are already locked here.
20
20
 
21
- Draw the sketches as the cells of `storyboard.html` (`storyboard-recipe.md` § 3) and hand the user the file path to open in a browser. Mark each frame `built` in `STORYBOARD.md` as its sketch lands. Run no CLI here — no `snapshot`, no `lint` / `check`, no rendering. When every frame is `built`, pause and ask one thing: does the sheet look right, or which frames change? This is a **checkpoint gate**; feedback arrives in chat: revise **only the sketches named**, bump the sheet's version, re-present, and loop until the layout is confirmed. Only then does the workflow's visual design get written onto the confirmed layouts.
21
+ Mount the posed frames in `index.html`, snapshot every still in one run into `boards/stills/` and write the board, `boards/storyboard.html` (`storyboard-recipe.md` § 1–2), then hand the user the board. Mark each frame `built` in `STORYBOARD.md` as its still lands. `snapshot` is the only CLI here — no `lint` / `check`, no rendering. When every frame is `built`, pause and ask one thing: does the board look right, or which frames change? This is a **checkpoint gate**; feedback arrives in chat: re-pose **only the frames named** and replace only their stills (`storyboard-recipe.md` § 1 step 4), rewrite the page, re-present, and loop until the layout is confirmed. Only then does the workflow's visual design get written onto the confirmed layouts.
22
22
 
23
- A confirmed sheet is also a valid place to **stop**. When the user asked for a storyboard rather than a finished video — a plan to pitch, review, or hand off — `storyboard.html` is the deliverable: confirm it, hand over the path, and go no further unless asked to build.
23
+ A confirmed board is also a valid place to **stop**. When the user asked for a storyboard rather than a finished video — a plan to pitch, review, or hand off — `boards/storyboard.html` is the deliverable: confirm it, hand over the path, and go no further unless asked to build.
24
24
 
25
25
  In autonomous mode, or when the user chose to skip sketches at § 1, skip this pass — frames go straight from `outline` to `animated` in the build.
26
26
 
27
27
  ## § 3 — Building on confirmed layouts
28
28
 
29
- However the workflow builds — sub-agent workers per frame, or inline scene by scene — a confirmed sketch's **composition is settled**: placement, hierarchy, and copy were approved on the sheet, so building means dressing that layout (full design treatment, real assets, motion), never redrawing it. Workflows that dispatch workers put "this frame has a **confirmed sketch** at `storyboard.html#frame-NN`" in the worker's context and carry the keep-the-layout rule in their worker prompt; a landed frame must still read as the approved wireframe, fully dressed.
29
+ However the workflow builds — sub-agent workers per frame, or inline scene by scene — a confirmed sketch's **composition is settled**: placement, hierarchy, and copy were approved on the board, so building means dressing that layout (full design treatment, real assets, motion), never redrawing it. Workflows that dispatch workers put "this frame has a **confirmed sketch** (its posed composition, still in `boards/stills/`)" in the worker's context and carry the keep-the-layout rule in their worker prompt; a landed frame must still read as the approved wireframe, fully dressed.
30
30
 
31
- Mark each frame `animated` as it lands. The build gate carries the loop's condition: in collaborative mode, the sketch sheet was confirmed at § 2.
31
+ Mark each frame `animated` as it lands. The build gate carries the loop's condition: in collaborative mode, the board was confirmed at § 2.
32
32
 
33
33
  ## § 4 — The final look
34
34
 
@@ -95,5 +95,5 @@ The old way: prompt, wait, get something that misses. Establish the pain we remo
95
95
 
96
96
  - A frame with `status: outline` and no built `src` renders as an outline placeholder.
97
97
  - `built` is the middle rung: the frame's HTML exists and its **layout is confirmed** (a wireframe sketch or better) — motion not yet added. Nothing is drawn yet beyond the approved layout.
98
- - The process that walks these statuses — plan, sketch, build, each pass reviewed in chat and in `storyboard.html` — is `review-loop.md`.
98
+ - The process that walks these statuses — plan, sketch, build, each pass reviewed in chat and on the board (`boards/storyboard.html`, format in `hyperframes-creative/references/storyboard-recipe.md`) — is `review-loop.md`.
99
99
  - Multi-line `voiceover` values collapse to one line on save.
@@ -71,7 +71,7 @@ ffprobe -v error -show_format -show_streams out.mp4
71
71
 
72
72
  ## Preview before render
73
73
 
74
- Open the final composition preview (`#project/<name>`) only after `check` passes, to review the assembled timeline. The plan in chat and the `storyboard.html` sketch sheet are not approval of the final video. Rendering always requires the final approval defined by `hyperframes/references/review-loop.md`.
74
+ Open the final composition preview (`#project/<name>`) only after `check` passes, to review the assembled timeline. The plan in chat and the storyboard board (`boards/storyboard.html`, format in `hyperframes-creative/references/storyboard-recipe.md`) are not approval of the final video. Rendering always requires the final approval defined by `hyperframes/references/review-loop.md`.
75
75
 
76
76
  ## Sub-composition smoke test
77
77
 
@@ -6,12 +6,12 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  trackSkillsInstallSkipped
9
- } from "./chunk-RXTEP3NB.js";
10
- import "./chunk-WLYSVHZE.js";
9
+ } from "./chunk-2XUQPJ3W.js";
10
+ import "./chunk-H6BWNY56.js";
11
11
  import {
12
12
  diag
13
13
  } from "./chunk-VWG7OQKU.js";
14
- import "./chunk-7FFGZC2X.js";
14
+ import "./chunk-QWQ6GQTI.js";
15
15
  import {
16
16
  R
17
17
  } from "./chunk-WMQNIQDJ.js";
@@ -35,21 +35,21 @@ import {
35
35
  isCoreSkill,
36
36
  presentSkills,
37
37
  pruneOrphanedLockEntries
38
- } from "./chunk-HVQQN4NG.js";
38
+ } from "./chunk-W2SNLHKF.js";
39
39
  import {
40
40
  withMeta
41
- } from "./chunk-COBIO7VC.js";
41
+ } from "./chunk-QH2PL6J4.js";
42
42
  import "./chunk-K4WIOZFP.js";
43
43
  import "./chunk-XUXGIA7H.js";
44
44
  import "./chunk-WERLJGIC.js";
45
45
  import "./chunk-ISN5GRYI.js";
46
- import "./chunk-SO44ETGW.js";
46
+ import "./chunk-RU6AIVON.js";
47
47
  import {
48
48
  buildNpxCommand
49
49
  } from "./chunk-6BEFEWFB.js";
50
50
  import "./chunk-XT6MXC7A.js";
51
51
  import "./chunk-JYVGYKXG.js";
52
- import "./chunk-OBXWIVYN.js";
52
+ import "./chunk-7KDQAD2W.js";
53
53
  import "./chunk-T76PLPD6.js";
54
54
  import "./chunk-FXMKHHPO.js";
55
55
  import "./chunk-KNU5COPB.js";
@@ -9,13 +9,13 @@ import {
9
9
  printSkillsUpdateNotice,
10
10
  refreshSkillsCache,
11
11
  skillsCheckDue
12
- } from "./chunk-HVQQN4NG.js";
13
- import "./chunk-COBIO7VC.js";
12
+ } from "./chunk-W2SNLHKF.js";
13
+ import "./chunk-QH2PL6J4.js";
14
14
  import "./chunk-K4WIOZFP.js";
15
15
  import "./chunk-XUXGIA7H.js";
16
16
  import "./chunk-WERLJGIC.js";
17
17
  import "./chunk-ISN5GRYI.js";
18
- import "./chunk-SO44ETGW.js";
18
+ import "./chunk-RU6AIVON.js";
19
19
  import "./chunk-KNU5COPB.js";
20
20
  import "./chunk-M2WBOQ2Q.js";
21
21
  export {
@@ -14,13 +14,13 @@ import {
14
14
  } from "./chunk-57GN6KWT.js";
15
15
  import {
16
16
  captureArtifactRevision
17
- } from "./chunk-C7WALYAY.js";
18
- import "./chunk-NV2JPSI4.js";
17
+ } from "./chunk-Y6E2PW7Z.js";
18
+ import "./chunk-Z347DFOL.js";
19
19
  import {
20
20
  serveStaticProjectHtml
21
- } from "./chunk-DRNTIYT3.js";
21
+ } from "./chunk-4R6OZQGX.js";
22
22
  import "./chunk-XUHOIDKG.js";
23
- import "./chunk-XXTOOXZ7.js";
23
+ import "./chunk-J4SSEVRU.js";
24
24
  import "./chunk-X7MTZ4T2.js";
25
25
  import {
26
26
  DEFAULT_ZOOM_SCALE,
@@ -30,24 +30,24 @@ import {
30
30
  resolveCropRegion,
31
31
  runFfmpegOnce,
32
32
  seekCompositionTimeline
33
- } from "./chunk-MBE4SEL7.js";
33
+ } from "./chunk-7FGHFHWD.js";
34
34
  import "./chunk-FH7WODJH.js";
35
- import "./chunk-VPOEKLZL.js";
36
- import "./chunk-SNMMFFKZ.js";
35
+ import "./chunk-LAAGHMRC.js";
36
+ import "./chunk-J7WFHOCW.js";
37
37
  import "./chunk-WPNE5NEP.js";
38
- import "./chunk-VK5JRYJL.js";
39
- import "./chunk-DSX7R5M7.js";
38
+ import "./chunk-DCQCGE2W.js";
39
+ import "./chunk-56QTFOWH.js";
40
40
  import "./chunk-C6TPGUWD.js";
41
41
  import {
42
42
  artifactDirectory,
43
43
  forgetRecordedArtifacts,
44
44
  recordArtifacts
45
45
  } from "./chunk-6PIGOKTE.js";
46
- import "./chunk-7U27WUMQ.js";
46
+ import "./chunk-DISITOR6.js";
47
47
  import "./chunk-FFDC5OWV.js";
48
48
  import {
49
49
  resolveProject
50
- } from "./chunk-DDK6E66K.js";
50
+ } from "./chunk-L6AJC7UQ.js";
51
51
  import {
52
52
  formatLintFindings
53
53
  } from "./chunk-6CSYCFQV.js";
@@ -55,23 +55,23 @@ import "./chunk-K2FLNJVB.js";
55
55
  import "./chunk-DQBY7FRR.js";
56
56
  import {
57
57
  resolveLocalBrowserGpuMode
58
- } from "./chunk-QOP5D3UM.js";
58
+ } from "./chunk-YB26LWR2.js";
59
59
  import "./chunk-442JNXRM.js";
60
- import "./chunk-Q7FDYQR4.js";
60
+ import "./chunk-GPUVPZRK.js";
61
61
  import "./chunk-XT7X6QCP.js";
62
62
  import "./chunk-4YYJOFKS.js";
63
63
  import "./chunk-HVW7ABXD.js";
64
- import "./chunk-JKCKXGIC.js";
65
- import "./chunk-FIL6QPZT.js";
66
- import "./chunk-YLSSI4XB.js";
64
+ import "./chunk-3FRK53UC.js";
65
+ import "./chunk-LQXHRO6F.js";
66
+ import "./chunk-QRPYTJBW.js";
67
67
  import "./chunk-AWDFDFI3.js";
68
68
  import "./chunk-P6LJ4Y32.js";
69
69
  import "./chunk-GMECXFAN.js";
70
70
  import "./chunk-5CS4T6C6.js";
71
- import "./chunk-RXTEP3NB.js";
72
- import "./chunk-WLYSVHZE.js";
71
+ import "./chunk-2XUQPJ3W.js";
72
+ import "./chunk-H6BWNY56.js";
73
73
  import "./chunk-VWG7OQKU.js";
74
- import "./chunk-7FFGZC2X.js";
74
+ import "./chunk-QWQ6GQTI.js";
75
75
  import {
76
76
  defineCommand
77
77
  } from "./chunk-S3S4TGEH.js";
@@ -93,7 +93,7 @@ import "./chunk-K4WIOZFP.js";
93
93
  import "./chunk-XUXGIA7H.js";
94
94
  import "./chunk-WERLJGIC.js";
95
95
  import "./chunk-ISN5GRYI.js";
96
- import "./chunk-SO44ETGW.js";
96
+ import "./chunk-RU6AIVON.js";
97
97
  import {
98
98
  loadOptionalPackage
99
99
  } from "./chunk-3DKN5WKL.js";
@@ -103,26 +103,26 @@ import {
103
103
  findFFmpeg,
104
104
  findFFprobe,
105
105
  getFFmpegInstallHint
106
- } from "./chunk-SCOXM5LP.js";
106
+ } from "./chunk-KEGTYA7V.js";
107
107
  import "./chunk-XT6MXC7A.js";
108
- import "./chunk-YUTUYCGK.js";
109
- import "./chunk-2K5YII2L.js";
110
- import "./chunk-NE55C6S5.js";
108
+ import "./chunk-IRRRH66M.js";
109
+ import "./chunk-FJT35XBA.js";
110
+ import "./chunk-KCF6GHJP.js";
111
111
  import "./chunk-JYVGYKXG.js";
112
- import "./chunk-OBXWIVYN.js";
112
+ import "./chunk-7KDQAD2W.js";
113
113
  import {
114
114
  createRuntimeStartTimeResolver,
115
115
  isClipVisibleAt,
116
116
  isInClipWindow
117
- } from "./chunk-3THJEW7G.js";
117
+ } from "./chunk-SGIZMTWO.js";
118
118
  import {
119
119
  readElementRateSpec,
120
120
  sourceTimeAt,
121
121
  timeAtSourceTime
122
- } from "./chunk-OE4WEQMH.js";
122
+ } from "./chunk-LPOTN5GW.js";
123
123
  import "./chunk-VC76R6W2.js";
124
124
  import "./chunk-UJKQWGFF.js";
125
- import "./chunk-VYKPBRCB.js";
125
+ import "./chunk-ALLKNYC3.js";
126
126
  import "./chunk-OFQWTKPW.js";
127
127
  import "./chunk-DPVXBVLL.js";
128
128
  import "./chunk-T76PLPD6.js";
@@ -134,7 +134,7 @@ import {
134
134
  import "./chunk-TWWSYAKJ.js";
135
135
  import {
136
136
  lintProject
137
- } from "./chunk-YOEGUBBY.js";
137
+ } from "./chunk-7F3B5YYT.js";
138
138
  import "./chunk-IWFLMU2N.js";
139
139
  import "./chunk-3VGU2SH7.js";
140
140
  import "./chunk-VAS6HQX3.js";
@@ -442,7 +442,7 @@ function computeSnapshotTimes(duration, opts) {
442
442
  return { times: times.map(round), appendedTail: false };
443
443
  }
444
444
  async function captureSnapshots(projectDir, opts) {
445
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-5SLYBFXL.js");
445
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-IVO43QBQ.js");
446
446
  const capture = await captureArtifactRevision(projectDir).catch(warnSnapshotsNotRecorded);
447
447
  const invocation = randomUUID();
448
448
  const artifacts = [];
@@ -555,7 +555,7 @@ async function captureSnapshots(projectDir, opts) {
555
555
  let syncVideoFrameVisibility = null;
556
556
  let extractMediaMetadata = null;
557
557
  try {
558
- const engine = await import("./src-HJ2NF55P.js");
558
+ const engine = await import("./src-NDI4KNT3.js");
559
559
  injectVideoFramesBatch = engine.injectVideoFramesBatch;
560
560
  syncVideoFrameVisibility = engine.syncVideoFrameVisibility;
561
561
  extractMediaMetadata = engine.extractMediaMetadata;
@@ -69,16 +69,16 @@ import {
69
69
  serializeRenderRequest,
70
70
  startServer,
71
71
  validatePlanV2MaterializedTarget
72
- } from "./chunk-56AEM2EL.js";
72
+ } from "./chunk-EEEUI3ON.js";
73
73
  import {
74
74
  FONT_FETCH_FAILED,
75
75
  FONT_FETCH_UNAVAILABLE,
76
76
  FontFetchError,
77
77
  FontFetchUnavailableError,
78
78
  injectDeterministicFontFaces
79
- } from "./chunk-U3BCDVZO.js";
79
+ } from "./chunk-3QATT3QF.js";
80
80
  import "./chunk-FI4I7CME.js";
81
- import "./chunk-LJHF4SKT.js";
81
+ import "./chunk-T76NSAXO.js";
82
82
  import "./chunk-KLIKCX6Q.js";
83
83
  import "./chunk-EOOEC32M.js";
84
84
  import "./chunk-TJSTGSAW.js";
@@ -96,25 +96,25 @@ import {
96
96
  isTransientBrowserError,
97
97
  prepareCaptureSessionForReuse,
98
98
  resolveConfig
99
- } from "./chunk-YUTUYCGK.js";
100
- import "./chunk-2K5YII2L.js";
101
- import "./chunk-NE55C6S5.js";
99
+ } from "./chunk-IRRRH66M.js";
100
+ import "./chunk-FJT35XBA.js";
101
+ import "./chunk-KCF6GHJP.js";
102
102
  import "./chunk-JYVGYKXG.js";
103
- import "./chunk-OBXWIVYN.js";
103
+ import "./chunk-7KDQAD2W.js";
104
104
  import {
105
105
  quantizeTimeToFrame
106
- } from "./chunk-3THJEW7G.js";
107
- import "./chunk-OE4WEQMH.js";
106
+ } from "./chunk-SGIZMTWO.js";
107
+ import "./chunk-LPOTN5GW.js";
108
108
  import "./chunk-VC76R6W2.js";
109
109
  import "./chunk-UJKQWGFF.js";
110
- import "./chunk-VYKPBRCB.js";
110
+ import "./chunk-ALLKNYC3.js";
111
111
  import "./chunk-OFQWTKPW.js";
112
112
  import "./chunk-DPVXBVLL.js";
113
113
  import "./chunk-T76PLPD6.js";
114
114
  import "./chunk-FXMKHHPO.js";
115
115
  import "./chunk-RQVDTPGD.js";
116
116
  import "./chunk-TWWSYAKJ.js";
117
- import "./chunk-YOEGUBBY.js";
117
+ import "./chunk-7F3B5YYT.js";
118
118
  import "./chunk-IWFLMU2N.js";
119
119
  import "./chunk-3VGU2SH7.js";
120
120
  import "./chunk-VAS6HQX3.js";