@hypit/hypit 0.1.4 → 0.1.5

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 (449) hide show
  1. package/README.md +4 -2
  2. package/dist/public/caption.d.ts +206 -183
  3. package/dist/public/composition.d.ts +25 -3
  4. package/dist/public/endpoint-kit.d.ts +24 -2
  5. package/dist/public/generation.d.ts +5 -1
  6. package/dist/public/hyperframes.d.ts +19 -1
  7. package/dist/public/narrative.d.ts +17 -3
  8. package/dist/public/performance.d.ts +1590 -0
  9. package/dist/public/program-space.d.ts +179 -32
  10. package/dist/public/runtime-kit.d.ts +21 -8
  11. package/dist/public/sound.d.ts +822 -0
  12. package/dist/public/speech.d.ts +41 -0
  13. package/dist/public/studio-adapter.d.ts +77 -15
  14. package/dist/public/temporal-markup.d.ts +9 -44
  15. package/dist/public/temporal.d.ts +37 -28
  16. package/dist/public/{semantic-track.d.ts → timeline.d.ts} +62 -49
  17. package/examples/README.md +18 -10
  18. package/examples/minimal-author-package/packages/example-component/preview/preview.svml +19 -12
  19. package/examples/minimal-author-package/packages/example-component/src/component.ts +5 -5
  20. package/examples/minimal-author-package/packages/example-component/src/fragment.ts +3 -5
  21. package/examples/minimal-author-package/packages/example-component/src/manifest.ts +8 -10
  22. package/examples/minimal-author-package/packages/example-component/src/surface.ts +2 -2
  23. package/examples/provider-package/README.md +78 -0
  24. package/examples/provider-package/hypit.runtime.json +12 -0
  25. package/examples/provider-package/packages/provider-images/package.json +11 -0
  26. package/examples/provider-package/packages/provider-images/src/activation.ts +24 -0
  27. package/examples/provider-package/packages/provider-images/src/provider.ts +122 -0
  28. package/examples/provider-package/packages/provider-images/tsconfig.json +9 -0
  29. package/examples/semantic-composition/README.md +6 -0
  30. package/examples/semantic-composition/chat.svml +6 -5
  31. package/examples/semantic-composition/packages/chat-scene/README.md +3 -3
  32. package/examples/semantic-composition/packages/chat-scene/src/activation.ts +18 -21
  33. package/examples/semantic-composition/packages/chat-scene/src/render.ts +4 -4
  34. package/examples/semantic-composition/packages/performance-styles/README.md +42 -0
  35. package/examples/semantic-composition/packages/performance-styles/package.json +25 -0
  36. package/examples/semantic-composition/packages/performance-styles/src/activation.ts +57 -0
  37. package/examples/semantic-composition/packages/performance-styles/src/render.ts +54 -0
  38. package/examples/semantic-composition/packages/performance-styles/src/studio.ts +28 -0
  39. package/examples/semantic-composition/packages/performance-styles/tsconfig.json +18 -0
  40. package/examples/semantic-composition/packages/responsive-explainer/README.md +16 -9
  41. package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +12 -12
  42. package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +5 -5
  43. package/examples/semantic-composition/packages/sound-styles/README.md +36 -0
  44. package/examples/semantic-composition/packages/sound-styles/package.json +25 -0
  45. package/examples/semantic-composition/packages/sound-styles/src/activation.ts +53 -0
  46. package/examples/semantic-composition/packages/sound-styles/src/render.ts +14 -0
  47. package/examples/semantic-composition/packages/sound-styles/tsconfig.json +18 -0
  48. package/package.json +32 -15
  49. package/packages/audio-track/README.md +20 -13
  50. package/packages/audio-track/package.json +1 -1
  51. package/packages/audio-track/src/component.ts +4 -4
  52. package/packages/audio-track/src/fragment.ts +6 -5
  53. package/packages/audio-track/src/index.ts +1 -1
  54. package/packages/audio-track/src/manifest.ts +17 -16
  55. package/packages/audio-track/src/program.ts +21 -25
  56. package/packages/audio-track/src/surface.ts +19 -18
  57. package/packages/audio-track-studio/README.md +23 -0
  58. package/packages/audio-track-studio/src/index.ts +28 -17
  59. package/packages/author-kit/README.md +1 -1
  60. package/packages/background-removal/README.md +4 -7
  61. package/packages/browser-capture/package.json +1 -1
  62. package/packages/build-result/README.md +11 -0
  63. package/packages/build-result/src/decode.ts +2 -0
  64. package/packages/build-result/src/execution-log.ts +17 -0
  65. package/packages/build-result/src/index.ts +1 -0
  66. package/packages/build-result/src/store.ts +14 -1
  67. package/packages/build-result/src/types.ts +3 -0
  68. package/packages/build-result-s3/src/repository.ts +4 -0
  69. package/packages/caption/README.md +61 -73
  70. package/packages/caption/package.json +3 -2
  71. package/packages/caption/src/activation.ts +2 -2
  72. package/packages/caption/src/component.ts +20 -5
  73. package/packages/caption/src/display.ts +3 -18
  74. package/packages/caption/src/fragment.ts +3 -7
  75. package/packages/caption/src/index.ts +6 -5
  76. package/packages/caption/src/manifest.ts +29 -46
  77. package/packages/caption/src/style.ts +24 -135
  78. package/packages/caption/src/surface.ts +12 -92
  79. package/packages/caption/src/temporalize.ts +18 -53
  80. package/packages/caption/src/types.ts +8 -35
  81. package/packages/caption/src/visibility.ts +23 -0
  82. package/packages/caption-fine/README.md +14 -9
  83. package/packages/caption-fine/package.json +4 -2
  84. package/packages/caption-fine/src/component.ts +3 -3
  85. package/packages/caption-fine/src/fragment.ts +7 -19
  86. package/packages/caption-fine/src/index.ts +2 -0
  87. package/packages/caption-fine/src/manifest.ts +26 -17
  88. package/packages/caption-fine/src/recipe.ts +7 -0
  89. package/packages/caption-fine/src/render.ts +14 -13
  90. package/packages/caption-fine/src/schedule.ts +39 -35
  91. package/packages/caption-fine/src/style.ts +10 -9
  92. package/packages/caption-fine/src/surface.ts +62 -35
  93. package/packages/caption-fine/src/types.ts +2 -0
  94. package/packages/caption-fine-studio/README.md +24 -2
  95. package/packages/caption-fine-studio/package.json +3 -1
  96. package/packages/caption-fine-studio/src/activation.ts +3 -3
  97. package/packages/caption-fine-studio/src/index.ts +54 -42
  98. package/packages/cli/README.md +57 -4
  99. package/packages/cli/package.json +1 -0
  100. package/packages/cli/src/arguments.ts +25 -6
  101. package/packages/cli/src/build-planning.ts +3 -2
  102. package/packages/cli/src/command.ts +6 -0
  103. package/packages/cli/src/commands/environment.ts +28 -18
  104. package/packages/cli/src/commands/execution.ts +81 -26
  105. package/packages/cli/src/commands/results.ts +7 -11
  106. package/packages/cli/src/index.ts +2 -2
  107. package/packages/cli/src/machine-view.ts +3 -2
  108. package/packages/cli/src/main.ts +34 -42
  109. package/packages/cli/src/observation.ts +7 -1
  110. package/packages/cli/src/output.ts +65 -23
  111. package/packages/cli/src/view.ts +64 -18
  112. package/packages/comment-sticker/README.md +3 -3
  113. package/packages/comment-sticker/package.json +1 -1
  114. package/packages/comment-sticker/src/component.ts +4 -4
  115. package/packages/comment-sticker/src/fragment.ts +5 -4
  116. package/packages/comment-sticker/src/manifest.ts +7 -6
  117. package/packages/comment-sticker/src/program.ts +9 -9
  118. package/packages/comment-sticker/src/surface.ts +6 -7
  119. package/packages/composition/README.md +21 -0
  120. package/packages/composition/src/audio-presentation.ts +44 -0
  121. package/packages/composition/src/index.ts +3 -0
  122. package/packages/composition/src/schema.ts +8 -3
  123. package/packages/composition/src/track.ts +15 -1
  124. package/packages/credential-store-env/README.md +1 -1
  125. package/packages/deck-track/README.md +3 -3
  126. package/packages/deck-track/package.json +1 -1
  127. package/packages/deck-track/src/component.ts +5 -5
  128. package/packages/deck-track/src/fragment.ts +6 -5
  129. package/packages/deck-track/src/lower.ts +12 -12
  130. package/packages/deck-track/src/manifest.ts +8 -7
  131. package/packages/deck-track/src/program.ts +13 -16
  132. package/packages/deck-track/src/surface.ts +9 -10
  133. package/packages/driver-node/src/driver.ts +41 -3
  134. package/packages/elevenlabs-speech/README.md +27 -0
  135. package/packages/{provider-xiaomi-mimo → elevenlabs-speech}/package.json +5 -8
  136. package/packages/elevenlabs-speech/src/activation.ts +26 -0
  137. package/packages/elevenlabs-speech/src/fragment.ts +11 -0
  138. package/packages/elevenlabs-speech/src/index.ts +111 -0
  139. package/packages/elevenlabs-speech/src/surface.ts +167 -0
  140. package/packages/endpoint-kit/README.md +24 -0
  141. package/packages/endpoint-kit/src/index.ts +7 -1
  142. package/packages/film/README.md +12 -7
  143. package/packages/film/package.json +1 -1
  144. package/packages/film/src/component.ts +4 -4
  145. package/packages/film/src/fragment.ts +6 -5
  146. package/packages/film/src/manifest.ts +11 -10
  147. package/packages/film/src/program.ts +5 -5
  148. package/packages/film/src/recipe.ts +2 -1
  149. package/packages/film/src/surface.ts +6 -6
  150. package/packages/film-studio/package.json +1 -1
  151. package/packages/film-studio/src/index.ts +2 -2
  152. package/packages/fishaudio-speech/README.md +33 -0
  153. package/packages/fishaudio-speech/package.json +21 -0
  154. package/packages/fishaudio-speech/src/activation.ts +32 -0
  155. package/packages/fishaudio-speech/src/fragment.ts +11 -0
  156. package/packages/fishaudio-speech/src/index.ts +156 -0
  157. package/packages/fishaudio-speech/src/surface.ts +192 -0
  158. package/packages/generation/README.md +11 -1
  159. package/packages/generation/src/mapping.ts +28 -30
  160. package/packages/gpt-image/README.md +1 -2
  161. package/packages/grok-imagine/README.md +1 -2
  162. package/packages/hyperframes/README.md +7 -3
  163. package/packages/hyperframes/src/browser-program.ts +11 -2
  164. package/packages/hyperframes/src/document.ts +15 -2
  165. package/packages/interview-emoji-reveal/README.md +4 -4
  166. package/packages/interview-emoji-reveal/package.json +1 -1
  167. package/packages/interview-emoji-reveal/src/component.ts +4 -4
  168. package/packages/interview-emoji-reveal/src/fragment.ts +6 -5
  169. package/packages/interview-emoji-reveal/src/manifest.ts +9 -8
  170. package/packages/interview-emoji-reveal/src/program.ts +14 -14
  171. package/packages/interview-emoji-reveal/src/surface.ts +8 -9
  172. package/packages/media-execution/README.md +7 -3
  173. package/packages/media-execution/src/audio-presentation.ts +23 -0
  174. package/packages/media-execution/src/execute.ts +2 -0
  175. package/packages/media-pipeline/README.md +7 -3
  176. package/packages/media-pipeline/src/audio-plan.ts +4 -1
  177. package/packages/media-pipeline/src/component.ts +16 -2
  178. package/packages/media-pipeline/src/manifest.ts +3 -1
  179. package/packages/media-pipeline/src/types.ts +2 -1
  180. package/packages/media-track/README.md +14 -47
  181. package/packages/media-track/package.json +1 -1
  182. package/packages/media-track/preview/preview.svml +5 -5
  183. package/packages/media-track/src/author.ts +12 -6
  184. package/packages/media-track/src/component.ts +10 -16
  185. package/packages/media-track/src/fragment.ts +8 -7
  186. package/packages/media-track/src/index.ts +3 -1
  187. package/packages/media-track/src/lower.ts +7 -7
  188. package/packages/media-track/src/manifest.ts +16 -38
  189. package/packages/media-track/src/program.ts +62 -67
  190. package/packages/media-track/src/sampling.ts +6 -6
  191. package/packages/media-track/src/sequence.ts +8 -8
  192. package/packages/media-track/src/surface.ts +25 -43
  193. package/packages/media-track-studio/README.md +9 -0
  194. package/packages/media-track-studio/src/index.ts +16 -11
  195. package/packages/mimo-speech/README.md +1 -1
  196. package/packages/minimax-h3/README.md +1 -1
  197. package/packages/nano-banana/README.md +1 -1
  198. package/packages/narrative/README.md +23 -1
  199. package/packages/narrative/src/identity.ts +11 -0
  200. package/packages/narrative/src/index.ts +3 -0
  201. package/packages/narrative/src/schema.ts +28 -27
  202. package/packages/narrative/src/selection.ts +52 -0
  203. package/packages/narrative/src/types.ts +2 -0
  204. package/packages/package-loader-node/README.md +30 -0
  205. package/packages/package-loader-node/package.json +5 -2
  206. package/packages/package-loader-node/src/distribution-resolution.ts +10 -3
  207. package/packages/package-loader-node/src/index.ts +1 -0
  208. package/packages/package-loader-node/src/loader.ts +12 -15
  209. package/packages/package-loader-node/src/location.ts +27 -1
  210. package/packages/package-loader-node/src/module-scope.ts +183 -0
  211. package/packages/package-loader-node/src/types.ts +4 -0
  212. package/packages/performance/README.md +83 -0
  213. package/packages/performance/package.json +30 -0
  214. package/packages/performance/src/activation.ts +11 -0
  215. package/packages/performance/src/component.ts +46 -0
  216. package/packages/performance/src/index.ts +6 -0
  217. package/packages/performance/src/manifest.ts +53 -0
  218. package/packages/{media-track/src/performance.ts → performance/src/media.ts} +9 -10
  219. package/packages/performance/src/program.ts +51 -0
  220. package/packages/performance/src/style.ts +35 -0
  221. package/packages/performance/src/surface.ts +99 -0
  222. package/packages/performance-studio/README.md +25 -0
  223. package/packages/performance-studio/package.json +21 -0
  224. package/packages/performance-studio/src/activation.ts +6 -0
  225. package/packages/performance-studio/src/index.ts +84 -0
  226. package/packages/program-space/README.md +9 -18
  227. package/packages/program-space/src/activation.ts +1 -5
  228. package/packages/program-space/src/index.ts +2 -11
  229. package/packages/program-space/src/surface.ts +1 -20
  230. package/packages/project-context-node/README.md +20 -0
  231. package/packages/project-context-node/package.json +10 -0
  232. package/packages/project-context-node/src/index.ts +3 -0
  233. package/packages/{cli → project-context-node}/src/runtime-selection.ts +7 -2
  234. package/packages/provider-hyperframes-local/README.md +43 -15
  235. package/packages/provider-hyperframes-local/src/activation.ts +4 -3
  236. package/packages/provider-hyperframes-local/src/capture-process.ts +26 -4
  237. package/packages/provider-hyperframes-local/src/capture.ts +96 -26
  238. package/packages/provider-hyperframes-local/src/concurrency.ts +86 -0
  239. package/packages/provider-hyperframes-local/src/opaque-capture.ts +92 -0
  240. package/packages/provider-hyperframes-local/src/options.ts +2 -0
  241. package/packages/provider-hyperframes-local/src/program.ts +6 -3
  242. package/packages/provider-hyperframes-local/src/progress.ts +53 -0
  243. package/packages/provider-hyperframes-local/src/provider.ts +18 -5
  244. package/packages/provider-hyperframes-local/src/render.ts +48 -7
  245. package/packages/provider-hypihub/README.md +48 -17
  246. package/packages/provider-hypihub/package.json +2 -0
  247. package/packages/provider-hypihub/src/mapping.ts +31 -7
  248. package/packages/provider-hypihub/src/oauth.ts +6 -0
  249. package/packages/provider-hypihub/src/provider.ts +25 -13
  250. package/packages/provider-hypihub/src/routes.ts +1 -2
  251. package/packages/provider-hypihub/src/upload.ts +2 -0
  252. package/packages/provider-media-local/README.md +3 -4
  253. package/packages/provider-whisperx-local/src/program.ts +1 -0
  254. package/packages/provider-whisperx-local/src/provider.ts +3 -0
  255. package/packages/ranking/README.md +8 -6
  256. package/packages/ranking/package.json +1 -1
  257. package/packages/ranking/src/component.ts +6 -6
  258. package/packages/ranking/src/fragment.ts +11 -7
  259. package/packages/ranking/src/manifest.ts +21 -14
  260. package/packages/ranking/src/render.ts +22 -26
  261. package/packages/ranking/src/schedule.ts +16 -19
  262. package/packages/ranking/src/surface.ts +12 -13
  263. package/packages/ranking-studio/README.md +18 -0
  264. package/packages/ranking-studio/src/index.ts +61 -9
  265. package/packages/render-hyperframes/README.md +7 -7
  266. package/packages/render-hyperframes/package.json +1 -1
  267. package/packages/render-hyperframes/src/component.ts +11 -1
  268. package/packages/render-hyperframes/src/fragment.ts +7 -4
  269. package/packages/render-hyperframes/src/manifest.ts +4 -4
  270. package/packages/render-hyperframes/src/surface.ts +6 -6
  271. package/packages/runtime/README.md +8 -1
  272. package/packages/runtime/src/execution.ts +15 -4
  273. package/packages/runtime/src/index.ts +2 -1
  274. package/packages/runtime/src/log.ts +51 -0
  275. package/packages/runtime/src/types.ts +5 -8
  276. package/packages/runtime-host-node/README.md +30 -0
  277. package/packages/runtime-host-node/package.json +1 -0
  278. package/packages/runtime-host-node/src/index.ts +24 -9
  279. package/packages/runtime-host-node/src/packages.ts +47 -50
  280. package/packages/runtime-kit/README.md +5 -0
  281. package/packages/runtime-kit/src/index.ts +3 -1
  282. package/packages/runtime-local/README.md +92 -4
  283. package/packages/runtime-local/src/config.ts +202 -56
  284. package/packages/runtime-local/src/control.ts +9 -1
  285. package/packages/runtime-local/src/executor.ts +66 -0
  286. package/packages/runtime-local/src/host.ts +37 -17
  287. package/packages/runtime-local/src/log.ts +48 -0
  288. package/packages/runtime-local/src/programs.ts +2 -1
  289. package/packages/runtime-local/src/result-writer.ts +2 -0
  290. package/packages/runtime-local/src/runtime.ts +8 -6
  291. package/packages/runtime-local/src/supervisor.ts +142 -0
  292. package/packages/runtime-local/src/types.ts +9 -2
  293. package/packages/runtime-local/src/worker-process.ts +7 -24
  294. package/packages/runtime-local/src/worker.ts +55 -83
  295. package/packages/screen-overlay/README.md +3 -3
  296. package/packages/screen-overlay/package.json +1 -1
  297. package/packages/screen-overlay/src/component.ts +3 -3
  298. package/packages/screen-overlay/src/fragment.ts +5 -4
  299. package/packages/screen-overlay/src/manifest.ts +7 -6
  300. package/packages/screen-overlay/src/program.ts +9 -9
  301. package/packages/screen-overlay/src/surface.ts +6 -7
  302. package/packages/script/README.md +15 -2
  303. package/packages/script/src/manifest.ts +2 -2
  304. package/packages/script/src/narrative.ts +1 -0
  305. package/packages/script/src/surface.ts +4 -3
  306. package/packages/script/src/types.ts +1 -1
  307. package/packages/script-studio/package.json +9 -3
  308. package/packages/script-studio/src/index.ts +2 -0
  309. package/packages/script-studio/src/projection.ts +105 -0
  310. package/packages/seedance/README.md +30 -1
  311. package/packages/seedance/src/index.ts +18 -7
  312. package/packages/seedance/src/surface.ts +17 -4
  313. package/packages/seedance-kits/README.md +7 -1
  314. package/packages/seedream/README.md +1 -1
  315. package/packages/sound/README.md +81 -0
  316. package/packages/sound/package.json +25 -0
  317. package/packages/sound/src/activation.ts +11 -0
  318. package/packages/sound/src/component.ts +28 -0
  319. package/packages/sound/src/index.ts +5 -0
  320. package/packages/sound/src/manifest.ts +47 -0
  321. package/packages/sound/src/program.ts +84 -0
  322. package/packages/sound/src/style.ts +34 -0
  323. package/packages/sound/src/surface.ts +90 -0
  324. package/packages/sound-studio/README.md +22 -0
  325. package/packages/sound-studio/package.json +20 -0
  326. package/packages/sound-studio/src/activation.ts +6 -0
  327. package/packages/sound-studio/src/index.ts +74 -0
  328. package/packages/speech/README.md +2 -2
  329. package/packages/speech-alignment/src/local.ts +8 -0
  330. package/packages/speech-alignment/src/locate.ts +1 -1
  331. package/packages/store-sqlite/README.md +7 -0
  332. package/packages/store-sqlite/src/store.ts +84 -83
  333. package/packages/studio/INSPECTOR.md +15 -2
  334. package/packages/studio/README.md +88 -14
  335. package/packages/studio/package.json +8 -7
  336. package/packages/studio/src/companion-assembly.ts +1 -0
  337. package/packages/studio/src/domain.ts +1 -1
  338. package/packages/studio/src/fallback-companions.ts +3 -3
  339. package/packages/studio/src/feedback-server.ts +51 -0
  340. package/packages/studio/src/feedback-store.ts +66 -0
  341. package/packages/studio/src/feedback.ts +60 -0
  342. package/packages/studio/src/parameter-values.ts +43 -1
  343. package/packages/studio/src/parameters.ts +114 -24
  344. package/packages/studio/src/preview/render.ts +5 -1
  345. package/packages/studio/src/preview/runtime-shim.ts +49 -3
  346. package/packages/studio/src/programme.ts +14 -30
  347. package/packages/studio/src/server.ts +10 -6
  348. package/packages/studio/src/shared.ts +4 -2
  349. package/packages/studio/src/snapshot.ts +21 -132
  350. package/packages/studio/src/studio-preflight.ts +3 -3
  351. package/packages/studio/src/studio-registry.ts +50 -6
  352. package/packages/studio/src/style.css +209 -48
  353. package/packages/studio/src/ui/comments.ts +233 -0
  354. package/packages/studio/src/ui/icons.ts +5 -0
  355. package/packages/studio/src/ui/main.ts +145 -86
  356. package/packages/studio/src/ui/overlay.ts +12 -8
  357. package/packages/studio/src/ui/scrub-preview.ts +108 -0
  358. package/packages/studio/src/ui/stage.ts +67 -4
  359. package/packages/studio/src/ui/timeline.ts +177 -108
  360. package/packages/studio/start.ts +4 -2
  361. package/packages/studio-adapter/README.md +130 -11
  362. package/packages/studio-adapter/src/index.ts +100 -13
  363. package/packages/temporal/README.md +6 -6
  364. package/packages/temporal/package.json +1 -1
  365. package/packages/temporal/src/component.ts +5 -6
  366. package/packages/temporal/src/index.ts +8 -6
  367. package/packages/temporal/src/location.ts +11 -11
  368. package/packages/temporal/src/projection.ts +19 -19
  369. package/packages/temporal/src/rational.ts +4 -4
  370. package/packages/temporal-markup/EDITING.md +2 -2
  371. package/packages/temporal-markup/README.md +27 -11
  372. package/packages/temporal-markup/package.json +1 -1
  373. package/packages/temporal-markup/src/index.ts +20 -25
  374. package/packages/temporal-markup/src/space.ts +10 -41
  375. package/packages/timeline/README.md +31 -0
  376. package/packages/{semantic-track → timeline}/package.json +1 -1
  377. package/packages/timeline/src/activation.ts +8 -0
  378. package/packages/timeline/src/component.ts +24 -0
  379. package/packages/timeline/src/identity.ts +60 -0
  380. package/packages/timeline/src/index.ts +6 -0
  381. package/packages/{semantic-track → timeline}/src/location.ts +20 -20
  382. package/packages/timeline/src/manifest.ts +39 -0
  383. package/packages/{semantic-track → timeline}/src/projection.ts +14 -14
  384. package/packages/timeline/src/types.ts +24 -0
  385. package/packages/timeline-author/README.md +68 -0
  386. package/packages/{speech-track → timeline-author}/package.json +6 -4
  387. package/packages/timeline-author/src/activation.ts +22 -0
  388. package/packages/{speech-track → timeline-author}/src/component.ts +15 -13
  389. package/packages/{speech-track → timeline-author}/src/fragment.ts +14 -23
  390. package/packages/timeline-author/src/index.ts +7 -0
  391. package/packages/timeline-author/src/manifest.ts +78 -0
  392. package/packages/timeline-author/src/program.ts +107 -0
  393. package/packages/timeline-author/src/surface.ts +46 -0
  394. package/packages/timeline-author/src/types.ts +6 -0
  395. package/packages/typography-track/README.md +4 -4
  396. package/packages/typography-track/package.json +1 -1
  397. package/packages/typography-track/src/component.ts +4 -4
  398. package/packages/typography-track/src/fragment.ts +4 -3
  399. package/packages/typography-track/src/manifest.ts +11 -9
  400. package/packages/typography-track/src/program.ts +15 -15
  401. package/packages/typography-track/src/surface.ts +17 -18
  402. package/packages/video-cli/README.md +4 -1
  403. package/packages/video-cli/package.json +2 -1
  404. package/packages/video-cli/src/creation.ts +14 -4
  405. package/packages/video-cli/src/index.ts +1 -1
  406. package/packages/video-cli/src/studio-distribution.ts +2 -1
  407. package/packages/volcengine-matting/README.md +3 -3
  408. package/packages/whisperx/README.md +1 -1
  409. package/services/whisperx/README.md +14 -0
  410. package/services/whisperx/pyproject.toml +2 -0
  411. package/services/whisperx/uv.lock +20 -20
  412. package/packages/provider-hyperframes-aws-lambda/README.md +0 -30
  413. package/packages/provider-hyperframes-aws-lambda/package.json +0 -30
  414. package/packages/provider-hyperframes-aws-lambda/src/activation.ts +0 -97
  415. package/packages/provider-hyperframes-aws-lambda/src/client.ts +0 -114
  416. package/packages/provider-hyperframes-aws-lambda/src/index.ts +0 -21
  417. package/packages/provider-hyperframes-aws-lambda/src/provider.ts +0 -522
  418. package/packages/provider-kie/README.md +0 -134
  419. package/packages/provider-kie/package.json +0 -43
  420. package/packages/provider-kie/src/activation.ts +0 -71
  421. package/packages/provider-kie/src/index.ts +0 -10
  422. package/packages/provider-kie/src/mapping.ts +0 -182
  423. package/packages/provider-kie/src/provider.ts +0 -657
  424. package/packages/provider-kie/src/routes.ts +0 -150
  425. package/packages/provider-xiaomi-mimo/README.md +0 -32
  426. package/packages/provider-xiaomi-mimo/src/activation.ts +0 -57
  427. package/packages/provider-xiaomi-mimo/src/index.ts +0 -5
  428. package/packages/provider-xiaomi-mimo/src/provider.ts +0 -214
  429. package/packages/runtime/src/environment.ts +0 -6
  430. package/packages/semantic-track/README.md +0 -21
  431. package/packages/semantic-track/src/activation.ts +0 -8
  432. package/packages/semantic-track/src/component.ts +0 -24
  433. package/packages/semantic-track/src/identity.ts +0 -58
  434. package/packages/semantic-track/src/index.ts +0 -6
  435. package/packages/semantic-track/src/manifest.ts +0 -38
  436. package/packages/semantic-track/src/types.ts +0 -26
  437. package/packages/speech-track/README.md +0 -51
  438. package/packages/speech-track/src/activation.ts +0 -19
  439. package/packages/speech-track/src/index.ts +0 -7
  440. package/packages/speech-track/src/manifest.ts +0 -73
  441. package/packages/speech-track/src/program.ts +0 -64
  442. package/packages/speech-track/src/surface.ts +0 -35
  443. package/packages/speech-track/src/types.ts +0 -6
  444. package/packages/speech-track-studio/README.md +0 -3
  445. package/packages/speech-track-studio/package.json +0 -14
  446. package/packages/speech-track-studio/src/activation.ts +0 -7
  447. package/packages/speech-track-studio/src/index.ts +0 -40
  448. /package/packages/{cli → project-context-node}/src/project-context.ts +0 -0
  449. /package/packages/{speech-track → timeline-author}/preview/Track.png +0 -0
