What's Changed
- ci: move macOS jobs to macos-15 and actions to Node 24 by @jterpstra1 in #1395
- fix(deps): bump certifi to 2026.10.23 for GHSA-6q48-6c7w-9gw2 by @jterpstra1 in #1396
- feat: support Python 3.14, drop 3.10 by @jterpstra1 in #1397
- ci: cancel superseded runs, add job timeouts, generate test locales instead of installing locales-all by @jterpstra1 in #1398
- fix: warn instead of crashing when --use-os-locale can't use the system locale by @jterpstra1 in #1401
- ci: run the npm/npx compatibility tests for Arm on Arm runners by @jterpstra1 in #1402
- ci: batch the Linux compatibility tests (376 → 73 jobs), move to ubuntu-24.04 by @jterpstra1 in #1399
- fix: only delete from iCloud with --keep-icloud-recent-days when the photo is present locally by @jterpstra1 in #1403
- build(deps): update dependencies, including urllib3 2 by @jterpstra1 in #1404
- fix: don't let undecodable XMP metadata stop the download run by @jterpstra1 in #1405
- fix: skip a locked or unavailable keyring instead of crashing login by @jterpstra1 in #1406
- build: support Python 3.15 and build binaries and Docker images with it by @jterpstra1 in #1407
- Report a login error instead of KeyError: 'dsInfo' when the session is invalid by @Kernel-Hunter in #1382
- fix: retry library indexing state check before failing (#1387) by @sithikaf in #1388
- feat: add --adp-web-access for Advanced Data Protection accounts by @Mehdi-Leqsiouer in #1392
- fix: yield every asset when several share one master by @helinwang in #1394
- fix: warn when iCloud never confirms ADP web access, list --adp-web-access as experimental by @jterpstra1 in #1408
- test: cover skipping an asset whose master record is missing by @jterpstra1 in #1409
- fix: warn when --keep-icloud-recent-days is combined with --recent or --until-found by @jterpstra1 in #1410
- fix: include time zone data so icloud/icloudpd run without a system tz database by @jterpstra1 in #1411
- docs: document the Linux binary variants and the Alpine 3.20+ minimum for musl by @jterpstra1 in #1412
- ci: fix false failures in the compatibility report, add tzlc table to notes by @jterpstra1 in #1413
- fix: build the macOS binaries for Intel and Apple Silicon by @jterpstra1 in #1414
- fix: treat JPEG XL and other unknown image types as photos, not videos by @jterpstra1 in #1415
- fix: don't crash the icloud tool on a locked or unavailable keyring by @jterpstra1 in #1416
- Propagate exit code from the icloudpd executable by @Kernel-Hunter in #1380
- Reject --skip-created-before later than --skip-created-after by @Kernel-Hunter in #1381
- fix: trigger the 2FA push in the icloud tool by @jterpstra1 in #1417
- fix: RFC 5322 Date header in the 2FA expiry email by @jterpstra1 in #1418
- fix: --auto-delete uses the file match policy and filename cleaner by @jterpstra1 in #1421
- fix: keep the name-id7 suffix on adjusted and alternative files by @jterpstra1 in #1419
- Skip XMP sidecars when only printing filenames by @victorwon2001 in #1374
- feat: sign in with a security key (FIDO) by @spinnerich in #1423
- fix: consistent time zone for --skip-created-*, and tests that pass in any time zone by @jterpstra1 in #1424
- docs: describe each --size and update the TrueNAS steps for 25.10 by @jterpstra1 in #1426
- build(deps-dev): bump mypy from 2.4.0 to 2.4.1 by @dependabot[bot] in #1430
- feat: add --prune-orphans flag to clean local files for photos removed from shared library by @samaluk in #1351
- fix: reject --auto-delete together with --keep-icloud-recent-days by @jterpstra1 in #1427
- fix: --keep-icloud-recent-days keeps assets without a creation date by @jterpstra1 in #1429
- fix: --set-exif-datetime skips JPEGs with malformed EXIF instead of crashing by @jterpstra1 in #1432
- fix: list albums beyond the first page of iCloud's album list by @jterpstra1 in #1434
- fix: resume downloads after a dropped connection and check the size before saving by @jterpstra1 in #1436
- feat: adopt existing dedicated shared-library mirrors by @samaluk in #1433
- fix: create missing parent folders of --cookie-directory by @jterpstra1 in #1438
- ci: test current distributions, drop end-of-life ones by @jterpstra1 in #1439
- feat: list and download albums in folders by @jterpstra1 in #1440
- docs: cron example uses --directory and the keyring instead of --password by @jterpstra1 in #1437
- fix: skip a file instead of ending the run when iCloud can't be reached by @jterpstra1 in #1441
- fix: write the EXIF DateTime tag in the main IFD by @jterpstra1 in #1442
- fix: don't download a photo again after --set-exif-datetime changed it by @jterpstra1 in #1443
- fix: report a photo listing that ended early instead of success by @jterpstra1 in #1444
- fix: --live-photo-size thumb crashed at startup by @jterpstra1 in #1449
- docs: fix wrong and outdated statements by @jterpstra1 in #1450
- Keep going when iCloud refuses a delete with TRY_AGAIN_LATER by @Kernel-Hunter in #1447
- Web UI: keep configuration panels open across status refreshes by @Kernel-Hunter in #1448
- Bump to 1.33.0 by @jterpstra1 in #1452
New Contributors
- @jterpstra1 made their first contribution in #1395
- @Kernel-Hunter made their first contribution in #1382
- @sithikaf made their first contribution in #1388
- @Mehdi-Leqsiouer made their first contribution in #1392
- @helinwang made their first contribution in #1394
- @victorwon2001 made their first contribution in #1374
- @spinnerich made their first contribution in #1423
- @samaluk made their first contribution in #1351
Full Changelog: v1.32.3...v1.33.0