Summary
Poster generation resolves ffmpeg through the parent process's PATH. This may work in a development shell but is unreliable in a packaged macOS application, and the current bundle configuration does not include ffmpeg.
Evidence
src-tauri/src/media/poster.rs:20 uses std::process::Command::new("ffmpeg").
src-tauri/tauri.conf.json has no bundle.externalBin entry.
- Poster generation blocks until the child exits.
Proposed change
- Select and document the distributable ffmpeg build and its license obligations.
- Package architecture-specific ffmpeg binaries through
bundle.externalBin.
- Invoke the packaged binary as a Tauri sidecar from Rust.
- Run it asynchronously with timeout, cancellation, bounded stderr capture, and cleanup of partial output.
- Validate the video input and output paths against the active workspace.
Acceptance criteria
- Poster generation works in a signed packaged application without a system ffmpeg installation.
- Apple Silicon and Intel packaging behavior is defined.
- A failed or cancelled job leaves no partial poster.
- Error output is bounded and returned through the structured application error surface.
- A packaged-app smoke test exercises poster generation.
Reference
Summary
Poster generation resolves
ffmpegthrough the parent process'sPATH. This may work in a development shell but is unreliable in a packaged macOS application, and the current bundle configuration does not include ffmpeg.Evidence
src-tauri/src/media/poster.rs:20usesstd::process::Command::new("ffmpeg").src-tauri/tauri.conf.jsonhas nobundle.externalBinentry.Proposed change
bundle.externalBin.Acceptance criteria
Reference