Skip to content

fix(api): a done export reports every frame rendered (#595) - #646

Merged
jub0t merged 1 commit into
jub0t:mainfrom
kevin9327:fix-export-status-done-frames
Nov 11, 2026
Merged

jub0t merged 1 commit into
jub0t:mainfrom
kevin9327:fix-export-status-done-frames

Conversation

@kevin9327

Copy link
Copy Markdown
Contributor

What does this PR do?

Fixes #595. The exporter only reports progress every so often, so the last ExportProgress the job book receives can come before the render ends. When nothing follows the video stage (for example a timeline with only titles: no audio, no mux progress), export_status / export_wait returned state: "done" with frame: 135, total: 150. That looks like a truncated export to any caller that checks frame == total.

Book::record already sets fraction to 1 on ExportDone. This change also sets frame = total there, so a finished job's counts match its fraction. If total was never reported, both stay 0.

The stage: "rendering" part of the issue is left alone. That is a real exporter stage name, and the MCP tool already maps it.

How to test

New unit test job::tests::a_finished_job_reports_every_frame_rendered. It sends progress 135/150 and then ExportDone, and checks that the status reads 150/150 with fraction 1. It fails without the fix (left: (135, 150), right: (150, 150)) and passes with it.

Checklist

  • cargo fmt --check passes (rustfmt on the changed file)
  • cargo clippy --all-targets -- -D warnings passes: not run locally (no FFmpeg dev libraries on this machine). CI will check it.
  • cargo test passes: job.rs tests run against stand-in message types, 4/4 pass. The full crate wasn't built locally.
  • No UI text changed
  • No new source files

AI-assisted: an AI coding assistant helped write this change. I reviewed it and take responsibility for it. The commit is signed off under CLA.md v2.0.

Progress is throttled, so the last ExportProgress heard can trail the
end of the render; with no audio or mux stage after it, export_status
reported state "done" at frame 135 of 150. A finished job now counts
frame = total, agreeing with its fraction of 1.

Fixes jub0t#595

Signed-off-by: kevin9327 <[email protected]>
@jub0t

jub0t commented Nov 11, 2026

Copy link
Copy Markdown
Owner

recheck

@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Everyone who wrote this pull request has confirmed the contributing terms. Thank you.
Posted by the CLA Assistant Lite bot.

@kevin9327

Copy link
Copy Markdown
Contributor Author

I have read the Concat contributing terms and I agree to them.

@jub0t
jub0t merged commit a38373c into jub0t:main Nov 11, 2026
1 check passed
@github-actions github-actions Bot locked and limited conversation to collaborators Nov 11, 2026
@jub0t

jub0t commented Nov 11, 2026

Copy link
Copy Markdown
Owner

Merged, thank you. Small, tested and exactly the fix: it's on main in a38373c and will be in the next release.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MCP export_wait / export_status report state "done" at frame 135 of 150 (0.2.8)

2 participants