Commit Graph
4085 Commits
Author SHA1 Message Date
Brandon Thomas 4515418fd4 Merge PR #2742 2026-11-01 21:50:53 -05:00
Brandon Thomas 546da0a1f5 Merge PR #2679 2026-11-01 21:50:53 -05:00
Brandon Thomas 5068f42601 Merge PR #2781 2026-11-01 21:50:53 -05:00
Brandon Thomas e0cd2914ba Merge PR #2783 2026-11-01 21:50:53 -05:00
Brandon Thomas e80d5c42c2 Merge PR #2771 2026-11-01 21:50:52 -05:00
Brandon Thomas 43d76d38a0 Merge PR #2759 2026-11-01 21:50:52 -05:00
Brandon Thomas 7c151edd40 Merge PR #2758 2026-11-01 21:50:52 -05:00
Brandon ThomasandClaude Opus 5.5 720c67117e Release 0.20.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.20.0
2026-11-01 13:59:03 -05:00
Dylan M. Taylor 6372545dab docs: sync Craft App Suite list with ArtCraft Launcher 2026-11-01 12:30:01 -05:00
tylerjenningswandChewybone-sudo 3ab2167e47 Auto-Trace: traced outlines map back into layer space (#2764)
Co-authored-by: Chewybone-sudo <347238078+Chewybone-sudo@users.noreply.github.com>
2026-11-01 09:05:56 -05:00
tylerjenningswandChewybone-sudo 49774ca5f9 Auto-Trace: test that traced outlines map back into layer space (#2764)
Co-authored-by: Chewybone-sudo <347238078+Chewybone-sudo@users.noreply.github.com>
2026-11-01 09:02:42 -05:00
Patrik LermonandClaude Opus 5.5 34b32d60da i18n(sv): translate 85 new strings
Brings the Swedish catalog up to date with upstream main (e71dd629).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 14:36:23 +01:00
becauseno7 25a7d98ebc PDF import: a trailer string in a stream does not trigger the window fallback
A `trailer` marker inside an unreferenced stream followed by `(` and more
than 4 KiB of text made the lexer stop at the window's end, so a later
`/Encrypt` name anywhere in the file refused a plain file. The unbounded
scan read a string there and opened it. The past-the-window fallback now
applies only when no object starts in the window or the first one opens
a dictionary (`<<`, including one split by the window's end).

Regression test with `trailer(` and `trailer[` in a stream and a later
Encrypt name.
2026-11-01 14:44:26 +06:00
becauseno7 98484975c4 PDF import: a name cut by the trailer window is read whole
The pre-scan window could end inside a trailer key, so a decoy like
`/Encrypted` cut right after `/Encrypt` was taken for the Encrypt key
and an unencrypted file was refused. A window that ends mid-token now
ends before that token instead, and the past-the-window fallback reads
the name whole (a real `/Encrypt` cut as `/Encryp|t` is still refused).

Tests for that boundary, for a trailer with a long /ID, and for `#`
without two hex digits staying as written in a name.
2026-11-01 13:31:59 +06:00
Dylan M. Taylor e71dd629c5 ci: grant packages write permission to release workflow 2026-10-31 23:43:04 -04:00
zitann2020andDeepSeek V4.1 Flash e62ccd359c docs(effects): rewrap the reflowed comment line
Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-11-01 12:07:29 +09:00
tylerjenningsw f4f318f5c0 Expressions: bare source reads the current layer's source (#2671) 2026-10-31 21:12:15 -04:00
tylerjenningsw 1bbf15bbce Expressions: test that bare source reads the current layer's source (#2671) 2026-10-31 21:10:40 -04:00
79f6957601 ci(xtask): run the GPU tests and i18n report from the test build (#2767)
`cargo test -p effectcraft-gpu` and `cargo test -p effectcraft-ui-egui` resolve features for
one package, so after the workspace nextest run they recompiled for about 2 minutes and
1 minute 15 seconds. Both now run the lib test binaries the workspace build produced, found
with `cargo test --no-run` and the same selection. The GPU tests still run in one libtest process.

Co-authored-by: FredApps <FredApps@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 01:38:57 +01:00
Dylan M. Taylor f4f390b153 packaging(flatpak): add OCI image build and GHCR publishing helper (#2763) 2026-10-31 18:52:54 -04:00
tylerjenningsw f12154cf4c Cache: bump the renderer version so frames from the old clip clock aren't reused (#2707) 2026-10-31 17:47:02 -04:00
tylerjenningsw 474e73b85c 3D: a model copy's cache key covers the model's Essential Property overrides (#2707) 2026-10-31 17:47:02 -04:00
tylerjenningsw 5b27de98e2 3D: test that a copy of an overridden model clip isn't served the keyed clip's pixels (#2707) 2026-10-31 17:47:02 -04:00
zitann2020andDeepSeek V4.1 Flash 4aed358d36 docs(effects): the catalog's comments say what the Japanese interface does
Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-11-01 01:56:06 +09:00
zitann2020andDeepSeek V4.1 Flash 7471c9735c i18n(ja): the animator's items fall back to the panel catalog, and the words agree
Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-11-01 01:51:43 +09:00
tylerjenningsw a1ea20a52a 3D: a model clip keyed on later starts at its activation time (#2707) 2026-10-31 12:47:37 -04:00
tylerjenningsw 4baeee63e6 3D: tests for keyed model clips starting at their activation time (#2707) 2026-10-31 12:47:37 -04:00
zitann2020andDeepSeek V4.1 Flash 1d20fb1b35 i18n(ja): the menu row and the panel row name the axes the same way
Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-11-01 01:13:15 +09:00
becauseno7 cd6c56b78d PDF import: the past-the-window /Encrypt fallback matches escaped names
The fallback searched for the literal bytes `/Encrypt`, so a long trailer
with the key written as `/Encr#79pt` (or any other #-escaped spelling) got
past it. It now finds the last name token that decodes to `Encrypt`, with
the lexer's own name decoding, and checks whether that token ends past the
window. It is still one linear pass per file. Longer names that only start
with `Encrypt` (`/Encrypted`) no longer count.
2026-10-31 22:07:29 +06:00
Brandon ThomasandClaude Opus 5.5 a926aa9182 test(media): measure the in-place movie's peak RSS in its own process
VmHWM is per process; the other tests in the binary ran on parallel threads
and their allocations failed the 64 MiB bound intermittently.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:32:05 -04:00
Brandon ThomasandClaude Opus 5.5 dc1f9eab74 Batch fixes: rustfmt, is_multiple_of in the Vegas test, drop a Swedish row #2718 retired
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:20:24 -04:00
zitann2020andDeepSeek V4.1 Flash c52c93a46c i18n(ja): the animator's button follows the label it is drawn after
Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-11-01 00:20:10 +09:00
Brandon ThomasandClaude Opus 5.5 9f78a8db27 Follow-ups to #2740, #2691, #2343: comment quotes the rows; locked viewer uses view3d_label; French track-matte pick whip
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:02:39 -04:00
Brandon ThomasandClaude Opus 5.5 2a7888d2c0 Follow-up to #2716: addItem applies in before out; anchor takes exactly [x, y]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:02:15 -04:00
Brandon ThomasandClaude Opus 5.5 4b7767401b Follow-up to #2687: an even sample count keeps the Vegas midpoint
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 10:58:38 -04:00
Brandon ThomasandClaude Opus 5.5 5802cdc6a4 Follow-up to #2714: a thin bake isn't refused for triangle rounding
A 16384x1 output stacks every grid row onto one pixel row, so a sane warp
visits ~100x its pixels; allow each triangle about two grid cells (CodeRabbit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 10:58:30 -04:00
Brandon ThomasandClaude Opus 5.5 f282754e50 Follow-up to #1541: Swedish panel 'Third' matches the menu's 'En tredjedel'
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 10:57:18 -04:00
Brandon ThomasandClaude Opus 5.5 ab17551913 Follow-ups to #2690 and #2684: app context-menu style; doc comment back on its test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 10:56:54 -04:00
Brandon ThomasandClaude Opus 5.5 917f312bc2 Follow-up to #2169: keep layer.deleteAllMarkers layer-only
An empty layers list cleared the composition's markers too (CodeRabbit);
the composition-marker menu uses comp.deleteAllMarkers instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 10:56:36 -04:00
Brandon Thomas 83b4e36e9b Merge PR #2343
# Conflicts:
#	crates/ui-egui/src/i18n/effects.rs
#	crates/ui-egui/src/i18n/ui.rs
2026-10-31 10:55:46 -04:00
Brandon Thomas 97957f5c33 Merge PR #2709
# Conflicts:
#	contributors/people.toml
2026-10-31 10:54:57 -04:00
Brandon Thomas bf349cafa1 Merge PR #2692 2026-10-31 10:54:52 -04:00
Brandon Thomas d3001efade Merge PR #2731 2026-10-31 10:54:52 -04:00
Brandon Thomas e89683c5b5 Merge PR #2712 2026-10-31 10:54:52 -04:00
Brandon Thomas 95f32b9343 Merge PR #2700 2026-10-31 10:54:52 -04:00
Brandon Thomas fdac4c096e Merge PR #2691 2026-10-31 10:54:51 -04:00
Brandon Thomas 269ef70586 Merge PR #2740 2026-10-31 10:54:51 -04:00
Brandon Thomas 659cfcd1d0 Merge PR #2716 2026-10-31 10:54:51 -04:00
Brandon Thomas aac9c18989 Merge PR #2710 2026-10-31 10:54:51 -04:00
Brandon Thomas 8085ead73d Merge PR #2687 2026-10-31 10:54:51 -04:00