Brandon Thomas and Claude Opus 5.5
b4b2950c5d
M3.4: After Effects menu-bar parity (engine menu tree, ~190 new commands, menu dialogs)
...
- engine::menus: the AE 2026 menu bar as an indented tree (same menus, order,
submenus, separators, "..." labels, AE default macOS shortcuts; [mac]/[!mac]
app menu vs Edit > Preferences / File > Exit), entries bind command params,
check-mark state, Effect categories from the registry.
- New engine commands: Layer (quality/sampling, frame blending, switch ops,
numeric Transform values, Center Anchor Point, Auto-Orient, mask ops on
existing masks, layer markers + lock, track-matte menu, open/reveal source,
expression errors), Edit (keyframe clipboard + Paste Reversed, Copy with
(Relative) Property Links, Copy Expression Only, Lift/Extract Work Area,
Select Label Group, Purge, Edit Original), Animation (JSON animation
presets, Add Keyframe, Exponential Scale, Time-Reverse Keyframes, Sequence
Layers, text selectors, Remove All Text Animators, Reveal Properties),
File (New Folder, Close/Close Project, Save a Copy, placeholders/solids,
New Comp from Selection, Dependencies, Run Script File, Interpret/Remember/
Apply Interpretation, Replace/Reload Footage, Reveal in Finder),
Composition (crop to ROI / layer bounds, Save Frame As PNG, Responsive
Design - Time), View (guides add/clear/import/export, region of interest),
Help docs links.
- Frontend commands (viewer, panels, workspaces, dialogs) are registered
engine commands that emit Event::Frontend; owned-elsewhere items (3D,
render queue, time remap, pen, tracking, layer styles) are disabled stubs.
- UI renders the engine tree (check gutter, scrolling long submenus, dynamic
Undo/Redo labels), bindings include param'd entries, generic parameter
forms, Settings, Keyboard Shortcuts, View Options, guides/ROI/pasteboard in
the viewer, timeline reveal of engine-picked properties; snapshot example
gains a `pointer` step for opening menus headlessly.
- Tests: menu order, every entry resolves, spec/tree consistency, shortcut
uniqueness, per-family command tests with undo.
- Workspace clippy -D warnings clean (rust 1.96 lints).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 22:36:31 -04:00
Brandon Thomas
5077aafffc
Merge branch 'worktree-agent-afea1146abae6192c'
...
# Conflicts:
# apps/effectcraft-cli/Cargo.toml
# apps/effectcraft-cli/src/main.rs
# crates/render/src/lib.rs
2026-10-01 22:35:20 -04:00
Brandon Thomas
b168d902c7
Merge branch 'worktree-agent-a45c0c688bf960993'
...
# Conflicts:
# Cargo.lock
# apps/effectcraft-cli/Cargo.toml
# apps/effectcraft-cli/src/main.rs
# crates/host/src/lib.rs
# crates/ui-egui/src/panels/mod.rs
2026-10-01 22:29:58 -04:00
Brandon Thomas and Claude Opus 5.5
7f9c3a85c0
M10: render queue + export
...
- crates/export (effectcraft-export): render a comp's span to H.264 MP4 (+AAC),
ProRes 422/4444 MOV (+PCM, alpha), PNG/JPEG/TIFF/EXR sequences and animated GIF
via FilmCraft's pure-Rust encoders and MP4/MOV muxer; parallel batched frame
rendering, progress callback with cancellation.
- project: Render Queue model (Render Settings, Output Module, output path
templates, status) saved with the project.
- render: FootageSource::audio hook + comp audio mixdown (levels, in/out, solo,
precomps); media implements it.
- engine: Exporter hook, background/blocking render job, renderQueue.* commands
(add Cmd+M, remove, setRender, setRenderSettings, setOutputModule, setOutput,
move, duplicate, render, stop, list, formats).
- host wires the exporter; CLI `render` subcommand.
- ui-egui: After Effects-style Render Queue panel with automation ids.
- tests: encode/decode round trips for every format (FilmCraft decoders,
ffmpeg/ffprobe oracle when installed), audio, cancel, engine commands.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 22:02:06 -04:00
Brandon Thomas
b307a562ed
Merge branch 'worktree-agent-aaed9f382307fbe0b'
...
# Conflicts:
# crates/engine/src/tests.rs
2026-10-01 21:49:02 -04:00
Brandon Thomas and Claude Opus 5.5
c672e03160
M14.1: MCP server + agent CLI
...
- crates/automation (L5, no egui): hand-rolled JSON-RPC 2.0 MCP server over
stdio (initialize, ping, tools/list, tools/call); headless backend (in-process
Session) and bridge backend (desktop control channel). Tools: list_commands,
execute_command, get_project/comp/layer, get/set_property, add_keyframe,
render_frame (inline PNG), open/save_project, undo/redo; bridge-only
screenshot, ui_* and raw control passthrough.
- effectcraft-cli: info, commands, exec, run, props, get, set, render-frame,
mcp [--bridge PORT]; --json, --project/--demo/--empty, --save/--save-as.
- engine: prop.get, layer.tree node paths + time, Session::resolve_comp,
render_rgba8, execute_checked (rejects unknown params, lists accepted keys).
- control channel: render.frame; engine.execute runs every engine command
directly (no dialogs, validated params).
- docs: control-protocol.md, agents.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 21:40:31 -04:00
Brandon Thomas and Claude Opus 5.5
a2ff724ac2
M12.1: render cache + parallel compositing fast paths
...
- render: LayerCache (content-keyed processed-layer cache: source -> masks ->
effects, keyed by a hash of the layer's non-transform props evaluated at the
frame time, solid item, switches, scale; time folded in for clock-driven
effects / wiggle paths). Static and transform-only layers render once;
edits only re-render the edited layer. Session + UI frame jobs share it.
- effects: TIME_DEPENDENT list + test that every clock-reading effect is listed.
- raster: affine composite fast path (per-row span clipping, unchecked interior
bilinear, integer-translation copies, inlined Normal blend), checked against
composite_warp_reference; box/Gaussian blur without transposes, two
ping-pong buffers; accumulate_warp so motion blur sums into one buffer
instead of one full-frame image per sub-sample.
- ui: viewer frame is urgent and jumps the prefetch queue; stale-revision jobs
are dropped; paused prefetch waits for the viewer frame; "Frame Render Time"
reports viewer frames only; parallel f32 -> Color32 conversion.
- cli: `frame --bench N` (per-layer/per-effect timings, wall + CPU time) and
`frame --bench-play N` (consecutive frames with/without the layer cache).
- tests: cache transparency (scrub, edits of values/keys/effects/masks/
solids/text/timing), hit/miss accounting, time-dependent effects, demo
cached == uncached, fast warp/blur/accumulate == reference.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 21:34:33 -04:00
Brandon Thomas and Claude Opus 5.5
4f47a01fed
M0.9: AE-style Properties panel, context tab titles, AE default workspace; headless UI snapshot tool
...
- Properties panel (panels/properties.rs): Layer Transform with keyframe navigator
or stopwatch, AE value formatting (integers, %, Nx+N° rotation), linked Scale,
Reset; Text (font/style/size/leading/tracking/stroke, fill/stroke toggles);
Paragraph (7 alignments); Text Animation > Add Animator; scrolling.
- Tabs name what they show: Composition <comp>, <comp> timeline, Effect
Controls <layer>, Properties: <layer>.
- Default workspace: full-height right column, Preview over Properties.
- engine: time.go nextKey/prevKey accept prop uid; layer.setText supports all
seven justify modes, applyFill/applyStroke and Auto leading (fixes the
Paragraph 'justify' button mapping to Justify All).
- examples/snapshot: render the real UI headless (egui_kittest + wgpu) with
scripted control-channel steps.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 21:19:23 -04:00
Brandon Thomas and Claude Opus 5.5
76ac3f74f7
M7.1: Classic 3D renderer, cameras, lights, 3D views and camera-tool commands
...
- render/three_d: camera eval (one/two-node, DOF), default 50mm comp camera,
orthographic Front/Left/Top/Back/Right/Bottom + perspective Custom Views,
orbit/pan/dolly rig math; lights (parallel/spot/point/ambient, falloff,
cone feather) and material shading; per-pixel depth-sorted compositor for
3D runs (exact intersections, perspective-correct sampling, blend modes,
track mattes, motion blur), ray-cast planar shadows with transmission and
diffusion, per-layer DOF blur. RenderOpts.view camera override.
- project: camera iris/highlight props, aperture per comp width, light
orientation/rotations, two-node auto-orient defaults.
- engine: layer.newCamera/newLight with presets & settings,
layer.cameraSettings/lightSettings (Layer Settings dispatches),
view.set3DView + View > Switch 3D View items (F10/F11/F12), last/reset view,
camera.orbit/pan/dolly, view.get3D; EditorState.views3d.
- demo: "3D Showcase" comp (camera move, key spot + ambient fill, shadows,
DOF, intersecting planes, gridded floor).
- tests: projection, depth order, intersections, lighting, shadows, DOF,
views, rig math; command undo/redo. Fix a few pre-existing clippy lints.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 21:09:21 -04:00
Brandon Thomas and Claude Opus 5.5
214345df13
control: keep channel responsive when window is covered (disable App Nap); fail fast on occluded screenshots
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 20:49:29 -04:00
Brandon Thomas and Claude Opus 5.5
3a59a8470d
M0.9–M0.10: egui frontend (AE-style panels, viewer, timeline, effect controls, dialogs), desktop app with control channel, host wiring; cargo fmt
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 14:48:31 -04:00
Brandon Thomas and Claude Opus 5.5
e2ba01a11f
Merge expressions engine (boa)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 14:40:22 -04:00
Brandon Thomas and Claude Opus 5.5
4ce50e00a0
M8: expressions engine (boa) with AE object model
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 14:39:02 -04:00
Brandon Thomas and Claude Opus 5.5
426f153794
Merge media import (FilmCraft codecs)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 14:29:17 -04:00
Brandon Thomas
3feab9db97
Merge branch 'worktree-agent-a9f473e3a56abd824'
2026-10-01 14:28:25 -04:00
Brandon Thomas and Claude Opus 5.5
c361a9348a
Cargo.lock for engine/CLI
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 14:28:25 -04:00
Brandon Thomas and Claude Opus 5.5
d867178137
M6.8: media import via FilmCraft codecs (probe, frame cache, stills, sequences)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 14:28:14 -04:00
Brandon Thomas and Claude Opus 5.5
ba2fa1bddf
M6.2: shape path operators (round corners, offset, twist, zig zag, wiggle, merge paths, gradient stroke)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 14:26:28 -04:00
Brandon Thomas and Claude Opus 5.5
808cd490cd
M0.1–M0.7: workspace, time/geom/color/keyframe/project/raster/path/text/effects/render crates
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 14:05:20 -04:00