Highlights
⚡ Faster restores
Restore component uploads (Cryptex1,SystemOS and the other firmware data) now go out as binary plists instead of XML, which base64-encoded every chunk and inflated it by ~40% on the wire. On an iPhone Air (USB 2), the 2.2 GiB SystemOS upload went from 28.1 MiB/s to 32.2 MiB/s on average.
📊 Progress bars with rich
Progress bars are now drawn with rich instead of tqdm. Concurrent bars stack instead of corrupting each other, log lines print above a running bar instead of tearing through it, and finished bars show their elapsed time. Restore and recovery uploads are labelled with the component name, and the backup bars say whether they are a backup or a restore.
🎨 ansilogs replaces coloredlogs
coloredlogs and humanfriendly (plus pyreadline3 on Windows) have had no release since 2021. Logging now goes through ansilogs, a dependency-free replacement with the same one-line-per-record layout and a clearer color style: the level name in its severity color, metadata dimmed.
🐛 --no-color and NO_COLOR cover both logs and output
--no-color now also turns off log colors, and NO_COLOR now also turns off colored JSON and other command output.
🐛 Non-ASCII text in JSON output
JSON output keeps non-ASCII text as is ("John’s iPhone" instead of "John’s iPhone"), and colored JSON no longer ends with a blank line.
📦 Dependencies
- pykdebugparser 1.6.1: pid arguments print as signed (
kill(-1478, SIGTERM)instead ofkill(4294965818, 15)) and signals are named. - ipsw-parser 1.8.4, which also moved to ansilogs.
- tqdm and coloredlogs are no longer dependencies.
What's Changed
- 29f1ee1 cli: Make --no-color and NO_COLOR cover both logs and output (#2057) (@doronz88)
- 822b52b cli: Print non-ASCII text as is in print_json, without a trailing blank line (#2057) (@doronz88)
- be63546 misc: Log through ansilogs in remotexpc_sniffer (#2056) (@doronz88)
- 575c914 misc: Import the binary errors from bytestruct in remotexpc_sniffer (#2056) (@doronz88)
- 62da324 resources: Log through ansilogs in dsc_uuid_map and firmware_notifications (#2055) (@doronz88)
- 770daaf build: Require ipsw-parser 1.8.4 (#2055) (@doronz88)
- aeb7fe4 logging: Replace coloredlogs with ansilogs (#2054) (@doronz88)
- b2cf52c progress: Render progress bars with rich instead of tqdm (#2050) (@doronz88)
- b0e9f2c restore: Send component FileData as binary plists (#2053) (@doronz88)
- e93299c build: Require pykdebugparser 1.6.1 (#2049) (@doronz88)
Full Changelog: v11.36.0...v11.37.0