Skip to content

Releases: t0nyz0/SD-Offload

SD Offload 1.7.26

Choose a tag to compare

@t0nyz0 t0nyz0 released this 22 Oct 21:16

Fix repeated Card detected popups caused by mounted iOS and XROS simulator runtime images.

  • Recognize disk images using both Disk Arbitration's device protocol and device model. APFS simulator runtimes report Virtual Interface as their protocol and Disk Image as their model.
  • Suppress early card-detection popups for disk images, and require the explicit test-volume allowlist before an image can be ingested. Physical SD cards retain immediate detection and the configured insert action.
  • Ignore empty test-volume allowlist prefixes.

Version: 1.7.26, build 139. Built from b56c1c8 using the project's release workflow and commit-count build numbering.

Validation: 223 automated tests executed, with two optional live tests skipped and zero failures. Six new regressions cover simulator metadata, disk-image allowlisting, physical-card actions, and network/internal-volume exclusion. GitHub CI passed, including all ten disposable transfer-safety integration modes. The fix was also checked against six mounted simulator volumes: the app stayed at Waiting for a card, including after a manual rescan.

Downloads: Apple Silicon (arm64), macOS 14 or later. Choose the DMG for drag-to-Applications installation or the ZIP. Download SHA256SUMS.txt alongside the artifacts and run shasum -a 256 -c SHA256SUMS.txt to verify both files.

As with previous releases, this build is ad-hoc signed and not notarized. See the installation documentation for the existing distribution and source-build instructions.

SD Offload 1.7.25

Choose a tag to compare

@t0nyz0 t0nyz0 released this 18 Oct 22:53

Fix Library deletion on NAS volumes without macOS Trash. The failure was reproduced on the Photos SMB share as NSCocoaErrorDomain 3328: the volume has no Trash.

  • Use native macOS Trash when supported. Otherwise move original files into Deleted Photos, a hidden recovery folder on the same NAS. This uses renames rather than copying whole photos or permanently deleting them.
  • Open Deleted Photos from the Library sidebar to recover files through Finder. Each batch retains the original date folders, filenames, and restoration instructions. Recovery files are excluded from Library inventories and are never automatically erased.
  • Show deletion progress and the recovery destination. If both destinations fail, retain the originals and display the actual error and code.
  • Probe unsupported Trash once per bulk deletion and run network filesystem work off the UI thread.

Validation: 215 default automated tests passed; two optional live tests are skipped in the default suite. Eight new regressions cover native Trash, JPEG/RAW/sidecar recovery and restoration, repeated names, partial failures, path aliases, out-of-scope files, and symlinked recovery folders. A separate live SMB test passed on the affected NAS using only disposable files: deletion, exact-byte recovery, and restoration all succeeded. GitHub CI also passed all ten disposable transfer/wipe integration modes. No visible test windows were opened.

Downloads: Apple Silicon Mac, macOS 14 or later. Choose the DMG for drag-to-Applications installation, or the ZIP. SHA256SUMS.txt verifies both downloads. This build is ad-hoc signed and not notarized; see the README installation instructions if macOS blocks a downloaded copy.

SD Offload 1.7.24

Choose a tag to compare

@t0nyz0 t0nyz0 released this 16 Oct 02:25

Copy Library photos straight into Finder: select one or more photos, press ⌘C or right-click Copy, then paste onto Desktop or into another folder with ⌘V.

  • Copy uses the displayed original file, including JPEG, RAW-only photos, and videos. For a JPEG+RAW pair, Copy with RAW includes both originals.
  • Right-clicking a selected photo copies the selection; right-clicking another photo copies that photo. A visible Copy button is available in the selection toolbar and viewer, and Favorites has a Copy context-menu action.
  • Copy writes native file references without downloading or reading NAS originals first. Search fields and tag editors keep normal text copying.
  • Includes the fast startup and more reliable card detection improvements from 1.7.23.

Validation: 207 automated tests passing, with one optional live-provider test skipped; all ten disposable transfer/wipe integration modes pass in GitHub CI. Six clipboard regressions cover selection, context-menu targeting, media pairs, duplicate references, private native clipboard/file-byte round trips, empty-copy preservation, and 10,000 file references. No visual test windows were opened.

