Skip to content

Releases: aaron777collins/pickr

Pickr v0.10.3

Choose a tag to compare

@github-actions github-actions released this 11 Jul 04:49

See the release notes for details.

Pickr v0.10.2

Choose a tag to compare

@github-actions github-actions released this 11 Jul 03:53

See the release notes for details.

v0.10.1: Profile/Side Face Detection

Choose a tag to compare

@aaron777collins aaron777collins released this 11 Jul 02:46

What's New

Profile & Side Face Detection

  • Added Haar cascade-based profile/side face detection alongside YuNet frontal detection
  • Lowered YuNet confidence threshold to catch more faces
  • Bumped cache version to force rescan with new detection capabilities

Bug Fixes

  • Skip faces with failed alignment instead of emitting zero embeddings — prevents false matches from corrupted face data

Full Changelog

  • feat: add profile/side face detection via Haar cascade + lower YuNet threshold
  • feat: bump cache version to force rescan for profile face detection
  • feat: profile/side face detection with Haar cascade + lowered YuNet threshold
  • fix: skip faces with failed alignment instead of emitting zero embeddings

v0.10.0

Choose a tag to compare

@aaron777collins aaron777collins released this 02 Jul 16:48

What's New

Better Face Detection

  • Lowered detection score threshold from 0.9 to 0.5 — catches faces that aren't perfectly clear/frontal
  • Reduced minimum face size from 20px to 10px for detecting smaller faces in group photos
  • Added multi-scale detection — runs detection at 640px and 320px downscaled copies in addition to original resolution, catching faces at various sizes in large images
  • Eliminated redundant double face detection during scan (was running both count_faces and detect_faces — now single pass)

Incremental Scan Display

  • Photos now appear in the grid as they're processed instead of waiting for the full scan to complete
  • Scan progress is shown as a compact banner at the top of the grid rather than a full-page spinner
  • You can start browsing photos while the scan is still running

App Data Caching

  • Scan cache is now stored in the system's app data directory instead of inside the scanned folder
  • Cache persists even when scanning folders on external/removable media
  • Bumped cache version to force re-detection with the improved face detector

Performance

  • Single-pass face detection eliminates redundant computation during scan
  • Cached items stream to the UI instantly without waiting for fresh analysis

Pickr v0.9.0

Choose a tag to compare

@github-actions github-actions released this 29 Jun 19:35

See the release notes for details.

Pickr v0.8.2

Choose a tag to compare

@github-actions github-actions released this 29 Jun 16:47

See the release notes for details.

v0.8.1: Cross-platform face detection

Choose a tag to compare

@aaron777collins aaron777collins released this 29 Jun 05:02

What's Changed

Fix: Face detection now works cross-platform

Replaced face_recognition (dlib) with OpenCV's built-in YuNet face detector + SFace recognizer.

Before: Face detection depended on dlib, which requires C++ compilation and frequently fails to install on macOS, Windows, and ARM platforms. When it failed, face detection silently returned zero results.

After: Face detection uses ONNX models that ship with opencv-python-headless (already a core dependency). No extra build tools, no C++ compiler, no platform-specific issues. Models (~37 MB total) are auto-downloaded on first use and cached locally.

Changes

  • Rewrote recognize.py to use cv2.FaceDetectorYN (YuNet) + cv2.FaceRecognizerSF (SFace)
  • Updated blur.py video frame processing to use the new detector
  • Updated ai.count_faces() to use YuNet with Haar cascade as fallback
  • Removed optional face_recognition/dlib dependency from pyproject.toml
  • Bumped scan cache version to force re-scan with new detector
  • Updated docs (CLAUDE.md, ARCHITECTURE.md)

v0.8.0: Face Blur Export + Media Fixes

Choose a tag to compare

@aaron777collins aaron777collins released this 28 Jun 00:01

What's New

Face Blur Export (Mission Critical)

  • Blur unidentified faces during export — protects privacy by Gaussian-blurring all faces except tagged identities
  • Video support — frame-by-frame face detection with downscaled detection (0.25x) for performance, ffmpeg pipe-based I/O preserving audio
  • Export dialog toggle — new Switch UI component to enable/disable face blurring with progress streaming
  • Identity-aware — faces matching tagged people (via embedding cosine similarity) are kept unblurred

Media Display Fixes

  • EXIF orientation — phone photos now display correctly (was showing 0 faces due to missing exif_transpose())
  • Video support — falls back to FFMPEG plugin when pyav unavailable
  • HEIC/HEIF preview — generates JPEG previews since browsers can't render HEIC natively

Technical

  • New blur_export sidecar command + Rust Tauri command with streaming progress events
  • Switch and Label UI components (Base UI)
  • 18 sidecar tests passing
  • Scan cache versioning for automatic invalidation

v0.7.0: Fix broken image display

Choose a tag to compare

@aaron777collins aaron777collins released this 27 Jun 19:31

What's Fixed

Images loaded and graded correctly but showed broken image icons in the UI. The root cause was that Tauri's convertFileSrc() generates asset:// protocol URLs to serve local files, but:

  1. The protocol-asset Cargo feature was not enabled on the tauri dependency
  2. The assetProtocol scope was not configured in tauri.conf.json

Without these, the asset protocol handler was never registered, so all image URLs failed to resolve in the webview.

Changes

  • Enabled protocol-asset feature in src-tauri/Cargo.toml
  • Added assetProtocol scope configuration in tauri.conf.json to allow serving local files
  • Bumped version to 0.7.0

Pickr v0.6.1

Choose a tag to compare

@github-actions github-actions released this 25 Jun 16:42

See the release notes for details.