Commit Graph
470 Commits
Author SHA1 Message Date
Brandon Thomas 010065e290 Merge pull request #1679 2026-10-18 09:35:34 -04:00
Brandon Thomas 4d61409662 Merge pull request #1672 2026-10-18 09:35:34 -04:00
Brandon Thomas b26b7ec968 Merge pull request #1664 2026-10-18 09:35:34 -04:00
Brandon Thomas d4dd1491f0 Merge pull request #1649 2026-10-18 09:35:34 -04:00
Brandon Thomas 242e02d92d Merge pull request #1627 2026-10-18 09:35:34 -04:00
Brandon Thomas 226fbf5810 Merge pull request #1485 2026-10-18 09:35:33 -04:00
Brandon Thomas 2d47103425 Merge pull request #1424 2026-10-18 09:35:33 -04:00
Brandon Thomas c44c51212c Merge pull request #1413 2026-10-18 09:35:33 -04:00
Brandon Thomas 6648c5befe Merge pull request #1269 2026-10-18 09:35:33 -04:00
webdevtodayjason f368aa0df3 Viewer: keep unselected null outlines visible
Fixes #1642
2026-10-16 14:09:40 -05:00
Marco Arnulfo 9d56675da9 Text: drag a Range Selector's Start and End in the Composition viewer (#1011) 2026-10-16 18:45:11 +02:00
Marco Arnulfo d32c57b093 Project: a new folder opens with its name ready to type (fixes #1658) 2026-10-16 16:26:32 +02:00
Marco Arnulfo 34f1ebfe55 Masks: the arrow keys nudge the selected points (part of #1288) 2026-10-16 14:42:03 +02:00
bflatastic 82784f69ea Merge main into #1640; keep both sides of docs/ui-parity.md 2026-10-16 19:04:25 +07:00
BFlat fa5eff7210 Merge pull request #1332 from Themolx/null-visibility-switch
Null layers: the Video switch hides them in the Composition viewer, as in After Effects
2026-10-16 19:02:24 +07:00
BFlat 1bf383a799 Merge pull request #1628 from marcoarnulfo/fix/speed-graph-fit-selection
fix(graph): speed graph Fit Selection frames the curve between the keys
2026-10-16 19:02:13 +07:00
BFlat 5bb76bf50c Merge pull request #1561 from AyberkA0/pen-shift-45
fix(viewer): Shift-click with the Pen draws a straight segment (#1544)
2026-10-16 19:01:27 +07:00
BFlat e483a1c89c Merge pull request #1512 from vangel76/gap-timeline-effect-label
#1509: Timeline effect rows show the effect's colour label
2026-10-16 19:01:04 +07:00
BFlat 7f46155bbd Merge pull request #1634 from marcoarnulfo/fix/window-menu-closes-panel
Window menu: choosing a checked panel closes it, as in After Effects
2026-10-16 19:00:29 +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
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 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
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
bflatastic 23d56e7fea Merge remote-tracking branch 'origin/main' into pr-1472
# Conflicts:
#	contributors/people.toml
2026-10-16 17:03:52 +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
Marco Arnulfo e228f712a9 Window menu: choosing a checked panel closes it, as in After Effects (fixes #1630) 2026-10-16 10:25:08 +02:00
arnav-hiwarkarandClaude Opus 5.5 1443ad0177 fix(viewer): gizmo arrows take precedence over box handles under them
Review on #1627: the X arrow tip can sit on a bounding-box handle (a 120 px
wide layer at 100%). The arrow is painted on top, but the press and hover
tests checked the handles first, so dragging it scaled the layer. Check the
arrows first in both, and cover the overlap with a pointer-input test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:53:12 +05:30
Marco Arnulfo f9dddfeb10 fix(graph): speed graph Fit Selection frames the curve between the keys (fixes #1617) 2026-10-16 08:56:06 +02:00
arnav-hiwarkarandClaude Opus 5.5 632ab4a292 fix(viewer): drag a 3D layer along a gizmo axis (#1618)
The 3D gizmo's X/Y/Z arrows were drawn but not interactive, so pushing a
layer in depth meant typing Z Position by hand. With the Selection tool,
dragging an arrow now moves the layer along that axis only (no snapping),
as one undo step, reusing the viewer's Move gesture.

An axis pointing at the camera (Z in the default front view) projected to
a dot; it is now drawn as a short diagonal stub so it can be grabbed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 12:03:01 +05:30
Marco Arnulfo f8d82b7265 i18n: the effect and property context menus draw their items in the interface language too (#1308)
The Effect Controls header menu and the Timeline property menu build their
items with the same local closure the layer menu used, so they still drew
English. Both now go through i18n::context_item; Copy, Paste, Edit Value…
and Remove Expression get panel catalog rows.
2026-10-15 21:23:14 +02: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
Ayberk A. a8b25043a9 fix(viewer): Shift-click with the Pen draws a straight segment (#1544)
`pen_press` placed each new vertex where it was clicked (after snapping)
whatever the modifiers, so Shift did nothing and a vertical, horizontal or
45° segment had to be lined up by eye. With Shift held, the new vertex now
moves onto the nearest line at a multiple of 45° through the vertex before
it, as far along that line as the click lies (`constrain_45`). Masks and
shape paths both go through this path.
2026-10-15 14:52:58 +03: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
vangel76andClaude Sonnet 5.5 38d6fb2ed2 #1509: Timeline effect rows show the effect's colour label
Problem: effect colour labels (26.5) were drawn only on the Effect Controls header; the Timeline's effect rows looked unlabelled.

Fix: an effect group row in the Timeline paints the label colour as a 4 px bar on its left edge (same look as the Effect Controls header) and registers `timeline.group.<uid>.label` with the label's name for agents. Docs: gaps.md row 21 and ui-parity.md updated.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-15 01:42:17 +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
DWAA1660andClaude Opus 5.5 642eed0802 Properties/Timeline/Effect Controls: a typed component edits only that component of the other selected layers (#1434)
With several layers selected, typing a value into one dimension (say Z
Position) sent the edited layer's whole value with selected: true, and
prop.set gave every selected layer that same value: they all took the first
layer's X and Y and stacked on top of it. Scrubbing was fine (it sends an
offset).

prop.set takes dims: with selected and a typed value, the other selected
layers get only those components and keep the rest of their own value (Position
with Separate Dimensions included). The three panels send the components the
edit changed (both for linked Scale). Without dims, agents still set the whole
value on every selected layer.

Fixes #1434

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N9kwMcw2pYQ5fSjKa3ZPnh
2026-10-14 14:39:26 -06:00
arnav-hiwarkar 75b75f8463 fix(properties): reveal transform rows on double-click (#1456) 2026-10-15 01:25:46 +05:30
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 9f02bd2a72 #1368: dragging an effect lights up the layer it will land on
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 00:59:11 +02:00
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 f62af4ca73 Guide layers: hidden in nested comps, and in the Timeline context menu, as in After Effects
Guide layers render only in their own comp's viewer: a nested renderer (precomp, collapsed
precomp in 2D, Classic 3D and Advanced 3D, comps read by effects, aux passes, the GPU walk's
resident precomps) now runs with guides off (Renderer::nested_opts), so a precomp's guide
layers no longer show in the parent comp's viewer or in a "Current Settings" render.

The Timeline layer and Composition viewer right-click menus (shared layer_menu) gain a
Guide Layer item (a plain toggle, no check mark) acting on the selection, and guide layers show a guide mark
before their name in the Timeline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:44:40 +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