All notable changes to iFetch will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Note: This is the first structured changelog for iFetch. The entries below summarize the project's git history to date; earlier changes were not tracked in changelog form.
First release on PyPI: pip install ifetch.
- Google Drive export CLI with indexed upload support.
- Listing and downloading of items shared with the user, with comprehensive shared-file download tests and hint detection fixes.
- Plugin system (
ifetch/plugin.py): auto-discoveredBasePluginsubclasses can hook download lifecycle events (on_authenticated,on_list_contents,before_download,after_download,on_event). - JSON profile support for include/exclude sync patterns.
- Persistent file history, with metadata protected from mutation on failed downloads.
- Retry/backoff logic for transient connection errors, extended to cover 503 and other server errors.
- Parallel downloads, differential (chunk-based) updates, and JSON logging.
- Automated test suite (pytest + pytest-cov) with expanded coverage across downloader flows.
- Buy Me a Coffee funding option; MIT license.
- CI workflows (test matrix across Python 3.10–3.13 on Ubuntu/macOS, ruff lint), PyPI publish workflow, issue/PR templates, CONTRIBUTING guide, and this changelog.
- Switched from the abandoned
picklepete/pyicloudto the maintainedtimlaing/pyicloudfork (shared-drive/shareID support), now consumed from PyPI aspyicloud>=2.5.0. - Refactored the original monolith into modules: logger, models, utils, chunker, tracker, downloader, cli.
- Improved download latency and hardened downloader flows.
- Shared-file downloads and hint detection.
- iCloud Drive path resolution for listed folders.
- Large-file iCloud resume and chunked retries.
- Thread-safety issues in versioning and error logging.
- "seek" error when comparing chunks on HTTP streams; dictionary-iteration bug fixes.
- Bug where everything was downloaded as a folder.
- Documentation fixes: download command and virtual environment activation instructions in ReadMe.md.