Highlights
🐛 Windows: DTX services (accessibility & friends) no longer time out
The CLI event loop was created before the Windows selector-loop policy was applied, so
every Windows run silently used the proactor loop — breaking the TLS handshake of DTX
services that strip SSL (developer accessibility ... most visibly), and a second bug
masked the real error behind WinError 10038. The CLI now always uses a selector loop on
Windows, the handshake happens before the socket is bound to the event loop (correct
under any loop type, for library users too), and handshake failures surface the real
error. Fixes #1810.
🐛 accessibility run-audit no longer crashes when the audit passes
A passing audit (no issues found on the current screen) raised
IndexError: list index out of range — the result parser assumed an older event-payload
shape. It now returns an empty list, and audits that do find issues are parsed correctly
on modern iOS as well:
pymobiledevice3 developer accessibility run-audit testTypeHitRegion
# []🐛 Userspace-tunnel retry no longer buries the real error
When a service is genuinely missing from the device (e.g. com.apple.coredevice.deviceinfo,
which newer iOS versions no longer expose), the CLI's automatic retry-over-userspace-tunnel
crashed with "a userspace tunnel is already active in this process" instead of reporting
the actual failure. The retry now reuses the live tunnel, so you get the proper
"Failed to start service" guidance.
What's Changed
- 5e1a317 utils: create a selector event loop on Windows (#1811) (@doronz88)
- c9eb100 service_connection: don't mask handshake errors in ssl_start_sync (#1811) (@doronz88)
- dfdc957 dtx: perform the strip-ssl handshake before binding the socket to the loop (#1811) (@doronz88)
- dc5a7ee accessibilityaudit: return an empty issue list when the audit passes (#1813) (@doronz88)
- 6e6514e userspace_tunnel: reuse the live CLI tunnel on in-process retry (#1813) (@doronz88)
Full Changelog: v10.2.0...v10.2.1