Downloads: Apple Silicon Mac, macOS 14 or later. Choose the DMG for drag-to-Applications installation, or the ZIP. SHA256SUMS.txt verifies both downloads. This build is ad-hoc signed and not notarized; see the README installation instructions if macOS blocks a downloaded copy.

SD Offload 1.7.23

Choose a tag to compare

@t0nyz0 t0nyz0 released this 16 Oct 02:17

New cards no longer wait for routine verification of previous batches before copying.

  • Older completed staging copies are verified and cleaned during cancellable idle maintenance after the next transfer. The just-completed batch remains available for recovery. A new transfer cancels idle cleanup; startup only reclaims first when the Mac genuinely lacks enough space for the new batch and safety headroom.
  • A mounted card is acknowledged immediately, before a slow media-folder probe, with a simple Card detected status.
  • Card monitoring starts before NAS status reads. Blocking probes and overview reads run on the I/O queue, keeping the cooperative executor available. Those reads run off the coordinator; card probes use cached kernel capacity/free-space metadata and user-initiated priority.
  • Workspace mount/unmount notifications supplement DiskArbitration and wake reconciliation. Physical media registry generations distinguish reinsertion even if a reader reuses the same BSD name, UUID, path, and filesystem ID.

Five focused regressions cover cleanup policy, stalled NAS status with responsive card events, cancelled cleanup/latest-batch preservation, early detection, and quick reinsertion. No manual test windows were opened. New-batch backup verification and wipe safeguards are unchanged. Physical long-duration insertion testing is not claimed.

Apple Silicon, macOS 14+, build 136. DMG, ZIP, and SHA256SUMS.txt are attached. Ad-hoc signed, not notarized; see installation instructions.

SD Offload 1.7.22

Choose a tag to compare

@t0nyz0 t0nyz0 released this 15 Oct 12:24

The initial card scan now shows useful live preparation status instead of a motionless 0% with unknown copy estimates.

  • See files and bytes found, current file/folder, elapsed time, and the preparation step.
  • Date reading and saved-progress checks show real completed-file counts.
  • NAS connection and previous-backup verification have their own status and read-back progress.
  • After ten seconds without activity, the app explains whether it is waiting on the card or NAS and suggests checking access prompts or the connection.
  • Worker callbacks only update counters; preparation UI is sampled four times per second.

Validation: 196 default tests passed, including eight new preparation regressions, and all ten transfer/wipe integration modes passed. README and changelog are updated. Safety checks and erasure policy are unchanged.

Apple Silicon, macOS 14+. Build 133. Download the DMG or ZIP and verify it with SHA256SUMS.txt. Ad-hoc signed, not notarized; see the installation instructions.

SD Offload 1.7.21

Choose a tag to compare

@t0nyz0 t0nyz0 released this 06 Oct 22:45

Fixes two issues found during follow-up QA:

  • Removing/reinserting the original card during Retry wipe keeps the saved verified manifest and wipe phase. It does not rescan, copy again, or include new photos; a different card remains blocked.
  • Edited-tag search, suggestions, and face filters work through configured and canonical filesystem aliases while preserving existing metadata IDs and library boundaries. Root resolution is cached background work.

Validation: 188 default tests pass, all ten integration harness modes pass, and live Claude/Codex checks pass with the repository app icon. Six new regressions cover retry reinsertion, wrong-card identity, late NAS corruption, interrupted recovery/ENOSYS fallback, and alias tag/face search. Native fixture UI checks confirm tag editing/search, viewer Delete confirmation, and provider selection. README and the follow-up QA report are updated.

The diagnosed FSKit exFAT wipe failure was also physically validated on the affected card: 168 approved photos (6.22 GB) erased after fresh NAS verification, with NAS copies and camera database preserved. Wiping still blocks unsafe or changed files. Details: QA report.

Download the DMG or ZIP and verify it against SHA256SUMS.txt. Apple Silicon, macOS 14 or later; build 132. The app is ad-hoc signed and not notarized. See installation instructions.

SD Offload 1.7.20

Choose a tag to compare

@t0nyz0 t0nyz0 released this 06 Oct 22:17

When an offload finishes, the Library now opens the newest verified capture day in that batch. Previously it chose whichever day had the most photos, which could be much older. The fix supports all preset/custom date layouts, legacy records, duplicate photos, and already-wiped files using the saved destination paths without another NAS scan.

