Commit Graph
3161 Commits
Author SHA1 Message Date
Kristian Myram c5671f6569 #1830: require exporter support before skipping duplicate frames 2026-10-30 08:59:53 +01:00
Kristian Myram 37561799f6 #1830: check virtual output paths in web renders 2026-10-30 08:42:03 +01:00
Kristian Myram b6c3e6dc39 #1830: detect sequence padding and individual-file collisions 2026-10-30 08:26:09 +01:00
Kristian MyramandClaude Sonnet 5.5 615c4cdffb Render Queue: two outputs of one job never write the same file, and default names avoid the queue's other outputs
Two queue items that resolve to one output (the same comp added twice, a duplicated item) replaced
each other's file inside one job. Nothing is on disk when the job starts, so no check said anything.

- A default output name (renderQueue.add, render.preRender, comp.saveFrameAs {queue},
  file.createProxy) that another item of the queue writes, in any output module or segment, is
  numbered like a footage collision: Main.mp4, Main_1.mp4, Main_2.mp4. Sequences are compared by
  the frames they write, so two stills of one comp at different times keep their names. Names a
  caller gave and names already stored in items are never changed.
- Outputs of one job that still name the same file (explicit names, renderQueue.duplicate, output
  modules, segments) refuse the whole render before anything is written, naming both items.
  Sequences clash only on frames both write; a later item with Skip Existing Files leaves the
  earlier item's frames alone; items refused for footage take no part.

