diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md
index 8e6e3533..97598349 100644
--- a/ATTRIBUTION.md
+++ b/ATTRIBUTION.md
@@ -17,6 +17,18 @@ iconography, images or other Adobe assets; open licences only; every asset attri
| `assets/fonts/NotoSerif-Regular.ttf` | The Noto Project Authors | https://github.com/notofonts/latin-greek-cyrillic | OFL-1.1 (`assets/fonts/OFL-NotoSerif.txt`) |
| `assets/fonts/JetBrainsMono-Regular.ttf` | The JetBrains Mono Project Authors | https://github.com/JetBrains/JetBrainsMono | OFL-1.1 (`assets/fonts/OFL-JetBrainsMono.txt`) |
+## Screenshots
+
+Screenshots of EffectCraft itself, rendered headlessly, showing only procedurally generated demo content.
+
+| Asset | Author | Source | Licence |
+|---|---|---|---|
+| `docs/images/effectcraft-hero.png` | EffectCraft contributors | Original work: screenshot of EffectCraft (EffectCraft main window) | MIT OR Apache-2.0 |
+| `docs/images/effectcraft-3d.png` | EffectCraft contributors | Original work: screenshot of EffectCraft (EffectCraft Classic 3D) | MIT OR Apache-2.0 |
+| `docs/images/effectcraft-graph-editor.png` | EffectCraft contributors | Original work: screenshot of EffectCraft (EffectCraft Graph Editor) | MIT OR Apache-2.0 |
+| `docs/images/effectcraft-effects.png` | EffectCraft contributors | Original work: screenshot of EffectCraft (EffectCraft effects) | MIT OR Apache-2.0 |
+| `docs/images/effectcraft-render-queue.png` | EffectCraft contributors | Original work: screenshot of EffectCraft (EffectCraft Render Queue panel with the demo compositions queued for H.264 and ProRes export) | MIT OR Apache-2.0 |
+
## Code-drawn assets (original work, MIT OR Apache-2.0)
- UI icons drawn in code: `crates/ui-egui/src/icons.rs`.
diff --git a/README.md b/README.md
index 8f0ac588..f1f9d711 100644
--- a/README.md
+++ b/README.md
@@ -15,12 +15,12 @@
A free, open-source compositor in the spirit of After Effects: compositions, layers,
- keyframes, effects and expressions, native on macOS, Windows and Linux, and in the browser later on.
- It is in early development. The engine crates are being written now and there is no app to run yet.
+ keyframes, 241 effects, expressions, 3D cameras and lights, and a render queue, native on macOS,
+ Windows and Linux, and in the browser later on. Young, moving fast, and already usable.
-
+
@@ -35,6 +35,12 @@
All Crafting Apps
+
+
+
+
+
+
> [!NOTE]
> **ArtCraft is a community of artists from all walks of life.** Painters, photographers,
> filmmakers, illustrators, designers, animators, hobbyists, and people who picked up a pencil
@@ -42,9 +48,13 @@
What it is ·
- Where it stands ·
- The plan ·
- Building ·
+ Animate ·
+ Effects ·
+ 3D ·
+ Export ·
+ Agents ·
+ Get started ·
+ Status ·
How it's made ·
The Crafting Apps ·
License
@@ -71,84 +81,104 @@ then to go further in a few places where it matters to us:
- **No FFmpeg.** Video and audio decoding and encoding come from FilmCraft's own pure-Rust
codecs.
-## Where it stands
+## Animate
-> [!IMPORTANT]
-> **There is no app to run yet.** EffectCraft is in its first milestone. The planning is done and
-> the low-level engine crates are being written. The windowed app, the renderer and the effects
-> come next. If you want to follow along or help shape it, the
-> [Discord](https://discord.gg/artcraft) is the place.
+The panels, menus and shortcuts follow After Effects, so your muscle memory carries over:
+Project, Composition, Timeline, Effect Controls, Properties, Effects & Presets, Character,
+Paragraph, Align, Info, Preview, Audio and the Render Queue, docked the way you expect.
-| | What | State |
-|---|---|---|
-| **Built** | The plan: an After Effects UI and feature reference, a full effects list, the architecture and a milestone plan (see [`plan/`](plan/)) | Done |
-| **In progress** | Engine foundation crates: time, geometry, color and blend modes, keyframes, the project model, raster images, Bezier paths, text | Early code and first tests |
-| **Next** | The compositor, a first set of effects, the editing engine and the After Effects style interface rendering an animated demo composition | Not started |
-| **Later** | Precomps and preview, shapes and masks, 3D, expressions, text animators, export, GPU rendering, the web build | Planned |
+- **Layers of every kind:** solids, shapes, text, footage, nested compositions, nulls,
+ adjustment layers, cameras and lights; parenting, track mattes, all 38 blend modes, motion blur.
+- **Keyframes that behave the same:** linear, Bezier, hold, auto and continuous Bezier, roving
+ keys, Easy Ease (F9), Keyframe Velocity and Interpolation dialogs, copy and paste at the current
+ time, and a **Graph Editor** with value and speed graphs and draggable handles.
+- **Time:** time remapping, time stretch, time-reverse, freeze frame, work area, markers, exact
+ frame-accurate timing at every frame rate including 29.97 drop-frame.
+- **Shapes and masks:** shape layers with trim paths, repeaters, round corners, offset, zig zag,
+ twist, wiggle, merge paths and gradient strokes; masks drawn with the pen tool, with modes,
+ feather, expansion and vertex editing in the viewer.
+- **Text:** point and paragraph text with real shaping, the Character and Paragraph panels, and
+ text animators with range selectors.
+- **Expressions:** JavaScript with the After Effects object model (`wiggle`, `loopOut`,
+ `thisComp.layer("…")`, vector maths on arrays), an inline editor and the pick-whip.
-The live checklist is [`plan/STATUS.md`](plan/STATUS.md).
+
+
+
-### The crates so far
+## Effects
-| Crate | What it does |
-|---|---|
-| `effectcraft-time` | Exact media time in integer ticks, so 23.976 and 29.97 fps, drop-frame timecode and audio sample rates never drift |
-| `effectcraft-geom` | 2D and 3D vectors, matrices and the layer transform (anchor, position, scale, rotation, orientation) |
-| `effectcraft-color` | RGBA color, sRGB transfer, HSL and HSV, and the 38 After Effects blend modes |
-| `effectcraft-keyframe` | Animated values: linear, hold and Bezier keyframes with speed and influence, and spatial motion paths |
-| `effectcraft-project` | The document: project items, compositions, layers and the property tree |
-| `effectcraft-raster` | Floating-point premultiplied images with warps, blurs and compositing, parallel across cores |
-| `effectcraft-path` | Bezier shapes, path operations (trim, round corners, zig zag, offset and more), stroking and anti-aliased fills |
-| `effectcraft-text` | Fonts, shaping, bidirectional text, line breaking and glyph outlines for text layers |
+241 effects across After Effects' categories, each with its parameter names, order and
+defaults: blur and sharpen, channel, color correction (Curves, Levels, Hue/Saturation, Lumetri
+Color…), distort (Warp, Bulge, Turbulent Displace, CC Power Pin…), generate (Fractal Noise,
+Gradient Ramp, Stroke, Write-on, Audio Spectrum…), keying, matte, noise and grain, perspective,
+**simulation** (CC Particle World, CC Rainfall, Shatter, Card Dance, Caustics, Wave World…),
+stylize (Glow, CC Glass…), text, transitions, utility and expression controls.
-These are moving fast. Expect names and APIs to change.
+
+
+
-## The plan
+## 3D
-EffectCraft is built in milestones. The first one is about getting something you can see on
-screen as early as possible, then filling in depth underneath.
+Classic 3D the way After Effects does it: 3D layers with orientation and material options,
+one- and two-node **cameras** with depth of field, **lights** (parallel, spot, point, ambient)
+with soft ray-traced shadows, layers that intersect correctly, orbit, pan and dolly camera
+tools, and Front, Top, Left and Custom views.
-| | Milestone | What you'll get |
-|---|---|---|
-| **M0** | Skeleton and visual shell | The full panel layout over a real CPU compositor playing an animated demo composition, about 8 effects, and the control channel and MCP server |
-| M1 | Keyframes | Complete temporal and spatial interpolation, Easy Ease, roving keys, velocity |
-| M2 | Compositing | All 38 blend modes, track mattes, parenting, 8/16/32 bit per channel behaviour |
-| M3 | Project operations | Composition and layer settings, layer commands, save and open `.ecproj`, undo, clipboard |
-| M4 | Preview and precomps | Nested compositions, adjustment layers, motion blur, cached RAM preview with audio |
-| M5 | Timeline depth | Keyframe editing, the graph editor, markers, trims, time remapping |
-| M6 | Shapes, masks and footage | Shape layers and path operations, masks, the pen tool, video and image import |
-| M7 | 3D | 3D layers, cameras and lights |
-| M8 | Expressions | JavaScript expressions with the After Effects object model (`wiggle`, `loopOut`, `thisComp` and friends) |
-| M9 | Text and effects | Text animators, text on a path, layer styles, the first 60 effects |
-| M10 | Export | Render queue, image sequences, H.264 and ProRes, GIF, command-line rendering |
-| M11 | Animation tools | Motion Sketch, Wiggler, presets, Lottie import and export, audio |
-| M12 | Performance | GPU compositing and effects, disk cache, motion tracking |
-| M13 to M16 | Beyond | More effects, puppet and paint tools, polish, the web app, a plugin API |
+
+
+
-The details, with an acceptance test for every task, are in
-[`plan/execution-plan.md`](plan/execution-plan.md) and [`plan/architecture.md`](plan/architecture.md).
+## Export
-## Building from source
+A Render Queue like After Effects', with Render Settings and Output Modules: **H.264** MP4 and
+**ProRes** MOV (Proxy to 4444 XQ with alpha) with audio, PNG, JPEG, TIFF and 32-bit EXR
+sequences, and animated GIF. The same queue runs from the command line. Every encoder is
+FilmCraft's pure-Rust code; there is no FFmpeg inside.
-You need [Rust](https://rustup.rs/) 1.95 or newer. There is nothing to launch yet, but you can
-build and test the engine crates:
+
+
+
+
+## Built for agents
+
+Everything you can do from a menu is a command with an id, and agents can reach every one of
+them:
+
+- **MCP server:** `effectcraft-cli mcp` speaks the Model Context Protocol over stdio, headless
+ or bridged to the running app (`--bridge 9877`). Tools cover commands, the project and property
+ tree, keyframes and rendered frames. This repository ships a ready [`.mcp.json`](.mcp.json).
+- **Command line:** one-shot calls with JSON output, for example
+ `effectcraft-cli set Main '#1' transform/position '[100,360]' --time 0 main.ecproj --save`
+ or `effectcraft-cli render --comp Main --out main.mp4`.
+- **Control channel:** `effectcraft --control 9877` accepts JSON lines to run commands, inspect
+ and click any widget by its automation id, and take screenshots.
+
+See [docs/agents.md](docs/agents.md) and [docs/control-protocol.md](docs/control-protocol.md).
+
+## Get started
+
+You need [Rust](https://rustup.rs/) 1.95 or newer.
```sh
git clone https://github.com/storytold/effectcraft
cd effectcraft
-cargo build
-cargo test
+cargo run --release -p effectcraft # the app, with the demo project open
+cargo run --release -p effectcraft-cli -- render --out intro.mp4 # render the demo headless
```
-To work on one crate:
+To work on it: `cargo test --workspace`, and `cargo xtask ci` before every commit (format, lints,
+tests, layering, asset attribution and the WebAssembly build). See [CONTRIBUTING.md](CONTRIBUTING.md),
+[docs/architecture.md](docs/architecture.md) and [docs/testing.md](docs/testing.md).
-```sh
-cargo test -p effectcraft-keyframe
-```
+## Where it stands
-The workspace picks up every crate under `crates/`, so while a new crate is half-written the
-whole build can break for a while. The `cargo xtask` helpers named in the plan (layer checks,
-asset checks, CI) are not written yet.
+EffectCraft is young. The core of After Effects is in place and gets deeper every week: what is
+done and what comes next is in the [ROADMAP](ROADMAP.md). Not there yet: layer styles, time and
+audio effects, audio playback, motion tracking, puppet and paint tools, the web build and GPU
+compositing. Projects are saved as `.ecproj`, readable versioned JSON; After Effects `.aep`
+files cannot be opened.
## How it's made
@@ -156,10 +186,10 @@ asset checks, CI) are not written yet.
top and nothing underneath depends on it.
- **Clean room.** We work from After Effects' public documentation and how it behaves, never
from Adobe's files, icons, presets or code. No code is copied from GPL projects. The full rules
- are in [`plan/README.md`](plan/README.md).
+ are in [AGENTS.md](AGENTS.md).
- **Private by default.** No telemetry, and no network access unless you ask for it.
- **One family.** EffectCraft shares its time model and text engine design with FilmCraft, and
- gets its video and audio codecs from it (see [`plan/adr/`](plan/adr/)).
+ gets its video and audio codecs from it.
## The Crafting Apps
diff --git a/docs/images/effectcraft-3d.png b/docs/images/effectcraft-3d.png
new file mode 100644
index 00000000..4f0d003a
Binary files /dev/null and b/docs/images/effectcraft-3d.png differ
diff --git a/docs/images/effectcraft-3d.png.attribution b/docs/images/effectcraft-3d.png.attribution
new file mode 100644
index 00000000..10fd52a0
--- /dev/null
+++ b/docs/images/effectcraft-3d.png.attribution
@@ -0,0 +1,8 @@
+asset: effectcraft-3d.png
+title: EffectCraft Classic 3D
+author: EffectCraft contributors
+source: original work (headless render of the EffectCraft UI via crates/ui-egui/examples/snapshot.rs)
+license: MIT OR Apache-2.0
+license-file:
+added: 2026-10-01 by Claude (agent) for Brandon Thomas
+notes: Screenshot of EffectCraft only, showing procedurally generated demo content from crates/engine/src/demo.rs and built-in effects. EffectCraft Classic 3D: the demo "3D Showcase" composition in Custom View 1, showing intersecting 3D planes, spot-light shadows, the camera frustum and light wireframes.
diff --git a/docs/images/effectcraft-effects.png b/docs/images/effectcraft-effects.png
new file mode 100644
index 00000000..02eadb0d
Binary files /dev/null and b/docs/images/effectcraft-effects.png differ
diff --git a/docs/images/effectcraft-effects.png.attribution b/docs/images/effectcraft-effects.png.attribution
new file mode 100644
index 00000000..ed8548e4
--- /dev/null
+++ b/docs/images/effectcraft-effects.png.attribution
@@ -0,0 +1,8 @@
+asset: effectcraft-effects.png
+title: EffectCraft effects
+author: EffectCraft contributors
+source: original work (headless render of the EffectCraft UI via crates/ui-egui/examples/snapshot.rs)
+license: MIT OR Apache-2.0
+license-file:
+added: 2026-10-01 by Claude (agent) for Brandon Thomas
+notes: Screenshot of EffectCraft only, showing procedurally generated demo content from crates/engine/src/demo.rs and built-in effects. EffectCraft effects: a CC Particle World particle burst with Glow on a black solid, with the Effect Controls panel listing its parameters.
diff --git a/docs/images/effectcraft-graph-editor.png b/docs/images/effectcraft-graph-editor.png
new file mode 100644
index 00000000..769103af
Binary files /dev/null and b/docs/images/effectcraft-graph-editor.png differ
diff --git a/docs/images/effectcraft-graph-editor.png.attribution b/docs/images/effectcraft-graph-editor.png.attribution
new file mode 100644
index 00000000..1f1f94f1
--- /dev/null
+++ b/docs/images/effectcraft-graph-editor.png.attribution
@@ -0,0 +1,8 @@
+asset: effectcraft-graph-editor.png
+title: EffectCraft Graph Editor
+author: EffectCraft contributors
+source: original work (headless render of the EffectCraft UI via crates/ui-egui/examples/snapshot.rs)
+license: MIT OR Apache-2.0
+license-file:
+added: 2026-10-01 by Claude (agent) for Brandon Thomas
+notes: Screenshot of EffectCraft only, showing procedurally generated demo content from crates/engine/src/demo.rs and built-in effects. EffectCraft Graph Editor: the value graph of the EFFECTCRAFT text animator Range Start keyframes with easing, and the graph editor button bar.
diff --git a/docs/images/effectcraft-hero.png b/docs/images/effectcraft-hero.png
new file mode 100644
index 00000000..b260bf93
Binary files /dev/null and b/docs/images/effectcraft-hero.png differ
diff --git a/docs/images/effectcraft-hero.png.attribution b/docs/images/effectcraft-hero.png.attribution
new file mode 100644
index 00000000..2cdca513
--- /dev/null
+++ b/docs/images/effectcraft-hero.png.attribution
@@ -0,0 +1,8 @@
+asset: effectcraft-hero.png
+title: EffectCraft main window
+author: EffectCraft contributors
+source: original work (headless render of the EffectCraft UI via crates/ui-egui/examples/snapshot.rs)
+license: MIT OR Apache-2.0
+license-file:
+added: 2026-10-01 by Claude (agent) for Brandon Thomas
+notes: Screenshot of EffectCraft only, showing procedurally generated demo content from crates/engine/src/demo.rs and built-in effects. EffectCraft main window: the demo composition "EffectCraft Intro" at 0:00:03:00 with the EFFECTCRAFT text layer selected, Properties panel (Layer Transform, Text, Paragraph, Text Animation), Project panel and Timeline.
diff --git a/docs/images/effectcraft-render-queue.png b/docs/images/effectcraft-render-queue.png
new file mode 100644
index 00000000..f77e782a
Binary files /dev/null and b/docs/images/effectcraft-render-queue.png differ
diff --git a/docs/images/effectcraft-render-queue.png.attribution b/docs/images/effectcraft-render-queue.png.attribution
new file mode 100644
index 00000000..979571eb
--- /dev/null
+++ b/docs/images/effectcraft-render-queue.png.attribution
@@ -0,0 +1,8 @@
+asset: effectcraft-render-queue.png
+title: EffectCraft Render Queue panel with the demo compositions queued for H.264 and ProRes export
+author: EffectCraft contributors
+source: original work (headless render of the EffectCraft UI via crates/ui-egui/examples/snapshot.rs)
+license: MIT OR Apache-2.0
+license-file:
+added: 2026-10-01 by Claude (agent) for Brandon Thomas
+notes: Screenshot of EffectCraft only, showing procedurally generated demo content from crates/engine/src/demo.rs and built-in effects. EffectCraft Render Queue panel with the demo compositions queued for H.264 and ProRes export.