@higgsfield/video-editor-mcp 1.0.7 → 1.1.1-dev.0

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 (189) hide show
  1. package/THIRD_PARTY_NOTICES.md +24 -24
  2. package/dist/cli.mjs +134 -125
  3. package/dist/index.html +136 -133
  4. package/dist/launcher.mjs +90 -90
  5. package/dist/server.mjs +1553 -1389
  6. package/node_modules/@higgsfield/higgsedit/README.md +181 -1
  7. package/node_modules/@higgsfield/higgsedit/dist/capture-page.js +902 -314
  8. package/node_modules/@higgsfield/higgsedit/dist/chunk-2JYLVSVV.mjs +1594 -0
  9. package/node_modules/@higgsfield/higgsedit/dist/chunk-2WKNH7OL.mjs +16 -0
  10. package/node_modules/@higgsfield/higgsedit/dist/{chunk-OMKZ5BXM.mjs → chunk-5LTTL3Q3.mjs} +1 -1
  11. package/node_modules/@higgsfield/higgsedit/dist/chunk-7PYXSJS7.mjs +717 -0
  12. package/node_modules/@higgsfield/higgsedit/dist/{chunk-MLJAIZGP.mjs → chunk-BH2QF635.mjs} +33 -326
  13. package/node_modules/@higgsfield/higgsedit/dist/{chunk-WZR5PZM7.mjs → chunk-BV5COOQZ.mjs} +250 -161
  14. package/node_modules/@higgsfield/higgsedit/dist/{chunk-HTCYVKFX.mjs → chunk-C3GSB3XZ.mjs} +8 -7
  15. package/node_modules/@higgsfield/higgsedit/dist/{chunk-CYH2EUQV.mjs → chunk-DVN4LUXV.mjs} +13 -4
  16. package/node_modules/@higgsfield/higgsedit/dist/chunk-F4CMIG5G.mjs +36 -0
  17. package/node_modules/@higgsfield/higgsedit/dist/chunk-IEPPEDEU.mjs +33 -0
  18. package/node_modules/@higgsfield/higgsedit/dist/{chunk-UVAZ6I6U.mjs → chunk-KIWGVAPJ.mjs} +16 -12
  19. package/node_modules/@higgsfield/higgsedit/dist/{chunk-L6QDNSL3.mjs → chunk-L5LWBA6A.mjs} +5 -5
  20. package/node_modules/@higgsfield/higgsedit/dist/chunk-LMQR3DHT.mjs +37 -0
  21. package/node_modules/@higgsfield/higgsedit/dist/chunk-LTKMGZ6T.mjs +58 -0
  22. package/node_modules/@higgsfield/higgsedit/dist/{chunk-VI6IV6JP.mjs → chunk-MV2JTTBQ.mjs} +65 -47
  23. package/node_modules/@higgsfield/higgsedit/dist/{chunk-4D6AXU4B.mjs → chunk-NARTAWRN.mjs} +50 -30
  24. package/node_modules/@higgsfield/higgsedit/dist/{chunk-27NBQ5FA.mjs → chunk-NUXTKQNM.mjs} +33 -21
  25. package/node_modules/@higgsfield/higgsedit/dist/chunk-OCIZ36XD.mjs +40 -0
  26. package/node_modules/@higgsfield/higgsedit/dist/{chunk-MK6PL7N4.mjs → chunk-OF6RMSM2.mjs} +19 -17
  27. package/node_modules/@higgsfield/higgsedit/dist/{chunk-6BETMESC.mjs → chunk-P2BGHTRR.mjs} +2 -2
  28. package/node_modules/@higgsfield/higgsedit/dist/{chunk-EKFC4S4M.mjs → chunk-PAHMD6SU.mjs} +5 -0
  29. package/node_modules/@higgsfield/higgsedit/dist/{chunk-QVLAEV3U.mjs → chunk-PFQYUJQL.mjs} +3 -4
  30. package/node_modules/@higgsfield/higgsedit/dist/chunk-QJTILFBS.mjs +335 -0
  31. package/node_modules/@higgsfield/higgsedit/dist/chunk-QQ3GGKDN.mjs +21 -0
  32. package/node_modules/@higgsfield/higgsedit/dist/chunk-TH7TK67K.mjs +23 -0
  33. package/node_modules/@higgsfield/higgsedit/dist/{chunk-SIMO6I3D.mjs → chunk-UDL5AHKO.mjs} +163 -158
  34. package/node_modules/@higgsfield/higgsedit/dist/chunk-UMWOUQN3.mjs +60 -0
  35. package/node_modules/@higgsfield/higgsedit/dist/{chunk-3AIM3THH.mjs → chunk-VLM5EOWJ.mjs} +4 -4
  36. package/node_modules/@higgsfield/higgsedit/dist/chunk-WENFTPXQ.mjs +403 -0
  37. package/node_modules/@higgsfield/higgsedit/dist/chunk-YLVXQIPX.mjs +464 -0
  38. package/node_modules/@higgsfield/higgsedit/dist/editor/.vite/manifest.json +559 -506
  39. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/agent-corner-bottom-q4hZltI-.svg +431 -0
  40. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/agent-corner-top-BJYI-I24.svg +431 -0
  41. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/confirmation-BTnwl3LS.css +1 -0
  42. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/drag-Bt_t4HZO.css +1 -0
  43. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/local-B3OTAV_A.css +1 -0
  44. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/menubar-2Y1Y2XJt.css +1 -0
  45. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/model-DdE4hCgf.css +1 -0
  46. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/{IconText1-CzbCrP7v.css → notifications-B08L1jSe.css} +1 -1
  47. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/{panel-g852pZf_.css → panel-BRN_AbBM.css} +1 -1
  48. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/panel-CYELNqrv.css +1 -0
  49. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/panel-DYLpT6oA.css +1 -0
  50. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/panel-v84HaGTZ.css +1 -0
  51. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconChainLink1-Bxb1Or0F.js +1 -0
  52. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/{IconCheckmark2Medium-daaES9uF.js → IconCheckmark2Medium-hegaz9mQ.js} +1 -1
  53. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/{IconChevronDownSmall-BhTBJk26.js → IconChevronDownSmall-DaruzJwU.js} +1 -1
  54. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconClosedCaptioning-BPqcqKsD.js +1 -0
  55. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/{IconCrossMedium-acfnCXOM.js → IconCrossMedium-BsPFJzc6.js} +1 -1
  56. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconOpenaiFilled-D1fzthmi.js +1 -0
  57. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/{IconPause-pTeVSvUe.js → IconPause-ClNg8pao.js} +1 -1
  58. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/{IconPlayFilled-CwdgIuDG.js → IconPlayFilled-CHb-7GSx.js} +1 -1
  59. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconSparklesSoftFilled-o7o33KRn.js +1 -0
  60. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/ai-composer-B9h-eaki.js +567 -0
  61. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/auto-layout-BO20Tg4B.js +1 -0
  62. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/{button-CjG6GcgF.js → button-Cg0U0zpV.js} +1 -1
  63. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/canvas-Bw4CVzfw.js +1 -0
  64. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/capabilities-BCd4-zPF.js +1 -0
  65. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/commands-QeSqAbCt.js +1 -0
  66. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/components-tXMtIZNL.js +51 -0
  67. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/confirmation-CO2PHR_z.js +1 -0
  68. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/dom-6aoQn29n.js +1 -0
  69. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/drag-Dw8b_vO2.js +1 -0
  70. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/{editing-CjWbiCxv.js → editing-Cy-SaOyB.js} +1 -1
  71. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/edits-CqLBqir0.js +1 -0
  72. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/export-dialog-BjBskOe3.js +2 -0
  73. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/factories-Bw_iQrUL.js +1 -0
  74. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/id3-CSR0NCRI.js +2 -0
  75. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/import-DP49i4ke.js +1 -0
  76. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/import-error-CMz9sLPe.js +1 -0
  77. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/ingest-DsmIc415.js +1 -0
  78. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/jsx-runtime-B5yqYJvp.js +1 -0
  79. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/{media-Bwjxu-0U.js → media-DQw6vU_T.js} +1 -1
  80. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/menubar-D31srALX.js +1 -0
  81. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/meters-D0nZVEJs.js +1 -0
  82. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/mode-DEG6doKF.js +1 -0
  83. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/model-Duf9fszJ.js +2 -0
  84. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/model-DyAkLA69.js +1 -0
  85. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/notifications-DqWZNIrK.js +9 -0
  86. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/palette-HT83gWgL.js +1 -0
  87. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-B5Mvm6dg.js +7 -0
  88. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-BC90wyvd.js +1 -0
  89. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-Bw_ZJ2JI.js +3 -0
  90. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-DNS060Nt.js +3 -0
  91. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-DSgxIrEq.js +2 -0
  92. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-DgBttE5O.js +1 -0
  93. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-assets-_T2bHsHW.js +771 -0
  94. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-inspector-DfHvAt5X.js +2 -0
  95. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-nBZvHlkA.js +1 -0
  96. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-timeline-DsCpJVSt.js +327 -0
  97. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-viewport-CEhZwZ67.js +280 -0
  98. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/projects-2_tW9Do7.js +1 -0
  99. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/react-dom-1uB7Vbbb.js +1 -0
  100. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/schemas-CddYAOcj.js +64 -0
  101. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/session-BpFeKAI2.js +1 -0
  102. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/src-BLG3tYBa.js +2 -0
  103. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/styles-e2n2A_JN.js +284 -0
  104. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/supercomputer-CuV0zYKd.js +24 -0
  105. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/tabs-XeAgs9cs.js +1 -0
  106. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/toggle-DbNEaSIl.js +1 -0
  107. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/transport-C8Ll3qFl.js +69 -0
  108. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/transport-bar-Dv1LPFbu.js +1 -0
  109. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/useOpenInteractionType-HWSfSsp2.js +1 -0
  110. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/useRenderElement-D4SOg3N_.js +1 -0
  111. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/value-EB7YmAdS.js +1 -0
  112. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/writeback-support-fj5rA9k3.js +1 -0
  113. package/node_modules/@higgsfield/higgsedit/dist/editor/editor-B-WAkLt7.js +372 -0
  114. package/node_modules/@higgsfield/higgsedit/dist/higgsedit.mjs +39 -24
  115. package/node_modules/@higgsfield/higgsedit/dist/jsx/hooks.d.ts +26 -0
  116. package/node_modules/@higgsfield/higgsedit/dist/jsx/index.d.ts +17 -0
  117. package/node_modules/@higgsfield/higgsedit/dist/jsx/inspect.d.ts +42 -0
  118. package/node_modules/@higgsfield/higgsedit/dist/jsx/jsx-runtime.d.ts +28 -0
  119. package/node_modules/@higgsfield/higgsedit/dist/jsx/svg.d.ts +9 -0
  120. package/node_modules/@higgsfield/higgsedit/dist/jsx/time.d.ts +6 -0
  121. package/node_modules/@higgsfield/higgsedit/dist/jsx/types.d.ts +420 -0
  122. package/node_modules/@higgsfield/higgsedit/package.json +28 -20
  123. package/package.json +4 -3
  124. package/plugin/.codex-plugin/plugin.json +1 -1
  125. package/plugin/plugin.json +1 -1
  126. package/plugin/skills/video-editing/references/caption-titling.md +1 -1
  127. package/plugin/skills/video-editing/references/local-setup.md +3 -3
  128. package/node_modules/@higgsfield/higgsedit/dist/chunk-C6SASQHE.mjs +0 -424
  129. package/node_modules/@higgsfield/higgsedit/dist/chunk-FZ5U36SQ.mjs +0 -83
  130. package/node_modules/@higgsfield/higgsedit/dist/chunk-QLPCYN6K.mjs +0 -292
  131. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/edit-drag-D2EV5ddd.css +0 -1
  132. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/editor-CuRHT75g.css +0 -1
  133. package/node_modules/@higgsfield/higgsedit/dist/editor/assets/panel-DnuQD7ja.css +0 -1
  134. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/FieldControl-B0fenhBJ.js +0 -2
  135. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconChainLink1-Cwv1X7hi.js +0 -1
  136. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconEyeOpen-BqTT9_VV.js +0 -1
  137. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconEyeSlash-Whv58c1m.js +0 -1
  138. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconPencil-Dr17k_7e.js +0 -1
  139. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconPlay-BroH3ziH.js +0 -1
  140. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconPlusSmall-43T9aE3d.js +0 -1
  141. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconText1-BaP_p9DW.js +0 -1
  142. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/IconTrashCan-DX2w2AIC.js +0 -1
  143. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/ai-composer-C-l0eIdP.js +0 -560
  144. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/captions-Cd-bDG3G.js +0 -1
  145. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/clip-highlight-DpAvcA4x.js +0 -1
  146. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/components-e3ZbUVns.js +0 -1
  147. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/disposables-CwUPjcuA.js +0 -1
  148. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/drag-HLBkto5o.js +0 -1
  149. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/dropdown-BJ04G_X3.js +0 -1
  150. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/edit-drag-Bg6LggKC.js +0 -1
  151. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/edits-a2IixhrN.js +0 -1
  152. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/export-dialog-4I4gqI5V.js +0 -2
  153. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/face-tracker-DzVfjVOO.js +0 -1
  154. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/fit-imported-media-CaCB0x0b.js +0 -1
  155. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/generation-queue-DuL2F4-_.js +0 -1
  156. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/import-error-CMARA0Hy.js +0 -1
  157. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/jsx-runtime-B-hcVAMW.js +0 -1
  158. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/menubar-Bs26OdwP.js +0 -1
  159. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/meters-YEr9OQjq.js +0 -1
  160. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/paints-DS2Msf91.js +0 -67
  161. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/palette-CcS9IcAC.js +0 -1
  162. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-7M3uQokX.js +0 -1
  163. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-BBK1NyG-.js +0 -1
  164. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-CHZTs7By.js +0 -4
  165. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-DaSOa3MP.js +0 -2
  166. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-DlK3RYVo.js +0 -1
  167. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-Dst5OKWu.js +0 -2
  168. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-H_ZoDiKK.js +0 -2
  169. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-Rn9Z7Eek.js +0 -3
  170. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-assets-FAghGFG3.js +0 -678
  171. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-inspector-DEqULBNF.js +0 -260
  172. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-timeline-0GYNz1uc.js +0 -333
  173. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/panel-viewport-DOWjJi5-.js +0 -317
  174. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/projects-BBJc7h5_.js +0 -2
  175. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/session-B9sZaFKC.js +0 -1
  176. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/supercomputer-CX-LCL6Y.js +0 -24
  177. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/tabs-CvKQ-eas.js +0 -1
  178. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/toggle-CrzrwiDZ.js +0 -1
  179. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/transport-BgRfk-Qq.js +0 -69
  180. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/transport-bar-C9nqAfE2.js +0 -1
  181. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/typography-C5-w9LOu-kD3uLKkf.js +0 -1
  182. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/useOpenInteractionType-DbrQ6Ehu.js +0 -1
  183. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/useRenderElement-bbxXdYq0.js +0 -1
  184. package/node_modules/@higgsfield/higgsedit/dist/editor/chunks/writeback-support-BZfNpkmB.js +0 -1
  185. package/node_modules/@higgsfield/higgsedit/dist/editor/editor-Csn2_T_e.js +0 -293
  186. package/node_modules/@higgsfield/higgsedit/dist/export-settings.mjs +0 -75
  187. package/node_modules/@higgsfield/higgsedit/dist/history.mjs +0 -295
  188. package/node_modules/@higgsfield/higgsedit/dist/media-upload.mjs +0 -381
  189. package/node_modules/@higgsfield/higgsedit/dist/proxy.mjs +0 -170
