Brandon Thomas
0d5f60c4b7
M13.14: agent-interface audit (every command over MCP, control channel and exec --list; automation ids for every widget)
...
- command.describe / list_commands {schemas} give each command's params JSON Schema;
MCP describe_command, add_effect, list_effects and get_state (app.capabilities)
- effectcraft-cli exec --list [--schemas]
- headless UI audit: every panel kind's interactive egui widgets are covered by
automation ids (fixed: timeline navigator, label swatch, bar trim edges, group and
property name cells)
- command lookup is indexed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 09:59:23 -04:00
Brandon Thomas
78cd313d3c
M14.4: scripting with an After Effects-style JavaScript object model
...
New crate effectcraft-script (L4): boa runtime with app/Project/CompItem/
Layer/PropertyGroup/Property/TextDocument/MarkerValue/RenderQueue/File
object model over engine commands (undoable, undo groups), AE match-name
table, file/network security gate. Entry points: script.run command,
File > Scripts > Run Script File (.jsx/.js), Window > Script Console,
effectcraft-cli script, MCP run_script. Engine: project.delete/duplicate,
prop.renameGroup/setGroupEnabled/removeGroup/duplicateGroup/moveGroup.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 22:13:09 -04:00
Brandon Thomas
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