github mandarons/icloud-docker v1.24.0
1.24.0

21 hours ago

What's Changed in v1.24.0

πŸš€ Features & Enhancements

iCloudPy Library Update

  • Updated to iCloudPy version 0.8.0 with adjusted submodule reference by @mandarons

Usage Tracking System Overhaul

  • Complete refactor of usage tracking module achieving 100% code coverage (2004 statements, 0 missed) by @mandarons in #356

    • Integrated project-wide logging infrastructure with get_logger()
    • Added full type annotations and comprehensive docstrings
    • Implemented atomic file operations to prevent data corruption
    • Added opt-out mechanism via app.usage_tracking.enabled: false configuration
    • Collected anonymized sync statistics with transparent privacy controls
    • Extended test coverage from 15 to 31 comprehensive tests
    • See USAGE.md for complete privacy documentation
  • Network resilience improvements - Added retry logic with exponential backoff for usage tracking to handle transient network failures by @mandarons in #367

    • Configurable via USAGE_TRACKING_MAX_RETRIES (default: 3 attempts)
    • Smart retry strategy: retries on network errors, 5xx server errors, and 429 rate limits
    • Does NOT retry on non-retriable client errors (4xx except 429)

Sync Improvements

  • Fixed immediate re-sync issue when drive and photos intervals are equal - Added regression tests by @mandarons
  • Enhanced error logging for file download operations with ObjectNotFoundException handling by @mandarons
  • Enhanced package type checking with improved error logging and comprehensive tests by @mandarons

πŸ› Bug Fixes

Critical File Sync Fixes

  • Fixed Error 500 for files with special characters - Resolved authentication errors when syncing files/folders containing URL-encoded special characters (ΓΆ, ΓΌ, Γ€, spaces, %, +, commas) by @mandarons in #360
    • Added URL decoding using urllib.parse.unquote() for drive files, folders, and photos
    • Example: Geh.-Erho%CC%88+3%2C0+%25.pdf now correctly syncs as Geh.-ErhΓΆ+3,0+%.pdf
    • Fixes issue #198

Usage Tracking Fixes

  • Fixed heartbeat throttling to use UTC time and calendar day boundaries by @mandarons in #366

    • Changed from local time (datetime.now()) to UTC (datetime.utcnow())
    • Changed from 24-hour rolling window to calendar day boundary checking
    • Ensures consistent behavior across all timezones
    • Prevents double-counting and missed heartbeats
  • Simplified exception test patterns in usage tracking tests by @mandarons

πŸ”§ Dependencies

πŸ“š Documentation & Infrastructure

  • Added icloudpy as git submodule for development reference by @mandarons
  • Updated test coverage and documentation for usage tracking module

🎯 Highlights

This release focuses on reliability, correctness, and transparency:

  • βœ… 100% test coverage maintained across all modified modules
  • βœ… All 413 repository tests passing with comprehensive new test cases
  • βœ… Zero breaking changes - fully backward compatible
  • βœ… Enhanced privacy controls with transparent opt-out mechanisms
  • βœ… Production-ready quality with atomic operations and error resilience

Full Changelog: v1.23.0...v1.24.0

Don't miss a new icloud-docker release

NewReleases is sending notifications on new releases.