github doronz88/pymobiledevice3 v10.6.0

latest releases: v11.17.2, v11.17.1, v11.17.0...
one month ago

Highlights

✨ Browser-like object output in the js-shell

Evaluating an object in webinspector js-shell now lists all of its top-level properties, one shortened line each, instead of WebKit's capped preview. Listings are fetched via Runtime.getDisplayableProperties — the same RPC Safari's Web Inspector uses — so DOM elements show their real attributes (inherited native accessors included), and values are read from descriptors without ever invoking getters:

pymobiledevice3 webinspector js-shell
> window
Window {
  window: Window
  document: Document
  location: Location
  ...
}

✨ Smarter js-shell completions

Completions are now sorted alphabetically, functions are marked with ƒ in the completion menu, and $ identifiers ($x.<TAB>) complete. The completion list is built getter-safely and always fetched fresh, so it can never go stale.

🐛 console.log printed only the first argument

WebKit delivers all console arguments as RemoteObjects in parameters, with only the first in text; the console handler printed just text. console.log(4, 4) now prints 4 4, with objects rendered by class name.

✨ Replayed console history is now distinguishable

On attach, WebKit replays the page's buffered console history. Those messages now log under webinspector.console.replay instead of masquerading as live output — and js-shell --no-replayed-log silences them entirely:

pymobiledevice3 webinspector js-shell --no-replayed-log

✨ Interactive prompts migrated to questionary

Device/page selection prompts moved from inquirer3 to questionary (built on prompt_toolkit, which was already a dependency — three transitive dependencies dropped, better Windows console handling). Prompts reached from async commands no longer crash with asyncio.run() cannot be called from a running event loop, and every selection prompt now fails fast without a TTY, printing the candidates on stderr with a --udid / PYMOBILEDEVICE3_UDID hint — no more escape sequences leaking into pipes and CI logs.

🐛 Spurious CRITICAL log in every js-shell session

Runtime.executionContextCreated — a normal event WebKit pushes after Runtime.enable — was logged as CRITICAL unhandled message on every session. It is now handled (debug-logged), while truly unknown events still get flagged.

🐛 Outbound HTTP requests could hang forever

HTTP requests (activation, file downloads) now carry a timeout. Thanks @bunlongheng!

What's Changed

New Contributors

Full Changelog: v10.5.0...v10.6.0

Don't miss a new pymobiledevice3 release

NewReleases is sending notifications on new releases.