Brandon Thomas
a55b07ef01
Merge main into M13.23
2026-10-03 18:35:42 -04:00
Brandon Thomas and Claude Opus 5.5
1ec9336d7c
M13.23: GPU simulation render passes
...
CC Rainfall, Snowfall, Star Burst, Bubbles, Drizzle, Hair, Mr. Mercury,
Caustics, Wave World, Foam, Shatter, Card Dance and Card Wipe render on the GPU
(fx_sim.rs / fx_sim.wgsl). The per-frame simulation / layout stays on the CPU
and is shared with the CPU effect through plans (effects::sprite_plan,
piece_plan, bubble_list, mercury_blobs, drizzle_drops, wave_world_plan,
caustics_setup); a tiled item rasteriser composites sprites, bubbles, blob
fields and textured pieces in the CPU's order and shading. Layer-dependent
sprite colours (refracting rain, star-burst and hair roots) are sampled per
pixel; piece plans read the frame back once.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 18:35:22 -04:00
Brandon Thomas
bbe29e7c5b
Merge branch 'worktree-agent-aab5c21557d20742c'
2026-10-03 18:20:21 -04:00
Brandon Thomas
bae3ccc410
Merge branch 'main' into worktree-agent-aab5c21557d20742c
2026-10-03 18:14:17 -04:00
Brandon Thomas and Claude Opus 5.5
3881dbb32e
M13.25: Home Templates gallery (thumbnails, open, delete, Save Current as Template), Save as Template and My Custom RGB dialogs, form automation ids; parity update
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 18:14:17 -04:00
Brandon Thomas and Claude Opus 5.5
2e5ea051a8
M13.23: GPU Immersive Video effects
...
VR Blur, Chromatic Aberrations, Color Gradients, Converter (all projections and
cube layouts), De-Noise, Digital Glitch, Fractal Noise, Glow, Plane to Sphere,
Rotate Sphere, Sharpen and Sphere to Plane run on the GPU (fx_vr.rs /
fx_vr.wgsl) with the CPU's equirectangular maths: seam-wrapping, pole-continuing
sampling and latitude-widened box blurs, per eye for stereo layouts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 17:53:23 -04:00
Brandon Thomas and Claude Opus 5.5
9e70cde725
M13.25: View > Simulate Output > My Custom RGB (primaries, white, gamma or an RGB ICC profile; kept in Settings; view.customRgb) and File menu entries for templates
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 17:46:41 -04:00
Brandon Thomas and Claude Opus 5.5
e3e35a7ec2
M13.23: GPU colour management (LUTs, OCIO, Color Profile Converter, Lumetri LUT/look)
...
Apply Color LUT, OCIO CDL / Color Space / Display / File / Look Transform and
Color Profile Converter compile to colour programs (effects::color_program,
built next to the CPU effects) that fx_lut.wgsl interprets per pixel; LUTs
(1D, 3D, cineSpace shapers, inverses) are read from the storage buffer with the
CPU's nearest / trilinear / tetrahedral interpolation. Lumetri's Input LUT and
Look no longer force the CPU. Custom .ocio configs stay on the CPU.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 17:43:24 -04:00
Brandon Thomas and Claude Opus 5.5
b760f1d23a
M13.25: project templates engine — eight original built-in templates with Essential Graphics controls and rendered thumbnails; user .ectemplate templates in the config Templates folder; templates.list/thumbnail/create/saveAs/delete
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 17:37:18 -04:00
Brandon Thomas and Claude Opus 5.5
6b91afc087
M13.23: GPU 3D Channel effects (aux channels as textures)
...
3D Channel Extract, Cryptomatte, Depth Matte, Depth of Field, EXtractoR, Fog 3D,
ID Matte and IDentifier run on the GPU (fx_depth.rs / fx_depth.wgsl): aux planes
upload as a texture and are resampled onto the buffer grid with the CPU's index
arithmetic; tests compare against the CPU at 1x / 2x aux resolution, padded
buffers, half resolution and 8 / 32 bpc composites.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 17:33:41 -04:00
Brandon Thomas and Claude Opus 5.5
f256677c8e
Parity audit at 58163a2: ≈98% weighted (99.6% with fractions), 87/5/0, ≈2–2.5 h wall clock left
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 17:26:06 -04:00
Brandon Thomas and Claude Opus 5.5
081ce79de3
Merge M13.14 agent-interface audit + lazy open (worktree-agent-a5f8967ebd42ce98b)
...
The branch's commits say M13.14; on main that id is the puppet work, so this arc is M13.21.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 17:23:10 -04:00
BFlat
58163a28fb
Merge pull request #5 from storytold/docs-accuracy
...
Docs: accuracy pass (README, ROADMAP, parity, preferences)
2026-10-04 01:16:08 +07:00
BFlat
8a7142f9eb
Merge pull request #4 from storytold/timeline-properties
...
Timeline: working rename and twirl arrows, every property shortcut (AA…UU, Alt+Shift keys, Ctrl+`)
2026-10-04 01:16:00 +07:00
bflatastic
2c056ae6cf
Docs: accuracy pass — README (306 effects, the web build ships, HEVC/AV1 export, pure-Rust encoders are FilmCraft's plus our own, an accurate 'still to come' list instead of features that exist), ROADMAP (M11 done, M12 mostly done, M13 done, all effects in full), parity summary (no simplified effects left), preferences (web storage is OPFS/IndexedDB; the in-window macOS menu bar setting), CLAUDE.md (the Illustrator sibling is ../vectorcraft)
2026-10-04 01:13:21 +07:00
bflatastic
f95eface83
M13.20: docs — README (Timeline shortcuts and Puppet tools), control protocol (reveal / keyAt / twirlSelected UI commands, timeline.layer.<id>.row and viewer.puppetPin.<uid> element ids), agents guide (Timeline: layer.arrange above, reveal shortcuts, keys.toggleTransform, rename), architecture (puppet selection, rigging and follow-through; per-thread expression context recovery), parity (M13.17–M13.20)
2026-10-04 01:10:36 +07:00
bflatastic
f9990f7387
M13.20: every Timeline property shortcut — double presses AA (Material Options), PP (paint / Roto Brush / Puppet), SS (selected properties), RR (Time Remap), TT (Mask Opacity), MM (all mask properties; a single M now shows Mask Path), FF (missing effects), EE (expressions) next to LL and UU; Alt+Shift+A/P/S/R/T add or remove a keyframe at the current time on every selected layer in one undo step (keys.toggleTransform: separated X/Y/Z Position, Orientation and X/Y/Z Rotation on 3D layers); Ctrl/Cmd+` twirls the selected layers open or closed (from a reveal, their full tree)
2026-10-04 01:10:33 +07:00
bflatastic
aef72378f8
M13.19: the Timeline's rename field and twirl arrows work — the name field took the keyboard focus every frame (Enter and clicking away could never leave it, which also silenced every single-key shortcut); it now focuses once with the name selected, Enter or a click elsewhere commits, Escape cancels; the layer row's click area sat on top of the twirl arrow and the name field (it was registered after them) and now sits under them; Ctrl-click a layer's arrow opens every group inside
2026-10-04 01:09:20 +07:00
BFlat
ba3748f79e
Merge pull request #3 from storytold/timeline-viewer-fixes
...
Viewer pan no longer snaps back; drag to reorder layers in the Timeline
2026-10-04 00:33:54 +07:00
bflatastic
52cf74e997
M13.18: drag layer rows in the Timeline to reorder them — a line shows where they land, the selected layers move together (an unselected row moves alone), one undo step, nothing for a drop in place; layer.arrange {above: layer} for agents
2026-10-04 00:31:59 +07:00
bflatastic
bb973e2c76
M13.17: the viewer keeps its pan after a middle-button or Hand drag — egui reports no total drag on the release frame, so the pan was recomputed as the drag's start and snapped back
2026-10-04 00:31:59 +07:00
BFlat
bb06a66083
Merge pull request #2 from storytold/puppet-rigging
...
Puppet tools: pin editing, rigging to nulls, follow-through; expression runtime fix
2026-10-04 00:26:24 +07:00
bflatastic
78dceea638
M13.16: docs: parity cites the renumbered puppet tasks (M13.14–M13.16)
2026-10-04 00:22:30 +07:00
bflatastic
a02bcc8441
M13.16: puppet Follow-Through — puppet.follow (Puppet tool bar ▸ Follow-Through…) makes pins trail a leader pin for hair, cloth and overlapping action: each follower's Position adds the leader's displacement from rest delayed by delay (the k-th nearest by k × delay with Cascade), scaled by Amount, keeping its own keyframes; leader = the first selected pin, followers = the others; one undo step; reachable over MCP (execute_command)
2026-10-04 00:19:26 +07:00
bflatastic
6ec177de83
M13.15: rig puppet pins to nulls — Points Follow Nulls / Nulls Follow Points (Window ▸ Create Nulls From Paths, paths.* {pins?}) take selected pins, named pins, or every pin of a layer with no path: a null per Position / Advanced pin drives its Position (fromComp of the null's anchor, so parented nulls rig limbs), or rides on it (toComp of the pin's Position) to carry other layers; one undo step
2026-10-04 00:19:25 +07:00
bflatastic
6869cff51b
M13.14: puppet pin editing — click / Shift-click selects pins (puppet.selectPins), a drag from empty canvas or Alt-drag marquee-selects them, Select All with a pin selected takes every pin of that kind, Delete removes the selected pins instead of their layer; Advanced and Bend pins rotate by their ring and scale by its square (Shift: 15° / 5 % steps, one undo step per drag); ⌘/Ctrl-dragging one of several selected pins records them all; pins in their kind's colour, larger under the pointer; pushpin icons for the five pin tools
2026-10-04 00:19:24 +07:00
bflatastic
244cee4687
M8.1: expressions keep working on long-lived threads — boa leaves values on its VM stack when an exception unwinds through call frames (every pending host request does), so after tens to hundreds of evaluations that read layers or effects every expression on the thread failed with "maximum stack size"; a run that hits the limit now gets a fresh context and is retried once (regression test: 6000 host-reading evaluations on one thread)
2026-10-04 00:19:22 +07:00
Brandon Thomas
91bd8ca7c8
Merge main into M13.14
...
# Conflicts:
# crates/engine/src/lib.rs
# docs/agents.md
2026-10-03 13:13:50 -04:00
Brandon Thomas
9890a82796
Merge branch 'worktree-agent-a6553844386fd3ca8'
2026-10-03 13:10:45 -04:00
Brandon Thomas
56b3917a14
Merge main into M13.15
...
# Conflicts:
# crates/engine/src/commands/essential.rs
2026-10-03 13:00:33 -04:00
Brandon Thomas
8b43adb8a0
Merge main into M13.14
2026-10-03 12:59:27 -04:00
Brandon Thomas and Claude Opus 5.5
e2d7a5a182
M13.15: qa batch tool and reply affordances
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 12:56:58 -04:00
Brandon Thomas and Claude Opus 5.5
12235b5dc5
M13.15: qa project lifecycle; Collect Files makes its folder; agents cookbook
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 12:56:41 -04:00
Brandon Thomas and Claude Opus 5.5
77ab92fb7d
M13.15: qa essential graphics template via CLI script
...
Fill's ADBE Fill-0002 is Color (documented numbering); essential.* controls by name with
a listing error; an explicit comp param satisfies a command's active-comp enablement.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 12:30:11 -04:00
Brandon Thomas and Claude Opus 5.5
97329edb39
M13.14: performance section with before/after numbers; test tidy
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 12:17:46 -04:00
Brandon Thomas
9fb375e4b0
Merge branch 'worktree-agent-a4b0610bd14276508'
2026-10-03 12:17:22 -04:00
Brandon Thomas and Claude Opus 5.5
fecf054e5f
M13.15: qa scenarios 1-4 (kinetic type, shape logo, compositing, tracking) and fixes
...
engine.batch + MCP batch tool; layer.newText/newShape name; prop.get evaluated
expression value; keys.select by path with errors; @uid paths; plain-JSON gradients;
addShapeItem/effect.apply return paths; unknown layers error; conform rescales
footage duration; render log name for [###]; render_frame transparent; clearer
mask errors; truncated groups in flat get_layer.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 12:09:41 -04:00
Brandon Thomas
9904525591
Merge main into M13.14
2026-10-03 11:50:14 -04:00
Brandon Thomas and Claude Opus 5.5
8a4a2bfc52
M13.14: lazy project open, non-blocking UI with large projects, bench --ops
...
- footage.check: background footage check after File > Open (Progress panel), not an undo step
- timeline: track-matte / parent menus built only while open (was O(n^2) per frame);
expression-row lookup per layer; panels hold Arc<Comp> snapshots instead of deep clones
- Project panel: virtualised vertical scrolling, selection reveal, thumbnails rendered off
the UI thread
- effectcraft-cli bench --ops (engine::perf + ui-egui::bench)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 11:49:55 -04:00
Brandon Thomas and Claude Opus 5.5
39d53108f0
M13.13: docs (parity EFF-5 / PRV-3, architecture GPU section)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 11:04:47 -04:00
Brandon Thomas
a4f4d72f27
Merge branch 'main' into worktree-agent-a4b0610bd14276508
2026-10-03 10:53:00 -04:00
Brandon Thomas and Claude Opus 5.5
750868244a
M13.13: GPU Circle, Ellipse, Iris Wipe, Bevel Alpha, Bevel Edges, Gaussian Blur (Legacy)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 10:53:00 -04:00
Brandon Thomas
4bfb689f19
Merge branch 'worktree-agent-a0bd45f05d0d6b082'
2026-10-03 10:48:48 -04:00
Brandon Thomas and Claude Opus 5.5
07278305be
M13.11: docs (parity PRV-3, 3D-3, CMP-7, AUT-2; architecture GPU Advanced 3D)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 10:48:14 -04:00
Brandon Thomas and Claude Opus 5.5
ea292a6e81
M13.13: fuse 8/16 bpc quantise into the layer composite; steady-state bench traffic
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 10:44:52 -04:00
Brandon Thomas and Claude Opus 5.5
9ff0e5aa3c
M13.13: gpu texture pool, Auto per-comp backend choice, warp-family GPU ports
...
- gpu: pooled working textures (released once every encoder that could read
them is submitted), shared zero images, reused readback staging buffers,
direct readback into Image; NaN-poisoned scratch images under test and
NaN-aware diffs; validation errors panic under test
- render: AutoPick (per comp / scale / path EWMA of CPU vs GPU frame times,
warm-up and periodic re-probe) behind Backend::Auto; viewer uses it too;
cached adjustment footprints (uploaded once)
- gpu fx_warp: Warp, Bezier Warp, CC Bend It, CC Page Turn, Smear, Reshape,
Color Emboss, Cartoon; sliding-histogram median for large radii; CC Power
Pin perspective < 100
- cli: bench --gpu reports Auto and per-frame upload / readback MB
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 10:31:31 -04:00
Brandon Thomas and Claude Opus 5.5
25aebc11d7
Merge main into M13.11
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 10:29:28 -04:00
Brandon Thomas and Claude Opus 5.5
cb516c91c3
M13.11: scriptui concave fills, real images, wasm cfg gating
...
onDraw fillPath tessellates any path (non-zero winding trapezoid
decomposition: concave, self-intersecting, holes) instead of egui's
convex-only polygon. ScriptUIImage holds a file path or embedded PNG/JPEG
bytes; drawImage, image controls and icon buttons draw the decoded image.
Script-host thread code (host_main, run_threaded, ToHost::Start) is gated
off wasm32.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 10:28:56 -04:00
Brandon Thomas
95766755f3
Merge branch 'worktree-agent-a75983ccef1ea55ee'
2026-10-03 10:18:49 -04:00
Brandon Thomas
2673afcb72
Merge branch 'main' into worktree-agent-a75983ccef1ea55ee
2026-10-03 10:18:11 -04:00