github doronz88/pymobiledevice3 v10.5.0

latest releases: v11.12.4, v11.12.3, v11.12.2...
one month ago

Highlights

⚠️ Machine-readable output contract (breaking changes)

JSON output now follows a documented contract — see the new Machine-readable output guide. Three changes are breaking:

  • Binary values in JSON output are now single-key {"$hex": "..."} objects instead of the string "<hexdigits>" — unambiguous and mechanically decodable (bytes.fromhex).
  • Timestamps in JSON output are ISO 8601.
  • Data moved from stderr to stdout: processes pgrep now prints a [{"pid", "name"}] JSON list, and the dict-record streams (developer dvt energy/notifications/graphics, diagnostics battery monitor, notification observe/observe-all) emit NDJSON — one JSON object per line — instead of Python dict reprs via the logger.
pymobiledevice3 diagnostics battery monitor | jq .CurrentCapacity

✨ NDJSON --format json for human-rendered streams

Streams with a real text rendering keep it as the default and gain --format json: developer dvt oslog, developer dvt netstat, developer accessibility notifications and crash watch, joining the existing syslog live. In JSON mode stdout is pure NDJSON with stable record shapes:

pymobiledevice3 crash watch --format json | jq .name

🐛 Correct help and suggestions for collapsed command groups

Single-command groups (btlogger, pcap, power-assertion, version) now show up in the top-level help under their real invocation name, and "did you mean" no longer advertises phantom paths such as btlogger capture or pcap pcap.

📚 Device-operator skill: output contract and full CLI routing

The agent skill now points at the machine-readable output conventions, routes the cryptex group (DDI install on iOS 26+), and a new CI drift test guarantees every top-level CLI group stays routed in the task map.

What's Changed

Full Changelog: v10.4.1...v10.5.0

Don't miss a new pymobiledevice3 release

NewReleases is sending notifications on new releases.