Repository navigation
Preserve active saves when import cannot finish - #74
Merged
Merged
Conversation
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.
A failed final import move could leave the active card save missing: the import deleted matching files before moving its replacement into place. The dated backup survived, but the app still started the game.
Imports now complete the backup, atomically replace the destination and only then remove duplicate copies. They fail closed on directory, backup, replacement and cleanup errors, preserving mixed-case destination names. Startup waits until the import completes, so a pending retry cannot overwrite progress made after an earlier failure.
Validation: synthetic failures reproduced the original missing-save defect and unchecked pending-file deletion. Regression coverage includes enumeration, backup, commit, duplicate cleanup and pending-file cleanup failures, successful retries and mixed-case filenames. The complete combined source suite passes at 23ccb39. A fresh device Release app at 0373950 also builds and passes independent signature/contents verification using the incrementally rebuilt runtime and unchanged personal module; only its executable differs from the previous staged app. The later integration changes scripts/docs, with identical app/runtime inputs. All three hosted checks pass at exact head 23ccb39 (run 38374123269); merged as 4cd86d9 with an identical source tree. Hands-on iPhone import/save/export/reload and device termination checks remain pending. No real saves or installed device apps were changed.