diff --git a/AGENT.md b/AGENT.md index b507f2a..b42c495 100644 --- a/AGENT.md +++ b/AGENT.md @@ -12,4 +12,6 @@ - Manifest backends: JSONL default, SQLite optional via `modernc.org/sqlite`. - Preserve manifest compatibility and migration behavior. - XMP sidecars are opt-in via `--sidecar xmp`; default must remain `none`. +- Reverse geocoding is opt-in via `--reverse-geocode`, uses MapKit on macOS 26+, and must fail safely on older macOS without failing export. +- Do not claim Photos people/animal/object labels are exported unless Vision/Core ML analysis is explicitly implemented. - Do not commit generated artifacts from `bin/` or coverage files. diff --git a/CHANGELOG.md b/CHANGELOG.md index fa80c9a..c029dfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ 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.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. diff --git a/Makefile b/Makefile index 0a3359f..b530c55 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ BINARY := ./bin/photoscli MODULE := gitea.k3s.k0.nu/tools/photocli -VERSION := 0.7.0 +VERSION := 0.8.0 RELEASE_ZIP := ./bin/photoscli-$(VERSION)-macos-arm64.zip RELEASE_NOTES := RELEASE_NOTES.md BRIDGE_DIR := bridge @@ -20,7 +20,7 @@ $(LIB): $(OBJ) ar rcs $@ $< $(OBJ): $(BRIDGE_DIR)/photokit_bridge.m $(BRIDGE_DIR)/photokit_bridge.h - cc -c -x objective-c -fobjc-arc -framework Photos -framework Foundation -o $@ $< + cc -c -x objective-c -fobjc-arc -o $@ $< $(STUB_LIB): $(STUB_OBJ) ar rcs $@ $< diff --git a/README.md b/README.md index c13aab3..50c7a81 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,8 @@ For a practical step-by-step manual with recommended backup workflows, recovery - Deduplicated failure management with `failures list`, `failures clear`, and `retry-failed --clear-on-success`. - Verification, reporting, and diff commands for backup integrity. - Status command for quick backup summaries. -- Opt-in XMP sidecar metadata with `--sidecar xmp`. +- Opt-in rich XMP sidecar metadata with `--sidecar xmp`. +- Optional Apple MapKit reverse geocoding for GPS assets on macOS 26+ with `--reverse-geocode`. - Script-friendly exit codes and optional JSON summaries. - 100% test coverage for the Go CLI and parsing layers. @@ -166,6 +167,7 @@ photoscli export --album-id "Favorites" --out ./favorites --only-favorites photoscli export --album-id "Videos" --out ./videos --media videos --include-videos photoscli export --album-id "Archive" --out ./archive --originals --retry 3 photoscli export --album-id "Vacation" --out ./vacation --date-template YYYY/MM/DD +photoscli export --album-id "Vacation" --out ./vacation --sidecar xmp --reverse-geocode ``` ### `backup-all` @@ -186,6 +188,7 @@ photoscli backup-all --out ./backup --exclude-album "Recently Deleted" --exclude photoscli backup-all --out ./backup --since 2024-01-01 --sort newest photoscli backup-all --out ./backup --concurrency 8 --retry 3 photoscli backup-all --out ./backup --dry-run --json +photoscli backup-all --out ./backup --sidecar xmp --reverse-geocode ``` ### `report` @@ -278,6 +281,7 @@ Common flags for `export` and `backup-all`: - `--max-size `: filter by estimated pixel count. - `--format jpeg|heic|png`: preview format hint. Current bridge output is still the existing preview path; non-JPEG bridge output is future work. - `--sidecar none|xmp`: write opt-in XMP metadata sidecars next to exported files. +- `--reverse-geocode`: with `--sidecar xmp`, add cached Apple MapKit address metadata for GPS assets on macOS 26+. - `--date-template