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>
This commit is contained in:
Kristian Myram
2026-10-30 08:06:48 +01:00
co-authored by Claude Sonnet 5.5
parent 1f15f8a53b
commit d2930b2554
23 changed files with 767 additions and 72 deletions
+2
View File
@@ -726,6 +726,8 @@ fn run(cmd: &str, args: &Args, json_out: bool) -> Result<(), Failure> {
}
}
let out = args.opt("--out").unwrap_or("frame.png").to_string();
// Never over footage, a proxy or the project file (checked before rendering).
b.check_output(&out)?;
let t0 = std::time::Instant::now();
let f = b.render_with(comp.as_ref(), time, max_side, args.flag("--transparent"))?;
let ms = t0.elapsed().as_secs_f64() * 1000.0;