Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
149 commits
Select commit Hold shift + click to select a range
058da6f
CI: use a match guard in the STL reader
nanox333 Oct 13, 2026
037a21d
#1200: allow TGA proxies and add import regressions
nanox333 Oct 13, 2026
2ddbf20
#1070: refresh layered composition sources on import
onlymoein Oct 12, 2026
dbc595b
#1220: Hide layer bounds during path editing
RavoxX Oct 13, 2026
2720ae5
Wave Warp: cover the Top/Bottom edge pinning paths end to end (#1181)
vbasky Oct 13, 2026
4873809
Shapes: Merge Paths keeps paint that belongs to a group above it (#1174)
vbasky Oct 13, 2026
5270eab
Masks: Mask Expansion past a curve's radius grows a solid mask instea…
Ian-Chege Oct 13, 2026
d309d6f
Effects & Presets: drag animation presets onto a layer
LloydNicholson Oct 13, 2026
3a95385
Ease Presets: ease the incoming, outgoing or both sides of selected k…
tylerjenningsw Oct 13, 2026
af486dc
Ease Presets: tests for easing single keyframes In, Out and In-Out (#…
tylerjenningsw Oct 13, 2026
c0f919a
Docs: plugins.md describes the Ease Presets In, Out and In-Out sides …
tylerjenningsw Oct 13, 2026
f62af4c
Guide layers: hidden in nested comps, and in the Timeline context men…
Themolx Oct 13, 2026
9b74dba
Ease Presets: skip roving keyframes and say so, rather than reporting…
tylerjenningsw Oct 13, 2026
4dddb34
Ease Presets: tests for Out alone through undo and redo, and a single…
tylerjenningsw Oct 13, 2026
a37357f
Docs: plugins.md notes that Ease Presets skips roving keyframes (#1329)
tylerjenningsw Oct 13, 2026
da73df4
Script sockets: per-socket locks, a write deadline, and close interru…
DWAA1660 Oct 13, 2026
79ebd01
svg: bound <use> expansion by an element budget and skip reference cy…
DWAA1660 Oct 13, 2026
3d45046
model: validate glTF accessor spans before allocating, with checked a…
DWAA1660 Oct 13, 2026
4b475f5
model: budget the memory an FBX import keeps, and share instanced mes…
DWAA1660 Oct 13, 2026
fa6c9ff
Web: IndexedDB puts and deletes resolve when their transaction commit…
tylerjenningsw Oct 14, 2026
f61f8c9
Web: remembering and forgetting Media Browser folders waits for the c…
tylerjenningsw Oct 14, 2026
c03cd79
Docs: the IndexedDB storage test (#1242)
tylerjenningsw Oct 14, 2026
1b44c5c
Scripting: Stroke and Hue/Saturation parameters use After Effects' ma…
marcoarnulfo Oct 14, 2026
69d17d8
Keyframes: a path pasted onto Position becomes a motion path (fixes #…
marcoarnulfo Oct 14, 2026
66a2950
i18n(ja): the Settings dialog in Japanese
zitann2020 Oct 14, 2026
eb95f73
Media: millisecond-rounded MP4 frame times read at the rate they aver…
tylerjenningsw Oct 14, 2026
36a9052
Media: tests for the averaged MP4 frame rate (#1442)
tylerjenningsw Oct 14, 2026
8b536e5
Export: millisecond-rounded footage renders at its rate, each frame o…
tylerjenningsw Oct 14, 2026
2f437ea
EPS and PDF: huge arcs, long paths and loop passes count against the …
dotCooCoo Oct 14, 2026
642eed0
Properties/Timeline/Effect Controls: a typed component edits only tha…
DWAA1660 Oct 14, 2026
e0f25c7
when double-clicking an effect property, it reveals that effect in th…
Oct 14, 2026
7a9c2a8
Fonts: honor Fontconfig configuration search paths
IanHollow Oct 15, 2026
a3c3b85
Text: a variable font's named instances are styles of its family (#1563)
switch87 Oct 15, 2026
c4dcefb
Text: a variable face's own style needs no instance axis values (#1563)
switch87 Oct 15, 2026
ded4f39
i18n: the layer and timeline context menus draw their items in the in…
marcoarnulfo Oct 14, 2026
f8d82b7
i18n: the effect and property context menus draw their items in the i…
marcoarnulfo Oct 15, 2026
d347a0e
Expressions: propertyGroup() and a group's propertyIndex (#1619)
switch87 Oct 16, 2026
71a0f88
Expressions: find an ancestor's index by uid, not by formatted path
switch87 Oct 16, 2026
632ab4a
fix(viewer): drag a 3D layer along a gizmo axis (#1618)
arnav-hiwarkar Oct 16, 2026
1443ad0
fix(viewer): gizmo arrows take precedence over box handles under them
arnav-hiwarkar Oct 16, 2026
604f2d0
Wave Warp: the pinning test compares the middle row at matching coord…
bflatastic Oct 16, 2026
0bdf9ec
Merge branch 'main' into expr-property-group-1619
switch87 Oct 16, 2026
f134290
#1582, #1585: guard web serviceWorker against SecurityError in opaque…
krinry Oct 16, 2026
34f1ebf
Masks: the arrow keys nudge the selected points (part of #1288)
marcoarnulfo Oct 16, 2026
0c39995
Convert a shape layer's parametric path to a bezier path (#932)
Hamza0101 Oct 16, 2026
2823abc
fix(engine): report the keys keys.delete removed, not the keys selected
detth Oct 16, 2026
ad4ed39
Lumetri: hue/saturation curves stay inside their box beside a close p…
marcoarnulfo Oct 16, 2026
d32c57b
Project: a new folder opens with its name ready to type (fixes #1658)
marcoarnulfo Oct 16, 2026
31d74e2
Normalize cardinal Wave Warp directions to preserve CPU and GPU parity.
vbasky Oct 16, 2026
299223f
Templates: Import Template writes embedded media only into its item f…
aiongg Oct 16, 2026
1064911
Edit: Edit Original opens only regular files with a footage media ext…
aiongg Oct 16, 2026
9d56675
Text: drag a Range Selector's Start and End in the Composition viewer…
marcoarnulfo Oct 16, 2026
d1c1e23
xtask bench --repeat N: median/p90/min/max summary, compare by median
MatejKozlovsky Oct 16, 2026
816ca95
Footage: follow stored footage paths only on this computer or the pro…
aiongg Oct 16, 2026
1e63c9d
Merge branch 'main' of https://github.com/storytold/effectcraft into …
Oct 16, 2026
548001e
fix: use timeline.revealProps from updated main instead of custom imp…
Oct 16, 2026
f8bd967
gpu: honour wgpu env overrides in headless/CLI (with_env, WGPU_ADAPTE…
MatejKozlovsky Oct 16, 2026
f368aa0
Viewer: keep unselected null outlines visible
webdevtodayjason Oct 16, 2026
ab8af6a
test(script): per-key methods in another comp leave both key selectio…
AyberkA0 Oct 16, 2026
107cedb
fix(effects): starred effects survive a restart (#1692)
AyberkA0 Oct 16, 2026
1ad17f6
Resolve Microsoft font names to installed metric-compatible fonts
Silvertree2010 Oct 16, 2026
f82ce62
Build: use craft-docpath from craft-libs
aiongg Oct 17, 2026
ee5c9ac
Advanced 3D: Accepts Shadows Only draws just the shadow (#1691)
HEOJUNFO Oct 17, 2026
8f74c37
Replace non-ASCII characters in EXR layer names so ProEXR export no l…
MarekSpodBiedry Oct 17, 2026
351f259
Fall back to the page's thread when new Worker throws in a sandboxed …
MarekSpodBiedry Oct 17, 2026
7146006
Duplicate the selected text animator or selector instead of the whole…
MarekSpodBiedry Oct 17, 2026
b9172fe
#1714: reopen each comp at its saved current time
arnav-hiwarkar Oct 17, 2026
ea67c46
#1714: doc comments name the saved current times
arnav-hiwarkar Oct 17, 2026
c28daa4
#1714: test several comps, negative and malformed saved times
arnav-hiwarkar Oct 17, 2026
0e5b366
Keep CC Simple Wire Removal between points A and B (#1724)
MarekSpodBiedry Oct 17, 2026
b8d52cd
Paste path operators below the shapes they act on (#1681)
MarekSpodBiedry Oct 17, 2026
8e59ccd
Fix #1231: keep autosave completion tied to its originating project (…
onlymoein Oct 17, 2026
69bf44b
Build: take craft-docpath from the merged craft-libs rev
skylartaylor Oct 17, 2026
2d805d1
Merge pull request #1748 from skylartaylor/import-and-open
skylartaylor Oct 17, 2026
b113278
Fix #1275: open the commands' file dialogs without blocking the frame…
gmrmad1 Oct 17, 2026
8de1288
Release 0.11.0
echelon Oct 17, 2026
bba7abd
Build: gate tests_services with a plain cfg(test) so clippy treats it…
echelon Oct 17, 2026
45c9d22
Release: install resvg for the macOS DMG background in CI
echelon Oct 17, 2026
2a01226
Release 0.11.1
echelon Oct 17, 2026
651ee5a
Resolve effects/<match name> property paths in anim.applyPreset (#1746)
MarekSpodBiedry Oct 17, 2026
f36b2b3
Release 0.12.0
echelon Oct 18, 2026
c6b700f
feat(cli): `render --progress` reports frames on stderr when it is no…
archersintel-code Oct 18, 2026
4f49017
Merge remote-tracking branch 'origin/main' into review-1730
MarekSpodBiedry Oct 18, 2026
0e7f525
Keep the target's paint when pasting Merge Paths (#1681)
MarekSpodBiedry Oct 18, 2026
cffa1f2
fix(shapes): update inner controls when Polystar type changes (#1685)
nanox333 Oct 18, 2026
c74e67c
Let render --template --values fill a media replacement control with …
MarekSpodBiedry Oct 18, 2026
d58fe29
Format negative Audio Samples time as a signed timecode
Silvertree2010 Oct 18, 2026
bb8dd41
Merge pull request #1087
echelon Oct 18, 2026
25f8bb1
Merge pull request #1216
echelon Oct 18, 2026
f16ef4a
Merge pull request #1265
echelon Oct 18, 2026
6648c5b
Merge pull request #1269
echelon Oct 18, 2026
de7c8d6
Merge pull request #1271
echelon Oct 18, 2026
b72425a
Merge pull request #1334
echelon Oct 18, 2026
53c84d7
Merge pull request #1356
echelon Oct 18, 2026
6d4837c
Merge pull request #1362
echelon Oct 18, 2026
a32b65c
Merge pull request #1369
echelon Oct 18, 2026
746b164
Merge pull request #1375
echelon Oct 18, 2026
c19421b
Merge pull request #1376
echelon Oct 18, 2026
0728169
Merge pull request #1384
echelon Oct 18, 2026
12d8e13
Merge pull request #1406
echelon Oct 18, 2026
c44c512
Merge pull request #1413
echelon Oct 18, 2026
2d47103
Merge pull request #1424
echelon Oct 18, 2026
736c0ec
Merge pull request #1430
echelon Oct 18, 2026
6785526
Merge pull request #1448
echelon Oct 18, 2026
226fbf5
Merge pull request #1485
echelon Oct 18, 2026
8e03f2a
Merge pull request #1497
echelon Oct 18, 2026
da1b44e
Merge pull request #1527
echelon Oct 18, 2026
1ec5cca
Merge pull request #1540
echelon Oct 18, 2026
65d955c
Merge pull request #1572
echelon Oct 18, 2026
4c196ee
Merge pull request #1620
echelon Oct 18, 2026
242e02d
Merge pull request #1627
echelon Oct 18, 2026
cb76329
Merge pull request #1648
echelon Oct 18, 2026
d4dd149
Merge pull request #1649
echelon Oct 18, 2026
972a2d2
Merge pull request #1659
echelon Oct 18, 2026
8c43fe7
Merge pull request #1662
echelon Oct 18, 2026
b26b7ec
Merge pull request #1664
echelon Oct 18, 2026
4d61409
Merge pull request #1672
echelon Oct 18, 2026
010065e
Merge pull request #1679
echelon Oct 18, 2026
fc3d228
Merge pull request #1688
echelon Oct 18, 2026
40fe8ef
Merge pull request #1689
echelon Oct 18, 2026
30efc87
Merge pull request #1694
echelon Oct 18, 2026
072a7f7
Merge pull request #1695
echelon Oct 18, 2026
a01f681
Merge pull request #1704
echelon Oct 18, 2026
fcc9e85
Merge pull request #1709
echelon Oct 18, 2026
415e353
Merge pull request #1711
echelon Oct 18, 2026
436f826
Merge pull request #1712
echelon Oct 18, 2026
d9e3c56
Merge pull request #1721
echelon Oct 18, 2026
681d99c
Merge pull request #1731
echelon Oct 18, 2026
869ce1d
Merge pull request #1752
echelon Oct 18, 2026
0867d83
Merge pull request #1753
echelon Oct 18, 2026
1dac4c0
Merge pull request #1759
echelon Oct 18, 2026
692feb7
Merge pull request #1778
echelon Oct 18, 2026
dfff3f9
Merge pull request #1785
echelon Oct 18, 2026
043eb5a
Merge pull request #1787
echelon Oct 18, 2026
17c4b02
Merge pull request #1790
echelon Oct 18, 2026
a594abf
Merge pull request #1652
echelon Oct 18, 2026
7c99ba6
Merge pull request #1696
echelon Oct 18, 2026
10cf669
Merge pull request #1730
echelon Oct 18, 2026
7804cfd
Format merged community PRs
echelon Oct 18, 2026
f3f24ef
Land batch: fix clippy lints and the #1424 test after #1413 changed l…
echelon Oct 18, 2026
b0acbbe
CLI: regression tests for render --progress (#1778) and template medi…
FredApps Oct 18, 2026
033890f
Merge pull request #1802
echelon Oct 18, 2026
22072d9
Merge pull request #1317
echelon Oct 18, 2026
80aa88d
Merge upstream/main into ours (fork sync 2026-10-18, Hyperion)
iannitram Oct 18, 2026
b84e866
Sync: tests_mask_expansion is a test module (cfg(test)), next to ours…
iannitram Oct 18, 2026
c473ce9
craft-log: the ring and crash tests take turns (from PhotoCraft; craf…
iannitram Oct 18, 2026
99e8dbd
Sync: footage follows a moved project folder before upstream's resolv…
iannitram Oct 18, 2026
cb26229
Sync: the anchor test finds the Data footage by its tail
iannitram Oct 18, 2026
6c1ae1f
Tests: serialise disk-cache-opening tests with the roto tests
iannitram Oct 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 46 additions & 38 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ members = ["crates/*", "apps/*", "xtask"]
default-members = ["crates/*", "apps/*"]

[workspace.package]
version = "0.10.0"
version = "0.12.0"
edition = "2024"
license = "MIT OR Apache-2.0"
rust-version = "1.95"
repository = "https://github.com/storytold/effectcraft"

[workspace.dependencies]
craft-pdf = { git = "https://github.com/storytold/craft-libs", rev = "ca50d63b773c99f96e75c77ce5a1d21e7c9cda0d", version = "=0.1.0", default-features = false, features = ["read"] }
craft-docpath = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "82a24b006eefa036b43c09a67fb9a3fbd17ffe63" }
# internal
effectcraft-time = { path = "crates/time" }
effectcraft-geom = { path = "crates/geom" }
Expand Down
4 changes: 4 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,10 @@ Come tell us what matters most to you on [Discord](https://discord.gg/artcraft).

## Progress log

- 2026-10-16: Convert To Bezier Path turns a shape layer's Rectangle, Ellipse or Polystar
path into an editable Path 1 with the same geometry, as After Effects does; it used to
apply to mask RotoBezier only, so a parametric shape path could not be converted at all
and its vertices could not be edited or animated (#932).
- 2026-10-12: Roto Brush span edits report strokes outside a trimmed layer without panicking;
strokes and undo history are preserved so restoring the timing allows the span edit again.
- 2026-10-11: Ukrainian panels caught up with the Chinese catalogs. The 95 rows the panel
Expand Down
Loading
Loading