flomotion 0.2.0 → 0.4.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 (129) hide show
  1. package/CHANGELOG.md +58 -2
  2. package/LICENSE +1 -1
  3. package/README.md +29 -20
  4. package/dist/bin.mjs +6279 -2582
  5. package/dist/chunks/{chunk-QG2MOGKO.mjs → chunk-IGG2VZB6.mjs} +178 -14
  6. package/dist/chunks/{chunk-AVP5XX4G.mjs → chunk-PEC2UVQY.mjs} +138 -108
  7. package/dist/chunks/{chunk-IUSYVGP6.mjs → chunk-TTHAZGRG.mjs} +7 -7
  8. package/dist/chunks/{chunk-JCLRAREG.mjs → chunk-XWY6CUY6.mjs} +16 -16
  9. package/dist/chunks/{lock-MLQUU7X3.mjs → lock-WGPR7CJ2.mjs} +3 -3
  10. package/dist/components.mjs +19 -13
  11. package/dist/core.mjs +12 -12
  12. package/dist/hooks.mjs +8 -12
  13. package/dist/jsx-dev-runtime.mjs +1 -1
  14. package/dist/jsx-runtime.mjs +1 -1
  15. package/docs/components/Adjustment.md +2 -2
  16. package/docs/components/Audio.md +2 -2
  17. package/docs/components/B.md +3 -3
  18. package/docs/components/Captions.md +2 -2
  19. package/docs/components/Card.md +2 -2
  20. package/docs/components/Center.md +2 -2
  21. package/docs/components/Chart.md +2 -2
  22. package/docs/components/Chip.md +2 -2
  23. package/docs/components/Circle.md +2 -2
  24. package/docs/components/Clip.md +2 -2
  25. package/docs/components/CodeBlock.md +2 -2
  26. package/docs/components/Composition.md +2 -2
  27. package/docs/components/Counter.md +2 -2
  28. package/docs/components/Cursor.md +2 -2
  29. package/docs/components/Fonts.md +2 -2
  30. package/docs/components/GlassCard.md +2 -2
  31. package/docs/components/Grid.md +2 -2
  32. package/docs/components/Group.md +2 -2
  33. package/docs/components/Highlight.md +3 -3
  34. package/docs/components/I.md +3 -3
  35. package/docs/components/Image.md +2 -2
  36. package/docs/components/Line.md +2 -2
  37. package/docs/components/Marker.md +2 -2
  38. package/docs/components/Path.md +2 -2
  39. package/docs/components/Polygon.md +2 -2
  40. package/docs/components/Precomp.md +2 -2
  41. package/docs/components/ProgressRing.md +2 -2
  42. package/docs/components/Rect.md +2 -2
  43. package/docs/components/RoundRect.md +2 -2
  44. package/docs/components/SafeArea.md +2 -2
  45. package/docs/components/Scene.md +2 -2
  46. package/docs/components/Sequence.md +2 -2
  47. package/docs/components/Span.md +3 -3
  48. package/docs/components/SplitText.md +2 -2
  49. package/docs/components/Stack.md +2 -2
  50. package/docs/components/Stagger.md +2 -2
  51. package/docs/components/Strike.md +3 -3
  52. package/docs/components/Svg.md +2 -2
  53. package/docs/components/Text.md +2 -2
  54. package/docs/components/Title.md +2 -2
  55. package/docs/components/Track.md +2 -2
  56. package/docs/components/UIMock.md +2 -2
  57. package/docs/components/Underline.md +3 -3
  58. package/docs/components/Video.md +2 -2
  59. package/docs/gate2-manual-checklist.md +10 -9
  60. package/docs/hyperframes-notes.md +20 -20
  61. package/docs/later.md +23 -16
  62. package/docs/spec.md +83 -22
  63. package/package.json +1 -2
  64. package/skills/flomotion-studio/CHANGELOG.md +39 -0
  65. package/skills/flomotion-studio/README.md +81 -0
  66. package/skills/flomotion-studio/SKILL.md +90 -0
  67. package/skills/flomotion-studio/config/thresholds.md +191 -0
  68. package/skills/flomotion-studio/dataset/annotations/ansarada.md +53 -0
  69. package/skills/flomotion-studio/dataset/annotations/canva.md +49 -0
  70. package/skills/flomotion-studio/dataset/annotations/clickup.md +60 -0
  71. package/skills/flomotion-studio/dataset/annotations/gemini-stub.md +39 -0
  72. package/skills/flomotion-studio/dataset/annotations/monday.md +51 -0
  73. package/skills/flomotion-studio/dataset/annotations/phantom.md +53 -0
  74. package/skills/flomotion-studio/dataset/annotations/slack.md +54 -0
  75. package/skills/flomotion-studio/dataset/annotations/unknown-7.md +39 -0
  76. package/skills/flomotion-studio/dataset/annotations/vaylens.md +53 -0
  77. package/skills/flomotion-studio/dataset/brief-template.md +110 -0
  78. package/skills/flomotion-studio/dataset/rating-sheet.md +28 -0
  79. package/skills/flomotion-studio/dataset/schema.md +44 -0
  80. package/skills/flomotion-studio/evals/README.md +33 -0
  81. package/skills/flomotion-studio/evals/briefs/briefs.md +25 -0
  82. package/skills/{motion-studio/looks → flomotion-studio/examples/engine-looks}/kinetic.scene.tsx +1 -1
  83. package/skills/{motion-studio/looks → flomotion-studio/examples/engine-looks}/minimal.scene.tsx +1 -1
  84. package/skills/{motion-studio/looks → flomotion-studio/examples/engine-looks}/sketch.scene.tsx +1 -1
  85. package/skills/flomotion-studio/examples/flomotion-ad/LOG.md +39 -0
  86. package/skills/flomotion-studio/examples/flomotion-ad/brief.md +41 -0
  87. package/skills/flomotion-studio/examples/flomotion-ad/ideas.md +12 -0
  88. package/skills/flomotion-studio/examples/flomotion-ad/project.tsx +1694 -0
  89. package/skills/flomotion-studio/examples/flomotion-ad/script.md +28 -0
  90. package/skills/flomotion-studio/examples/flomotion-ad/storyboard.md +93 -0
  91. package/skills/{motion-studio → flomotion-studio}/examples/saas-promo/README.md +1 -1
  92. package/skills/{motion-studio → flomotion-studio}/examples/saas-promo/make-assets.sh +1 -1
  93. package/skills/{motion-studio → flomotion-studio}/examples/saas-promo/project.tsx +3 -3
  94. package/skills/flomotion-studio/looks/bold-kinetic.md +122 -0
  95. package/skills/flomotion-studio/looks/clean-light.md +122 -0
  96. package/skills/flomotion-studio/looks/dark-product.md +120 -0
  97. package/skills/flomotion-studio/references/anti-patterns.md +36 -0
  98. package/skills/flomotion-studio/references/assets.md +42 -0
  99. package/skills/flomotion-studio/references/block-recipes.md +249 -0
  100. package/skills/flomotion-studio/references/blocks.md +114 -0
  101. package/skills/flomotion-studio/references/catalogue.md +53 -0
  102. package/skills/flomotion-studio/references/checks.md +87 -0
  103. package/skills/flomotion-studio/references/clean-styles.md +56 -0
  104. package/skills/{motion-studio → flomotion-studio}/references/components.md +94 -94
  105. package/skills/flomotion-studio/references/copywriting.md +64 -0
  106. package/skills/flomotion-studio/references/decision-tables.md +80 -0
  107. package/skills/flomotion-studio/references/interview.md +145 -0
  108. package/skills/flomotion-studio/references/looks.md +45 -0
  109. package/skills/flomotion-studio/references/mcp-tools.md +70 -0
  110. package/skills/flomotion-studio/references/motion.md +68 -0
  111. package/skills/flomotion-studio/references/patterns.md +45 -0
  112. package/skills/flomotion-studio/references/review.md +56 -0
  113. package/skills/flomotion-studio/references/script-craft.md +59 -0
  114. package/skills/flomotion-studio/references/sound.md +57 -0
  115. package/skills/flomotion-studio/references/story-templates.md +52 -0
  116. package/skills/flomotion-studio/references/storyboard.md +62 -0
  117. package/skills/flomotion-studio/references/styles.md +70 -0
  118. package/skills/flomotion-studio/references/transitions.md +62 -0
  119. package/skills/flomotion-studio/references/typography.md +46 -0
  120. package/skills/flomotion-studio/references/workflow.md +96 -0
  121. package/skills/motion-studio/SKILL.md +0 -87
  122. package/skills/motion-studio/looks/kinetic.json +0 -89
  123. package/skills/motion-studio/looks/minimal.json +0 -91
  124. package/skills/motion-studio/looks/sketch.json +0 -83
  125. package/skills/motion-studio/references/motion.md +0 -73
  126. package/skills/motion-studio/references/review.md +0 -32
  127. package/skills/motion-studio/references/saas-promo.md +0 -29
  128. package/skills/motion-studio/references/sound.md +0 -47
  129. package/skills/motion-studio/references/typography.md +0 -50
