- New cantaloupe/diff.py: diff engine comparing xlsx by Asset ID,
manifest tracking at ~/.cantaloupe-exports/manifest.json
- New subcommand: python -m cantaloupe diff [--from FILE] [--to FILE]
- Export --diff flag: auto-compare with previous export after download
- Every export auto-records to manifest for history tracking
- 44 new tests, 130/130 pass total
- Fix: default None output now always treated as directory (timestamped filename)
- Fix: test_auth.py corrupted with line number prefixes cleaned up via regex
- Add: 20 tests for download.py covering path resolution, export, auth, CLI, full flow
- test_login_full_flow: Set-Cookie uses list format for httpx compatibility
- All 47 tests passing (27 auth + 20 download)