Refusing the whole render, not just the later item: which of two items should keep the file is the
user's to say, and failing only the later one would leave a half-rendered queue found after they
left. renderQueue.duplicate stays a verbatim copy so the clash is reported, not hidden.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RDvxCS8xcR28VArjzn1x7U
2026-10-30 08:04:32 +01:00
BFlat 72bd4a0366 Merge pull request #1339 from vangel76/feat-gap25-a11y-audit
Accessibility (gap 25): an AccessKit audit test; names, roles and keyboard operation for Effects & Presets, Settings and Render Queue
2026-10-30 13:19: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
BFlat c52164b57e Merge pull request #2658 from dotCooCoo/fix/font-substitute-test-installed-families
Make font substitute test work when original fonts are installed
2026-10-30 12:48:32 +07:00
BFlat 255af9e2b3 Merge pull request #2657 from storytold/fix/2371-slip-clamped
layer.slip reports the requested shift and whether it was clamped (#2371)
2026-10-30 12:47:13 +07:00
BFlat 29e13dc359 Merge pull request #2655 from storytold/fix/2152-discrete-undo-steps
Discrete property choices are one undo step each (#2152)
2026-10-30 12:44:31 +07:00
bflatastic 5b056fcb30 Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	crates/ui-egui/src/lib.rs
2026-10-30 12:38:03 +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
BFlat fbb5488214 Merge pull request #2648 from zitann2020/i18n/ja-panel-rows
i18n(ja): the panel catalog's last 65 rows
2026-10-30 12:34:57 +07:00
BFlat 39a1cf9e67 Merge pull request #2649 from zitann2020/ui/2589-self-drop
ui: a drop that holds the target composition lands the rest of the selection (#2589)
2026-10-30 12:32:53 +07:00
BFlat b4c61f3db7 Merge pull request #2650 from zitann2020/ui/2588-timeline-drop
ui: a file dropped on the Timeline joins that composition (#2588)
2026-10-30 12:31:28 +07:00
Dylan M. Taylor e136844b53 Update prompt shows the app accent color (#2656)
UPDATE_APP gains our accent (#e0368f, our colour in ArtCraft Launcher). The prompt draws it
on the UPDATE chip, the buttons and the What's new underline, and says "by ArtCraft"
(craft-update's default developer); #2646 gave it our icon.

craft-update is pinned to storytold/craft-libs main at 1065653e7 (#434).
2026-10-30 01:29:03 -04:00
dotCooCoo 1981d86c54 Make font substitute test work with installed originals 2026-10-29 22:22:07 -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 53a0532c1f Discrete property choices are one undo step each (#2152)
Timeline and Effect Controls value editors sent every write with the property's scrub merge
key, so two separate picks from a drop-down (or two check box toggles) on the same property
folded into one undo step. Drop-down, check box, layer and mask picks now record their own
step; scrubs and typed numbers still merge as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 12:15:50 +07:00
BFlat b23ef3d9a8 Merge pull request #2654 from storytold/fix/2545-split-above-migrate
Settings: older settings files split layers above the original (#2545)
2026-10-30 12:14:36 +07:00
BFlat 2745890b2f Merge pull request #2653 from storytold/fix/2618-adjustment-blend-modes
Adjustment layers blend in their blend mode (#2618)
2026-10-30 12:10:16 +07:00
bflatastic 1efe4b3209 Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	crates/ui-egui/src/lib.rs
2026-10-30 12:06:47 +07:00
bflatastic a71e8e4550 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 12:04:46 +07:00
bflatasticandClaude Opus 5.5 4c62cdeefa Fix #1339 checks after merging main
- ui_accessibility_audit: main's new Character panel controls (stroke width presets, line
  join, stroke order) raise Character:default to 46 findings (22 unnamed); the ratchet entry
  follows, since that panel is not yet audited. The control filter is written as clippy's
  nonminimal_bool asks.
- ui_timeline_shapes (main's #2513 test): this PR names the Properties panel's Position row,
  so "Position" is no longer unique; the test takes the Animate menu's new entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 12:04:32 +07:00
bflatastic 687af205c7 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 12:04:22 +07:00
bflatastic 50769d5cb6 Keep main's Japanese rows: drop the 13 #1772 already added (one source string per table) 2026-10-30 12:03:48 +07:00
bflatastic b9abf12a5f Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 12:02:27 +07:00
BFlat daf2d2a6a9 Merge pull request #2646 from dylanmtaylor/feat/update-dialog-app-icon
Update prompt shows the app icon instead of a letter
2026-10-30 12:01:26 +07:00
bflatastic b2188c725e Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 12:00:31 +07:00
BFlat 91077c7b78 Merge pull request #1772 from haranishi/review/japanese-panel-labels-20261018
Translate remaining Japanese panel labels
2026-10-30 11:59:57 +07:00
BFlat b7079d3cfa Merge pull request #2255 from MarekSpodBiedry/issue-2242
Viewer: motion path follows X/Y Position when dimensions are separated (#2242)
2026-10-30 11:57:57 +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 0f39b3740d Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 11:47:07 +07:00
bflatastic 9fb8340cfe Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 11:47:04 +07:00
bflatasticandClaude Opus 5.5 94c8bde240 Adjustment layers blend in their blend mode (#2618)
An adjustment layer replaced the comp below with its effects' result whatever its blend
mode. As in After Effects, a mode other than Normal now blends the adjusted comp onto the
comp below in that mode, inside the footprint, track matte and opacity (an adjustment
layer with no effects in Screen screens the comp with itself). CPU and GPU paths.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:43:19 +07:00
bflatasticandClaude Opus 5.5 eef9997889 Merge origin/main into #1339
header.rs, render_queue.rs: main's drag-toggle checkboxes report `.changed()`; the
Snapping, Notify and per-item Render check boxes keep this PR's AccessKit names and use
`.changed()`, the per-item one inside main's `add_enabled_ui`. The Render button keeps its
name with main's translated label.
effects_presets.rs: kept this PR's row_focus/nav_click and main's rows_before_presets;
main's reveal of Animation Presets with this PR's folder_row (nav, level), and the nav's
offset follows the scroll it moves; the search field keeps its name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:34:05 +07:00
bflatasticandClaude Opus 5.5 74303466ef Layer Style dialog: Edit Gradient… opens the Gradient Editor and comes back (#2057)
Gradient Overlay's gradient showed "Edit in the Timeline" text in the Layer Style dialog.
It is now an Edit Gradient… button that runs prop.editGradient on that property; OK or
Cancel in the Gradient Editor returns to the Layer Style dialog, as in After Effects.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:31:29 +07:00
zitann2020andDeepSeek V4.1 Flash daab98d5c4 i18n(ja): the panel catalog's last 65 rows
Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-10-30 13:26:21 +09:00
bflatastic c07decd552 Merge main into #2646; no conflicts; gate UPDATE_APP to non-wasm32 (craft-update is a native-only dependency of ui-egui) 2026-10-30 11:20:26 +07:00
bflatasticandClaude Opus 5.5 631b14756f Merge main into #2255; viewer.rs split: port add_motion_key/select_motion_key changes to viewer/tools.rs, motion_path keeps main's muted-key dimming and key value alongside separated X/Y dots
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:20:03 +07:00
bflatastic d178f6bfa0 Merge main into #1772; no conflicts 2026-10-30 11:19:40 +07:00
BFlat e56c916085 Merge pull request #2645 from storytold/fix/2075-stroke-width-control
Character panel: the stroke width shows its icon and a presets menu (#2075)
2026-10-30 11:07:17 +07:00
BFlat 5abef26f8d Merge pull request #2643 from storytold/fix/2102-simple-choker-test
Tests: Simple Choker keeps growing the matte down to -100 (#2102)
2026-10-30 11:07:12 +07:00
bflatastic 803837925e Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 11:06:32 +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 d56f72d8fd Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 11:04:47 +07:00
bflatastic 06a3e82e5d Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 11:04:06 +07:00
bflatastic 876a31bd74 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 11:03:37 +07:00
bflatastic 3a7c4fbbc7 Timeline key menu: clippy's simpler enabled condition 2026-10-30 11:02:17 +07:00
Ikki Nishihara d2bc8f862b G9: integrate current main for Japanese panel translations 2026-10-30 12:50:20 +09:00