package/CHANGELOG.md CHANGED
@@ -1,8 +1,64 @@
1
1
  # Changelog
2
2
 
3
+ ## Fixes and examples (unreleased)
4
+
5
+ - **Audio mix is deterministic again.** With voice and music together, two renders of the same project could differ
6
+ in the last samples (`sidechaincompress` paired frames in thread order). The ducking chain now uses fixed frame
7
+ sizes; a regression test mixes the same project 8 times and fails without the fix.
8
+ - **`examples/flomotion-ad`:** a 30 s vertical ad for flomotion, built with the studio skill (real live-view captures,
9
+ its own licence ledger on screen). See its `LOG.md` for what was and was not verified.
10
+
11
+ ## Rename: CodeCut is now flomotion everywhere
12
+
13
+ - The product, packages (`@flomotion/*`), command (`flomotion`), project folder (`.flomotion/`), config file
14
+ (`flomotion.json`) and element ids (`fm_`) all use the name flomotion. The old `codecut` command and `@codecut/*`
15
+ imports are gone. Projects made before the rename: move `.codecut/` to `.flomotion/`, change the imports, and replace `.codecut/` with
16
+ `.flomotion/` inside `.flomotion/fonts.lock.json` and `.flomotion/ledger.json`
17
+ (`sed -i '' 's#\.codecut/#.flomotion/#g' .flomotion/*.json`).
18
+
19
+ ## 0.4.0: setup, your own material, and assets (unreleased)
20
+
21
+ - **`flomotion setup`:** a guided setup (also `setup show | check | set | unset | sounds`, and `--yes`). You choose
22
+ how you supply the voiceover, the word timings, the sound effects and the graphics (your own recording,
23
+ transcript, sound files, logos and screenshots, or Freesound, ElevenLabs, Whisper, Pexels), and enter the keys that
24
+ go with it. Each key is checked with its real service (read-only) and saved only on your computer (`~/.config/
25
+ flomotion/config.json`, mode 0600). It can also install the skill and add flomotion to Claude Code.
26
+ - **Your own material:** `voice_import`, `transcript_import` (SRT, VTT, word-level JSON, lines with times, or plain
27
+ text, with an honest precision: word, cue, estimated), `sound_import`, a searchable library of your own sound
28
+ folder, and `asset_import`. Files may be anywhere on your computer; credentials and key folders are never read.
29
+ - **Assets:** `asset_search` and `asset_get` for icons, emoji, brand logos (trademark: needs permission), photos and
30
+ illustrations (Iconify, Openverse, Pexels); `asset_capture` for sharp screenshots of your own product;
31
+ `brand_extract` for your site's colours, fonts and logos. Licences are classified, share-alike and
32
+ non-commercial refused, CC-BY credited, everything in the ledger; `lint` and the licence report cover images.
33
+ - `setup_status` tool: the agent checks what exists before it plans, and tells you what is missing.
34
+ - ElevenLabs quotes show your account's remaining characters. The server identifies itself as `flomotion` 0.4.0.
35
+ - Skill: `flomotion-studio` 0.4.0 (Round 0 of the interview, `assets.md`, asset plan at G4, own material).
36
+ - Tested: every tool, the wizard (scripted and piped), the key checks against local servers, Iconify and Openverse
37
+ for real, screenshots and brand extraction against a local site.
38
+ - Not verified: Freesound, ElevenLabs and Pexels with real keys, Whisper, and the hidden key prompt on a real terminal.
39
+
40
+ ## 0.3.0: the flomotion-studio skill, install command and live view (unreleased)
41
+
42
+ - **Skill:** `skills/flomotion-studio` (the main director skill: extensive interview, gates G0 to G6, looks, scene
43
+ blocks, checks, copywriting, sound and motion rules) replaces the earlier motion-studio skill. Reconciled with the
44
+ real tools: `references/mcp-tools.md` lists the 30 tools and error codes, `references/checks.md` says which checks
45
+ `review` computes and which the agent computes or cannot run, `references/block-recipes.md` has the 13 core blocks
46
+ as TSX (linted and rendered in all three looks by the tests), `references/components.md` is generated.
47
+ - **Looks:** `clean-light`, `dark-product`, `bold-kinetic` exist in the engine (`theme="$look.clean-light"`),
48
+ matching the skill's JSON (a test keeps them in sync). The engine's `kinetic`, `minimal`, `sketch` stay for the
49
+ examples.
50
+ - **Install:** `flomotion install skill` copies the skill to `~/.claude/skills` (or `--project`), replacing a previous
51
+ copy and noting an old `motion-studio` skill. `flomotion skill install` from 0.2.0 still works.
52
+ - **Live view:** `flomotion ui` and `flomotion mcp --ui`: activity feed of every tool call, gate progress,
53
+ outline and timeline, a scrubbable preview rendered on demand, code with the latest change highlighted, review
54
+ results, assets with licences, renders, and history with Restore. Localhost only, no network.
55
+ - The MCP server logs every call to `.flomotion/activity.jsonl`; `review` writes `.flomotion/review/last.json`;
56
+ the server identifies itself as `flomotion`.
57
+ - Fixed: bin paths written `./dist/bin.mjs` were stripped by npm 11 at publish.
58
+
3
59
  ## Phase 2: MCP server, sound, voice, review, skill (unreleased)