@@ -10,6 +10,9 @@
10
10
  --text: #e7e8eb;
11
11
  --text-2: #a4a7ae;
12
12
  --text-3: #6f737c;
13
+ --subtab-surface: #101114;
14
+ --subtab-active-surface: #24262a;
15
+ --subtab-active-text: #c9cbd0;
13
16
  /* Replace this ramp as one unit when Hypit's interaction identity changes. */
14
17
  --brand-200: #f8c1ce;
15
18
  --brand-400: #ed7898;
@@ -28,6 +31,8 @@
28
31
  --tone-orange-muted-rail: #e7834c;
29
32
  --tone-green: #38853e;
30
33
  --tone-green-rail: #75d079;
34
+ --tone-green-muted: #285c30;
35
+ --tone-green-muted-rail: #73a478;
31
36
  --tone-teal: #008889;
32
37
  --tone-teal-rail: #00d4d5;
33
38
  /* Semantic ruler: brightness separates content from its own band; hue marks state. */
@@ -35,6 +40,7 @@
35
40
  --semantic-word: #005551;
36
41
  /* Author intent uses a gold annotation hue; brand pink stays in the chrome. */
37
42
  --semantic-intent: #a28b2b;
43
+ --semantic-moment: var(--brand-500);
38
44
  /* Same perceived active level as a selected/covered semantic cell. */
