Commit Graph
721 Commits
Author SHA1 Message Date
BFlat ef3d14b0fe Merge pull request #2580 from gjrtimmer/feat/web-startup-option
feat(web): choose the project the page opens with a `startup` config key
2026-10-30 04:09:49 +07:00
BFlat a0bec0905c Merge pull request #2595 from zitann2020/text/keep-empty-layer
fix(text): keep an empty Type-tool layer, as AE does
2026-10-30 04:09:42 +07:00
BFlat ee8adf97c5 Merge pull request #1655 from elZanco/dev-line-tables-only
build: add an optional dev-full profile with full debug info
2026-10-30 04:08:25 +07:00
BFlat 7043fde70a Merge pull request #1314 from tylerjenningsw/fix/expression-value-color
UI: colour expression-driven numeric values consistently (refs #1072)
2026-10-30 04:08:14 +07:00
BFlat 686da9f7eb Merge pull request #1291 from tylerjenningsw/enhance/batch-parent-matte
Timeline: parent and matte selected layers together (#1260)
2026-10-30 04:08:08 +07:00
pravdomilandClaude Opus 5.5 caedb0727a Viewer trackpad gestures: two-finger scroll pans, pinch zooms
The Composition and Layer viewers took every scroll as a zoom, so a trackpad
could not pan. A trackpad's two-finger scroll now pans; a pinch,
Ctrl/Cmd+scroll, a mouse wheel and Alt + a trackpad scroll zoom around the
pointer.

Where the platform names the device (egui's MouseWheelSource, macOS), that
decides. Elsewhere browsers and some high-resolution wheels report a mouse
wheel in points, as a trackpad does, so the unit alone doesn't decide. A
scroll in points pans only once it has shown it is a trackpad: a touch phase,
movement on both axes at once, or a pinch. That holds until a wheel scrolls
in lines. Until then the vertical part zooms and the horizontal part pans.

ui.scroll gains unit (point|line), source (wheel|trackpad) and pinch so
agents can drive both gestures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 20:21:10 +01:00
BFlat 2090726e55 Merge pull request #1513 from vangel76/gap-behaviors-presets
#1510: Behaviors animation presets (22 original, expression-driven)
2026-10-30 01:26:43 +07:00
bflatastic 6ab7bd31dd Merge main into #1513; resolve docs/effects-parity.md 2026-10-30 01:25:24 +07:00
bflatastic 6af2bedfe0 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 01:24:36 +07:00
BFlat 676eeb8d07 Merge pull request #2289 from onlykshitij/feat/script-panel-submenus
Scripts: subfolders of the Scripts and ScriptUI Panels folders become submenus
2026-10-30 01:23:53 +07:00
BFlat 7099fe0bae Merge pull request #1874 from vangel76/rfx-masks-shapes
Mask feather, Repeater opacity and Trim Paths on rectangles render as in After Effects
2026-10-30 01:21:47 +07:00
BFlat 9cb5255575 Merge pull request #1177 from tylerjenningsw/fix/947-preview-opening-audio
Preview: preserve opening audio while preparing video playback (#947)
2026-10-30 01:20:53 +07:00
BFlat a0bf1b13d8 Merge pull request #1382 from tylerjenningsw/fix/particle-birth-history
Particles: preserve emitted particles when Birth Rate changes (#1373)
2026-10-30 01:20:20 +07:00
tylerjenningsw c979f5aebd Merge origin/main into fix/expression-value-color (#1306)
Main split the panels' value editors into one function per value kind.
The expression colour now comes from Tokens::for_value in each of them:
Effect Controls through PropCx::value_tokens, the Timeline's scalar,
vector and enum editors, and the Properties transform row.
2026-10-29 14:20:05 -04:00
BFlat 50ebecbca8 Merge pull request #973 from itrycodinganditsbad/docs/user-docs-baseline
docs: add user docs in docs/user
2026-10-30 01:20:03 +07:00
BFlat b669e4a951 Merge pull request #2476 from ashokram-si/feat/targa-sequence-output
Export: Targa (.tga) sequence output, 24-bit RGB or 32-bit RGB + Alpha
2026-10-30 01:19:27 +07:00
BFlat 1e1d04d8d5 Merge pull request #1774 from yanhenrique-dev/i18n/ptbr-panels
i18n: complete the Brazilian Portuguese (pt-br) panel catalog
2026-10-30 01:18:53 +07:00
BFlat 6f1d11af94 Merge pull request #1385 from tylerjenningsw/enhance/pickwhip-index-refs
Expressions: Alt-pickwhip references effect parameters by index (refs #1072)
2026-10-30 01:18:08 +07:00
BFlat e6e0c98c20 Merge pull request #2311 from marcoarnulfo/feat/run-commands
CLI: run --commands reads {"command", "params"} steps from a JSON or JSON Lines file, or standard input (#2251)
2026-10-30 01:17:37 +07:00
BFlat a7f1d11620 Merge pull request #1326 from tylerjenningsw/fix/gpu-frame-validation
GPU: contain frame-local validation failures (refs #1319)
2026-10-30 01:16:36 +07:00
tylerjenningsw 5f22e63e93 Merge remote-tracking branch 'origin/main' into enhance/batch-parent-matte 2026-10-29 13:29:22 -04:00
bflatastic 89fcd892eb Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 00:27:26 +07:00
bflatastic d1ecba078d Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 00:23:10 +07:00
BFlat f27ecec030 Merge pull request #2344 from becauseno7/mcp-compact-listings
MCP: list_commands and list_effects take compact: true (#2020)
2026-10-30 00:13:36 +07:00
BFlat 7974a74f1b Merge pull request #2527 from nanox333/fix/docking-raw-open-guard
Docking: reject raw panel opens through command aliases
2026-10-30 00:10:05 +07:00
bflatastic 4aead36ecd Merge remote-tracking branch 'origin/main' into HEAD 2026-10-29 23:21:59 +07:00
zitann2020andDeepSeek V4.1 Flash 197d6cd229 fix(text): the tests and docs follow the layer being kept
Review of the first commit found three places that still asserted the old cleanup: the UI integration
test (which would have failed CI), docs/agents.md, and the comments on TextEdit::created, layer.newText
and the engine test itself.

Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-10-30 01:09:35 +09:00
G.J.R. Timmer df9207d1be feat(web): keep the saved session on a demo start, bound the config request
An explicit demo startup no longer saves the session, so the demo cannot replace the last visit's project. The config request is aborted after 5 s, stops reading once the body passes the size limit, and is skipped for ?empty and ?demo. The packaged hosting notes link to the published docs.
2026-10-29 09:25:48 -04:00
G.J.R. Timmer c334c36645 feat(web): startup option in effectcraft-config.json
A startup key (last, empty or demo) chooses the project the page opens on load. empty restores the last visit's project and otherwise starts blank, never with the demo; demo always opens the demo project; last, or no key, is the current behaviour. ?empty and ?demo still win. The config file is fetched once per page load and the service worker never caches it.
2026-10-29 07:11:48 -04:00
BFlat bd4c68fcf8 Merge pull request #2291 from dotCooCoo/feat/recent-script-files
Scripts: Recent Script Files lists the last ten scripts and Cmd+Alt+Shift+D reruns the newest
2026-10-29 10:10:03 +07:00
Egon 5000 28a7442c0a build: add an optional dev-full profile with full debug info
The dev profile keeps line tables only, which keeps builds fast and test binaries small; panics and backtraces still name file and line. Debugger sessions still need local variables and column breakpoints, so add 'dev-full': the same settings plus full debug info. The fast profile remains the default.
2026-10-29 00:28:09 +01:00
dotCooCoo 6e8acedc0d Merge main into feat/recent-script-files 2026-10-28 14:23:49 -07:00
vangel76andClaude Sonnet 5.5 26798dce42 Merge upstream/main into rfx-blur-stylize
Resolve the conflict in crates/gpu/src/fx_stylize.rs: main moved ops::warp to
the ops::WarpOptions parameter struct; the branch's per-sample transform loop
(motion-blur samples, now passing the sample by reference) uses the new
signature with the branch's reference argument kept.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 15:37:16 +01:00
tylerjenningsw 8d008e53da Merge branch 'fix/particle-birth-history' into fix/particle-birth-history-ps2-mercury
# Conflicts:
#	crates/effects/src/sim.rs
2026-10-27 16:59:26 -04:00
Kristian Myram 335d1f56ac #2459: reject raw opens through docking command aliases 2026-10-27 20:30:13 +00:00
tylerjenningsw cedc727da9 Merge remote-tracking branch 'origin/main' into fix/particle-birth-history
# Conflicts:
#	crates/effects/src/sim.rs
#	crates/render/src/lib.rs
2026-10-27 14:57:00 -04:00
tylerjenningsw ef825f2947 Merge remote-tracking branch 'origin/main' into enhance/pickwhip-index-refs 2026-10-27 14:13:51 -04:00
tylerjenningsw b1c0a2394d Merge remote-tracking branch 'origin/main' into enhance/batch-parent-matte 2026-10-27 14:13:37 -04:00
tylerjenningsw 2dcd1b27a9 Merge remote-tracking branch 'origin/main' into fix/947-preview-opening-audio
# Conflicts:
#	crates/ui-egui/src/lib.rs
2026-10-27 14:13:31 -04:00
tylerjenningsw 8c7990c65f Merge remote-tracking branch 'origin/main' into fix/expression-value-color
# Conflicts:
#	crates/ui-egui/src/panels/effect_controls.rs
2026-10-27 14:05:11 -04:00
dotCooCoo 2c2c51ca0c Preserve recent script files across menu and settings module changes 2026-10-27 10:11:33 -07:00
vangel76andClaude Sonnet 5.5 ca00da2f55 Merge upstream/main into rfx-masks-shapes
render: upstream moved the tests_*.rs modules into crates/render/src/tests/; the branch's
tests_mask_feather.rs now lives at tests/mask_feather.rs and is registered in tests.rs.
path: rect() keeps the branch's explicit-outline version with an added NaN guard on the
roundness clamp bound (main's fix for the same panic).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 16:57:13 +01:00
vangel76 92e33beef0 Merge remote-tracking branch 'upstream/main' into gap-behaviors-presets 2026-10-27 16:51:00 +01:00
Jeremy ed3e3d4bfe docs(installer): note that the 32-bit all-users folder is Program Files (x86); tidy wording 2026-10-27 12:25:18 +00:00
Jeremy a41f75b4a7 docs(installer): describe the per-user default install location and scope 2026-10-27 12:09:02 +00:00
onlykshitijandClaude Opus 5.5 c9d823483f Merge upstream main into feat/script-panel-submenus
Upstream moved crates/ui-egui/src/menus.rs into menus/*.rs; the dynamic-menu change that
draws script folders as submenus now lives in menus/bar.rs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 10:56:49 +05:30
ashokram-si c51a08ceb4 Export: Targa (.tga) sequence output, 24-bit RGB or 32-bit RGB + Alpha
After Effects lists Targa among its still-image output formats; EffectCraft
imported Targa (#745) but could not render to it.

- OutputFormat::TargaSequence ("Targa Sequence", `.tga`, numbered like the
  other sequences; `tga` / `targa` as a format name or output extension).
- Written by the `image` crate's Targa encoder (its `tga` feature, already
  enabled in effectcraft-media; no new crates, Cargo.lock unchanged), with
  run-length compression off: an 18-byte header, top-left origin, 24-bit BGR
  for RGB, 32-bit BGRA with 8 alpha bits in the image descriptor for
  RGB + Alpha (straight or premultiplied), 8-bit grey for Alpha.
- The render queue's size estimate counts the uncompressed bytes.
- CLI usage, the renderQueue command specs, README, architecture.md and
  file-format-parity.md name the new format.

Tests: each Targa frame holds exactly the pixels of the PNG sequence of the
same job, with the expected header, numbering and size; the frames read back
through the Targa importer as the same picture (straight, and premultiplied
when interpreted so); the image-sequence round trip, the format parser and
the renderQueue commands cover it too.
2026-10-26 15:34:12 +05:30
aiongg 6d063fc9de Merge upstream main into craft-ui-docking
craft-libs crates move to one rev, 37c907d2 (contains main's craft-update and craft-docpath pins).
Docs: native floating windows are Windows, macOS and X11 only; the UI estimate drops the
multi-monitor panel work that is done.
2026-10-26 01:59:50 +00:00
tylerjenningsw 9b57090b00 Merge main into enhance/batch-parent-matte 2026-10-25 14:54:57 -04:00
tylerjenningsw 0a2842be85 Merge main into fix/947-preview-opening-audio 2026-10-25 14:26:31 -04:00