filmcraft/crates
Brandon Thomas bd12dcae81 Bridge: a blocking export runs as an app job, so it neither times out nor freezes the app (#91, #92)
file.exportMedia with wait: true was forwarded to the app unchanged. The app then encoded on its UI
thread: it showed no progress and answered no other control request until the encode ended, and the
control server's 60 s reply limit reported "timeout" for any longer export while it went on and
succeeded.

BridgeClient::execute now starts the export without wait and polls jobs.list until the job
finishes, returning the same {job, path, result} (or the export's error). filmcraft-cli --bridge
exec and MCP bridge mode both use it, and MCP command_run in bridge mode now gets the same progress
notifications and cancellation as headless mode.

Tested against a fake app (wait: true never reaches it, one export started, result and error
returned) and end to end against the desktop app: a blocking demo export returned its 642-frame
result with exit 0 while ui.inspect was answered in ~0.05 s throughout.

Fixes #91
Fixes #92

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 10:42:28 -04:00
..
aac codecs: HE-AAC plays at its output rate; AAC export caps the bitrate (#108) 2026-10-06 22:28:30 -05:00
ac3 Merge pull request #16 from storytold/pr/never-crash-codecs-small 2026-10-04 16:16:55 -04:00
apv Codecs: add clean-room APV (RFC 9924) decoder, encoder, container support, and export presets 2026-10-06 17:24:34 -04:00
audio-dsp Audio: play a sequence on a device at another rate without phase jumps 2026-10-07 00:35:29 -07:00
automation Bridge: a blocking export runs as an app job, so it neither times out nor freezes the app (#91, #92) 2026-10-07 10:42:28 -04:00
av1 Merge pull request #14 from storytold/pr/never-crash-av1 2026-10-04 16:16:18 -04:00
bitstream Never crash: deny the panicking lints in the already-clean crates and apps 2026-10-04 16:08:23 -04:00
captions Captions: report invalid TTML timing parameters on import 2026-10-04 21:48:25 -07:00
cfb Merge pull request #27 from storytold/pr/never-crash-clean-crates 2026-10-04 16:19:27 -04:00
codecs Tests: image-sequence oracle fixtures are written atomically (#125) 2026-10-07 09:49:35 -04:00
color Never crash: deny the panicking lints in the already-clean crates and apps 2026-10-04 16:08:23 -04:00
dnx Merge pull request #16 from storytold/pr/never-crash-codecs-small 2026-10-04 16:16:55 -04:00
edit Merge remote-tracking branch 'origin/fix/ripple-trim-j-cut-head' into fix/ripple-trim-l-cut-head 2026-10-06 23:56:32 -07:00
engine Merge pull request #146 from storytold/fix/97-98-89-transcripts-without-speech 2026-10-07 10:05:02 -04:00
export Merge remote-tracking branch 'origin/main' into apv-105 2026-10-07 07:08:58 -04:00
format NEST14: a project reopens with its sequence tabs and their views 2026-10-06 20:23:19 -04:00
frame MEM4: decode into the planes of evicted frames 2026-10-05 16:57:16 -04:00
geom Never crash: deny the panicking lints in the already-clean crates and apps 2026-10-04 16:08:23 -04:00
golden GPU2: standard effects on the GPU compositor (#30) 2026-10-05 07:50:20 -04:00
gpu gpu: upload and composite the alpha plane of Y'CbCr frames 2026-10-06 15:04:48 -06:00
h264 MEM4: decode into the planes of evicted frames 2026-10-05 16:57:16 -04:00
h264enc h264enc: strict ffmpeg oracle that sees damaged slices (#74) 2026-10-06 16:02:53 -04:00
hevc hevc: never crash — no expect/unwrap in the decoder, deny them 2026-10-04 11:31:02 -04:00
interchange NEST: hostile project data cannot panic a nest's length, oversize its mix or multiply AAF needs 2026-10-07 06:00:36 -04:00
isobmff Codecs: add clean-room APV (RFC 9924) decoder, encoder, container support, and export presets 2026-10-06 17:24:34 -04:00
matroska Codecs: add clean-room APV (RFC 9924) decoder, encoder, container support, and export presets 2026-10-06 17:24:34 -04:00
media Codecs: add clean-room APV (RFC 9924) decoder, encoder, container support, and export presets 2026-10-06 17:24:34 -04:00
mpeg2v mpeg2v: seed_sweep derives its seeds without overflowing 2026-10-06 13:51:43 -04:00
mpegts Merge pull request #15 from storytold/pr/never-crash-containers 2026-10-04 16:16:36 -04:00
mxf Merge pull request #15 from storytold/pr/never-crash-containers 2026-10-04 16:16:36 -04:00
ogg Containers: never crash — mpegts, ogg, mxf, matroska without expect/unreachable 2026-10-04 11:37:58 -04:00
opus Merge pull request #16 from storytold/pr/never-crash-codecs-small 2026-10-04 16:16:55 -04:00
platform MEM4: decode into the planes of evicted frames 2026-10-05 16:57:16 -04:00
project NEST: hostile project data cannot panic a nest's length, oversize its mix or multiply AAF needs 2026-10-07 06:00:36 -04:00
prores Merge pull request #16 from storytold/pr/never-crash-codecs-small 2026-10-04 16:16:55 -04:00
render NEST: hostile project data cannot panic a nest's length, oversize its mix or multiply AAF needs 2026-10-07 06:00:36 -04:00
scopes Merge pull request #27 from storytold/pr/never-crash-clean-crates 2026-10-04 16:19:27 -04:00
speech Merge pull request #27 from storytold/pr/never-crash-clean-crates 2026-10-04 16:19:27 -04:00
testkit Clippy 1.99: fix new lints so `cargo xtask ci` is green again 2026-10-04 15:55:23 -04:00
text Theme: keep the interface in Inter; Source Sans 3 is an Adobe font (AGENTS.md §1.1) 2026-10-07 08:27:41 -04:00
time codecs: video frames are looked up by the nearest timestamp unit, so a 1 ms WebM shows every frame 2026-10-06 15:16:37 -04:00
ui-egui Merge remote-tracking branch 'origin/main' into pr-130 2026-10-07 08:27:41 -04:00
vp9 vp9: never crash — no unwrap/expect/panic in the decoder, deny them 2026-10-04 11:15:05 -04:00