- Creates ~/.immich-sync.lock with PID on start
- Checks if existing lock's process is still running (stale lock detection)
- Logs clear message when skipping due to active lock
- Releases lock on exit via trap (handles success and failure)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
osxphotos exports both original and edited versions by default.
Use --skip-edited and --skip-original-if-edited to control behavior
instead of non-existent --export-edited and --export-originals flags.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
LaunchAgents don't inherit PATH, so use explicit paths:
- /opt/homebrew/opt/mise/bin/mise x -- osxphotos (like borgmatic)
- /usr/local/bin/docker for Docker commands
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements hourly sync from macOS Photos Library to Immich:
- osxphotos exports photos with metadata to staging directory
- immich-cli uploads to Immich via Docker
- LaunchAgent schedules hourly syncs (mcquack pattern)
- API key stored securely from 1Password
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>