Commit Graph
840 Commits
Author SHA1 Message Date
bflatastic eed23ffa48 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 15:00:42 +07: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 0ea9867f94 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 13:57:46 +07:00
bflatastic a2d44e1020 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 13:31:43 +07:00
bflatasticandClaude Opus 5.5 b66a83389d docs: gaps.md says the CI gate runs on pull requests (gap 4 closed)
Since #2204, ci.yml runs `cargo xtask ci` through craft-common-actions' shared gate on every
pull request and push to main; gaps.md still listed "No CI gate on pull requests" as gap 4 and
in the Stability row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 13:29:10 +07:00
Vikram Bhaskaran 85d197e0b9 Make wheel frame-stepping an opt-in that consumes the smoothed tail.
Main routes viewer scrolling through viewer_scroll, so a raw-event scrub fought the wheel zoom. With general.viewerWheelScrubbing on, an unmodified wheel steps frames and the rest of that notch does not zoom or pan. The preference stays off, so the wheel still zooms.
2026-10-30 16:07:37 +11: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 b6d4090e4e Merge main into #2520; fold the PR's DefaultOutput into main's Lookup::QueueDefault (#2636) for renderQueue.add, render.preRender and file.createProxy, keep #2521's RUNS_SCRIPTS refusal with Vec<Lookup>, keep both tests, blender test expects no lookups, docs/mcp.md names all three
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 10:24:43 +07:00
BFlat ab5162ed95 Merge pull request #2636 from storytold/fix/2479-confined-queue-default
Automation: a confined renderQueue.add without output needs a saved project (#2479)
2026-10-30 10:19:01 +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
bflatastic bf19754745 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 09:54:28 +07:00
bflatastic 237d1d7672 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 09:53:42 +07: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
bflatasticandClaude Opus 5.5 2554d3271f Merge main into #2236; no conflicts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 09:23:40 +07:00
bflatasticandClaude Opus 5.5 05841f5cc6 Merge main into #1610; no conflicts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 09:23:38 +07:00
bflatasticandClaude Opus 5.5 ad6bc0c19b Automation: a confined renderQueue.add without output needs a saved project (#2479)
On a project that was never saved, renderQueue.add without output queued
an item whose default output was the home folder, outside every
automation root (rendering it was refused, but the queue held a path the
agent may not write). While file access is confined, such an add is now
refused with a hint to give output inside a write root; a saved
project's default output (beside it) is checked when the queue renders,
as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 09:19:17 +07:00
bflatastic b9a86f5139 Merge main into #1758; no conflicts 2026-10-30 09:17:08 +07:00
bflatastic a683a8074d Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 09:02:01 +07: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 199af9213c #1743: use existing CI and consolidate render source documentation 2026-10-30 02:10:36 +01:00
bflatasticandClaude Opus 5.5 df21aff0d8 Docs: ROADMAP progress log and ScriptUI parity for 30 October's features
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:46:50 +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
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
bflatasticandClaude Opus 5.5 0967102432 Merge main into #2369; clean
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 07:41:47 +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 ee19ac7d52 Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	ROADMAP.md
#	docs/gaps.md
2026-10-30 07:10:16 +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
Marco Arnulfo 0c35a7a889 fix(effects): let CC Particle World's Textured Square use a Texture Layer (fixes #1465) 2026-10-30 00:52:10 +01: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
Marco Arnulfo 86268fc4cc MCP: Text Path Options ▸ Path lists the layer's masks as its options, like the Timeline 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 701d9df8a5 MCP: get_property and get_layer list an enum property's options (#2085) 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
bflatastic 2e92ddaaf6 Merge main into #1340; add Polish to main's Option-based undo/redo wording table, keep main's recounted rows and the Polish row in localization-parity.md 2026-10-30 06:08:35 +07:00
tylerjenningsw 852f98d6a5 Merge enhance/filmcraft-avi-backend into enhance/avi-import
# Conflicts:
#	crates/export/tests/it/movie_bytes.rs
2026-10-29 18:58:57 -04:00
bflatastic 335abf42c4 Merge main into #2474; tests/it/main.rs keeps both ui_env_light_gpu and main's ui_expression_values 2026-10-30 05:53:20 +07:00
Jason LukerandClaude Fable 5.1 26e6145cee Footage: one watcher thread that wakes the interface only when a file changed, instead of a 2 s poll
Settings ▸ Import ▸ Reload Footage Changed on Disk used to spawn a stat thread every two seconds
from the UI thread, request a repaint 100 ms later to collect it, and request another repaint every
2 s in between, for every project with items, focused or not: the whole interface redrew on a timer
for footage that hadn't changed.

`footage_reload::Watcher` is one long-lived worker: the interface tells it what to watch (recomputed
when the project revision or the preference changes) and whether the window is in front; it stamps
the files every 2 s while the window is in front, every 10 s while another app has the front, at once
on focus regain and on a new set, and hands the stamps over — calling `ctx.request_repaint()` — only
when one differs from its last look. Nothing watched means the thread sleeps. `apply_stamps` and the
reload semantics are unchanged; `start_scan`/`poll_scan`/`Session::footage_scan` are gone. No new
dependencies: the stat loop is also what footage on a network share relies on, where FSEvents would
not report another machine's writes.

Tests: the watcher wakes the interface for the first stamps and for each change and never for an
unchanged file; behind another app it rests until the window is back; nothing watched is nothing
stamped and a new set is reported whole (and dropping it ends the thread); the host test
`the_watcher_notices_a_footage_file_changed_on_disk` saves a PSD from "another app" and sees it
reloaded once.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-29 15:41:53 -07:00
bflatastic 0754a754ae Merge main into #2300; Cineon conversion kept in footage_frame_raw (main routes proxies through footage_frame), frame-blend cache key hashes both premul colour and Cineon settings, spec strings combined 2026-10-30 05:41:52 +07:00
bflatastic e3c57f4fda Merge main into #2356; plugins.md keeps main's ScriptUI subfolder row and the PR's script-shortcuts row 2026-10-30 05:35:06 +07:00
bflatastic bd34ab21b6 Merge main into #2279; keep main's Scripts subfolders (RESERVED_FOLDERS) next to the Startup/Shutdown constants, merge docs rows 2026-10-30 05:34:26 +07:00
BFlat faab5b1c81 Merge pull request #2039 from midasdf/jp/cjk-composition-rendering
Text: Chinese Han text uses the installed Chinese face (#453)
2026-10-30 05:10:35 +07:00
BFlat 376f303d8f Merge pull request #2107 from gmrmad1/fix/2073-replace-footage-kind
engine: Replace Footage keeps a still a still (#2073)
2026-10-30 05:10:25 +07:00