Validation: 182 automated tests passed; one optional live-provider test skipped. Six new regressions include reproducing the older-day bug and loading the newest folder's photos. GitHub CI also passed all ten disposable transfer/erasure integration modes. README and changelog updated.

Downloads include the DMG, ZIP, and SHA256SUMS.txt. The app is ad-hoc signed and not notarized; downloaded copies may require the Gatekeeper steps in the installation guide.

SD Offload 1.7.19

Choose a tag to compare

@t0nyz0 t0nyz0 released this 06 Oct 22:05

A failed card wipe now offers Retry wipe. It reuses the saved verified file list and original NAS destination names without rescanning the card, copying to staging, uploading again, or backfilling a new second destination. Only remaining approved files are erased; new photos added afterward are preserved.

Fresh NAS/secondary hash checks, card identity, source validation, and the normal wipe consent/countdown still apply. Changed or missing backups block erasure instead of silently starting another transfer. Incomplete transfers offer Retry transfer. The recovery panel stays visible until you act.

Validation: 176 automated tests passed, with one optional live AI-provider test skipped. Ten new tests cover no-copy retries, retained statistics/recovery data, saved paths, partial wipes, new/changed photos, missing backups, different/unmounted cards, incomplete manifests, concurrent clicks, and action labels. All ten normal disposable transfer integration modes passed locally. GitHub CI checks the build, full unit suite, and integration modes for this release commit.

Build 129. DMG, ZIP, and SHA256SUMS.txt included. README and wipe-retry QA report updated. These retry tests used disposable fixtures; they do not claim another physical-card erasure after the successful 1.7.18 validation.

The app is ad-hoc signed, not notarized. Follow the installation instructions if macOS quarantines the download, including xattr -dr com.apple.quarantine "/Applications/SD Offload.app", or build from source.

SD Offload 1.7.18

Choose a tag to compare

@t0nyz0 t0nyz0 released this 06 Oct 21:52

Fixes card wiping stopping with errno 45: Operation not supported on FSKit exFAT. Unsupported exclusive rename now uses a newly created recovery directory; the original open file, metadata, identity, and complete SHA-256 are checked before deletion. Interrupted or cancelled erasure restores files through exclusive creation and verified read-back when needed, preserving occupied original names and recovery data.

Verified:

  • 166 automated tests passed; one optional live AI-provider test skipped. Eight new erasure regressions cover unsupported operations, collisions, changes, replacements, recovery, and cancellation.
  • All ten disposable integration modes passed locally. GitHub CI passed the build, full unit suite, and all ten integration modes for this release commit.
  • Explicitly authorized physical FSKit exFAT test: all 168 photos (6.22 GB) passed fresh NAS hash verification and were erased; DCIM was empty, NAS copies remained present, and the camera database was unchanged. Countdown, verification, and erasure took 121.8 seconds. This was a wipe test, not an upload benchmark.

Build 128. Includes DMG, ZIP, and SHA256SUMS.txt. README and the erasure QA report document the fix and its validation limits.

The app is ad-hoc signed, not notarized. If macOS quarantines the downloaded app after placing it in Applications, follow the installation instructions, including xattr -dr com.apple.quarantine "/Applications/SD Offload.app", or build from source.

SD Offload 1.7.17

Choose a tag to compare

@t0nyz0 t0nyz0 released this 04 Oct 00:56

Adds a labeled Delete button beside Pick / Reject in the photo viewer's bottom toolbar.

The button opens the existing confirmation, including JPEG/RAW choices for paired photos, and uses the same move-to-Trash behavior as the Library. If Trash is unavailable, originals are preserved. Available for NAS browsing; card browsing stays read-only.

Validation: release build and signature checks passed; native UI verified with a disposable photo, including opening and cancelling the confirmation. GitHub CI passed the existing automated tests and transfer-safety harness.

This UI update does not change the card-wiping algorithm or resolve the previously reported physical-card erasure failure.

Downloads include DMG, ZIP, and SHA256SUMS.txt. The app is ad-hoc signed, not Apple-notarized. If Gatekeeper blocks the download, build from source or, after reviewing and trusting the release, clear quarantine with xattr -dr com.apple.quarantine "/Applications/SD Offload.app". Finish active offloads before updating.