4
60
 
5
- - `@codecut/mcp`: 30 tools and 4 resources over stdio (`codecut mcp`), same patches as the edit ops, applied to the
61
+ - `@flomotion/mcp`: 30 tools and 4 resources over stdio (`flomotion mcp`), same patches as the edit ops, applied to the
6
62
  TSX with ts-morph (formatting and comments kept, expressions refused, every write re-read and verified, history
7
63
  snapshots with undo tokens). Typed errors with fix hints.
8
64
  - Freesound client (token auth, tag search, CC0/CC-BY filter, measured peak, ledger, credits file) with a local
@@ -13,7 +69,7 @@
13
69
  - `skills/motion-studio`: gated workflow, references (motion, sound, typography, saas-promo, review, generated
14
70
  components), three Looks as data with a finished reference scene each, a finished example.
15
71
  - CLI: `mcp`, `skill install`; `render` writes credits and a licence report. Bundle: multi-entry esbuild build with
16
- hooks so a published install (npm package `flomotion`) resolves `@codecut/*` imports and compiles project TSX with no node_modules.
72
+ hooks so a published install (npm package `flomotion`) resolves `@flomotion/*` imports and compiles project TSX with no node_modules.
17
73
  - Fixed: `RGBSplit` and `Glitch` showed their effect before their start time (baked span began at the jump).