@@ -0,0 +1,420 @@
1
+ import type { JSX } from "solid-js";
2
+ /** Seconds, `"30f"` (frames at the scene fps) or `"MM:SS"` / `"HH:MM:SS"`. */
3
+ export type Time = number | `${number}f` | `${number}:${number}` | `${number}:${number}:${number}`;
4
+ /** Accessor props are re-applied by Solid whenever their signals change. */
5
+ export type Value<T> = T | (() => T);
6
+ /**
7
+ * How a keyframe segment moves from its value to the next one's. `step` holds the value and jumps to the next at
8
+ * the next keyframe's time. `cubicBezier(x1, y1, x2, y2)` takes CSS control points.
9
+ */
10
+ export type Easing = "linear" | "easeIn" | "easeOut" | "easeInOut" | "step" | `cubicBezier(${string})`;
11
+ /** `[time relative to the element's start, value, easing of the segment that starts here]`. */
12
+ export type Keyframe<T> = readonly [Time, T] | readonly [Time, T, Easing];
13
+ export type AnimatableProps = {
14
+ x: number;
15
+ y: number;
16
+ width: number;
17
+ height: number;
18
+ rotation: number;
19
+ scale: number;
20
+ scaleX: number;
21
+ scaleY: number;
22
+ opacity: number;
23
+ cornerRadius: number;
24
+ fontSize: number;
25
+ /**
26
+ * A CSS colour. `#rgb`, `#rgba`, `#rrggbb`, `#rrggbbaa`, `rgb()` and `rgba()` interpolate; any other colour
27
+ * (a name, `hsl()`) holds until the segment's end and then snaps to the next.
28
+ */
29
+ fill: string;
30
+ blur: number;
31
+ shadowBlur: number;
32
+ shadowOffsetX: number;
33
+ shadowOffsetY: number;
34
+ strokeWidth: number;
35
+ maskX: number;
36
+ maskY: number;
37
+ maskWidth: number;
38
+ maskHeight: number;
39
+ /** `<text>`: px between glyphs. */
40
+ letterSpacing: number;
41
+ /** `<text>`: line height as a multiple of the font size. */
42
+ lineHeight: number;
43
+ };
44
+ /** CSS mix-blend-mode names; "normal" draws over. */
45
+ export type BlendMode = "normal" | "multiply" | "screen" | "overlay" | "darken" | "lighten" | "color-dodge" | "color-burn" | "hard-light" | "soft-light" | "difference" | "exclusion" | "hue" | "saturation" | "color" | "luminosity";
46
+ /**
47
+ * A shape the element and its children show through. Coordinates are the element's own (pre-transform);
48
+ * (x, y) is the shape's centre, default the box centre, and width/height default to the box.
49
+ * With `src`, a matte is used instead of a shape: a `.mask` file (`higgsedit segment`), or any video as a luma
50
+ * matte; `invert` and `feather` apply.
51
+ */
52
+ export type Mask = {
53
+ /**
54
+ * A `.mask` file (1-bit), or a video whose luma is the alpha (white shows, black cuts, grey is partial).
55
+ * Fitted into the box the way the element fits its footage. Its frames follow
56
+ * source time on a `<video>` (so it stays on the footage it was made from, whatever `sourceIn`; a matte video's
57
+ * timestamps are source seconds), and the element's own clock from the matte's first frame elsewhere.
58
+ */
59
+ src?: string;
60
+ shape?: "rectangle" | "ellipse" | "path";
61
+ x?: number;
62
+ y?: number;
63
+ width?: number;
64
+ height?: number;
65
+ /** Degrees, clockwise, about (x, y). */
66
+ rotation?: number;
67
+ /** Rectangle only. */
68
+ cornerRadius?: number;
69
+ /** Edge softness in px. */
70
+ feather?: number;
71
+ /** Show what lies outside the shape instead. */
72
+ invert?: boolean;
73
+ /** Path only: SVG path data drawn from (x, y); width/height do not scale it. */
74
+ d?: string;
75
+ };
76
+ /** A filter in an element's `effects`. Units: "blur" in px, "hueRotate" in degrees, every other type a 0–1 amount. */
77
+ export type EffectType = "blur" | "hueRotate" | "brightness" | "contrast" | "grayscale" | "invert" | "saturate" | "sepia" | "opacity";
78
+ /** One filter over the element's rendered pixels (its own and its children's, as one layer). */
79
+ export type Effect = {
80
+ type: EffectType;
81
+ /** brightness, contrast and saturate: 1 leaves the picture as it is, 0 is black, grey and grey. */
82
+ value: number;
83
+ /** Keyframes of `value` on the element's clock. */
84
+ animate?: {
85
+ value?: readonly Keyframe<number>[];
86
+ };
87
+ /**
88
+ * Limits the effect to the mask; the picture is untouched outside it. Under "opacity" it is a cut-out:
89
+ * outside the mask goes transparent.
90
+ */
91
+ mask?: Mask;
92
+ hidden?: boolean;
93
+ };
94
+ export type ColorStop = {
95
+ /** 0–1 along the gradient. */
96
+ offset: number;
97
+ /** Any CSS color. */
98
+ color: string;
99
+ /** 0–1, default 1. */
100
+ opacity?: number;
101
+ };
102
+ /** A gradient across the element's box. */
103
+ export type Gradient = {
104
+ /** Linear runs across the box; radial runs from its centre to half its longer side. */
105
+ type: "linear" | "radial";
106
+ /** Degrees, clockwise; 0 runs left to right. Linear only. */
107
+ rotation?: number;
108
+ stops: readonly ColorStop[];
109
+ };
110
+ /** A CSS color or a gradient. */
111
+ export type Paint = string | Gradient;
112
+ /** The last three are text only: they reveal a `<text>`'s glyphs rather than move its box. */
113
+ export type MotionPreset = "fade" | "grow" | "shrink" | "blur" | "slide-left" | "slide-right" | "slide-up" | "slide-down" | "spin" | "twist" | "appear-word" | "appear-character" | "scramble";
114
+ /** A preset animation at the element's start (`enter`) or end (`exit`), on top of `animate`. */
115
+ export type Motion = {
116
+ preset: MotionPreset;
117
+ /** Default 0.5 s; clamped to the element's length. */
118
+ duration?: Time;
119
+ /** Default linear. */
120
+ easing?: Easing;
121
+ /** Start on the element's clock; default its start (enter) or its end minus `duration` (exit). */
122
+ at?: Time;
123
+ /**
124
+ * Edge values per channel (`opacity`, `scale`, `offsetX`/`offsetY` in box widths/heights, `rotation`
125
+ * in degrees, `blur` in px); other keys are kept for tools.
126
+ */
127
+ params?: Readonly<Record<string, number | string>>;
128
+ };
129
+ export type Animate = {
130
+ readonly [K in keyof AnimatableProps]?: readonly Keyframe<AnimatableProps[K]>[];
131
+ };
132
+ type Identity = {
133
+ /** Unique within the project; how the UI and write-back address this element. */
134
+ id?: string;
135
+ name?: string;
136
+ /** Editor-only: the editor will not move, trim or edit it. Rendering ignores it. */
137
+ locked?: boolean;
138
+ };
139
+ /** On the parent scene's or group's clock, which starts at the parent's `start`. */
140
+ type Timing = {
141
+ start?: Value<Time>;
142
+ end?: Value<Time>;
143
+ };
144
+ /** How an element follows its parent's box when that box is not its authored size. Default `left`. */
145
+ export type ConstrainX = "left" | "right" | "center" | "stretch" | "scale";
146
+ /** As `ConstrainX`, vertically. Default `top`. */
147
+ export type ConstrainY = "top" | "bottom" | "center" | "stretch" | "scale";
148
+ type Transform = {
149
+ x?: Value<number>;
150
+ y?: Value<number>;
151
+ width?: Value<number>;
152
+ height?: Value<number>;
153
+ /**
154
+ * When the parent's box differs from its authored size (its width or height is keyframed, or it is
155
+ * itself constrained): `right` keeps the gap to the right edge, `center` the offset from the middle,
156
+ * `stretch` both gaps (the width changes), `scale` everything in proportion.
157
+ */
158
+ constrainX?: ConstrainX;
159
+ constrainY?: ConstrainY;
160
+ /** Pivot for rotation and scale, as a fraction of the box. Default 0 (top-left). */
161
+ anchorX?: Value<number>;
162
+ anchorY?: Value<number>;
163
+ /** Degrees, clockwise. */
164
+ rotation?: Value<number>;
165
+ scale?: Value<number>;
166
+ scaleX?: Value<number>;
167
+ scaleY?: Value<number>;
168
+ opacity?: Value<number>;
169
+ hidden?: Value<boolean>;
170
+ /**
171
+ * Editor preview only: play this element and everything inside it from a cached render. Unset, the editor does
172
+ * so for heavy content (`<html>`, shaders, blur) once the render is ready; `false` always draws it live. Renders
173
+ * and exports always draw it live.
174
+ */
175
+ prerender?: boolean;
176
+ animate?: Animate;
177
+ enter?: Motion | readonly Motion[];
178
+ exit?: Motion | readonly Motion[];
179
+ /** Gaussian blur radius in px, applied to the element and its children. */
180
+ blur?: Value<number>;
181
+ shadowColor?: Value<string>;
182
+ shadowBlur?: Value<number>;
183
+ shadowOffsetX?: Value<number>;
184
+ shadowOffsetY?: Value<number>;
185
+ /** Outline color; on text it grows outward by `strokeWidth`. */
186
+ stroke?: Value<string>;
187
+ strokeWidth?: Value<number>;
188
+ /** Clip children to this element's box (rounded by `cornerRadius` on rects). */
189
+ clip?: Value<boolean>;
190
+ /** How the element (with its children, as one layer) mixes with what is below. */
191
+ blend?: Value<BlendMode>;
192
+ mask?: Value<Mask>;
193
+ /** Filters over the element and its children, applied in order. */
194
+ effects?: Value<readonly Effect[]>;
195
+ };
196
+ type Children = {
197
+ children?: JSX.Element;
198
+ };
199
+ /** How a `<sequence>` child hands over to the clip after it. */
200
+ export type TransitionType = "dissolve" | "slideFromRight" | "slideFromLeft" | "fadeToBlack" | "fadeToWhite" | "whipPan" | "zoomThrough" | "pixelDissolve";
201
+ /** Which way the picture travels in a `whipPan`. */
202
+ export type TransitionDirection = "left" | "right" | "up" | "down";
203
+ /** A transition into the next clip, set on the outgoing clip; `{}` is a 1 s dissolve. */
204
+ export type TransitionSpec = {
205
+ /** Default "dissolve". With `wgsl`, what plays where WebGPU can't run it. */
206
+ type?: TransitionType;
207
+ /** Length, centred on the cut. Default 0.4 s for whipPan, 0.6 s for zoomThrough, else 1 s. */
208
+ duration?: Time;
209
+ /** whipPan: which way both clips travel. Default "left". */
210
+ direction?: TransitionDirection;
211
+ /**
212
+ * A custom transition: a WGSL `@fragment fn main(@location(0) uv: vec2f) -> @location(0) vec4f` that mixes
213
+ * `sampleFrom(uv)` and `sampleTo(uv)` by `globals.progress` (0 → 1). uv spans the sequence's box. Output is premultiplied.
214
+ */
215
+ wgsl?: string;
216
+ /** Values for the WGSL's `@group(1)` uniforms, by name (as on `<shaderPaint>`). */
217
+ uniforms?: ShaderUniforms;
218
+ };
219
+ /** Valid on direct children of `<sequence>`; `null` is no transition. */
220
+ type Transitioning = {
221
+ transition?: TransitionSpec | null;
222
+ };
223
+ export type Fit = "cover" | "contain" | "fill";
224
+ export type TextAlign = "left" | "center" | "right";
225
+ /** Casing applied when drawing; the text stays as written. */
226
+ export type TextCase = "original" | "upper" | "lower";
227
+ /** Where the lines sit in the box: its top, centre or foot, or (`alphabetic`) the first baseline on the box's top edge. */
228
+ export type TextBaseline = "top" | "middle" | "bottom" | "alphabetic";
229
+ export type StageProps = Identity & Children;
230
+ export type SceneProps = Identity & Timing & Children & {
231
+ width?: number;
232
+ height?: number;
233
+ fps?: number;
234
+ fill?: Value<string>;
235
+ };
236
+ export type GroupProps = Identity & Timing & Transform & Transitioning & Children;
237
+ /** Clips that play back to back on its parent's clock; it has no timing or transform of its own. */
238
+ export type SequenceProps = Identity & Children;
239
+ export type RectProps = Identity & Timing & Transform & Transitioning & Children & {
240
+ fill?: Value<Paint>;
241
+ cornerRadius?: Value<number>;
242
+ };
243
+ export type TextProps = Identity & Timing & Transform & Transitioning & {
244
+ fill?: Value<Paint>;
245
+ fontSize?: Value<number>;
246
+ fontFamily?: Value<string>;
247
+ fontWeight?: Value<number | "normal" | "bold">;
248
+ align?: Value<TextAlign>;
249
+ lineHeight?: Value<number>;
250
+ fontStyle?: Value<"normal" | "italic">;
251
+ /** Extra px between glyphs; negative tightens. */
252
+ letterSpacing?: Value<number>;
253
+ textCase?: Value<TextCase>;
254
+ /** Default `top`. Means something once `height` fixes the box. */
255
+ textBaseline?: Value<TextBaseline>;
256
+ /** The text, plus any `<textRange>` children. */
257
+ children?: JSX.Element;
258
+ };
259
+ /**
260
+ * A style override for characters `start` (inclusive) to `end` (exclusive, default the end) of its parent
261
+ * `<text>`, indexed into the text as written. Unset props inherit the text's; later ranges win where they overlap.
262
+ */
263
+ export type TextRangeProps = Identity & {
264
+ start: Value<number>;
265
+ end?: Value<number>;
266
+ fill?: Value<string>;
267
+ fontSize?: Value<number>;
268
+ fontFamily?: Value<string>;
269
+ fontWeight?: Value<number | "normal" | "bold">;
270
+ fontStyle?: Value<"normal" | "italic">;
271
+ letterSpacing?: Value<number>;
272
+ textCase?: Value<TextCase>;
273
+ };
274
+ export type ImageProps = Identity & Timing & Transform & Transitioning & Children & {
275
+ src: Value<string>;
276
+ fit?: Value<Fit>;
277
+ /** Rounds the box; the picture is clipped to it. */
278
+ cornerRadius?: Value<number>;
279
+ };
280
+ type Sound = {
281
+ /** Where playback begins in the source (trims the head). */
282
+ sourceIn?: Value<Time>;
283
+ /** Linear gain, 1 = unity. */
284
+ volume?: Value<number>;
285
+ muted?: Value<boolean>;
286
+ /** Seconds of linear gain ramp from silence at the clip's start. */
287
+ fadeIn?: Value<number>;
288
+ /** Seconds of linear gain ramp to silence at the clip's end. */
289
+ fadeOut?: Value<number>;
290
+ /** Playback rate, > 0: source time advances `speed` × element time from `sourceIn`. */
291
+ speed?: Value<number>;
292
+ /** Time-stretch the sound so its pitch holds (default); false plays it like tape, pitch moving with speed. */
293
+ preservePitch?: Value<boolean>;
294
+ /**
295
+ * `id` of another video or audio: this element is placed so the two recordings coincide, by
296
+ * cross-correlating their audio (replaces `start`). Without `sourceIn`/`end` it covers the target's window.
297
+ */
298
+ syncTo?: string;
299
+ };
300
+ export type VideoProps = Identity & Timing & Transform & Transitioning & Sound & Children & {
301
+ src: Value<string>;
302
+ fit?: Value<Fit>;
303
+ /** Rounds the box; the picture is clipped to it. */
304
+ cornerRadius?: Value<number>;
305
+ };
306
+ /** A `<shaderPaint>` uniform value: f32, vec2f–vec4f, or a CSS colour (vec3f rgb, vec4f with alpha 1). */
307
+ export type ShaderUniform = number | readonly number[] | string;
308
+ export type ShaderUniforms = {
309
+ readonly [name: string]: ShaderUniform;
310
+ };
311
+ /**
312
+ * A WGSL fragment shader painted into its parent's box. As the first child of a `<video>` or `<image>` it
313
+ * reads that element's picture (`sampleSource(uv)`, fit applied) and the picture shows only through it;
314
+ * anywhere else it runs procedurally (`sampleSource` is transparent) over what the parent drew. Entry point:
315
+ * `@fragment fn main(@location(0) uv: vec2f) -> @location(0) vec4f`, premultiplied output, `uv` 0..1 over
316
+ * the box. `globals.time` is the parent's local seconds, `globals.resolution` its box in px.
317
+ */
318
+ export type ShaderPaintProps = Identity & {
319
+ wgsl: Value<string>;
320
+ /** Values for the shader's `@group(1)` uniforms, by declared name; missing ones read as zero. */
321
+ uniforms?: Value<ShaderUniforms>;
322
+ opacity?: Value<number>;
323
+ hidden?: Value<boolean>;
324
+ };
325
+ /** Caption looks: placement, type, grouping and how the spoken word is marked. */
326
+ export type CaptionPreset = "classic" | "whisper" | "cascade" | "spotlight" | "paper" | "guinea" | "stark";
327
+ export type CaptionAlign = "top" | "center" | "bottom";
328
+ /**
329
+ * Word-timed captions from a transcript file (`.srt`, `.vtt`, or word-timed `.json` as `higgsedit transcribe`
330
+ * writes). Transcript time is source time: advance `start` with `sourceIn` (and `end` with `sourceOut`)
331
+ * so the words stay on the audio.
332
+ */
333
+ export type CaptionsProps = Identity & Timing & Transform & {
334
+ src: Value<string>;
335
+ /** Default "classic". */
336
+ preset?: Value<CaptionPreset>;
337
+ /** The preset's colour slots in order (spotlight: highlight; guinea: three word colours); alpha ignored. */
338
+ colors?: Value<readonly string[]>;
339
+ /** Vertical anchor of the caption block; default per preset (whisper and cascade: bottom). */
340
+ verticalAlign?: Value<CaptionAlign>;
341
+ /** Nudge in px on top of the preset placement. */
342
+ offsetX?: Value<number>;
343
+ offsetY?: Value<number>;
344
+ /** Transcript second the captions start from. */
345
+ sourceIn?: Value<Time>;
346
+ /** Transcript second the captions stop at. */
347
+ sourceOut?: Value<Time>;
348
+ /** Overrides of the preset's type. */
349
+ fill?: Value<string>;
350
+ fontSize?: Value<number>;
351
+ fontFamily?: Value<string>;
352
+ fontWeight?: Value<number | "normal" | "bold">;
353
+ align?: Value<TextAlign>;
354
+ lineHeight?: Value<number>;
355
+ fontStyle?: Value<"normal" | "italic">;
356
+ };
357
+ /** What an adjustment layer can keyframe: its transform. */
358
+ export type AdjustmentAnimatableProps = Pick<AnimatableProps, "x" | "y" | "width" | "height" | "rotation" | "scale" | "scaleX" | "scaleY"> & {
359
+ offsetX: number;
360
+ offsetY: number;
361
+ };
362
+ /**
363
+ * Draws nothing: while its own start/end window lasts, its transform composes onto the sibling just before
364
+ * it (the clip drawn directly beneath). As the first child it has no sibling to act on and does nothing.
365
+ */
366
+ export type AdjustmentLayerProps = Identity & Timing & {
367
+ x?: Value<number>;
368
+ y?: Value<number>;
369
+ /** Px, on top of `x`/`y`. */
370
+ offsetX?: Value<number>;
371
+ offsetY?: Value<number>;
372
+ /** Never drawn: the box rotation and scale pivot about (its centre). Default the parent's size. */
373
+ width?: Value<number>;
374
+ height?: Value<number>;
375
+ /** Degrees, clockwise, about the box centre. */
376
+ rotation?: Value<number>;
377
+ /** About the box centre; overrides `scaleX`/`scaleY`. */
378
+ scale?: Value<number>;
379
+ scaleX?: Value<number>;
380
+ scaleY?: Value<number>;
381
+ /** Disables the layer; the clip below is left alone. */
382
+ hidden?: Value<boolean>;
383
+ animate?: {
384
+ readonly [K in keyof AdjustmentAnimatableProps]?: readonly Keyframe<AdjustmentAnimatableProps[K]>[];
385
+ };
386
+ enter?: Motion | readonly Motion[];
387
+ exit?: Motion | readonly Motion[];
388
+ };
389
+ /** What a `ref` on a higgsedit element receives. */
390
+ export interface ProjectNode<E = null> {
391
+ readonly tag: string;
392
+ /** A `<surface>`'s canvas, an `<html>`'s content root; null on other elements and where there is no DOM. */
393
+ readonly element: E | null;
394
+ }
395
+ export type SurfaceCanvas = HTMLCanvasElement | OffscreenCanvas;
396
+ /**
397
+ * A canvas the project draws into, stretched over the box every frame. The canvas is sized to `width`×`height`
398
+ * when they are set; draw from an effect (`useTicker` time keeps renders frame-accurate), not from the ref call.
399
+ */
400
+ export type SurfaceProps = Identity & Timing & Transform & Transitioning & {
401
+ /** Rounds the box; the picture is clipped to it. */
402
+ cornerRadius?: Value<number>;
403
+ ref?: ProjectNode<SurfaceCanvas> | ((node: ProjectNode<SurfaceCanvas>) => void);
404
+ };
405
+ /**
406
+ * Renders its HTML children as the box's picture (Chrome's html-in-canvas), with the box as the layout viewport. Reactive like the rest of
407
+ * the project; `<img>` sources resolve like media `src`. `<canvas>`, `<video>` and `<audio>` are not allowed inside.
408
+ */
409
+ export type HtmlProps = Identity & Timing & Transform & Transitioning & {
410
+ /** Rounds the box; the content is clipped to it. */
411
+ cornerRadius?: Value<number>;
412
+ ref?: ProjectNode<HTMLElement> | ((node: ProjectNode<HTMLElement>) => void);
413
+ children?: JSX.Element;
414
+ };
415
+ /** Sound with no picture: music beds, voice-over, effects. */
416
+ export type AudioProps = Identity & Timing & Sound & {
417
+ src: Value<string>;
418
+ hidden?: Value<boolean>;
419
+ };
420
+ export {};
@@ -1,37 +1,45 @@
1
1
  {
2
2
  "name": "@higgsfield/higgsedit",
3
- "version": "0.1.0-beta.4",
4
- "description": "higgsedit: the CLI for code-as-document video projects (init, check, frame, render, edit, dev)",
5
- "engines": {
6
- "node": ">=22.12.0"
7
- },
3
+ "version": "0.2.0",
4
+ "description": "Make videos in code: create, preview, edit and render TSX video projects from the command line",
5
+ "keywords": [
6
+ "video",
7
+ "video-editor",
8
+ "video-editing",
9
+ "motion-graphics",
10
+ "render",
11
+ "cli",
12
+ "tsx",
13
+ "jsx",
14
+ "ffmpeg"
15
+ ],
16
+ "author": "Higgsfield",
8
17
  "type": "module",
9
18
  "bin": {
10
19
  "higgsedit": "./dist/higgsedit.mjs"
11
20
  },
12
21
  "exports": {
22
+ "./jsx": {
23
+ "types": "./dist/jsx/index.d.ts"
24
+ },
25
+ "./jsx/jsx-runtime": {
26
+ "types": "./dist/jsx/jsx-runtime.d.ts"
27
+ },
28
+ "./jsx/jsx-dev-runtime": {
29
+ "types": "./dist/jsx/jsx-runtime.d.ts"
30
+ },
13
31
  "./package.json": "./package.json"
14
32
  },
15
33
  "files": [
16
34
  "dist",
17
35
  "README.md"
18
36
  ],
37
+ "engines": {
38
+ "node": ">=22.12.0"
39
+ },
19
40
  "dependencies": {
20
41
  "esbuild": "0.28.2",
21
- "playwright-core": "1.63.0"
22
- },
23
- "devDependencies": {
24
- "solid-js": "1.9.16",
25
- "tsx": "4.23.15",
26
- "typescript": "7.0.2",
27
- "@higgsedit/encoder": "0.1.0",
28
- "@higgsedit/runtime": "0.1.0",
29
- "@higgsedit/sam2": "0.1.0",
30
- "@higgsedit/writeback": "0.1.0",
31
- "@higgsedit/jsx": "0.1.0",
32
- "@higgsedit/reconciler": "0.1.0"
33
- },
34
- "scripts": {
35
- "build": "tsx scripts/build.ts"
42
+ "playwright-core": "1.63.0",
43
+ "solid-js": "1.9.16"
36
44
  }
37
45
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@higgsfield/video-editor-mcp",
3
- "version": "1.0.7",
3
+ "version": "1.1.1-dev.0",
4
4
  "description": "Higgsfield Video Editor as a local MCP server over stdio: edits TSX video projects on this machine with the higgsedit CLI and serves the editor panel.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",
@@ -21,14 +21,15 @@
21
21
  "dependencies": {
22
22
  "esbuild": "0.28.2",
23
23
  "playwright-core": "1.63.0",
24
- "@higgsfield/higgsedit": "0.1.0-beta.4"
24
+ "solid-js": "1.9.16",
25
+ "@higgsfield/higgsedit": "0.2.0"
25
26
  },
26
27
  "bundleDependencies": [
27
28
  "@higgsfield/higgsedit"
28
29
  ],
29
30
  "publishConfig": {
30
31
  "access": "public",
31
- "tag": "latest"
32
+ "tag": "next"
32
33
  },
33
34
  "keywords": [
34
35
  "mcp",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "higgsfield-video-editor-local",
3
- "version": "1.0.7",
3
+ "version": "1.1.1-dev.0",
4
4
  "description": "Edit and render video projects on your Mac with Higgsfield. Arrange clips, add text, audio and motion graphics, preview your timeline in the interactive editor, and render finished videos. Generate images and videos in the editor by connecting your Higgsfield account.",
5
5
  "author": {
6
6
  "name": "Higgsfield AI, Inc."
@@ -37,5 +37,5 @@
37
37
  }
38
38
  }
39
39
  },
