v10.2.0
Highlights
✨ Modern Chrome DevTools debugging for iOS WebViews
webinspector cdp was overhauled into a full WebKit-to-CDP bridge: a modern Chrome
DevTools frontend can now inspect iOS WebViews with a working debugger (breakpoints and
debugger statements actually pause), correct console evaluation (eager preview no longer
runs side effects), the Runtime/Debugger/Page/DOM/Network/CSS domains the frontend drives,
and a live screencast of the device screen. The server now serves the DevTools frontend
itself — open the URL below and pick a page, instead of going through chrome://inspect
(whose browser-process relay deadlocks under sustained console traffic):
pymobiledevice3 webinspector cdp
# then open http://127.0.0.1:9222/ in Chrome and pick a page to inspectThe bridge also survives WebKit process swaps and stalls, so navigation and long sessions
no longer drop the connection.
✨ CoreDevice app/process streaming (and an iOS 26 listapps fix)
Implements the CoreDevice streaming feature protocol (side-channel batched delivery) and
exposes it on the CLI:
pymobiledevice3 developer core-device stream-apps --rsd ...
pymobiledevice3 developer core-device stream-processes --rsd ...list_apps also gained the request fields iOS 26 requires. Note that on iOS 26 the
non-streaming listapps no longer replies (it wedges dtappserviced) — stream-apps is
the working replacement there.
🐛 Fix intermittent SignedRequestRejected when installing profiles with a keybag
profile install --keybag could intermittently fail because the escalate challenge was
signed with S/MIME text canonicalization, corrupting any challenge containing a bare
newline byte. The challenge is now signed as binary. Thanks @jvdsn!
🧪 Test suite skips RSD-only services when run without a tunnel
Running pytest over plain usbmux no longer fails/errors on the many iOS 17+ services
that are only reachable through an RSD tunnel — those tests now skip with a clear message
(rerun with --rsd/--tunnel to exercise them). Thanks @simond4680-sys!
What's Changed
- 6fb521a feat(core-device): add streamapplist/streamprocesslist streaming features (#1802) (@doronz88)
- 33de44a refactor(cli): collapse task+wrapper pattern into single command functions (#1802) (@doronz88)
- 62b2835 webinspector: modern Chrome DevTools debugging over CDP (#1803) (@doronz88)
- eb2076b webinspector: keep the CDP bridge alive under process swaps and stalls (#1803) (@doronz88)
- dfeb5f9 webinspector: robust CDP screencast (#1803) (@doronz88)
- 17e9005 webinspector: correct console evaluation and script translation (#1803) (@doronz88)
- 6eda0ba webinspector: serve the DevTools frontend to bypass chrome://inspect's relay (#1803) (@doronz88)
- 0041f9b webinspector: fall back to a local Chrome for the DevTools frontend (#1803) (@doronz88)
- ac7034e Sign keybag challenges as binary (#1806) (@jvdsn)
- 937e4b4 tests: Skip RSD-only service tests when no tunnel is present (#1808) (@simond4680-sys)
- c5862fb webinspector: make the debugger pause on debugger statements and breakpoints (#1803) (@doronz88)
- ce1fcbf webinspector: stop console eager-evaluation from running side effects (#1803) (@doronz88)
- ae38fb3 tests: extend the RSD-tunnel skip to fixture setup (#1812) (@doronz88)
New Contributors
- @simond4680-sys made their first contribution in #1808
Full Changelog: v10.1.0...v10.2.0