Commit Graph

180 Commits

Author SHA1 Message Date
Brandon Thomas 299fe09efe Merge branch 'main' into worktree-agent-a139f16b3a4130998 2026-10-04 00:15:57 -04:00
Brandon Thomas d3a7777939 Merge branch 'main' into worktree-agent-a139f16b3a4130998 2026-10-03 23:57:57 -04:00
Brandon Thomas cc5c831c0a media: WebM VP9 alpha imports as straight alpha (FilmCraft 2c5ba7a)
Bump the FilmCraft crates from 89cfbf2 to 2c5ba7a (118 commits; no API
changes needed here), whose Matroska reader now decodes the VP9 alpha
stream from BlockAdditions. The compositing QA scenario now checks that
WebM renders round-trip their alpha like ProRes 4444.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 23:57:57 -04:00
Brandon Thomas ca9a30bf0c Merge branch 'main' into worktree-agent-a38a174c36aa9f23a 2026-10-03 19:52:55 -04:00
Brandon Thomas 7d9f369a5e Merge branch 'main' into worktree-agent-acd022ffe72ec3783
# Conflicts:
#	docs/parity.md
2026-10-03 18:35:29 -04:00
Brandon Thomas 1b726349ab M13.24: web app depth (WEB-1) — GPU effects in frame workers, OPFS disk cache, storage manager
- GPU in the browser: each frame worker opens its own WebGPU device (Gpu::request_deferred) and
  renders the GPU compositor and GPU effects with deferred readbacks (effectcraft-gpu deferred):
  readbacks keyed by content start with map_async and miss, the pass returns placeholders, the
  layer cache's gate drops inserts, and FrameServer::resume renders again once the device
  delivered. Backend Auto times whole frames per comp in the workers. Frames with effects go to
  GPU workers instead of the page. CPU fallback without WebGPU in workers (?nogpuworkers).
