flomotion 0.0.0-stage → 0.2.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 (112) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE +21 -0
  3. package/README.md +56 -2
  4. package/dist/bin.mjs +5951 -0
  5. package/dist/chunks/chunk-AVP5XX4G.mjs +25050 -0
  6. package/dist/chunks/chunk-IUSYVGP6.mjs +122 -0
  7. package/dist/chunks/chunk-JCLRAREG.mjs +218 -0
  8. package/dist/chunks/chunk-QG2MOGKO.mjs +4193 -0
  9. package/dist/chunks/lock-MLQUU7X3.mjs +29 -0
  10. package/dist/components.mjs +580 -0
  11. package/dist/core.mjs +340 -0
  12. package/dist/hooks.mjs +66 -0
  13. package/dist/jsx-dev-runtime.mjs +13 -0
  14. package/dist/jsx-runtime.mjs +11 -0
  15. package/docs/components/Adjustment.md +74 -0
  16. package/docs/components/Animate.md +45 -0
  17. package/docs/components/Audio.md +56 -0
  18. package/docs/components/B.md +22 -0
  19. package/docs/components/Blur.md +30 -0
  20. package/docs/components/Captions.md +207 -0
  21. package/docs/components/Card.md +105 -0
  22. package/docs/components/Center.md +80 -0
  23. package/docs/components/Chart.md +115 -0
  24. package/docs/components/Chip.md +104 -0
  25. package/docs/components/Circle.md +88 -0
  26. package/docs/components/Clip.md +104 -0
  27. package/docs/components/CodeBlock.md +103 -0
  28. package/docs/components/ColorGrade.md +75 -0
  29. package/docs/components/Composition.md +40 -0
  30. package/docs/components/Counter.md +216 -0
  31. package/docs/components/Cursor.md +94 -0
  32. package/docs/components/Curves.md +29 -0
  33. package/docs/components/DropShadow.md +42 -0
  34. package/docs/components/Enter.md +54 -0
  35. package/docs/components/Exit.md +54 -0
  36. package/docs/components/Font.md +41 -0
  37. package/docs/components/Fonts.md +22 -0
  38. package/docs/components/GlassCard.md +105 -0
  39. package/docs/components/Glitch.md +39 -0
  40. package/docs/components/Glow.md +36 -0
  41. package/docs/components/Grain.md +45 -0
  42. package/docs/components/Grid.md +101 -0
  43. package/docs/components/Group.md +79 -0
  44. package/docs/components/Highlight.md +31 -0
  45. package/docs/components/Hitstop.md +33 -0
  46. package/docs/components/I.md +22 -0
  47. package/docs/components/Image.md +89 -0
  48. package/docs/components/Impact.md +45 -0
  49. package/docs/components/Keyframes.md +37 -0
  50. package/docs/components/Line.md +95 -0
  51. package/docs/components/Look.md +34 -0
  52. package/docs/components/Marker.md +26 -0
  53. package/docs/components/Mask.md +48 -0
  54. package/docs/components/Matte.md +35 -0
  55. package/docs/components/Path.md +100 -0
  56. package/docs/components/Polygon.md +93 -0
  57. package/docs/components/Precomp.md +79 -0
  58. package/docs/components/ProgressRing.md +110 -0
  59. package/docs/components/Pulse.md +39 -0
  60. package/docs/components/PunchZoom.md +36 -0
  61. package/docs/components/README.md +115 -0
  62. package/docs/components/RGBSplit.md +39 -0
  63. package/docs/components/Rect.md +91 -0
  64. package/docs/components/RoundRect.md +91 -0
  65. package/docs/components/SafeArea.md +80 -0
  66. package/docs/components/Scene.md +77 -0
  67. package/docs/components/Sequence.md +77 -0
  68. package/docs/components/Shake.md +48 -0
  69. package/docs/components/Slam.md +51 -0
  70. package/docs/components/Sound.md +42 -0
  71. package/docs/components/Span.md +36 -0
  72. package/docs/components/SplitText.md +218 -0
  73. package/docs/components/SquashStretch.md +39 -0
  74. package/docs/components/Stack.md +97 -0
  75. package/docs/components/Stagger.md +80 -0
  76. package/docs/components/Strike.md +31 -0
  77. package/docs/components/Stroke.md +33 -0
  78. package/docs/components/Svg.md +89 -0
  79. package/docs/components/Text.md +195 -0
  80. package/docs/components/TextAnimator.md +57 -0
  81. package/docs/components/Theme.md +34 -0
  82. package/docs/components/Thud.md +45 -0
  83. package/docs/components/Title.md +195 -0
  84. package/docs/components/Track.md +39 -0
  85. package/docs/components/UIMock.md +107 -0
  86. package/docs/components/Underline.md +31 -0
  87. package/docs/components/Video.md +104 -0
  88. package/docs/components/Vignette.md +45 -0
  89. package/docs/components/Voiceover.md +32 -0
  90. package/docs/components/WhipPan.md +48 -0
  91. package/docs/components/Wobble.md +39 -0
  92. package/docs/gate2-manual-checklist.md +89 -0
  93. package/docs/hyperframes-notes.md +149 -0
  94. package/docs/later.md +20 -0
  95. package/docs/spec.md +147 -0
  96. package/package.json +46 -4
  97. package/skills/motion-studio/SKILL.md +87 -0
  98. package/skills/motion-studio/examples/saas-promo/README.md +7 -0
  99. package/skills/motion-studio/examples/saas-promo/make-assets.sh +42 -0
  100. package/skills/motion-studio/examples/saas-promo/project.tsx +545 -0
  101. package/skills/motion-studio/looks/kinetic.json +89 -0
  102. package/skills/motion-studio/looks/kinetic.scene.tsx +196 -0
  103. package/skills/motion-studio/looks/minimal.json +91 -0
  104. package/skills/motion-studio/looks/minimal.scene.tsx +163 -0
  105. package/skills/motion-studio/looks/sketch.json +83 -0
  106. package/skills/motion-studio/looks/sketch.scene.tsx +180 -0
  107. package/skills/motion-studio/references/components.md +5574 -0
  108. package/skills/motion-studio/references/motion.md +73 -0
  109. package/skills/motion-studio/references/review.md +32 -0
  110. package/skills/motion-studio/references/saas-promo.md +29 -0
  111. package/skills/motion-studio/references/sound.md +47 -0
  112. package/skills/motion-studio/references/typography.md +50 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,37 @@
