Highlights
🐛 CLI usage errors no longer escape as raw tracebacks
Typer >= 0.20 vendors click internally, so raising real click exceptions inside commands bypassed Typer's error handling — mixing mutually exclusive transport options (and a few developer dvt signal validation paths) printed a full traceback instead of a proper usage error:
# before: a full rich traceback; now: a one-line usage error
pymobiledevice3 developer dvt ls / --rsd 1.2.3.4 1234 --tunnel xAs part of the fix, package code no longer imports click (or the private typer._click) directly — everything goes through Typer's public API, keeping the CLI stable across future Typer upgrades.
✨ resources maintenance scripts are now uv scripts
dsc_uuid_map.py and firmware_notifications.py migrated from click to Typer and now carry PEP 723 inline script metadata, so they run standalone without installing anything first:
uv run pymobiledevice3/resources/firmware_notifications.py <extracted_rootfs>📝 Updated built-in notifications list from iOS 27.0 beta
notifications.txt gained 64 new known Darwin notifications extracted from iPhone18,4_27.0_24A5370h_Restore.
What's Changed
- df18c5d resources(notifications): Add notifications from iPhone18,4_27.0_24A5370h_Restore (#1814) (@doronz88)
- 5404824 agents: document the no-direct-click-imports convention (#1814) (@doronz88)
- 2846e7e resources: migrate dsc_uuid_map and firmware_notifications to typer uv scripts (#1814) (@doronz88)
- 5008d5f cli: drop the remaining direct click and typer._click imports (#1814) (@doronz88)
- d667c44 cli: fix usage errors escaping as tracebacks under typer's vendored click (#1814) (@doronz88)
Full Changelog: v10.2.1...v10.2.2