Goal: render the current scenario to a video file from the studio (output path + codec), in a background thread with progress and completion notice.
Evidence: the Present button only replays (editor/topbar.rs:74-82); users must leave for the CLI.
Invariants: Skia stays the only video engine; the UI thread never blocks during encode.
Acceptance: clicking Export produces a playable file via the existing encode pipeline; errors surface in the UI.
Files: crates/rustmotion-studio/src/editor/topbar.rs, new export module, reuse rustmotion encode API.
Verify: cargo check -p rustmotion-studio && cargo test --workspace
Goal: render the current scenario to a video file from the studio (output path + codec), in a background thread with progress and completion notice.
Evidence: the Present button only replays (
editor/topbar.rs:74-82); users must leave for the CLI.Invariants: Skia stays the only video engine; the UI thread never blocks during encode.
Acceptance: clicking Export produces a playable file via the existing encode pipeline; errors surface in the UI.
Files:
crates/rustmotion-studio/src/editor/topbar.rs, newexportmodule, reuserustmotionencode API.Verify:
cargo check -p rustmotion-studio && cargo test --workspace