Commit Graph
1941 Commits
Author SHA1 Message Date
BFlat 1071e57dfd Merge pull request #1520 from MatejKozlovsky/frame0-failfast
GPU: stop drawing a frame once the device has failed
2026-10-16 18:11:16 +07:00
BFlat 86239e0f0c Merge pull request #1397 from onlymoein/patch-1
Update contributor key: moecr7 -> onlymoein
2026-10-16 18:11:04 +07:00
BFlat 49be0eb6cf Merge pull request #1258 from pravdomil/claude/settings-sidebar-button-gap-c80466
Settings: the page list's rows touch, with no gap between them
2026-10-16 18:10:52 +07:00
BFlat 0953011664 Merge pull request #1549 from MatejKozlovsky/upload-cache-dead-entries
gpu: upload cache drops textures of freed buffers on every insert
2026-10-16 18:10:41 +07:00
BFlat 5db68bf34a Merge pull request #1302 from vbasky/fix/1194-liquify-offset
Liquify: expose Distortion Mesh Offset in Effect Controls (#1194)
2026-10-16 18:10:30 +07:00
BFlat 896710b4c9 Merge pull request #1477 from midasmatterhorn/fix/cff-seac-recursion-depth
pdf: bound CFF endchar seac recursion so a cyclic font can't overflow the stack
2026-10-16 18:10:19 +07:00
BFlat eac13d1cf1 Merge pull request #948 from Themolx/solo-outside-active-range
Solo: exclude other layers even when the soloed layer is outside its time range
2026-10-16 18:10:06 +07:00
BFlat da74ff378e Merge pull request #1496 from midasmatterhorn/fix/issue-1476-color-picker-flash-close
ui-egui: a click that opens the colour picker no longer closes it in the same frame (#1476)
2026-10-16 18:09:52 +07:00
BFlat c133e09e37 Merge pull request #1371 from marcoarnulfo/fix/layer-property-shortcuts
Scripting: test that Layer.property() resolves AE's top-level shortcuts
2026-10-16 18:09:39 +07:00
BFlat ab5c998c09 Merge pull request #1360 from Deeev201/fix/dmg-finderinfo
macOS DMG: hdiutil create -srcfolder, so the installed app passes codesign --strict
2026-10-16 18:09:27 +07:00
BFlat a2c2a1078a Merge pull request #1357 from iannitram/upstream-pr/cli-args-os
CLI: an argument that is not Unicode is a usage error, not a panic
2026-10-16 18:09:16 +07:00
BFlat 41037328a8 Merge pull request #1433 from Hamza0101/render-queue-bare-project-path
Render Queue: resolve a bare project filename against the working directory
2026-10-16 18:09:06 +07:00
BFlat d6c80f9078 Merge pull request #1569 from midasmatterhorn/fix/r4-roi-crop-overflow
project: a hostile ROI cannot overflow the crop math
2026-10-16 18:08:55 +07:00
BFlat d6a9ccfff7 Merge pull request #1435 from marcoarnulfo/fix/webm-metadata-frame-count
Import: item.metadata counts a WebM's last frame when its duration is not a whole millisecond
2026-10-16 18:08:44 +07:00
BFlat cbdd12b27a Merge pull request #1431 from marcoarnulfo/fix/aiff-import
Import: AIFF files import, including EffectCraft's own AIFF renders
2026-10-16 18:08:33 +07:00
BFlat 50fd8777bf Merge pull request #1349 from nanox333/fix/1063-first-use-line
Undefined-name errors report the first use from the failing function
2026-10-16 18:08:20 +07:00
BFlat 74ed4dc423 Merge pull request #1383 from marcoarnulfo/fix/1381-generators-alpha
Effects: 4-Color Gradient keeps the layer's alpha with Blending Mode None (refs #1381)
2026-10-16 18:08:08 +07:00
bflatasticandClaude Opus 5.5 45eacf1b17 GPU: upload_buf keeps its own doc comment
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:33:50 +07:00
bflatasticandClaude Opus 5.5 fc38904b41 Liquify: saved projects show Distortion Mesh Offset too (#1194)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:33:31 +07:00
BFlat 7c733f4cc9 Merge pull request #1639 from storytold/fix/relink-windows-paths
Footage: relinking a moved project keeps Windows separators and UNC shares
2026-10-16 17:13:59 +07:00
bflatasticandClaude Opus 5.5 86dff3ce78 Footage: relinking a moved project keeps Windows separators and UNC shares
project_dir rebuilt the folder with `/` and dropped a UNC share's leading
`\`, so a project opened from \server\share\Job looked for its moved
footage under the relative path server/share/Job and never found it. It now
keeps the path's own separator and its leading `/` or `\`.

The relink tests built mixed-separator paths (`…\Job/p.ecproj`) and so failed
on Windows; they now use native paths and check the separator is kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:13:40 +07:00
BFlat 592348b1d7 Merge pull request #1254 from vangel76/fix-1221-windows-test-paths
#1221: two path-format test failures on Windows
2026-10-16 17:09:16 +07:00
BFlat 08788b8aa7 Merge pull request #1638 from storytold/docs/vector-retain-layer-sizes
Docs: PDF / Illustrator Composition - Retain Layer Sizes in the parity docs
2026-10-16 17:06:09 +07:00
bflatasticandClaude Opus 5.5 bafc7e620d Docs: parity docs list Composition - Retain Layer Sizes for PDF / Illustrator (#1536)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:05:49 +07:00
BFlat 1abaabfb8b Merge pull request #1472 from arnav-hiwarkar/fix/1456-properties-reveal
fix(properties): reveal transform rows on double-click
2026-10-16 17:04:07 +07:00
bflatastic 23d56e7fea Merge remote-tracking branch 'origin/main' into pr-1472
# Conflicts:
#	contributors/people.toml
2026-10-16 17:03:52 +07:00
BFlat 49cffa64d7 Merge pull request #1214 from arnav-hiwarkar/perf/project-size-sort
perf(project): read file sizes once per sort
2026-10-16 17:03:41 +07:00
BFlat 8449853d0a Merge pull request #1259 from arnav-hiwarkar/perf/media-browser-listing
perf(media-browser): reuse listings and cache filename sort keys
2026-10-16 17:03:29 +07:00
BFlat f3148ee0b1 Merge pull request #1399 from arnav-hiwarkar/feat/media-browser-copy-source-path
feat(media-browser): add Copy Source Path
2026-10-16 17:03:16 +07:00
BFlat 7dc488b79d Merge pull request #1222 from arnav-hiwarkar/perf/preset-panel-cache
perf(presets): reuse cached text and user preset data
2026-10-16 17:03:05 +07:00
BFlat 73d483812f Merge pull request #1402 from arnav-hiwarkar/fix/presets-menu-automation-followup
fix(presets): identify copy folder action by label
2026-10-16 17:02:54 +07:00
BFlat c044e7a872 Merge pull request #1543 from arnav-hiwarkar/fix/1536-ai-retain-layer-sizes
Import: Composition - Retain Layer Sizes for PDF / Illustrator files (#1536)
2026-10-16 17:02:43 +07:00
BFlat 6616d451d2 Merge pull request #1584 from arnav-hiwarkar/fix/1552-keyframe-copy-selection
Copy only the selected keyframes across Position, Rotation and Scale (#1552)
2026-10-16 17:02:32 +07:00
BFlat 88a9446ed9 Merge pull request #1412 from arnav-hiwarkar/fix/1120-echo-gpu-host
fix(render): preserve preceding effects in GPU Echo
2026-10-16 17:02:19 +07:00
bflatasticandClaude Opus 5.5 0e2f43b824 perf(project): keep the Size cell as After Effects shows it
Drop the byte-count tooltip, the "—" marker and their strings and UI test,
and the bench wrapper script: they are outside this PR's scope and After
Effects leaves the Size cell blank when the size is unknown. The size sort
and its tests are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 16:42:34 +07:00
skylar taylor-barrick 08627d4afa Merge pull request #1612 from dylanmtaylor/ci/craft-common-actions
ci: add nix check workflow
2026-10-15 21:25:10 -06:00
Dylan M. Taylor 6c45fec27d ci: add nix check workflow 2026-10-15 21:17:07 -04:00
skylar taylor-barrickandCodex c2f790b1d9 refactor(pdf): share structure parsing through a bounded adapter
Load PDF document objects through the pinned craft-pdf parser and convert them into EffectCraft's existing drawing model with bounded traversal, recovery and retained data. Preserve generation numbers, stream limits, encrypted-document refusal and reported repairs.

Retain app-owned drawing, EPS, fonts and content/image decoding. Assert early excessive-nesting rejection without partial art, and cover tolerant arrays on native and WASM.

Validated with the22-stage local matrix and exact-head FreeBSD, Windows ARM64 and packaging checks.

Co-authored-by: Codex <noreply@openai.com>
2026-10-15 16:35:49 -06:00
arnav-hiwarkarandClaude Opus 5.5 c4c079d4f4 fix(engine): copy only the selected keyframes across properties (#1552)
Clicking keyframes on Position, Rotation and Scale highlights those
properties, and Copy then added every key of a highlighted property that
had none selected, so deselected keys came back on paste. The keyframe
copy branch also left a stale value clipboard that Paste preferred over
the new keys.

Copy now takes whole animations only when no key is selected or the
Transform group is selected, and every copy branch clears the clipboards.

Also collapses a nested `if` in the STL importer into a match guard,
which Clippy 1.95 flags under -D warnings (no behaviour change).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 20:57:50 +05:30
midasmatterhorn 643dcf55c6 project: a hostile ROI cannot overflow the crop math
The roi quad is stored raw from the control channel (crop.useRoi passes
serde_json's [f64;4] straight through, unlike the sibling edge fields,
which are clamped to plus/minus 20 000) and nothing repairs it on load.
Crop::edges converted it with round() as i32 and subtracted raw: an x of
-1e12 saturates to i32::MIN and w as i32 - l overflows in debug builds,
wrapping to a wrong-but-bounded crop in release.

Clamp each converted edge to the same plus/minus 20 000 the sibling
fields use and subtract with saturating_sub in edges() and frame_size().
Regression test: hostile_roi_cannot_overflow_crop_math — panics at
crates/project/src/render_queue.rs:774 on main; with the fix the hostile
quad degrades to a 1x1 frame and the sane-ROI behavior is unchanged.
2026-10-15 16:18:10 +03:00
arnav-hiwarkarandClaude Opus 5.5 8d807e6e79 Contributors: add arnav-hiwarkar
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 14:58:22 +05:30
Matej Kozlovský 77a8d6ae73 gpu: upload cache drops textures of freed buffers on every insert
Entries whose layer buffer was freed were pruned only once the cache went over its budget
(1.5 GiB), so an animated layer, which makes a new buffer every frame, left a dead 4K texture
per frame allocated until the cache filled up.
2026-10-15 10:19:42 +02:00
Moein Saharkhiz 0311bdc34d fix(automation): avoid replaying edits after lost replies
Retry only explicitly read-only control queries after connection failures. Report ambiguous edit outcomes without resending mutations, reconnect on the next explicit call, and reject request-ID exhaustion without overflow.

Add loopback regressions for lost and malformed replies, read-only retries, playback queries versus edits, and unknown methods.

Fixes #1247
2026-10-15 02:13:41 -06:00
.CooCoo 26ed1a35bf fix(pdf): prevent overflow in EPS integer arithmetic
Use checked division and remainder for EPS integer operators so i64::MIN with a divisor truncating to -1 cannot panic. Preserve the existing zero-divisor fallback and normal truncation behavior.

Add public EPS parse regressions covering extreme, fractional and ordinary operands.

PR #1223
2026-10-15 02:09:25 -06:00
arnav-hiwarkarandClaude Opus 5.5 2d216151c6 Import: Composition - Retain Layer Sizes for PDF / Illustrator files (#1536)
The PDF / Illustrator import dialog now offers Composition - Retain Layer
Sizes. Each file layer's footage is cropped to its artwork bounds (fills,
stroke outlines, images, clips) and positioned to keep its place on the
page. Decoding, continuous rasterisation, shape conversion and reload share
one crop (effectcraft_pdf::layer_doc_with_sizes), so they agree.

Also collapses a match guard in the STL reader for current stable clippy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:33:50 +05:30
DWAA1660andClaude Opus 5.5 2c08f675c2 fix(engine): preserve edits when applying background analyses
Merge each offloaded property-group result against the snapshot the job started from. Preserve disjoint live edits, group identity and child changes; refuse conflicting results without changing the document or undo/redo history.

Record an apply rejection on its originating job so completion logs and waiting control commands report failure. Keep concurrent jobs' outcomes separate and retain the correct completion position when the bounded log rolls over.

Add actual-worker regressions for conflicts, disjoint edits, concurrent analyses and undo/redo, plus control completion/error regressions.

Fixes #1249

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:15:40 -06:00
DWAA1660andClaude Opus 5.5 c280506ba0 fix(config): isolate atomic writes and preserve long filenames
Create each atomic write through its own exclusively created temporary sibling and keep its open file handle until writing finishes. Concurrent writers publish complete files without truncating or following an existing temporary entry; failed writes or renames clean up their own staging file.

Keep the temporary basename bounded independently of the destination name so previously supported long project filenames still save. Retain the concurrent-writer and symlink regressions and add a 251-byte filename overwrite regression that checks exact bytes and staging cleanup.

Fixes #1233

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 20:51:09 -06:00
Matej Kozlovský 295e2a3837 GPU: stop drawing a frame once the device has failed 2026-10-15 01:38:36 +02:00
midasmatterhorn 0f38f507ee ui-egui: a click that opens the colour picker no longer closes it in the same frame (#1476) 2026-10-15 00:10:49 +03:00
midasmatterhorn 769a019e7d pdf: bound CFF endchar seac recursion so a cyclic font can't overflow the stack 2026-10-14 22:55:46 +03:00