Commit Graph
3793 Commits
Author SHA1 Message Date
BFlat 5c02fe902f Merge pull request #1558 from AyberkA0/script-keys-closed-comp
fix(script): per-key methods act on keys outside the active comp (#1531)
2026-10-16 19:00:16 +07:00
BFlat ffab4627e4 Merge pull request #1372 from nanox333/fix/effect-drop-highlights-layer
Timeline: dragging an effect lights up the layer it will land on
2026-10-16 19:00:04 +07:00
bflatasticandClaude Opus 5.5 a8bbcd3aa2 Scripts: the browser-storage test runs where /browser paths are absolute
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:56:18 +07:00
bflatasticandClaude Opus 5.5 4d8f88302d Scripts: the project-folder check compares Windows paths in one form
normalize() canonicalizes whatever part of a path exists, which on Windows adds
the verbatim prefix to some paths and not others, so a file under a folder
that isn't on disk failed the project-folder check against an existing
project folder. The check failed closed (access refused); it now drops the
prefix from canonical drive paths so both sides compare.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:53:59 +07:00
midasmatterhorn 30e02b06ca project: output_size clamps the scale, not the sides, and every renderer uses it
Clamping each side on its own broke the aspect ratio (a 30000x15000 comp
at 4x came out 30000x30000). The effective scale min(s, MAX_SIZE/w,
MAX_SIZE/h) keeps both sides within the comp limit, and the export
pipeline and the locked-aspect width derivation render at that same
scale, so nothing requests a frame larger than output_size reports.
2026-10-16 14:46:24 +03:00
bflatasticandClaude Opus 5.5 c0b505b41d Masks: deleting vertices fills in missing tangents first, like add and set (#1250)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:40:14 +07:00
bflatasticandClaude Opus 5.5 2cf08555a6 Lottie: rustfmt the Offset Paths test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:39:25 +07:00
bflatasticandClaude Opus 5.5 0fbf4e887e pdf: leave the atomic-write test to its own PR
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:39:10 +07:00
bflatasticandClaude Opus 5.5 cc138fcb90 Expressions: timeToFrames keeps whole durations whole under float error
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:38:56 +07:00
bflatasticandClaude Opus 5.5 da23c9a650 i18n(ja): the effect catalog test guards Japanese as a partly filled table
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:38:08 +07:00
midasmatterhorn 912f828aa3 project: output_size never asks for sides past the comp limit
A 30 000 px comp (the repaired MAX_SIZE on load) at resolution 4.0
produced 120 000 px sides, which overflow u32 in the exporters'
w * h * 4 (debug panic, release wrap then slice panic) after already
requesting a ~57 GB frame. The resize path in the same file clamps to
30 000; output_size now does too.

Regression test: output_size_never_exceeds_the_comp_limit — on main it
returns (120000, 120000); with the clamp (30000, 30000), through both
RenderSettings and the OutputModule wrapper.
2026-10-16 14:37:14 +03:00
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
Vikram Bhaskaran f676bf0820 Keep the font rescan off the filter label and off the UI thread.
The 180 px font menu pinned Rescan Fonts over "Variable fonts only", and the click walked every fontconfig directory on the frame thread. The button is now its own row, and the scan runs on a background thread that the frame polls. The Linux face-count assert is left to the native-fonts gate.
2026-10-16 22:20:10 +11:00
Vikram Bhaskaran 7b3d3455cb UI: rescan system fonts from the font menu; Linux scan smoke test (#1089)
Fonts installed after EffectCraft launched (dnf, GNOME Font Viewer, a
drop into ~/.local/share/fonts) stayed invisible until restart: only the
startup background scan ran, and the report in #1089 could not tell
discovery gaps apart from a stale scan.

- The font menu's filter row gains a Rescan Fonts button (Character and
  Properties panels share the popup) that runs the existing
  text.fonts {rescan} command and reports the number added in the status
  line. The press doesn't flip the Variable-fonts filter (the button is
  above the row's click area and closes the popup on top of it).
- system_scan_finds_fonts now asserts, on a native fontconfig desktop
  (any machine with /etc/fonts, which includes the Fedora reporter's and
  the CI runner), that the scan lists installed families rather than
  silently returning only the bundled fonts: 870 faces in ~10 ms on an
  Arch box.

Tests: ui_font_search 4 passed (new rescan test drives the real popup);
effectcraft-text lib system scan green; fmt and clippy --all-targets -D
warnings clean. Translations for 'Rescan Fonts' in all six catalogs.
2026-10-16 22:20:10 +11: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
arnav-hiwarkarandClaude Opus 5.5 17edbbffff Preview: an edit keeps the cached frames outside the layers it changes (#1641)
The RAM preview keyed every frame by one identity of the whole comp, so any
edit (a cut, a trim, a nudge) made every cached frame a miss and the whole
comp recached. When only some of a comp's layers change, frames outside their
In-Out span now move to the new identity. Settings changes, reorders,
expressions, and edits that reach other layers (parents, track mattes, effect
layer pickers) still recache everything.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 16:43:57 +05:30
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 604f2d0ea7 Wave Warp: the pinning test compares the middle row at matching coordinates (#1181)
The old check zipped the padded output with the unpadded source, so pixels never lined up and
it always passed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:53:12 +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
krinry 00c1eb54a8 #1611: layer context menu has Layer Styles
Add Layer Styles submenu to the Timeline and Composition viewer layer context menu, matching After Effects parity and the application Layer ▸ Layer Styles menu.

- Adds Layer Styles submenu between Blending Mode and Effects
- Exposes Layer Style Options..., Convert to Editable Styles, Show All, Remove All, and the 9 individual styles
- Translates Layer Styles across all 7 UI catalogs
- Adds regression test verifying submenu presence, position, and action invocation
2026-10-16 16:01:34 +05:30