Commit Graph
166 Commits
Author SHA1 Message Date
bflatastic eed23ffa48 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 15:00:42 +07:00
Kristian Myram 7e68d4bbb4 #1829: cover source protection during background timeline export 2026-10-30 08:27:14 +01:00
Kristian Myram f0b5e4eeff #2668: cover mixed strokes and stretched layer timing 2026-10-30 08:23:02 +01:00
Kristian MyramandClaude Sonnet 5.5 d2930b2554 Fix #1743 (follow-up): commands that write to a given path never replace footage, a proxy or the project file
Session::write_output (and refuse_export) is the one place that checks; Save Frame As
(PNG/PSD/EXR), Export Lottie, Save a Copy (+XML), Collect Files, Export Timeline (and its
pre-rendered movies), Export Template, Save Animation Preset, Export Guides and Export
Shortcuts write through it. The control channel's render.frame/ui.screenshot, MCP
render_frame and CLI render-frame --out check first (new query file.checkOutput for the
bridged cases). Save/Save As/auto-save are untouched.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-30 08:06:48 +01:00
bflatastic 4ced49aa95 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 14:04:46 +07:00
BFlat ded4252f99 Merge pull request #2662 from storytold/fix/2269-timeline-export-background
Premiere Pro export pre-renders in the background (#2269)
2026-10-30 13:08:28 +07:00
bflatasticandClaude Opus 5.5 68738d4b1b Premiere Pro export pre-renders in the background (#2269)
File ▸ Export ▸ Adobe Premiere Pro Project… pre-rendered every layer Premiere can't show to
ProRes 4444 with the window waiting: minutes on a large comp, which Windows reports as not
responding. The export now runs as a job (Window ▸ Progress, cancellable, with per-layer
progress) when started from its dialog (`background: true`); without it, the command still
waits and returns the same result.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 12:36:05 +07:00
bflatasticandClaude Opus 5.5 f6f242d6dd layer.slip reports the requested shift and whether it was clamped (#2371)
A slip on a layer with no source handles succeeded with `delta: 0` and nothing else, which
read like a no-op bug. The result now carries `requested` (seconds) and, per layer, `clamped`
when the source could not move that far.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 12:20:30 +07:00
bflatasticandClaude Opus 5.5 561c2a8e48 Settings: older settings files split layers above the original (#2545)
Create Split Layers Above Original Layer became on by default in #2083, but a settings
file saved before then still holds `false` (every later save keeps it), so Split Layer
kept stacking the new layer below. Settings version 4 moves a stored `false` to the new
default once, like version 3 did for the old disk cache size; a choice made since stays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:48:41 +07:00
bflatastic 3f7dc9d1d1 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 11:06:05 +07:00
bflatastic 8af1df7093 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 11:05:29 +07:00
bflatastic 06a3e82e5d Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 11:04:06 +07:00
Kristian Myram 238fe6cd2a #1342: preserve gradient stroke widths in the toolbar 2026-10-30 04:55:22 +01:00
bflatastic cdaba8cce5 rustfmt 2026-10-30 10:46:18 +07:00
bflatasticandClaude Opus 5.5 666d929b51 Merge main into #1342; carry main's Mute/Unmute Keyframes (keys.setMuted) into the shared key_menu, gated off on locked layers like the other edits (test covers it), delete_keys keeps locked keys selected and runs main's polystar sync, keep both sides' timeline tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 10:27:51 +07:00
bflatasticandClaude Opus 5.5 c1c6e048f4 Merge main into #2268; import both layers_or and popup_options, drop main's now-unreachable post-duplicate end_edit (the PR ends the edit first), adapt tests to main's kept empty Type-tool layer (f262e39c6)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 10:23:03 +07:00
bflatasticandClaude Opus 5.5 6cad825ec0 Merge main into #2562; frame.rs: keep main's color_picker::note_dialog and the PR's scope_links call
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 10:21:58 +07:00
bflatasticandClaude Opus 5.5 5114657519 Merge main into #1755; move ui_timeline_group_select into the tests/it binary (one integration test binary per crate)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 10:21:38 +07:00
BFlat 24d5fbc0ac Merge pull request #2632 from nanox333/codex/polystar-review-followup
Polystar: synchronize inner controls after expressions and key edits
2026-10-30 10:18:56 +07:00
bflatastic baaa84ed21 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 09:55:17 +07:00
bflatastic b766bf2fd4 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 09:54:50 +07:00
Kristian Myram c51b461860 #1284: drop superseded shape tool double-click changes 2026-10-30 03:52:38 +01:00
Kristian Myram 2883ae9e57 #1685: discard removed property selections after undo 2026-10-30 03:27:14 +01:00
bflatasticandClaude Opus 5.5 bd0247877c Merge main into #1601; no conflicts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 09:23:46 +07:00
bflatasticandClaude Opus 5.5 9293693e9e Merge main into #2248; no conflicts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 09:23:43 +07:00
bflatastic b9a86f5139 Merge main into #1758; no conflicts 2026-10-30 09:17:08 +07:00
tylerjenningsw 0138e0ec8a Merge main into enhance/audio-levels-link
# Conflicts:
#	crates/ui-egui/src/panels/timeline.rs
#	crates/ui-egui/src/state.rs
2026-10-29 22:09:27 -04:00
tylerjenningsw 4119665f65 Merge main into fix/timeline-shift-select-groups
# Conflicts:
#	crates/ui-egui/src/panels/timeline.rs
2026-10-29 22:08:27 -04:00
bflatastic 5522711e92 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 09:01:36 +07:00
bflatastic 66d8514d89 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 09:00:40 +07:00
Kristian Myram 088bedff45 #1685: preserve composition selection and resolve all expression targets 2026-10-30 02:58:46 +01:00
Kristian Myram 86b357162c #1685: synchronize Polystar controls across animation edit routes 2026-10-30 02:29:16 +01:00
bflatasticandClaude Opus 5.5 d1a3510a42 Merge main into #2442; clean merge, no conflicts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:46:40 +07:00
bflatasticandClaude Opus 5.5 9e6332ea27 Merge main into #1739; keep both footage re-exports (Cineon + VIDEO_EXTENSIONS) and main's gaps.md localization row with the PR's AVI row
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:44:20 +07:00
Camille Moine 3bc1caaedb Shapes: per-corner roundness for Rectangle Path (#1896)
Add Per-Corner Roundness to Rectangle Path: a checkbox (off by default) and four Pixels properties (top-left, top-right, bottom-right, bottom-left). New rectangles initialise the four values from their Roundness, so ticking the box keeps the shape; the radii are animatable and expression-driven.\n\nrect_radii() builds the path clockwise from the top-left with kappa quarter-circle arcs. Overlapping radii scale down like CSS border-radius; negative and non-finite radii are square; rect() delegates to it, so uniform roundness clamps to half the shorter side as before.\n\nLottie rc has one r: four equal static radii export as that value; mixed or animated radii export roundness 0 with a warning. Import puts r into the four per-corner values so ticking the box on an imported rectangle keeps the shape.\n\nTests: path geometry and clamping, rendered per-corner pixels, Lottie equal/mixed/checkbox-off export.
2026-10-30 01:24:59 +01:00
bflatastic 5c2e7ad343 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:11:39 +07:00
bflatastic d8b6d403d4 Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/i18n.rs
#	docs/localization-parity.md
2026-10-30 07:11:17 +07:00
bflatastic 5c89837f91 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:10:36 +07:00
bflatastic 33ce4bbbed Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:05:19 +07:00
bflatastic ee7fd1402e Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:04:13 +07:00
Marco Arnulfo 495243c5b6 Scale Composition: refuse more than one of factor, width and height instead of ignoring the others 2026-10-30 00:44:58 +01:00
Marco Arnulfo 807803c14b Scale Composition: escape pipes in the parity table, check redo in the test 2026-10-30 00:44:58 +01:00
Marco Arnulfo fc7882b0ee Scale Composition: scale the Point of Interest depth of a camera or light under a 2D parent
Otherwise the eye moves back while the point it looks at stays put, and the
view direction changes.
2026-10-30 00:44:58 +01:00
Marco Arnulfo 1f693acea6 Scale Composition: walk the parent chain through cameras and lights, and give Z its own Scale speed
The renderer applies every ancestor's transform, so a scaled null above a
camera already carries the camera's children. A Scale key with one shared
ease gets a separate Z ease before its speed is scaled.
2026-10-30 00:44:58 +01:00
Marco Arnulfo 76e02f88b7 Scale Composition: keep the ease of depth moves under 2D parents, and scale depth once through a 3D ancestor
Position speeds stretch with the path's direction at each key and Scale's Z
speed with the factor, so the ease keeps its shape. A 3D layer under a 2D
parent scales its own Z only when no 3D ancestor's Scale already carries it.
2026-10-30 00:44:58 +01:00
Marco Arnulfo 76369bc10a Scale Composition: Z of 3D layers under 2D parents, percentage guides left alone, region of interest scaled
A 2D parent's Scale carries no depth, so its 3D children scale their own Z.
Percentage guides keep their percent exactly instead of drifting by rounding.
Tests now check the specific errors and cover a layer parented to a camera.
2026-10-30 00:44:58 +01:00
Marco Arnulfo 4aaba7c3bf Scale Composition: comp.scale resizes a comp and scales its layers, keys, cameras and guides by one factor
Like After Effects' File > Scripts > Scale Composition.jsx: a factor, or a new
width or height that keeps the aspect ratio, in one undo step. Layers whose
parent has a Scale follow that parent; nested precomps and expressions are
left as they are. No dialog yet.

Refs #2208
2026-10-30 00:44:58 +01:00
Marco Arnulfo 09a93b6d62 Layer Styles: changed Blending Options outlive the last style and only pixel-changing styles block a clip export (#1389) 2026-10-30 00:44:57 +01:00
Marco Arnulfo cc94fccda5 Layer Styles: Blending Options can be edited on a layer with no styles (#1389) 2026-10-30 00:44:57 +01:00
Krueels dcbb806139 #986: add Blender scene export for 3D Camera Tracker 2026-10-29 20:15:25 -03:00