18
74
  `lint` compared `CC0-1.0` with `CC0`. A sound reused for two tags lost its first peak name.
19
75
  - Tests: codemods, every tool, review checks, resources, stdio, schema round trip through an MCP call, skill files,
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 CodeCut contributors
3
+ Copyright (c) 2026 flomotion contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,15 +1,13 @@
1
- # flomotion (CodeCut)
2
-
3
- The npm package is **`flomotion`**. The tool is called CodeCut and its command is `codecut` (`flomotion` works as an alias).
1
+ # flomotion
4
2
 
5
3
  A code-first video editor. A video is one TSX file; every control a normal editor has is a typed prop or
6
4
  function. Claude edits it through an MCP server; rendering is done by
7
5
  [HyperFrames](https://github.com/heygen-com/hyperframes) (HTML + GSAP → headless Chrome + FFmpeg → MP4).
8
6
 
9
- > **Status: early (0.2).** The engine, the MCP server and the `motion-studio` skill are built and tested against
7
+ > **Status: early (0.4).** The engine, the MCP server, the `flomotion-studio` skill and the live view are built and tested against
10
8
  > test doubles for Freesound, ElevenLabs and Whisper. Nothing has been run in a real Claude Code session yet:
11
9
  > see `docs/gate2-manual-checklist.md` in the repository. Editor type hints for project files are not shipped
12
- > yet (projects run; editors will not resolve `@codecut/*` types).
10
+ > yet (projects run; editors will not resolve `@flomotion/*` types).
13
11
 
14
12
  ## Requirements
15
13
 
@@ -21,31 +19,42 @@ Optional: `whisper-cpp` for transcription (`brew install whisper-cpp`). Optional
21
19
  ## Use it from Claude Code
22
20
 
23
21
  ```bash
22
+ npx -y flomotion install skill # installs the flomotion-studio skill for all your projects (~/.claude/skills)
24
23
  mkdir my-video && cd my-video
25
- claude mcp add codecut -e FREESOUND_API_KEY=… -- npx -y flomotion mcp --dir .
26
- npx -y flomotion skill install # copies the motion-studio skill to .claude/skills
24
+ claude mcp add flomotion -e FREESOUND_API_KEY=… -- npx -y flomotion mcp --dir . --ui
27
25
  claude # describe the video you want
28
26
  ```
29
27
 
30
- The skill runs a gated workflow: intake, script, look, voice, storyboard, build, sound, review, draft, final. It
31
- stops for your OK at each gate. Sounds and fonts are fetched into a licence ledger; CC-BY credits are written next
32
- to the render. The agent cannot hear audio or judge taste, so it asks you to listen and approve.
28
+ `flomotion install skill --project` installs into the current folder only. The skill runs a gated workflow:
29
+ interview (extensive, with a read-back), direction, script, style frames, storyboard, draft, final. It stops for
30
+ your OK at each gate. Sounds and fonts are fetched into a licence ledger; CC-BY credits are written next to the
31
+ render. The agent cannot hear audio or judge taste, so it lists what you need to review.
32
+
33
+ ## Live view
34
+
35
+ `--ui` on the MCP server (or `flomotion ui` in the project folder) serves a small page on `127.0.0.1:4317`. It shows,
36
+ in real time: a **Storyboard** board where you and Claude brainstorm (`ideas.md`) and the plan (`storyboard.md`) shows as a timeline that turns green as scenes are built, each tool call Claude makes with its result, progress through the gates, the scene outline and
37
+ timeline, a preview you can scrub (rendered on demand from the file on disk), the code with the latest change
38
+ highlighted, review results, the sounds and fonts used with their licences, renders you can play, and the
39
+ history with a Restore button. It is a viewer with undo and a notes board, not an editor yet. It listens on localhost only and loads
40
+ nothing from the network.
33
41
 
34
42
  ## CLI
35
43
 
36
44
  ```bash
37
- codecut mcp --dir . # MCP server over stdio (30 tools, 4 resources)
38
- codecut skill install [--global]
39
- codecut init my-video # scaffold a project
40
- codecut fonts sync my-video # download and lock fonts (the only network use besides sound/voice tools)
41
- codecut lint my-video
42
- codecut render my-video # -> my-video/renders/<id>.mp4 (+ .credits.txt, .licenses.json)
43
- codecut frame my-video 2.5 # one PNG
44
- codecut sheet my-video # contact sheet
45
- codecut docs # reference docs for every component, from the schemas
45
+ flomotion mcp --dir . [--ui] # MCP server over stdio (39 tools, 4 resources); --ui also serves the live view
46
+ flomotion ui [--open] # the live view for this folder
47
+ flomotion install skill [--project]
48
+ flomotion init my-video # scaffold a project
49
+ flomotion fonts sync my-video # download and lock fonts (the only network use besides sound/voice tools)
50
+ flomotion lint my-video
51
+ flomotion render my-video # -> my-video/renders/<id>.mp4 (+ .credits.txt, .licenses.json)
52
+ flomotion frame my-video 2.5 # one PNG
53
+ flomotion sheet my-video # contact sheet
54
+ flomotion docs # reference docs for every component, from the schemas
46
55
  ```
47
56
 
48
- A project is `project.tsx` exporting a `<Composition>`; components are imported from `@codecut/components`
57
+ A project is `project.tsx` exporting a `<Composition>`; components are imported from `@flomotion/components`
49
58
  (or `flomotion/components`). Renders never use the network: fonts are locked by hash and checked before the first
50
59
  frame; a missing or changed font file fails the render with the font id and path.
51
60