github doronz88/pymobiledevice3 v11.29.0

3 hours ago

Highlights

⚠️ The AFC and crash-report shells no longer run on xonsh

afc shell, apps afc and crash shell are now built on a small prompt_toolkit shell that ships with pymobiledevice3, and xonsh is no longer a dependency. What changes at the prompt:

  • Python expressions are no longer evaluated at the prompt.
  • show-help is now help; help COMMAND shows one command's usage and options.
  • If your own code relied on xonsh being installed alongside pymobiledevice3, install it yourself.

The service API is unchanged, and AfcShell.create(...) keeps its signature. The shell classes themselves (AfcShell, CrashReportsShell) were rewritten, so code that subclassed them or called their internals needs updating.

✨ Pipes, redirection and host tools in the device shells

Device commands can be piped into host tools and redirected to local files, and chained with &&, || and ;. A common set of host tools (grep, sed, awk, sort, uniq, cut, tr, tail, wc, less, ...) is available by name, --tool NAME adds more, and !TOOL runs any other host program.

pymobiledevice3 afc shell --tool jq
# /> walk DCIM | grep -c HEIC
# /> cat Downloads/notes.txt | sort | uniq > notes.txt
# /> cat config.json | jq .version
# /> help pull

Remote paths complete with Tab, cat is byte-exact so binary files survive a redirect, and Ctrl-C cancels the running command without leaving the shell.

🐛 universal-hid-service type keeps uppercase and shifted characters

Shift arrived in the same report as the key it modified, and the device could ignore it, so abc ABC was typed as abc abc. Shift is now sent in a report of its own first. The first keys sent after the virtual keyboard was created could also be read with Shift stuck on; creating the keyboard now waits for it to attach, which covers type, serve-web and serve-vnc.

pymobiledevice3 developer core-device universal-hid-service type 'abc ABC'

🐛 serve-web shuts down cleanly

Stopping the viewer cancelled tasks it did not own and could leave browser connections open while the device-side stream was being torn down. It now cancels only its own tasks, and closes its connection handlers before the device-side teardown.

What's Changed

New Contributors

Full Changelog: v11.28.2...v11.29.0

Don't miss a new pymobiledevice3 release

NewReleases is sending notifications on new releases.