Photos Backup 0.3.0
Fixes from a full audit of the UI, background execution, upload queue, and general UX.
Important
Pause, Cancel and Stop behave differently in this release — see Behaviour changes below.
Behaviour changes
- Pause is now durable. It used to clear itself whenever the queue drained, so pausing near the end of a batch silently resumed backup. It now survives the queue emptying and a relaunch, until you resume or stop.
- Cancel and Stop now mean different things. Cancelling one item is a decision that survives a relaunch and is not undone by the next automatic scan; release it with Retry or Clear Finished. Stop still discards the whole queue, so a later scan is free to pick those photos up again.
- Automatic backup retries failures on its own. Previously a single network blip parked photos in a failed state forever, recoverable only by tapping Retry by hand.
- Dark mode is supported. The app no longer forces a light appearance.
Background backup
- A processing window now enqueues up to 250 items instead of 25. The limit bounds memory, not how much a window uploads — the queue is durable, so anything a window cannot finish waits for the next one.
- The PhotoKit change token advances once a scan's items have all been handed to the queue, so a caught-up queue stops re-enumerating the whole library on every window.
- Wi-Fi Only now cancels an in-flight background upload when Wi-Fi is lost. iOS keeps the cellular permission a request was created with, so the setting previously had no effect once a transfer had started.
- Added a watchdog for a stalled upload, which the seven-day request timeout would otherwise never surface.
- Fixed a race where a background relaunch could hand iOS its completion handler before a finished upload's receipt was committed.
What the app can tell you
- Per-album backup progress on the Home and Albums tabs.
- The Backed up count no longer misses uploads finished in a background window that ended in the app being terminated.
- Back Up Now and Re-check Backups report what they did instead of appearing to do nothing.
- Diagnostics says why an automatic run cannot start, and each run logs what it did.
- Clearer failures: a background upload that cannot run in the Simulator now says so, rather than "unknown error".
- Limited photo access and items waiting on an iCloud download are both explained.
Performance
- Back Up Now and Re-check Backups no longer load an entire library into the queue at once.
- Album enumeration and counting moved off the main thread.
- Upload progress is ordered and rate-limited, so progress bars no longer jump backwards on large files.
- Fewer redundant writes of the saved queue, and the completion ledger is compacted.
Fixes
- Photos edited after being backed up are uploaded again instead of being skipped.
- The Google sign-in window can no longer be swiped away mid-flow, which discarded a single-use token.
- Removed a duplicate Connect Account button in Settings; Verify Backup is now Re-check Backups.
- A rejected empty export no longer leaves its staging directory behind.
Notes
- 96 tests, 93 passing (2 opt-in live tests and 1 Simulator Keychain test skipped).
- The Simulator cannot run background uploads or schedule background tasks. Use a device to exercise real backup behaviour.