1
+ # Changelog
2
+
3
+ ## Phase 2: MCP server, sound, voice, review, skill (unreleased)
4
+
5
+ - `@codecut/mcp`: 30 tools and 4 resources over stdio (`codecut mcp`), same patches as the edit ops, applied to the
6
+ TSX with ts-morph (formatting and comments kept, expressions refused, every write re-read and verified, history
7
+ snapshots with undo tokens). Typed errors with fix hints.
8
+ - Freesound client (token auth, tag search, CC0/CC-BY filter, measured peak, ledger, credits file) with a local
9
+ catalogue fallback; voice providers (recording, local TTS stub, ElevenLabs quote then `confirm:true`);
10
+ transcription via whisper.cpp; `align_to_voice`; `sound_auto` for impact cues.
11
+ - Review: 17-point checklist from the compiled animation, lint, ledger, measured mix and the rendered page.
12
+ - `render` presets with credits and licence report; `mix_preview` with measured loudness.
13
+ - `skills/motion-studio`: gated workflow, references (motion, sound, typography, saas-promo, review, generated
14
+ components), three Looks as data with a finished reference scene each, a finished example.
15
+ - 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.
17
+ - Fixed: `RGBSplit` and `Glitch` showed their effect before their start time (baked span began at the jump).
18
+ `lint` compared `CC0-1.0` with `CC0`. A sound reused for two tags lost its first peak name.
19
+ - Tests: codemods, every tool, review checks, resources, stdio, schema round trip through an MCP call, skill files,
20
+ Look scenes, and the Gate 2 flow against test doubles.
21
+
22
+ ## Phase 1: core engine (unreleased)
23
+
24
+ - Schema system (`defineComponent`/`defineEffect`, 20+ control builders) generating TS types, Zod validators,
25
+ MCP JSON Schema, docs and lint rules from one declaration.
26
+ - JSX runtime, resolver (themes, tokens, refs, timing, expressions), timeline IR, HyperFrames HTML compiler with
27
+ baked, seekable animation; 10 transitions (`shader` is a stub).
28
+ - Keyframes (modes, handles, spatial paths, loops) and pure expressions with a purity linter.
29
+ - 76 definitions: structure, transform stack, media, typography (variable axes, rich text, animators and presets),
30
+ shapes, masks/mattes, layout, UI mocks, impact effects with sound tags, ColorGrade/Curves/Grain, layer styles.
31
+ - Fonts: local, Google (CSS API, licence from google/fonts METADATA.pb), Fontsource fallback, URL, system; hash lock,
32
+ ledger, Chrome-measured layout cache, pre-render font gate, glyph-coverage lint.
33
+ - 24 timeline edit operations and 16 keyframe operations as pure patch producers with undo.
34
+ - Offline FFmpeg audio mixer (buses, sidechain ducking, loudnorm), deterministic.
35
+ - CLI: `init lint render frame sheet fonts sync docs`.
36
+ - Examples: `saas-promo`, `typography`. Tests: unit, compiler snapshots, goldens (perceptual hash), double render,
37
+ schema round trip, fonts, glyph lint, e2e.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 CodeCut contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,57 @@
1
- # Temporary Holding Version
1
+ # flomotion (CodeCut)
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ The npm package is **`flomotion`**. The tool is called CodeCut and its command is `codecut` (`flomotion` works as an alias).
4
+
5
+ A code-first video editor. A video is one TSX file; every control a normal editor has is a typed prop or
6
+ function. Claude edits it through an MCP server; rendering is done by
7
+ [HyperFrames](https://github.com/heygen-com/hyperframes) (HTML + GSAP → headless Chrome + FFmpeg → MP4).
8
+
9
+ > **Status: early (0.2).** The engine, the MCP server and the `motion-studio` skill are built and tested against
10
+ > test doubles for Freesound, ElevenLabs and Whisper. Nothing has been run in a real Claude Code session yet:
11
+ > 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).
13
+
14
+ ## Requirements
15
+
16
+ Node 22+, **FFmpeg and ffprobe on PATH** (`brew install ffmpeg`), Google Chrome (or set `CHROME_PATH`).
17
+ Optional: `whisper-cpp` for transcription (`brew install whisper-cpp`). Optional environment keys:
18
+ `FREESOUND_API_KEY` (sound search and download), `GOOGLE_FONTS_API_KEY` (font search only),
19
+ `ELEVENLABS_API_KEY` (generated voice; always quoted first, runs only with `confirm: true`).
20
+
21
+ ## Use it from Claude Code
22
+
23
+ ```bash
24
+ 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
27
+ claude # describe the video you want
28
+ ```
29
+
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.
33
+
34
+ ## CLI
35
+
36
+ ```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
46
+ ```
47
+
48
+ A project is `project.tsx` exporting a `<Composition>`; components are imported from `@codecut/components`
49
+ (or `flomotion/components`). Renders never use the network: fonts are locked by hash and checked before the first
50
+ frame; a missing or changed font file fails the render with the font id and path.
51
+
52
+ ## Limits
53
+
54
+ Some Later-tier options are typed stubs (`Precomp`, `Adjustment`, shader transitions, `.cube` LUTs, 3D text).
55
+ Byte-identical renders are verified on one machine only. See `docs/later.md` in the repository.
56
+
57
+ MIT licensed.