Skip to content

PhotoDropMac 0.1.3

Latest

Choose a tag to compare

@tsvb tsvb released this 06 Aug 17:06

Fixes a manifest-durability bug: concurrent ingests into the same library destroyed each other's manifest.

Upgrading is a straight replace — drag the new app over the old one. Existing libraries, manifests, presets, and settings are untouched.

The fix

0.1.2 gave job filenames millisecond precision, which fixed back-to-back ingests. It did not fix concurrent ones. Measured against 0.1.2, ten photodrop ingest processes started at once into a single library:

10 concurrent ingests → 10 files copied, 2 manifests

Eight jobs' records were destroyed. Process launches cluster inside the same millisecond, so precision alone bought almost nothing under real concurrency.

Job filenames are now claimed with O_EXCL — the file is created atomically before anything is written, so a name can never be taken twice, and a -2, -3, … suffix is added only when a collision actually occurs. Ordinary runs keep clean, chronological filenames.

Same test against this build:

10 concurrent ingests → 10 files copied, 10 manifests
✓ All 10 files across 10 manifests match their recorded checksums.

This covers the manifest JSON, its CSV, and the job log.

Why it mattered. The files always copied correctly — what disappeared was the record of what was copied and at what checksum. That failure is silent: a manifest-based verify reports success over whatever records survive, so it prints ✓ All 2 files … and exits 0 for a ten-file library. If you ran concurrent ingests on an earlier version, photodrop verify <library> --xattr checks every file against its own embedded checksum, independent of any manifest.

Nothing to do for existing libraries. Manifests written by earlier versions keep verifying exactly as before.

Requirements

macOS 14.0 or later. Unsandboxed by design — it needs arbitrary card→destination filesystem access and calls diskutil to eject cards.

Verifying this download

SHA-256  82714c28dfdf00fc600cbcdbab4ccf8dcc4134a8c6e5686773170ebc93aaef7e
         PhotoDropMac-0.1.3.dmg
shasum -a 256 PhotoDropMac-0.1.3.dmg
xcrun stapler validate PhotoDropMac-0.1.3.dmg
xcrun stapler validate /Applications/PhotoDropMac.app
spctl -a -t exec -vvv /Applications/PhotoDropMac.app   # → source=Notarized Developer ID

Full changelog: v0.1.2...v0.1.3