Repository navigation
fix: preserve project saves across concurrent writes and failed closes - #377
Merged
Merged
Conversation
Signed-off-by: Rafael Fernandes <17238930+faelsete@users.noreply.github.com>
jub0t
added a commit
that referenced
this pull request
Oct 17, 2026
…g, not traps the window (#375) #377 keeps the window open when the final save fails, so edits are not thrown away. But nothing then let the person leave: a project on an unplugged drive, a full disk or a read-only folder made a window that would never close. The title bar, Alt+F4, File > Close Window and the version switch now offer "Quit without saving?" when the save is refused, and only that answer lets the project go unsaved. On Windows a scanner, OneDrive or a backup tool holding concat.json for a moment refused the replace; the save now retries it for about a second and a half before it calls the save failed. Refs #375 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #375.
Two connected data-loss paths are addressed:
concat.json.savingfile, while the GUI dispatches saves to a three-worker pool. Concurrent writes can tear the manifest; unique temporary files alone still allow an old snapshot to replace a new one.Changes
close_project; keep the window/session open on failure and cancel project jobs only after a successful save.Regression evidence
Sessionand filesystem integration test forces a manifest rename error using a directory at the destination. The session retains its edit; retry saves and reopens it successfully. Replacing only the tested exit gate with unconditional leave makes the same test fail.Validation of this exact public commit
Commit: e75af9b.
Executed in a separate clean worktree on Apple Silicon/macOS 27.0.1, Rust 1.93.1, Homebrew FFmpeg 8.1.1:
cargo fmt --all --check: passed.cargo clippy --locked --workspace --all-targets -- -D warnings: passed.cargo test --locked --workspace: 782 passed, 0 failed, 1 ignored (external-model transcription test).Limits
Developed with AI assistance, reviewed and tested locally. Maintainer review is welcome, including suggestions to split the change. Commits are signed off under the project CLA/DCO.