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.
- package/CHANGELOG.md +37 -0
- package/LICENSE +21 -0
- package/README.md +56 -2
- package/dist/bin.mjs +5951 -0
- package/dist/chunks/chunk-AVP5XX4G.mjs +25050 -0
- package/dist/chunks/chunk-IUSYVGP6.mjs +122 -0
- package/dist/chunks/chunk-JCLRAREG.mjs +218 -0
- package/dist/chunks/chunk-QG2MOGKO.mjs +4193 -0
- package/dist/chunks/lock-MLQUU7X3.mjs +29 -0
- package/dist/components.mjs +580 -0
- package/dist/core.mjs +340 -0
- package/dist/hooks.mjs +66 -0
- package/dist/jsx-dev-runtime.mjs +13 -0
- package/dist/jsx-runtime.mjs +11 -0
- package/docs/components/Adjustment.md +74 -0
- package/docs/components/Animate.md +45 -0
- package/docs/components/Audio.md +56 -0
- package/docs/components/B.md +22 -0
- package/docs/components/Blur.md +30 -0
- package/docs/components/Captions.md +207 -0
- package/docs/components/Card.md +105 -0
- package/docs/components/Center.md +80 -0
- package/docs/components/Chart.md +115 -0
- package/docs/components/Chip.md +104 -0
- package/docs/components/Circle.md +88 -0
- package/docs/components/Clip.md +104 -0
- package/docs/components/CodeBlock.md +103 -0
- package/docs/components/ColorGrade.md +75 -0
- package/docs/components/Composition.md +40 -0
- package/docs/components/Counter.md +216 -0
- package/docs/components/Cursor.md +94 -0
- package/docs/components/Curves.md +29 -0
- package/docs/components/DropShadow.md +42 -0
- package/docs/components/Enter.md +54 -0
- package/docs/components/Exit.md +54 -0
- package/docs/components/Font.md +41 -0
- package/docs/components/Fonts.md +22 -0
- package/docs/components/GlassCard.md +105 -0
- package/docs/components/Glitch.md +39 -0
- package/docs/components/Glow.md +36 -0
- package/docs/components/Grain.md +45 -0
- package/docs/components/Grid.md +101 -0
- package/docs/components/Group.md +79 -0
- package/docs/components/Highlight.md +31 -0
- package/docs/components/Hitstop.md +33 -0
- package/docs/components/I.md +22 -0
- package/docs/components/Image.md +89 -0
- package/docs/components/Impact.md +45 -0
- package/docs/components/Keyframes.md +37 -0
- package/docs/components/Line.md +95 -0
- package/docs/components/Look.md +34 -0
- package/docs/components/Marker.md +26 -0
- package/docs/components/Mask.md +48 -0
- package/docs/components/Matte.md +35 -0
- package/docs/components/Path.md +100 -0
- package/docs/components/Polygon.md +93 -0
- package/docs/components/Precomp.md +79 -0
- package/docs/components/ProgressRing.md +110 -0
- package/docs/components/Pulse.md +39 -0
- package/docs/components/PunchZoom.md +36 -0
- package/docs/components/README.md +115 -0
- package/docs/components/RGBSplit.md +39 -0
- package/docs/components/Rect.md +91 -0
- package/docs/components/RoundRect.md +91 -0
- package/docs/components/SafeArea.md +80 -0
- package/docs/components/Scene.md +77 -0
- package/docs/components/Sequence.md +77 -0
- package/docs/components/Shake.md +48 -0
- package/docs/components/Slam.md +51 -0
- package/docs/components/Sound.md +42 -0
- package/docs/components/Span.md +36 -0
- package/docs/components/SplitText.md +218 -0
- package/docs/components/SquashStretch.md +39 -0
- package/docs/components/Stack.md +97 -0
- package/docs/components/Stagger.md +80 -0
- package/docs/components/Strike.md +31 -0
- package/docs/components/Stroke.md +33 -0
- package/docs/components/Svg.md +89 -0
- package/docs/components/Text.md +195 -0
- package/docs/components/TextAnimator.md +57 -0
- package/docs/components/Theme.md +34 -0
- package/docs/components/Thud.md +45 -0
- package/docs/components/Title.md +195 -0
- package/docs/components/Track.md +39 -0
- package/docs/components/UIMock.md +107 -0
- package/docs/components/Underline.md +31 -0
- package/docs/components/Video.md +104 -0
- package/docs/components/Vignette.md +45 -0
- package/docs/components/Voiceover.md +32 -0
- package/docs/components/WhipPan.md +48 -0
- package/docs/components/Wobble.md +39 -0
- package/docs/gate2-manual-checklist.md +89 -0
- package/docs/hyperframes-notes.md +149 -0
- package/docs/later.md +20 -0
- package/docs/spec.md +147 -0
- package/package.json +46 -4
- package/skills/motion-studio/SKILL.md +87 -0
- package/skills/motion-studio/examples/saas-promo/README.md +7 -0
- package/skills/motion-studio/examples/saas-promo/make-assets.sh +42 -0
- package/skills/motion-studio/examples/saas-promo/project.tsx +545 -0
- package/skills/motion-studio/looks/kinetic.json +89 -0
- package/skills/motion-studio/looks/kinetic.scene.tsx +196 -0
- package/skills/motion-studio/looks/minimal.json +91 -0
- package/skills/motion-studio/looks/minimal.scene.tsx +163 -0
- package/skills/motion-studio/looks/sketch.json +83 -0
- package/skills/motion-studio/looks/sketch.scene.tsx +180 -0
- package/skills/motion-studio/references/components.md +5574 -0
- package/skills/motion-studio/references/motion.md +73 -0
- package/skills/motion-studio/references/review.md +32 -0
- package/skills/motion-studio/references/saas-promo.md +29 -0
- package/skills/motion-studio/references/sound.md +47 -0
- 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
|
-
#
|
|
1
|
+
# flomotion (CodeCut)
|
|
2
2
|
|
|
3
|
-
|
|
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.
|