Icloud Photos Sync Versions Save

One-way sync engine for the iCloud Photos Library into the native file system

v1.2.0-beta.2

9 months ago

1.2.0-beta.2 (2023-08-10)

Bug Fixes

  • Memory leak due to mishandling of event registry objects after cleanup (186d668)

v1.2.0-beta.1

9 months ago

1.2.0-beta.1 (2023-08-09)

Features

  • Added global event bus (6ee46a8)
  • Added optional HAR file tracker (6e1ce51)
  • Introduction of flexible resource file in preparation for future library structure changes or additional persisted information (bec50d1)

Bug Fixes

  • Add support for com.dji.mimo.pano.jpeg filetype (8597476)
  • Add support for mpo filetype (01df262)
  • Adding support for avif file type (4f6db76)
  • Default retry count set to 10 (4e7dad7)
  • Event Registry to keep track of event listeners, stopping memory leaks (0fda9ee)
  • Separate streaming axios instance to handle asset downloads (afed636)
  • Unknown file type descriptor no longer fatally fails (e138994)

Tests

  • Finalized validator tests (ca802c9)
  • Reworking SyncEngine in order to correctly report on coverage (dd090a3)

CI Pipeline

  • External PR workflow using correct logic (c715f59)

Documentation

  • Adding funding information (704be67)
  • Adding reference to development blog (4854905)
  • Information on node warnings (c52bf70)
  • Overhaul of feature request and issue templates (d90c572)
  • Providing design motivation of local file structure (34de0b8)

v1.1.1-beta.3

10 months ago

1.1.1-beta.3 (2023-07-07)

Bug Fixes

  • Emitting schedule events to metrics exporter for traceability (7bb63d0)
  • No longer double reporting MFA server errors and gracefully handling address in use errors (c916e17)
  • Range Error while unwinding error code stack (a0520df)
  • Timing out execution if MFA code is not provided (81fdccf), closes #223

CI Pipeline

  • Improving automatic tagging (75567e9)

v1.1.1-beta.2

10 months ago

1.1.1-beta.2 (2023-07-05)

Bug Fixes

  • Improving error reporting (bfffda3)

Documentation

  • Adding dev environment documentation and configuration (ab21ba4)
  • Adding note about '$' sign in passwords (dc8756f), closes #280
  • Adding Security Policy (6e7d62c)
  • How to increase file limits (80a35a3), closes #278
  • Improved handling of issue process (38d3e2a)

v1.1.1-beta.1

10 months ago

1.1.1-beta.1 (2023-07-04)

Bug Fixes

  • Add support for mts, ai, cr3 & orf (0e13238), closes #239
  • File diffing issue (c47b057), closes #232
  • Maximum call size no longer exceeded for large libraries (1d0f5e9), closes #231
  • Support for 'largeThumbnail' extension (913671c)
  • Truncating log file before submitting (b050158)

Tests

  • Replacing .toThrowError(new Error) with .toThrow(regex) (f18291a)
  • Updating of tests to support new environment (855f5cc)

Build System

  • Update of VSCode settings (0a31704)
  • Updating project structure for new build system (9e7af62)

CI Pipeline

  • Complete rework of CI/CD pipeline (e2ad084)

Maintenance

  • Bump @typescript-eslint/eslint-plugin from 5.54.1 to 5.59.9 in /app (f4d0cc3), closes #276
  • Bump croner from 5.3.5 to 6.0.3 in /app (c236671), closes #237
  • Bump eslint from 8.31.0 to 8.42.0 in /app (48f663d), closes #274
  • Bump eslint from 8.31.0 to 8.42.0 in /app (08097e7), closes #274
  • Bump jest and @types/jest from 29.0.3 to 29.5.0 (0e8f35f)
  • Bump node 18.16.1 (a369622), closes #275 #263
  • Bump ts-jest from 29.0.5 to 29.1.1 in /app (3c5dafc)
  • Bump typescript from 4.9.4 to 5.1.3 in /app (ab05fb6), closes #272
  • Misc. dependency bumps (ee91335)
  • Update mkdocs requirement from ~=1.4.2 to ~=1.4.3 in /pages (ae75036), closes #256
  • Update mkdocs-material requirement from ~=9.1.2 to ~=9.1.15 in /pages (43bb318), closes #271

