github doronz88/pymobiledevice3 v11.27.2

2 hours ago

Highlights

🐛 Commands that only logged a failure now exit non-zero

A number of commands caught their own failure, logged it and returned, so the process exited 0 and a script carried on as if the command had worked. They now exit 1 after the same error line:

pymobiledevice3 developer dvt ls /no/such/dir; echo $?
# ERROR Failed to list directory: /no/such/dir
# 1

Affected commands:

  • webinspector opened-tabs, launch, shell, js-shell with Web Inspector or Remote Automation off, when the app fails to launch, or (js-shell) with no open page to attach to
  • developer arbitration check-in when another host holds the device
  • developer dvt core-profile-session stackshot when no stackshot came back
  • developer dvt ls PATH when PATH can't be listed (with -r, entries below it that can't be listed are still only logged)
  • lockdown save-pair-record with no pair record
  • backup2 change-password with backup encryption off
  • remote pair when the bonjour browse finds no device
  • developer debugserver start-server on iOS < 17 without --local-port
  • developer debugserver lldb on iOS < 17, for a missing .xcodeproj/.ipa, a build with no .app, an .ipa without exactly one .app, or a bundle id that isn't installed

Scripts that relied on exit 0 from these failure paths need updating.

🐛 backup2 erase-device no longer reports a successful erase as a failure

The device drops the link once it starts erasing. That was logged as "Connection was terminated abruptly" with exit 1, and with --reconnect the erase was attempted again once the device came back. The drop is now treated as the expected end of the request; a link that drops before the erase was requested still fails.

What's Changed

Full Changelog: v11.27.1...v11.27.2

Don't miss a new pymobiledevice3 release

NewReleases is sending notifications on new releases.