- Fix: a WGSL constant (3.40282347e38) that Chrome rejects invalidated every GPU kernel in Chrome
  (the page's compositor too); a test checks every float literal fits f32.
- Disk cache in the Origin Private File System: workers write sealed frame entries with sync
  access handles (temp file + move), the page keeps the DiskIndex (LRU under the settings' limit,
  at most half the quota) and reads hits instead of rendering; survives reloads; blue cache bar.
- Storage manager: Settings ▸ Disk ▸ Browser Storage (usage/quota, persistent storage, Clear
  buttons, automation ids) and storage.info / storage.persist / storage.clear (StorageHost).
- Docs: web.md (GPU workers, deferred passes, disk cache, storage manager, threading design:
  one engine instance per worker), architecture, preferences, parity (WEB-1), roadmap.
- Tests: deferred passes vs CPU on a real device, placeholder gating, frame server passes and
  Auto, GPU worker routing + disk cache across a reload, storage commands and widgets, store
  usage by kind; smoke test: GPU effect frames in workers with pixel parity, disk hits after a
  reload, storage manager.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 18:35:03 -04:00
Brandon Thomas 590c85bfb0 Merge branch 'main' into worktree-agent-a38a174c36aa9f23a
# Conflicts:
#	docs/parity.md
2026-10-03 18:28:15 -04:00
Brandon Thomas 5d8ad635ad M13.22: docs — architecture GPU section (time / text / transition families, Advanced 3D split runs and skies on the GPU), parity (EFF-5, 196 GPU effects)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 18:27:39 -04:00
Brandon Thomas bae3ccc410 Merge branch 'main' into worktree-agent-aab5c21557d20742c 2026-10-03 18:14:17 -04:00
Brandon Thomas 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 a909de43b7 M13.22: GPU time effects (Time Difference, Time Displacement, CC Force Motion Blur, CC Wide Time, Pixel Motion Blur, Timewarp's frame building; motion vectors and frame fetches on the CPU)
Timewarp without a Matte Layer is now planned once (time_fx::timewarp_plan: frames, shutter
instants, motion fields) and built by the CPU or the GPU from the plan; with a Matte Layer it
renders on the CPU (catalog::gpu_supported).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 17:57:03 -04:00
Brandon Thomas d0b92948ee M13.22: GPU transitions and perspective (Block Dissolve, CC Glass/Grid/Image Wipe, CC Jaws, CC Line Sweep, CC Radial ScaleWipe, CC Scale Wipe, CC Twister, CC WarpoMatic, Radial Shadow, CC Bender, CC Blobbylize, CC Cylinder, CC Sphere, CC Spotlight, CC Environment, 3D Glasses) and text (Numbers, Timecode: CPU glyph coverage, GPU composite)
CC Environment now fades nearly transparent environment texels to black continuously
(colour / max(alpha, 1e-3)) instead of a hard 1e-6 un-premultiply cut-off, which turned the
filtered map's float noise into colour.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 17:48:02 -04:00
Brandon Thomas f7927c8f9f M13.22: GPU CC light family (CC Light Rays, CC Light Burst 2.5, CC Light Sweep, CC Light Wipe)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 17:31:26 -04:00
Brandon Thomas 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 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
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
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
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 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 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 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 9904525591 Merge main into M13.14 2026-10-03 11:50:14 -04:00
Brandon Thomas 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 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 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 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 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 f35c820c53 Merge main into M13.12
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 09:51:48 -04:00
Brandon Thomas 5db4bff461 M13.12: docs (pdf README, parity, plug-ins), EPS Type 3 fonts reported
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 09:51:22 -04:00
Brandon Thomas 454df5d143 Merge main into M13.4 (codec completion)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 09:24:05 -04:00
Brandon Thomas d5dad6d642 M13.4: docs (parity, architecture)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 09:23:54 -04:00
Brandon Thomas 5c54ccd8d0 Merge main into M13.10
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:59:35 -04:00
Brandon Thomas 248cf6af3a M13.10: visual editors for Lumetri curves, Colorama output cycle, Glow colour map, Reshape correspondence points; scrolling Preview, AE-style comp tabs; web docs
Effect Controls: Lumetri RGB and hue/saturation curve graphs, Colorama's
palette wheel, Glow's colour map strip and Arbitrary Map curves, Reshape
correspondence buttons and viewer handles (all prop.set, one undo step per
gesture, automation ids). Preview panel scrolls; Composition/Timeline tabs
get close, label swatch and viewer lock; Effect Controls tab the layer
swatch; dropdowns elide long text. Fix the browser start (no default disk
cache folder on wasm32). Browser smoke test covers frame workers, waiting
renders and the Media Browser.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:59:04 -04:00
Brandon Thomas 4ce3651723 Merge main into M13.9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:43:44 -04:00
Brandon Thomas 01e01a37c1 M13.9: docs (parity EFF-5, architecture GPU effects)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:41:54 -04:00
Brandon Thomas 05b229825e M13.9: gpu Refine Soft / Hard Matte (single-frame refinement)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:41:11 -04:00
Brandon Thomas 0fbde2f4ec Merge M13.9 gpu stylize and distort (fx_stylize)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:32:18 -04:00
Brandon Thomas 7f6e9c5e41 M13.9: gpu Twirl (Legacy), CC Ripple Pulse, CC Power Pin (full perspective), CC Flo Motion
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:25:22 -04:00
Brandon Thomas 6cbb6bfb93 Merge M13.9 gpu noise, blurs and time (fx_noise)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:21:23 -04:00
Brandon Thomas 7513807972 Merge main into M13.6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:19:31 -04:00
Brandon Thomas 2e5d35dcee M13.9: gpu stylize and distort (posterize, threshold, CC Threshold / RGB, strobe, CC Vignette, scatter, brush strokes, roughen edges, texturize, motion tile, CC Kaleida, CC RepeTile, mirror, offset, polar, spherize, corner pin, optics compensation, magnify, CC Slant / Smear / Split / Split 2 / Tiler / Griddler, liquify; glow operations and arbitrary map; transform motion blur)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:16:58 -04:00
Brandon Thomas 4afe56cbca M13.9: gpu noise, blurs and time (median, dust & scratches, remove grain, turbulent / fractal noise modes, noise alpha / HLS, smart / bilateral / channel / compound blur, sharpen, unsharp mask, minimax, echo, posterize time)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:15:11 -04:00