# Changelog This changelog is maintained from git history plus the published Gitea release series. Future releases should update this file and publish matching release notes on the release page. ## v0.8.4 Strict XMP sidecar verification release. - Add `verify --sidecar --strict` to require photoscli XMP schema metadata, sidecar generator metadata, and matching exported filename metadata. - Keep existing `verify --sidecar` behavior unchanged for backup-wide existence, readability, and asset-ID checks. ## v0.8.3 XMP sidecar inspection release. - Add `sidecar inspect ` to print key photoscli metadata from generated XMP sidecars. - Add `sidecar inspect --json` for scriptable inspection output. ## v0.8.2 Metadata-only XMP refresh release. - Add `--metadata-only` for manifest-based XMP sidecar generation without re-exporting media files. - Support metadata-only refresh for both `export` and `backup-all` when used with `--sidecar xmp`. - Require a manifest for metadata-only mode so existing media paths are resolved safely. - Keep media files untouched while overwriting/regenerating generated XMP sidecars. - Support `--reverse-geocode` during metadata-only sidecar refresh. ## v0.8.1 XMP standards and sidecar verification release. - Add XMP schema version metadata for generated sidecars. - Add standard XMP fields for rating, metadata date, creation date, Photoshop date created, and EXIF GPS coordinates. - Add `dc:subject` keywords from album/folder context. - Add sidecar generator and generated timestamp metadata. - Add `verify --sidecar` to check missing, zero-byte, unreadable, and asset-ID mismatched XMP sidecars. ## v0.8.0 Rich PhotoKit metadata and reverse-geocoded XMP release. - Expand asset metadata from public PhotoKit fields: modification date, hidden state, media subtypes, source type, playback style, burst data, GPS coordinates, adjustment state, adjustment info, and richer resource metadata. - Expand XMP sidecars with duration, hidden/adjustment state, modification date, structured media subtype/burst/resource lists, GPS coordinates, and adjustment metadata. - Add opt-in `--reverse-geocode` using Apple reverse geocoding APIs to add address metadata for GPS assets. - Cache reverse-geocode results under `.photoscli/geocode-cache.jsonl` so repeated exports do not repeatedly query Apple geocoding. - Keep Vision/Core ML people, animal, object, and scene analysis out of this release; that remains future work. ## v0.7.0 XMP sidecar metadata release. - Add `--sidecar none|xmp` with default `none`. - Add config support for `sidecar = "xmp"`. - Write XMP sidecars next to exported files using basename `.xmp` filenames. - Include asset ID, filenames, album, manifest path, media type, dimensions, favorite state, cloud state, export mode, photoscli version, exported timestamp, size, and creation date in XMP. - Write XMP files atomically. - Treat sidecar write failure as asset failure when XMP sidecars are explicitly requested. ## v0.6.0 Backup integrity and recovery release. - Add manifest-relative paths for exported files so tree backups can be verified accurately. - Add SQLite manifest migration for the new `path` column. - Upgrade `verify` to report missing files, zero-byte files, and size mismatches by default. - Add atomic staging export writes with per-asset temporary directories before final rename. - Deduplicate `failures.jsonl` entries by asset ID and track attempts plus latest failure time. - Add `failures list` and `failures clear` commands. - Add `retry-failed --clear-on-success`. - Add `status` command with text and JSON output. - Update release workflow to publish release notes from `RELEASE_NOTES.md`. - Rename release zip assets to include `macos-arm64` and document Apple Silicon-only releases. - Add `AGENT.md` with the minimal project/release rules for future agents. - Keep `CHANGELOG.md` as the canonical release history. ## v0.5.0 Manifest, filtering, logging, and documentation release. - Add JSONL and SQLite manifests with resumable skip tracking. - Add automatic conversion between JSONL and SQLite manifests. - Add structured export logging to `export.log` or SQLite `logs` table. - Add explicit exit codes: success, error, partial failure, and access denied. - Add `--quality` for JPEG preview compression. - Add `--concurrency` with progress slot cap. - Add `--exclude-album` with exact/glob matching. - Add `--since` date filtering. - Add `--dry-run`. - Add `--retry`. - Add `--only-favorites`. - Add `--media photos|videos|all`. - Add `--json` command summaries. - Add `--verify` integration. - Add `--format jpeg|heic|png` validation/hint. - Add `--min-size` and `--max-size` estimated pixel-count filters. - Add `--date-template` folder layout support. - Add `report`, `diff`, `verify`, and `retry-failed` commands. - Add failure tracking in `failures.jsonl`. - Add config-file defaults via `~/.photoscli.toml` or `PHOTOSCLI_CONFIG`. - Add album name collision handling for duplicate sibling album names. - Expand `README.md` and verbose CLI help. - Add 100% test coverage for the CLI and manifest/photos packages. ## v0.4.1 Documentation and release asset follow-up after v0.5.0. - Add `USERGUIDE.md` as a practical end-user manual. - Link the user guide from `README.md`. - Add release zip packaging with binary, README, USERGUIDE, and CHANGELOG. - Attach `USERGUIDE.md` and the macOS zip package to the `v0.5.0` release. ## v0.4.0 Progress and backup-all usability release. - Add scroll log for completed exports: copied, downloaded, skipped, and failed. - Add worker status lines with live download progress bars for cloud files. - Add color-gradient progress bars from red to yellow to green. - Add disk skip for files already present during `backup-all`. - Add parallel export with multiple workers for `backup-all`. - Increase progress slot support in the bridge. - Improve progress rendering for large export sessions. ## v0.3.x Published on Gitea as `v0.3.0` through `v0.3.5`. These releases are not represented by local git tags in the current clone, so the exact per-release commit mapping is unavailable here. Known purpose of this series: - Iterative release packaging and Gitea release workflow improvements. - Continued progress display and backup/export polish between `v0.2.5` and `v0.4.0`. - Preparation for the larger `v0.4.0` progress/backup release. ## v0.2.6 Published on Gitea but not represented by a local git tag in the current clone. - Post-`v0.2.5` maintenance release in the progress/export series. ## v0.2.5 - Add Unicode progress bar rendering. - Add cloud download speed display. ## v0.2.4 - Stop export loop on Ctrl+C instead of flooding failures. - Improve graceful cancellation behavior after interrupt. ## v0.2.3 - Fix export write failures. - Fix Ctrl+C cancellation behavior. ## v0.2.2 No local tag is present for this version in the current clone. ## v0.2.1 - Add status messages during export. - Fix parallel export progress display. ## v0.2.0 - Add semaphore timeouts. - Add export error logging. - Remove dead code. - Add parallel exports. ## Pre-release - Initial `applephotos` CLI with progress, cloud status, and per-asset export. - Add `.gitignore` and remove build artifacts from tracking. - Rename `applephotos` to `photoscli`. - Update module path to `gitea.k3s.k0.nu/tools/photocli`. - Add version flag. - Add Gitea release targets and release pipeline.