Documentation

  • Added PR template (83bd1b8)
  • Addition of Contribution Guidelines and Code of Conduct (b9e8fcd)
  • Restructuring of docs (284e66a)
  • Update of Readme (a34373a)
  • Updated and completed typedoc (83a9ef4)

v1.1.0

1 year ago
  • BREAKING CLI CHANGE:
    • Specifying no command will print help and not automatically start daemon mode
    • The CLI option -r, --max-retries no longer uses -1 to disable the option, but Infinity.
  • Support for iCloud Shared Photo Library
  • Filetype support added for
    • avi
  • Reworked error structure
  • Added sync metrics export functionality (See docs, closes #127)
  • Asset verification improvements:
    • Removed 2GB limitation during verification (closes #155)
    • Improves output when asset verification fails (closes #156)
    • Acceptable mtime range (before verification fails) increased to 1000ms
    • Failed asset verification no longer fatal error, but warning
  • Sync reliability improvements:
    • Added 412 response error handling during signin (closes #185)
    • Added recoverable EAI_AGAIN error (closes #159)
    • Handling RUNNING indexing state (closes #167)
    • Metadata rate limiting to support large libraries through --metadata-rate (closes #182)
  • Archive improvements:
    • Modified time is now properly preserved upon archiving (closes #192)

v1.0.1

1 year ago

This release contains a massive amount of 'behind the scenes' changes to the development and testing process. This is a big step towards long term maintainability of this codebase.

  • Created fully automated CI/CD process for smooth future releases
  • Performing continuous API tests via GH Actions using a test environment
  • Implemented testing process
    • Unit tests implemented for
      • app
        • factory
      • icloud
        • mfa-server
        • icloud-auth
        • icloud-photos (pending)
      • photos-library
      • mfa-server
      • sync-engine
        • fetchNLoad
        • diffing
        • asset-write
        • album-write
      • archive-engine
    • API Tests of iCloud & iCloud Photos backend
    • Basic testing of Docker Image
  • Various bug fixes, re-implementations and re-structuring
  • Documentation pages using MKDocs & GH Pages
  • Now running CodeQL and dependabot scans
  • Initial steps for support of iCloud Shared Photo Libraries
  • Error and Crash Reporting integration
  • Archiving fully supported
  • Integrated scheduling to have synchronization happen regularly

v1.0.0

1 year ago

This release contains a massive amount of 'behind the scenes' changes to the development and testing process. This is a big step towards long term maintainability of this codebase.

  • Created fully automated CI/CD process for smooth future releases
  • Performing continuous API tests via GH Actions using a test environment
  • Implemented testing process
    • Unit tests implemented for
      • app
        • factory
      • icloud
        • mfa-server
        • icloud-auth
        • icloud-photos (pending)
      • photos-library
      • mfa-server
      • sync-engine
        • fetchNLoad
        • diffing
        • asset-write
        • album-write
      • archive-engine
    • API Tests of iCloud & iCloud Photos backend
    • Basic testing of Docker Image
  • Various bug fixes, re-implementations and re-structuring
  • Documentation pages using MKDocs & GH Pages
  • Now running CodeQL and dependabot scans
  • Initial steps for support of iCloud Shared Photo Libraries
  • Error and Crash Reporting integration
  • Archiving fully supported
  • Integrated scheduling to have synchronization happen regularly

v0.2.0

1 year ago

With this release the sync of the remote state is fully functional. This release adds the reconstruction of the full folder structure. In a space efficient way (through links).

v0.1.1

1 year ago

This is the MVP release. Currently only assets are synced, the folder structure cannot be synced nor archiving is implemented yet.

See Milestone Plan in the README for more details.