Releases: aaron777collins/pickr
Release list
Pickr v0.10.3
See the release notes for details.
Pickr v0.10.2
See the release notes for details.
v0.10.1: Profile/Side Face Detection
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 thresholdfeat: bump cache version to force rescan for profile face detectionfeat: profile/side face detection with Haar cascade + lowered YuNet thresholdfix: skip faces with failed alignment instead of emitting zero embeddings
v0.10.0
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_facesanddetect_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
See the release notes for details.
Pickr v0.8.2
See the release notes for details.
v0.8.1: Cross-platform face detection
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.pyto usecv2.FaceDetectorYN(YuNet) +cv2.FaceRecognizerSF(SFace) - Updated
blur.pyvideo frame processing to use the new detector - Updated
ai.count_faces()to use YuNet with Haar cascade as fallback - Removed optional
face_recognition/dlibdependency frompyproject.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
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_exportsidecar 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
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:
- The
protocol-assetCargo feature was not enabled on thetauridependency - The
assetProtocolscope was not configured intauri.conf.json
Without these, the asset protocol handler was never registered, so all image URLs failed to resolve in the webview.
Changes
- Enabled
protocol-assetfeature insrc-tauri/Cargo.toml - Added
assetProtocolscope configuration intauri.conf.jsonto allow serving local files - Bumped version to 0.7.0
Pickr v0.6.1
See the release notes for details.