Commit Graph
1595 Commits
Author SHA1 Message Date
Egon 5000 b7ae660379 UI: a menu scrolls from its edge while browsing with the button held
Resting the pointer in an 18 pt band at a menu's bottom edge crawls the list after a short delay and speeds up the longer it stays there, so long menus stay reachable without letting go of the press-and-hold gesture. Context menus do not crawl.
2026-10-16 13:25:03 +02:00
Egon 5000 e6d5297a86 UI: the menu bar browses from the press until the release
A title opens on the press and the menus follow the cursor while the button is held: hovering a category opens its submenu and releasing over an entry picks it. An outside press or a focus loss closes the open menu again.
2026-10-16 13:22:42 +02:00
BFlat 19d19a339e Merge pull request #1482 from midasmatterhorn/fix/font-offset-overflow
pdf: checked_add for CFF Private DICT and Type 1 RD offsets from the file
2026-10-16 18:15:10 +07:00
bflatastic 3ec09f20d4 Merge remote-tracking branch 'origin/main' into pr-1482
# Conflicts:
#	crates/pdf/src/cff.rs
2026-10-16 18:14:31 +07:00
bflatastic f85f34c089 Merge remote-tracking branch 'origin/main' into pr-1379
# Conflicts:
#	crates/render/src/tests.rs
2026-10-16 18:14:14 +07:00
BFlat 853a1b65ec Merge pull request #1454 from Hamza0101/fix/german-menu-terms
i18n (de): fix two labels that name the wrong thing, and settle six terms
2026-10-16 18:13:57 +07:00
BFlat 5bbd982c32 Merge pull request #1566 from midasmatterhorn/fix/r4-inline-len-overflow
pdf: an inline image with absurd dimensions falls back to the EI scan
2026-10-16 18:13:33 +07:00
BFlat 5ad71a24e6 Merge pull request #1294 from vbasky/fix/1068-loop-import
Engine: sequence Interpret Footage loop regression coverage (#1068)
2026-10-16 18:13:22 +07:00
BFlat c672542b73 Merge pull request #1367 from nanox333/fix/viewer-comp-settings-menu
Viewer: Composition Settings… in the composition's right-click menu
2026-10-16 18:13:11 +07:00
BFlat ba384b89cd Merge pull request #1295 from vbasky/fix/1059-demo-space
UI: regression test — Space previews the demo opened from the start screen (#1059)
2026-10-16 18:12:59 +07:00
BFlat 9eec6ea705 Merge pull request #1344 from dotCooCoo/fix/find-missing-fonts-postscript-names
Find Missing Fonts: fonts found by their PostScript or full name are no longer listed
2026-10-16 18:12:47 +07:00
BFlat 79bfc23c69 Merge pull request #1447 from midasmatterhorn/fix/glyph-name-char-boundary
pdf: don't slice glyph names at a non-char boundary in name_to_unicode
2026-10-16 18:12:24 +07:00
BFlat 04a60d7747 Merge pull request #1311 from MarekSpodBiedry/issue-1263
Scripting: add the missing app.preferences.saveToDisk() so imported scripts like Duik get past startup (#1263)
2026-10-16 18:12:02 +07:00
BFlat 470ac13463 Merge pull request #1312 from zitann2020/i18n/ja-proportional-grid
i18n(ja): four labels After Effects contradicts
2026-10-16 18:11:50 +07:00
BFlat eea030b547 Merge pull request #1307 from zitann2020/i18n/ja-resolution-labels
i18n(ja): the resolution labels agree with the panel catalog and After Effects
2026-10-16 18:11:39 +07:00
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 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 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 6f2f98b398 pdf: inline_len returns the checked product directly (clippy)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:48:08 +07:00
bflatasticandClaude Opus 5.5 f8b587503d pdf: rustfmt the inline-image test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:36:55 +07:00
bflatasticandClaude Opus 5.5 183fe652e4 pdf: an inline image just under usize::MAX bytes doesn't overflow its end offset
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:36:11 +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
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
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-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
midasmatterhorn 5e18a7fd92 pdf: an inline image with absurd dimensions falls back to the EI scan
inline_len computed (w * n * bpc).div_ceil(8) * h with Width/Height taken
straight from the content stream and no size validation — unlike decode()
and mask_image, which bound their geometry first. /W 5000000000000000000
overflows the multiply in debug and test builds; in release it wraps to a
small length and the caller slices the wrong bytes, misparsing the image
and shifting the EI resync.

Chain the arithmetic through checked_mul and return None, which the
caller already routes to the EI-scan fallback. Regression test:
inline_image_with_absurd_dimensions_falls_back_to_ei_scan — panics at
crates/pdf/src/image.rs:85 on main, passes with the chain.
2026-10-15 16:10:10 +03:00