39
45
  --semantic-current: #009f98;
40
46
  /* Ordered marker depth: one hue, decreasing lightness. */
@@ -44,10 +50,14 @@
44
50
  --intent-depth-3: #846d00;
45
51
  --tone-blue: #1777b8;
46
52
  --tone-blue-rail: #58c0ff;
53
+ --tone-blue-muted: #175079;
54
+ --tone-blue-muted-rail: #5795bf;
47
55
  --tone-violet: #6f63b8;
48
56
  --tone-violet-rail: #b3a6ff;
49
57
  --tone-magenta: #995398;
50
58
  --tone-magenta-rail: #ea93e8;
59
+ --tone-magenta-muted: #683b68;
60
+ --tone-magenta-muted-rail: #b57ab4;
51
61
  --tone-neutral: #6a737c;
52
62
  --tone-neutral-rail: #aeb9c4;
53
63
  --timeline-label-width: 188px;
@@ -132,6 +142,14 @@ button:focus-visible, textarea:focus-visible {
132
142
  white-space: nowrap;
133
143
  }
134
144
  .topbar-right { justify-self: end; display: flex; align-items: center; min-width: 0; }
145
+ .view-tabs { display: flex; align-items: center; gap: 2px; margin-left: 16px; padding: 2px; border-radius: 5px; background: var(--subtab-surface); }
146
+ .view-tabs button {
147
+ display: flex; align-items: center; gap: 7px; height: 24px; padding: 0 10px;
148
+ border: 0; border-radius: 4px; color: var(--text-3); background: transparent;
149
+ }
150
+ .view-tabs button[aria-selected="true"] { color: var(--subtab-active-text); background: var(--subtab-active-surface); }
151
+ .view-tabs button:focus-visible { outline: 1px solid #8a8f99; outline-offset: -1px; }
152
+ .view-tabs .icon { width: 14px; height: 14px; }
135
153
  .meta {
136
154
  color: var(--text-3);
137
155
  font: 500 11px/1 var(--font-ui);
@@ -159,6 +177,67 @@ button:focus-visible, textarea:focus-visible {
159
177
  grid-template-columns: var(--source-width) 8px minmax(320px, 1fr) 8px var(--workspace-width);
160
178
  overflow: hidden;
161
179
  }
180
+ .comments-panel, .comments-handle { display: none; }
181
+ .studio-shell[data-view="comments"] { grid-template-rows: minmax(0, 1fr); padding-bottom: 6px; }
182
+ .studio-shell[data-view="comments"] > .handle,
183
+ .studio-shell[data-view="comments"] > .timeline-panel { display: none; }
184
+ .studio-shell[data-view="comments"] .upper-shell { grid-template-columns: minmax(240px, 1fr) 8px var(--comments-width, 360px); }
185
+ .studio-shell[data-view="comments"] .source-panel,
186
+ .studio-shell[data-view="comments"] .source-handle,
187
+ .studio-shell[data-view="comments"] .workspace-panel,
188
+ .studio-shell[data-view="comments"] .workspace-handle { display: none; }
189
+ .studio-shell[data-view="comments"] .comments-handle { display: block; }
190
+ .studio-shell[data-view="comments"] .comments-panel { display: flex; }
191
+ .comments-panel { flex-direction: column; min-width: 0; min-height: 0; background: var(--panel); border: 1px solid #08090a; }
192
+ .comments-heading { justify-content: space-between; flex: none; }
193
+ .comments-heading [data-count] { color: var(--text-3); font-size: 11px; margin-left: 2px; }
194
+ .comments-icon { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 26px; height: 26px; padding: 5px; border: 0; border-radius: 3px; background: transparent; color: var(--text-3); }
195
+ .comments-icon:hover { background: var(--field); color: var(--text); }
196
+ .comments-icon .icon { width: 15px; height: 15px; }
197
+ .comments-icon.is-done { color: var(--ok); }
198
+ .comments-panel button:disabled { opacity: .4; }
199
+ .comments-filters { display: flex; gap: 4px; padding: 10px 12px; border-bottom: 1px solid var(--line); flex: none; }
200
+ .comments-filters button { border: 0; background: transparent; padding: 4px 11px; border-radius: 3px; color: var(--text-3); }
201
+ .comments-filters button[aria-pressed="true"] { color: var(--text); background: #282a30; }
202
+ .comments-list { flex: 1; min-height: 0; overflow: auto; padding: 4px 12px 12px; user-select: text; }
203
+ .comments-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 220px; height: 100%; padding: 24px; text-align: center; color: var(--text-3); }
204
+ .comments-empty > .icon { width: 28px; height: 28px; margin-bottom: 18px; opacity: .7; }
205
+ .comments-empty strong { font-size: 13px; font-weight: 500; color: var(--text-2); }
206
+ .comments-empty p { line-height: 1.7; max-width: 230px; margin: 8px 0; }
207
+ .comment-card { padding: 12px 10px 14px; border-bottom: 1px solid var(--line); border-radius: 2px; }
208
+ .comment-card.selected { background: #1e2025; }
209
+ .comment-card-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
210
+ .comment-location { display: inline-flex; align-items: center; gap: 9px; padding: 0; border: 0; background: transparent; cursor: pointer; }
211
+ .comment-number { margin-right: 5px; color: var(--text-3); font: 500 11px var(--font-mono); }
212
+ .comment-actions { display: flex; align-items: center; gap: 1px; }
213
+ .comment-time { display: inline-flex; align-items: center; gap: 6px; min-height: 23px; padding: 2px 6px; background: var(--brand-soft); border: 0; border-radius: 3px; color: var(--brand-400); font: 500 11px/1.5 var(--font-mono); white-space: nowrap; }
214
+ .comment-time .icon { width: 13px; height: 13px; }
215
+ .comment-text { font-size: 13px; line-height: 1.7; color: var(--text); white-space: pre-wrap; overflow-wrap: anywhere; margin: 10px 0 0; }
216
+ .comment-card.resolved .comment-text { color: var(--text-3); }
217
+ .comment-composer { flex: none; border-top: 1px solid var(--line); padding: 14px 14px 12px; background: #18191d; }
218
+ .comment-anchor { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; margin-bottom: 10px; min-height: 24px; }
219
+ .comment-composer textarea, .comment-edit textarea { width: 100%; resize: none; background: #202227; color: var(--text); border: 1px solid #33363c; border-radius: 3px; padding: 10px 11px; font: 400 13px/1.7 var(--font-ui); display: block; min-height: 82px; user-select: text; }
220
+ .comment-composer textarea::placeholder { color: var(--text-3); }
221
+ .comments-panel textarea:focus { outline: none; box-shadow: none; }
222
+ .comment-edit textarea:focus { background: #292c32; }
223
+ .comments-panel textarea::selection { background: #dce1eb33; color: var(--text); }
224
+ .comment-input { border: 1px solid #33363c; border-radius: 4px; background: #202227; transition: background 120ms ease; }
225
+ .comment-input:focus-within { background: #292c32; }
226
+ .comment-input textarea { border: 0; background: transparent; }
227
+ .comment-input-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 2px 9px 9px; }
228
+ .comment-tools { display: flex; align-items: center; gap: 4px; }
229
+ .comment-tools .comments-icon { width: 28px; height: 28px; padding: 5px; }
230
+ .comment-tools .icon { width: 18px; height: 18px; }
231
+ .comment-submit { display: grid; place-items: center; flex: none; width: 30px; height: 30px; padding: 0; border: 0; border-radius: 50%; background: #e4e6eb; color: #202227; }
232
+ .comment-submit .icon { display: block; width: 18px; height: 18px; }
233
+ .comment-submit:hover:not(:disabled) { background: #fff; }
234
+ .comment-submit:disabled { opacity: 1; background: #35383f; color: #858b95; }
235
+ .comment-submit:focus-visible { outline: 1px solid #aeb3bc; outline-offset: 3px; }
236
+ .comments-error { color: var(--brand-200); font-size: 12px; line-height: 1.6; padding: 10px 14px; border-bottom: 1px solid var(--line); }
237
+ .comment-edit { margin-top: 10px; }
238
+ .comment-edit-actions { display: flex; justify-content: end; gap: 6px; margin-top: 8px; }
239
+ .comment-edit-actions button { padding: 4px 11px; border: 1px solid var(--line-strong); border-radius: 3px; background: var(--field); color: var(--text-2); }
240
+ .comment-edit-actions button[type="submit"] { color: var(--text); }
162
241
  .source-panel, .preview-panel, .workspace-panel, .timeline-panel {
163
242
  min-width: 0;
164
243
  min-height: 0;
@@ -602,7 +681,7 @@ button:focus-visible, textarea:focus-visible {
602
681
  margin: 10px 12px 4px;
603
682
  padding: 2px;
604
683
  border-radius: 5px;
605
- background: #101114;
684
+ background: var(--subtab-surface);
606
685
  overflow: hidden;
607
686
  }
608
687
  .inspector-subtab {
@@ -626,7 +705,7 @@ button:focus-visible, textarea:focus-visible {
626
705
  line-height: 1;
627
706
  white-space: nowrap;
628
707
  }
629
- .inspector-subtab.active { background: #24262a; color: #c9cbd0; }
708
+ .inspector-subtab.active { background: var(--subtab-active-surface); color: var(--subtab-active-text); }
630
709
  .inspector-empty { padding: 28px 14px; color: var(--text-3); font-size: 11px; text-align: center; }
631
710
  .property-group { min-width: 0; padding: 14px 14px 16px; border-bottom: 1px solid var(--line); }
632
711
  .property-group h3 { margin: 0 0 10px; color: #c4c6cc; font-size: 11px; font-weight: 500; }
@@ -689,6 +768,7 @@ button:focus-visible, textarea:focus-visible {
689
768
  caret-color: var(--interaction-accent);
690
769
  cursor: text !important;
691
770
  }
771
+ .parameter-display { width: 100%; padding: 5px 7px; color: var(--text-2); font-size: 11px; line-height: 1.2; text-align: right; overflow-wrap: anywhere; user-select: text; font-variant-numeric: tabular-nums; }
692
772
  .parameter-value:focus { border-color: #6a6e77; outline: 0; background: #131417; }
693
773
  .control-boolean .parameter-right { justify-content: flex-end; }
694
774
  .control-boolean .parameter-value {
@@ -745,8 +825,8 @@ button:focus-visible, textarea:focus-visible {
745
825
  .parameter-color-value { width: min(100%, 102px); }
746
826
  .control-list,
747
827
  .control-record { grid-template-columns: minmax(0, 1fr); align-items: stretch; gap: 6px; }
748
- .control-list .parameter-right,
749
- .control-record .parameter-right { grid-column: 1 / -1; width: 100%; }
828
+ .control-list > .parameter-right,
829
+ .control-record > .parameter-right { grid-column: 1 / -1; width: 100%; }
750
830
  .parameter-structured { min-width: 0; width: 100%; }
751
831
  .parameter-structured-summary {
752
832
  min-height: 20px;
@@ -786,20 +866,6 @@ button:focus-visible, textarea:focus-visible {
786
866
  .parameter-list-actions button:not(:disabled):focus-visible { outline: 1px solid #62666f; }
787
867
  .parameter-list-actions .icon { width: 11px; height: 11px; }
788
868
  .parameter-record-fields { min-width: 0; display: flex; flex-direction: column; gap: 5px; }
789
- .parameter-record-field {
790
- min-width: 0;
791
- display: grid;
792
- grid-template-columns: 58px minmax(0, 1fr);
793
- align-items: center;
794
- gap: 7px;
795
- }
796
- .parameter-record-field > span:first-child {
797
- overflow: hidden;
798
- color: #6f737c;
799
- font-size: 10px;
800
- text-overflow: ellipsis;
801
- white-space: nowrap;
802
- }
803
869
  .parameter-structured-footer {
804
870
  min-height: 30px;
805
871
  display: flex;
@@ -818,10 +884,10 @@ button:focus-visible, textarea:focus-visible {
818
884
  font: 10px/1 var(--font-ui);
819
885
  }
820
886
  .parameter-structured-footer button:disabled { color: #454850; background: #16171a; }
821
- .parameter-structured-footer button.primary:not(:disabled) { border-color: #555962; background: #292b30; color: #e0e2e6; }
822
887
  .parameter-structured-add { display: inline-flex; align-items: center; gap: 4px; }
823
888
  .parameter-structured-add .icon { width: 11px; height: 11px; }
824
- .parameter-structured-decisions { display: flex; align-items: center; gap: 4px; margin-left: auto; }
889
+ .parameter-structured-notice { margin-top: 6px; color: var(--text-3); font: 10px/1.4 var(--font-ui); }
890
+ .parameter-structured-notice[hidden] { display: none; }
825
891
  .parameter-select { position: relative; width: 100%; min-width: 0; }
826
892
  .parameter-select-trigger {
827
893
  width: 100%;
@@ -1016,10 +1082,13 @@ button:focus-visible, textarea:focus-visible {
1016
1082
  transform: translateY(-50%);
1017
1083
  }
1018
1084
  .track-tone-blue { --track: var(--tone-blue); --rail: var(--tone-blue-rail); }
1085
+ .track-tone-blue-muted { --track: var(--tone-blue-muted); --rail: var(--tone-blue-muted-rail); }
1019
1086
  .track-tone-green { --track: var(--tone-green); --rail: var(--tone-green-rail); }
1087
+ .track-tone-green-muted { --track: var(--tone-green-muted); --rail: var(--tone-green-muted-rail); }
1020
1088
  .track-tone-teal { --track: var(--tone-teal); --rail: var(--tone-teal-rail); }
1021
1089
  .track-tone-violet { --track: var(--tone-violet); --rail: var(--tone-violet-rail); }
1022
1090
  .track-tone-magenta { --track: var(--tone-magenta); --rail: var(--tone-magenta-rail); }
1091
+ .track-tone-magenta-muted { --track: var(--tone-magenta-muted); --rail: var(--tone-magenta-muted-rail); }
1023
1092
  .track-tone-orange { --track: var(--tone-orange); --rail: var(--tone-orange-rail); }
1024
1093
  .track-tone-orange-muted { --track: var(--tone-orange-muted); --rail: var(--tone-orange-muted-rail); }
1025
1094
  .track-tone-neutral { --track: var(--tone-neutral); --rail: var(--tone-neutral-rail); }
@@ -1083,8 +1152,10 @@ button:focus-visible, textarea:focus-visible {
1083
1152
  height: var(--semantic-band-height);
1084
1153
  overflow: hidden;
1085
1154
  background: var(--lane);
1155
+ box-shadow: inset 0 -1px var(--line);
1156
+ isolation: isolate;
1086
1157
  }
1087
- .semantic-band-intent { border-bottom: 0; }
1158
+ .semantic-band:last-child { box-shadow: none; }
1088
1159
  .lane-attached {
1089
1160
  border-left: 0;
1090
1161
  background: var(--lane);
@@ -1104,12 +1175,12 @@ button:focus-visible, textarea:focus-visible {
1104
1175
  border: 0;
1105
1176
  border-radius: 0;
1106
1177
  background: var(--semantic-cell);
1107
- box-shadow: none;
1178
+ box-shadow: inset 0 0 0 1px #ffffff12;
1108
1179
  color: var(--text);
1109
1180
  text-align: left;
1110
1181
  cursor: default;
1111
1182
  }
1112
- .semantic-cell:focus-visible { outline: 0; }
1183
+ .semantic-cell:focus-visible { outline: 0; box-shadow: inset 0 0 0 1px #ffffff60; }
1113
1184
  .semantic-segment {
1114
1185
  --semantic-cell: var(--semantic-segment);
1115
1186
  }
@@ -1120,11 +1191,9 @@ button:focus-visible, textarea:focus-visible {
1120
1191
  --semantic-cell: var(--semantic-intent);
1121
1192
  color: #fff;
1122
1193
  }
1123
- .semantic-cell.selected,
1124
- .semantic-cell.live { z-index: 4; filter: brightness(1.22); }
1125
- .semantic-segment.selected { box-shadow: none; }
1126
- .semantic-segment.live.selected { filter: brightness(1.22); }
1127
- .semantic-moment.selected { z-index: 4; filter: brightness(1.22); }
1194
+ .semantic-cell.live { filter: brightness(1.12); }
1195
+ .semantic-cell.selected { z-index: 4; filter: brightness(1.16); box-shadow: inset 0 0 0 1px #ffffff60; }
1196
+ .semantic-moment.selected { z-index: 5; filter: brightness(1.16); box-shadow: inset 0 0 0 1px #ffffff60; }
1128
1197
  .semantic-segment-label {
1129
1198
  flex: 1 1 auto;
1130
1199
  min-width: 0;
@@ -1170,21 +1239,19 @@ button:focus-visible, textarea:focus-visible {
1170
1239
  .semantic-word .semantic-cell-content { padding: 0 5px; }
1171
1240
  .semantic-moment {
1172
1241
  position: absolute;
1173
- top: 4px;
1174
- width: 14px;
1175
- height: 14px;
1176
- transform: translateX(-7px) rotate(45deg);
1242
+ top: calc((var(--semantic-band-height) - 9px) / 2);
1243
+ z-index: 1;
1244
+ width: 9px;
1245
+ height: 9px;
1246
+ transform: translateX(-50%) scaleX(.6) rotate(45deg);
1177
1247
  border-radius: 0;
1178
1248
  padding: 0;
1179
- border: 0;
1180
- background: var(--semantic-intent);
1249
+ border: 1px solid var(--lane);
1250
+ background: var(--semantic-moment);
1181
1251
  }
1182
1252
  .semantic-moment:focus-visible { outline: 0; }
1183
- .track-label-semantic { position: sticky; top: var(--timeline-ruler-height); z-index: 8; border-bottom: 1px solid var(--line); background: #111216; }
1184
- .track-label-semantic::before {
1185
- border-radius: 0;
1186
- background: #181a1f;
1187
- }
1253
+ .track-label-semantic { position: sticky; top: 0; z-index: 8; border-bottom: 1px solid var(--line); background: #111216; }
1254
+ .track-label-semantic::before { display: none; }
1188
1255
  .track-label-attached {
1189
1256
  /* The branch marker occupies the same 18px prefix as a root icon;
1190
1257
  attached and root labels therefore share one exact text column. */
@@ -1207,7 +1274,6 @@ button:focus-visible, textarea:focus-visible {
1207
1274
  display: block;
1208
1275
  padding: 0;
1209
1276
  border: 0;
1210
- border-bottom: 1px solid color-mix(in srgb, var(--track) 48%, var(--lane));
1211
1277
  border-radius: var(--timeline-item-radius);
1212
1278
  background: var(--item-body);
1213
1279
  box-shadow: none;
@@ -1215,8 +1281,7 @@ button:focus-visible, textarea:focus-visible {
1215
1281
  text-align: left;
1216
1282
  cursor: default;
1217
1283
  }
1218
- /* The edge affordance is intentionally visual-only for now. Actual trim and
1219
- writeback remain disabled until their SVML mapping is implemented. */
1284
+ /* Only Companion-declared editable intervals enable edge gestures. */
1220
1285
  #app .clip::before,
1221
1286
  #app .clip::after {
1222
1287
  content: "";
@@ -1244,10 +1309,19 @@ button:focus-visible, textarea:focus-visible {
1244
1309
  }
1245
1310
  .clip.editing { box-shadow: 0 0 0 1px #fff; }
1246
1311
  .clip:focus-visible { outline: 0; }
1312
+ /* Draw above thumbnails and text without changing interval geometry. */
1313
+ .clip-boundary {
1314
+ position: absolute;
1315
+ z-index: 5;
1316
+ inset: 0;
1317
+ border: 1px solid #ffffff20;
1318
+ border-radius: inherit;
1319
+ pointer-events: none;
1320
+ }
1247
1321
  .clip-selection {
1248
1322
  position: absolute;
1249
1323
  z-index: 6;
1250
- inset: calc(-1 * var(--timeline-selection-stroke));
1324
+ inset: 0;
1251
1325
  display: none;
1252
1326
  border: var(--timeline-selection-stroke) solid var(--timeline-selection-color);
1253
1327
  border-radius: var(--timeline-selection-radius);
@@ -1256,20 +1330,21 @@ button:focus-visible, textarea:focus-visible {
1256
1330
  .clip-selection::before, .clip-selection::after {
1257
1331
  content: "";
1258
1332
  position: absolute;
1259
- top: -1px;
1260
- bottom: -1px;
1333
+ top: 0;
1334
+ bottom: 0;
1261
1335
  width: var(--timeline-selection-edge);
1262
1336
  background: var(--timeline-selection-color);
1263
1337
  }
1264
1338
  .clip-selection::before {
1265
- left: calc(-1 * var(--timeline-selection-stroke));
1339
+ left: 0;
1266
1340
  border-radius: var(--timeline-selection-radius) 0 0 var(--timeline-selection-radius);
1267
1341
  }
1268
1342
  .clip-selection::after {
1269
- right: calc(-1 * var(--timeline-selection-stroke));
1343
+ right: 0;
1270
1344
  border-radius: 0 var(--timeline-selection-radius) var(--timeline-selection-radius) 0;
1271
1345
  }
1272
1346
  .clip.selected > .clip-selection { display: block; }
1347
+ .clip.selected > .clip-boundary { border-color: var(--timeline-selection-color); }
1273
1348
  .clip-head {
1274
1349
  position: absolute;
1275
1350
  z-index: 3;
@@ -1288,6 +1363,7 @@ button:focus-visible, textarea:focus-visible {
1288
1363
  }
1289
1364
  .clip-body {
1290
1365
  position: absolute;
1366
+ z-index: 1;
1291
1367
  top: var(--timeline-item-header-height);
1292
1368
  right: 0;
1293
1369
  bottom: 0;
@@ -1346,10 +1422,13 @@ button:focus-visible, textarea:focus-visible {
1346
1422
  font-variant-numeric: tabular-nums;
1347
1423
  }
1348
1424
  .clip-tone-blue { --track: var(--tone-blue); }
1425
+ .clip-tone-blue-muted { --track: var(--tone-blue-muted); }
1349
1426
  .clip-tone-green { --track: var(--tone-green); }
1427
+ .clip-tone-green-muted { --track: var(--tone-green-muted); }
1350
1428
  .clip-tone-teal { --track: var(--tone-teal); }
1351
1429
  .clip-tone-violet { --track: var(--tone-violet); }
1352
1430
  .clip-tone-magenta { --track: var(--tone-magenta); }
1431
+ .clip-tone-magenta-muted { --track: var(--tone-magenta-muted); }
1353
1432
  .clip-tone-orange { --track: var(--tone-orange); }
1354
1433
  .clip-tone-orange-muted { --track: var(--tone-orange-muted); }
1355
1434
  .clip-tone-neutral { --track: var(--tone-neutral); }
@@ -1503,14 +1582,96 @@ button:focus-visible, textarea:focus-visible {
1503
1582
  .stage-audio-wave { width: 85%; padding: 24px 12px; border-radius: 2px; color: #b5c2bb; background: #202824; text-align: center; }
1504
1583
  .stage-audio-wave img { display: block; width: 100%; height: 100px; }
1505
1584
  .stage-media-error { position: absolute; bottom: 12px; padding: 8px; background: #24262b; color: #cacdd4; font-size: 11px; }
1506
- .stage-scrubber { flex: none; width: 100%; height: 10px; padding: 0; margin: -5px 0; z-index: 2; appearance: none; background: transparent; cursor: pointer; }
1585
+ .stage-progress { position: relative; flex: none; height: 0; z-index: 2; }
1586
+ .stage-progress[hidden], .scrub-preview[hidden] { display: none; }
1587
+ .stage-scrubber { position: absolute; inset: -5px 0 auto; width: 100%; height: 10px; padding: 0; margin: 0; appearance: none; background: transparent; cursor: pointer; }
1507
1588
  .stage-scrubber::-webkit-slider-runnable-track { height: 2px; background: #676c75; }
1508
1589
  .stage-scrubber::-webkit-slider-thumb { appearance: none; width: 8px; height: 8px; border-radius: 50%; margin-top: -3px; background: #e1e4e9; }
1509
1590
  .stage-scrubber::-moz-range-track { height: 2px; background: #676c75; }
1510
1591
  .stage-scrubber::-moz-range-thumb { width: 8px; height: 8px; border: 0; background: #e1e4e9; }
1592
+ .stage-review .stage-scaler, .stage-review .stage-viewport { cursor: pointer; }
1593
+ .stage-review .stage-progress { height: 24px; margin: 0 20px; }
1594
+ .stage-review .stage-scrubber { top: 0; height: 24px; }
1595
+ .stage-review .stage-scrubber::-webkit-slider-runnable-track { height: 4px; border-radius: 2px; background: #565b64; }
1596
+ .stage-review .stage-scrubber::-webkit-slider-thumb { width: 12px; height: 12px; margin-top: -4px; }
1597
+ .stage-review .stage-scrubber::-moz-range-track { height: 4px; border-radius: 2px; background: #565b64; }
1598
+ .stage-review .stage-scrubber::-moz-range-thumb { width: 12px; height: 12px; }
1599
+ .scrub-preview { position: absolute; bottom: calc(100% + 8px); padding: 3px; border: 1px solid #4b4f56; border-radius: 4px; background: #1b1d21; box-shadow: 0 4px 16px #0006; pointer-events: none; }
1600
+ .scrub-preview-picture { position: relative; display: grid; place-items: center; overflow: hidden; background: #111215; }
1601
+ .scrub-preview-picture iframe { position: absolute; top: 0; left: 0; border: 0; transform-origin: top left; pointer-events: none; }
1602
+ .scrub-preview-picture span { padding: 8px; color: var(--text-3); font: 10px var(--font-ui); text-align: center; }
1603
+ .scrub-preview-picture span[hidden] { display: none; }
1604
+ .scrub-preview-time { padding: 5px 3px 2px; color: #d5d8df; font: 10px var(--font-mono); text-align: center; }
1511
1605
 
1512
1606
  .preview-unavailable .artifact-type { position: static; width: auto; height: auto; clip-path: none; color: #9298a2; font-size: 10px; }
1513
1607
 
1514
1608
  .artifact-card.selected .artifact-preview { background: var(--artifact-selection); border-radius: 3px; }
1515
1609
  .artifact-card.selected .artifact-name-text { color: #f1f2f5; background: var(--artifact-selection); }
1516
1610
  .library-continuation { grid-column: 1 / -1; height: 28px; display: grid; place-items: center; color: #777e89; font-size: 10px; }
1611
+
1612
+ .timeline-overlap-menu, .selection-menu {
1613
+ position: fixed;
1614
+ z-index: 100;
1615
+ min-width: 160px;
1616
+ max-width: 280px;
1617
+ max-height: 240px;
1618
+ overflow: auto;
1619
+ padding: 4px;
1620
+ border: 1px solid var(--line-strong);
1621
+ border-radius: 5px;
1622
+ background: var(--panel-raised);
1623
+ box-shadow: 0 6px 20px #0006;
1624
+ }
1625
+ .timeline-overlap-menu button, .selection-menu button {
1626
+ display: block;
1627
+ width: 100%;
1628
+ padding: 6px 9px;
1629
+ border: 0;
1630
+ border-radius: 2px;
1631
+ background: transparent;
1632
+ color: var(--text);
1633
+ font-family: inherit;
1634
+ font-size: 12px;
1635
+ line-height: 1.4;
1636
+ text-align: left;
1637
+ overflow-wrap: anywhere;
1638
+ }
1639
+ .timeline-overlap-menu button:hover,
1640
+ .timeline-overlap-menu button:focus-visible,
1641
+ .selection-menu button:hover,
1642
+ .selection-menu button:focus-visible { background: var(--field); outline: none; }
1643
+
1644
+ /* Compact authored rules keep interval geometry without a thumbnail body. */
1645
+ .clip-chrome-compact > .clip-head {
1646
+ height: 100%;
1647
+ border-bottom: 0;
1648
+ border-radius: var(--timeline-item-radius);
1649
+ background: var(--item-head);
1650
+ }
1651
+ .clip-chrome-compact > .clip-body,
1652
+ .clip-chrome-compact .clip-meta { display: none; }
1653
+ .clip-chrome-compact .clip-name { font-size: 11px; font-weight: 500; }
1654
+
1655
+ /* Track-internal bands share one label and meet without child-track gutters. */
1656
+ .timeline-track-banded { padding: var(--timeline-item-inset-y) 0; }
1657
+ .timeline-track-banded > .track-band { border-bottom: 0; }
1658
+ .timeline-track-banded > .track-band > .clip {
1659
+ height: 100%;
1660
+ margin-top: 0;
1661
+ border-radius: 0;
1662
+ }
1663
+ .timeline-track-banded > .track-band:first-child > .clip {
1664
+ border-top-left-radius: var(--timeline-item-radius);
1665
+ border-top-right-radius: var(--timeline-item-radius);
1666
+ }
1667
+ .timeline-track-banded > .track-band:last-child > .clip {
1668
+ border-bottom-left-radius: var(--timeline-item-radius);
1669
+ border-bottom-right-radius: var(--timeline-item-radius);
1670
+ }
1671
+ .track-band .clip-head, .track-band .clip-body { border-radius: inherit; }
1672
+ .track-band-label .clip-head {
1673
+ height: 100%;
1674
+ border-bottom: 0;
1675
+ background: var(--item-head);
1676
+ }
1677
+ .track-band-label .clip-body, .track-band-label .clip-meta { display: none; }