Commit Graph
2938 Commits
Author SHA1 Message Date
bflatastic a3f9e0d024 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 09:01:05 +07:00
bflatastic 66d8514d89 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 09:00:40 +07:00
bflatastic c6da978335 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 09:00:12 +07:00
bflatastic 8f1f84ef7f Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 08:59:47 +07:00
bflatastic a9f1d974b9 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 08:59:21 +07:00
bflatastic a5c89d7d78 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 08:58:53 +07:00
bflatastic 1b6cc9a1f1 Merge remote-tracking branch 'pr/2623' into HEAD 2026-10-30 08:58:42 +07:00
erythrofr f6222ff5d5 Tests: document crop/resize regressions
Describe the dimension, pixel-preservation and extreme-input scenarios and
their synthetic-frame helper to address the review's documentation warning.
Test logic and the crop/resize implementation are unchanged.

AI assistance: OpenAI Codex (GPT-6).
2026-10-30 02:47:31 +01:00
BFlat d5b6b67817 Merge pull request #2631 from storytold/fix/2582-ui-scale-on-release
Settings: a dragged UI Scale applies on release (#2582)
2026-10-30 08:25:33 +07:00
BFlat d975022ff5 Merge pull request #2629 from storytold/fix/2585-scriptui-dock-size
ScriptUI: a docked panel gets its dock's size and onResize (#2585)
2026-10-30 08:12:01 +07:00
bflatasticandClaude Opus 5.5 1158022585 Settings: a dragged UI Scale applies on release (#2582)
Dragging an integer setting applied every step, so UI Scale resized the
interface under the pointer mid-drag. A dragged value now shows in its
field and applies when the button is released (a typed one already
waited for Enter).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:53:12 +07:00
bflatasticandClaude Opus 5.5 b13a80b882 Merge main into #2623; clean (main moved to e6f2cce7d)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:51:46 +07:00
bflatasticandClaude Opus 5.5 480d1ba2bf Merge main into #1897; EvalCtx in convert_to_bezier built with ..EvalCtx::new
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:51:19 +07:00
bflatasticandClaude Opus 5.5 5a5de6f71d Merge main into #1726; clean merge, no conflicts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:48:33 +07:00
bflatasticandClaude Opus 5.5 43c7cbb9aa Merge main into #2620; clean merge, no conflicts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:47:41 +07: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
BFlat e6f2cce7d5 Merge pull request #2628 from storytold/fix/2552-timeline-group-multiselect
Timeline: Shift-click adds effects and other groups to the selection (#2552)
2026-10-30 07:45:22 +07:00
bflatasticandClaude Opus 5.5 eedd1dfaae Merge main into #1736; clean merge, no conflicts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:42:03 +07:00
bflatasticandClaude Opus 5.5 0bb52bb8ff Merge main into #2623; clean
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:38:57 +07:00
BFlat 5dfccee3c7 Merge pull request #2624 from storytold/fix/2584-scriptui-mouse-capture
ScriptUI: a drag keeps its control past the window edge; MouseEvent.buttons (#2584)
2026-10-30 07:38:50 +07:00
bflatasticandClaude Opus 5.5 5bb66bad74 ScriptUI: a docked panel gets its dock's size and onResize (#2585)
A docked ScriptUI panel only ever saw its preferredSize: the host drew
it in a scroll area at max(dock, preferred) and the script's window never
learned the dock. scriptui.resize now gives a window a size: the script's
window takes it, lays itself out again and runs onResizing / onResize.
The dock host sends it whenever the panel's dock size changes, so
window.size is the dock's, as in After Effects.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:37:19 +07:00
bflatasticandClaude Opus 5.5 1c1faaa758 Timeline: Shift-click adds effects and other groups to the selection (#2552)
Clicking an effect, Layer Style, mask or shape item row in the Timeline
always replaced the selection, so one animation preset couldn't hold
several effects and styles. Shift or Cmd/Ctrl now adds the group to the
selection, or takes a selected one out, as property rows and Effect
Controls headers already do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:26:44 +07:00
Camille Moine d249f255ae Shapes: export per-corner rc.r as a Lottie property
The equal-radii and zero fallback branches wrote a bare number where the
uniform branch (and every other Value field) writes `{a, k}`; external
players may reject that form even though our importer reads it. Write
`{"a": 0, "k": value}` in both branches and update the export assertions.
2026-10-30 01:24:59 +01: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
bflatasticandClaude Opus 5.5 0d551b672d i18n: catalogs list each source once again; Georgian panels stay registered
#2054's own merge of main re-added zh-hans/zh-hant rows that main already
had, so catalogs_are_unique_and_keep_the_english_shape failed on main.
The catalog is the batch-tested one, with ('ka', GEORGIAN_PANELS) back in
ROWS (the batch's merge helper had folded it into the first 'ka' entry).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:18:14 +07:00
bflatastic a38328cc3a Keep the PR building with main: Layers stays off psd documents; preview merge and fmt 2026-10-30 07:11:40 +07: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 36fab2ab17 Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	crates/ui-egui/src/panels/dialogs.rs
#	crates/ui-egui/src/panels/dialogs_3d.rs
2026-10-30 07:10:59 +07:00
bflatastic 5c89837f91 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:10:36 +07:00
bflatastic ee19ac7d52 Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	ROADMAP.md
#	docs/gaps.md
2026-10-30 07:10:16 +07:00
bflatastic 4d3f14e0fd Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	crates/ui-egui/src/panels/viewer/frame.rs
2026-10-30 07:06:05 +07:00
bflatastic 42876133d5 Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	docs/gaps.md
2026-10-30 07:05:43 +07:00
bflatastic 33ce4bbbed Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:05:19 +07:00
bflatastic 03bae81edd Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:04:56 +07:00
bflatastic 6c9e625a2e Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:04:33 +07:00
bflatasticandClaude Opus 5.5 01f92b04c5 ScriptUI: a drag keeps its control past the window edge; MouseEvent.buttons (#2584)
A drag that started on a script control stopped at the window edge:
moves outside were dropped and a release outside never reached the
control. While a button is held, the control it was pressed on now gets
the moves (with screen and control-relative coordinates) and the
release, wherever the pointer is, as in After Effects. Every MouseEvent
also carries buttons (held: 1 left, 2 right, 4 middle), so a handler can
tell a drag from a hover; scriptui.mouse accepts it too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:04:18 +07:00
bflatastic ee7fd1402e Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:04:13 +07:00
bflatastic d6e99c0db8 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:03:44 +07:00
bflatastic e1c2147b32 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:03:20 +07:00
bflatastic b7fedd3a62 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:02:50 +07:00
bflatastic 2632e0b2d9 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:02:27 +07:00
bflatastic ff9af55e81 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:02:03 +07:00
bflatastic 80cb8a06ae Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:01:38 +07:00
midasdf d3aa81ffba Merge remote-tracking branch 'origin/main' into jp/ja-dialogs
Resolve the two conflicts the panel catalogs and the Composition Settings
rewrite left:

- i18n/ui.rs: keep both sides' rows in the Simplified and Traditional Chinese
  catalogs, which grew at the same anchor (the PR's 301 panel/dialog rows, then
  main's 43 tool and Preview-panel rows). The tables are grouped by feature, not
  sorted by key, so the two blocks sit one after the other. Both sides also added
  "Frame Rate" once: keep one row per catalog, main's 影格速率 in Traditional
  (matching the table's existing 影格速率:) and 帧速率 in Simplified.
- comp_settings.rs: take main's rewritten tab_body (it returns () and matches on
  the tab, and show() measures the tabs) and re-apply the wrapping the old layout
  had: the three tab labels go through tr(), as Basic, Advanced and 3D Renderer
  already have rows. The old horizontal layout and its out accumulator are gone.

cargo test -p effectcraft-ui-egui --lib: 336 passed, 0 failed, 3 ignored.
2026-10-30 08:47:55 +09:00
BFlat 9250a30b37 Merge pull request #2622 from storytold/fix/2593-render-countdown
Render Queue: elapsed and remaining time tick between frames (#2593)
2026-10-30 06:45:16 +07:00
BFlat b704bb4780 Merge pull request #2621 from storytold/fix/script-replace-single-file
Scripts: FootageItem.replace() swaps in one file, as in After Effects
2026-10-30 06:45:09 +07:00
bflatasticandClaude Opus 5.5 e806f0d34e i18n: the menu test expects German's own Can't Undo wording now that it has one
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 06:43:12 +07:00
bflatasticandClaude Opus 5.5 cf912e1f61 Automation: the file-parameter audit counts RUNS_SCRIPTS as classified
file.runScript and script.run moved from REFUSED to RUNS_SCRIPTS, which
check_command refuses too; the audit test now looks there as well.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 06:42:54 +07:00
erythrofr 63ec5f2aad Export: apply crop once when calculating resize dimensions
Calculate frame_size from the original rendered dimensions and effective
render scale before cropping, so locked-aspect resize does not apply the
crop margins a second time in its dimension calculation.

Add dimension and decoded-PNG regressions for crop, resize, padding, scaled
ROI, both interpolation qualities, and zero or extreme requested sizes.

AI assistance: OpenAI Codex (GPT-6).
2026-10-30 00:39:56 +01:00