40
- "version": "1.0.7"
40
+ "version": "1.1.1-dev.0"
41
41
  }
@@ -23,7 +23,7 @@ higgsedit fonts add PROJECT "Inter:700"
23
23
  ```
24
24
 
25
25
  `await p.add("Face.ttf")` returns a font handle. `typography: {fontAssetId: face.id}`
26
- opts into native shaping; registered legacy text uses `fontFamily`.
26
+ opts into native shaping; other text uses `fontFamily`.
27
27
 
28
28
  Typography options include variable `axes`, OpenType `features`, `script`,
29
29
  `language`, `direction: ltr|rtl`, `bend: {amplitude, wavelength, phase, stretch}`
@@ -15,9 +15,9 @@ node "$cli" install-plugin
15
15
  If the registry is unreachable or denies the package, report the error. Never
16
16
  substitute a different package or bypass the registry. Fix a failed doctor check.
17
17
  Reload the desktop app to discover plugin skills, then start a new chat for its
18
- tools. If an older standalone `higgsfield-use-video-editor` MCP registration is
19
- also present, inspect it and remove that old registration before using the plugin
20
- to avoid duplicate tools. Do not remove an entry with a different configuration.
18
+ tools. If a standalone `higgsfield-use-video-editor` MCP registration is also
19
+ present, inspect it and remove it before using the plugin to avoid duplicate
20
+ tools. Do not remove an entry with a different configuration.
21
21
 
22
22
  The npm install's launcher checks for updates in the background at startup, at
23
23
  most once per hour. Server, UI, Higgsedit and the registered plugin bundle update