Commit Graph
843 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 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 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 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 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 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
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
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
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
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
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
arnav-hiwarkar 75b75f8463 fix(properties): reveal transform rows on double-click (#1456) 2026-10-15 01:25:46 +05:30
Hamza a213b7f23a i18n (de): fix two labels that name the wrong thing, settle six terms (#1443)
Two German menu labels described a different command:

- `layer.timeReverse` was "Ebenenreihenfolge umkehren", which reads as reversing
  the stacking order rather than time -- now "Ebene zeitlich umkehren", matching
  `keys.timeReverse`;
- `layer.style.convertToEditable` was "In editierbare Formate umwandeln", and
  "Formate" are formats, not layer styles -- now "In bearbeitbare Stile
  umwandeln".

Where the same English term had more than one German rendering, the one already
in the majority wins, so this settles rather than re-translates:

- "Expression" is "Ausdruck" in seven entries and "Expressions" in the two
  `layer.expressions` ones, which now read "Ausdrücke aktivieren/deaktivieren";
- "Reveal" is "anzeigen" in eleven of twelve entries, so `layer.revealInFinder`
  joins `file.revealInFinder` at "Im Finder anzeigen" -- in every other
  catalogue both commands already share one string;
- "Track" as a verb is "verfolgen" in the other four entries, so `track.mask`
  is "Maske verfolgen" rather than "Maske tracken";
- one spelling of "nach vorne", matching the neighbouring arrange entry.

German also had no platform variants for the file manager. The engine puts the
platform's name into the label before the catalogue sees it, so on Windows the
source is "Reveal in Explorer" and on Linux "Reveal in File Manager"; only
Ukrainian and Czech special-cased those, and a German UI showed the English
string. Added, with a test mirroring `czech_…` and `ukrainian_…`.

Two of the reported six are left alone: "Essential Graphics" is a 3-3 split and
a panel's proper name, and "Null" partly mirrors the English, which itself says
both "Null Object" and "Nulls". Both are translator's choices with no majority
to follow, not corrections.
2026-10-14 21:21:39 +05:00
arnav-hiwarkar bed289e2a1 fix(presets): identify copy folder action by label
Follow up on #1210: remove the fixed menu index from automation and click handling, and move the preset-folder documentation into the Effects & Presets section.
2026-10-14 12:09:48 +05:30
arnav-hiwarkar 8041329df8 feat(media-browser): add Copy Source Path 2026-10-14 11:42:13 +05:30
Kristian MyramandClaude Sonnet 5.5 be3261419b Viewer: Composition Settings… in the composition's right-click menu
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 00:46:05 +02:00
ThemolxandClaude Opus 5.5 03b7a958e5 Solo: exclude other layers even when the soloed layer is outside its time range
In After Effects solo is not time-dependent: while any AV layer is soloed,
non-soloed layers are excluded at every time. The renderer, nested/collapsed
3D paths, engine viewer helpers and viewer hit tests only counted solo layers
active at the current time, so outside the soloed layer's in-out range the
whole comp reappeared. Drop the time condition (audio already ignored it).

Update the #66 viewer regression test to the AE behaviour and add a render
test for it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:30:26 +02:00
zitann2020andDeepSeek V4.1 Flash 5569aad8b5 i18n(ja): four labels After Effects contradicts
Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-10-14 01:57:37 +09:00
zitann2020andDeepSeek V4.1 Flash 2ff7639219 i18n(ja): the resolution labels agree with the panel catalog and After Effects
Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-10-14 00:57:21 +09:00
Vikram Bhaskaran bde6eb57f3 UI: Spacebar previews the demo opened from the start screen (#1059)
The reported flow — launch to the start screen, Open Demo Project, press
Space — does not reproduce on main: the demo comp activates, the start
screen closes, and playback starts. The behaviour already held (the
#279 menu-focus and #204 start-screen work fixed the neighbouring bugs),
so this lands as a regression test:
space_previews_after_opening_the_demo_from_home walks the exact flow
headlessly and asserts playing=true.

cargo test -p effectcraft-ui-egui --test ui_menus: 8 passed.
2026-10-14 02:20:07 +11:00
arnav-hiwarkar bb1a0e5209 perf(media-browser): reuse listings and cache filename sort keys 2026-10-13 17:42:07 +05:30
pravdomilandClaude Opus 5.5 07168cbf22 Settings: the page list's rows touch, with no gap between them
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:07:19 +02:00
arnav-hiwarkar da06216475 perf(presets): reuse cached text and user preset data 2026-10-13 16:48:19 +05:30
arnav-hiwarkar b63efeb0d3 perf(project): read file sizes once per sort 2026-10-13 15:12:32 +05:30
Brandon ThomasandClaude Opus 5.5 91ee7bf1b3 cargo fmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:23:52 -04:00
Brandon ThomasandClaude Opus 5.5 6c799f3c3b Batch fixes: tests and catalogs that meet each other once the batch lands together
- Keyboard Shortcuts: Enter is not Delete while the delete confirmation is open (#1113 with #1019).
- Speed graph drag test compares proportions, since the Graph Editor now fits its selection (#1182 with #1109).
- Spanish panel test no longer demands the Chinese catalogs' exact rows (#996 with #1189, #1019).
- Object Matte gets its Simplified Chinese effect-name row (#1199 with #792).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:23:30 -04:00
Brandon ThomasandClaude Opus 5.5 1b4ea03fd2 i18n: a group's translated effect name also draws when it isn't being renamed (#1199 with #1075)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 04:35:32 -04:00
Brandon Thomas acb77a8c85 Merge pull request #1210 from arnav-hiwarkar/feat/copy-presets-folder-path 2026-10-13 04:35:21 -04:00
Jannik WapplerandClaude Opus 5.5 1765dc53df Tint: Swap Colors (#963) (#1060)
Squash of #1060 by @RavoxX, without the docs/images screenshots (kept out of the repo).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 04:33:43 -04:00
Brandon Thomas 6d5bcaa058 Merge pull request #1142 from FredApps/fix/1118-video-preview-off-notice 2026-10-13 04:33:21 -04:00
Brandon Thomas 32792ff172 Merge pull request #1199 from cjcwwww/i18n/effect-names
# Conflicts:
#	crates/ui-egui/src/panels/timeline.rs
#	docs/gaps.md
#	docs/localization-parity.md
2026-10-13 04:33:20 -04:00
Brandon Thomas 2647357a0b Merge pull request #1206 from cjcwwww/fix/quick-apply-ime 2026-10-13 04:32:17 -04:00
Brandon Thomas f9d6457f6a Merge pull request #1021 from pravdomil/claude/uu-effect-params
# Conflicts:
#	crates/ui-egui/src/panels/timeline.rs
2026-10-13 04:32:16 -04:00
Brandon Thomas 430c968e52 Merge pull request #933 from Themolx/replace-with-precomp
# Conflicts:
#	crates/engine/src/tests_project_items.rs
2026-10-13 04:31:42 -04:00
Brandon Thomas 4574fb62bc Merge pull request #792 from vangel76/gap-object-matte
# Conflicts:
#	crates/ui-egui/src/i18n/ui.rs
#	docs/gaps.md
#	docs/target-app-parity.md
2026-10-13 04:30:49 -04:00
Brandon Thomas 120ecb9892 Merge pull request #1026 from FeiLiuEM/fix/1024-symbol-fallback-test
# Conflicts:
#	crates/ui-egui/src/theme.rs
2026-10-13 04:30:02 -04:00
Brandon Thomas aa7a8714bd Merge pull request #1108 from eliasx45/upstream/timeline-editing 2026-10-13 04:29:48 -04:00
Brandon Thomas 287c35dae7 Merge pull request #1109 from eliasx45/upstream/azerty-graph-zoom
# Conflicts:
#	crates/engine/src/commands/time.rs
#	crates/ui-egui/src/panels/timeline.rs
2026-10-13 04:29:47 -04:00
Brandon Thomas 8a256a67ef Merge pull request #996 from diegozpy/i18n/es-panels
# Conflicts:
#	crates/ui-egui/src/i18n/ui.rs
2026-10-13 04:29:17 -04:00