Skip to content

feat: show determinate backup progress#35

Closed
AJV20 wants to merge 2 commits into
momenbasel:mainfrom
AJV20:feat/backup-progress-bar
Closed

feat: show determinate backup progress#35
AJV20 wants to merge 2 commits into
momenbasel:mainfrom
AJV20:feat/backup-progress-bar

Conversation

@AJV20

@AJV20 AJV20 commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a determinate backup progress fraction to BackupViewModel
  • show a linear progress bar and percentage label when backup tools report percentages
  • forward pymobiledevice3/idevicebackup2 stderr progress into the UI while preserving failure diagnostics
  • verify successful backup commands actually produce complete backup metadata before reporting success
  • track fallback idevicebackup2 backup/restore processes so cancellation can stop the correct process
  • harden message exports: CSV escaping/formula neutralization, MBOX multi-attachment output, MBOX header sanitization, and specific Messages readiness copy when manifest selection fails
  • handle decimal percentage output in the shared progress parser

Verification

  • Scripts/regression/run.py (37 checks)
  • swift build
  • swift build -c release
  • bash Scripts/build.sh
  • launched .build/Phosphor.app and verified a visible window

Device detection note

Live probes on this Mac currently return no backup-capable iOS device over USB, network usbmux, libimobiledevice, or mobdev2 Bonjour, so no live backup/export run was possible in this pass.

@AJV20
AJV20 force-pushed the feat/backup-progress-bar branch 2 times, most recently from c98597b to 1650eec Compare July 5, 2026 17:33
@AJV20
AJV20 marked this pull request as draft July 6, 2026 02:48
@momenbasel

Copy link
Copy Markdown
Owner

Closing as superseded, not as a rejection - the work landed through two other PRs:

  • The determinate progress bar is now in main via Enable Finder Wi-Fi sync from the device view #43 (BackupViewModel.progressFraction + the linear bar in BackupListView).
  • The export hardening (CSV escaping, MBOX, metadata verification, fallback cancellation) is in main via fix: harden backup cancellation and export state #33, which was adopted as the single owner of that work.
    Merging this branch on top would have re-introduced the same code a second time and shipped a real crash: it adds @EnvironmentObject var deviceVM to SettingsView, but the Settings scene in PhosphorApp is Settings { SettingsView() } with no injection, so opening Settings would trap. If you still want the global backup banner as a standalone improvement, please reopen a small PR against current main with just that piece and the environment-object injection fixed.

@momenbasel momenbasel closed this Jul 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants