Skip to content

WABS - v1.0.0-beta.6

Choose a tag to compare

@wizwin wizwin released this 30 May 14:48
· 90 commits to main since this release

Full Changelog: https://github.com/wizwin/WABS/commits/v1.0.0-beta.6

WABS v1.0.0-beta.6: Smart Covers, Cluster Unknowns, Light Theme & Massive AI Optimizations! 🚀

This release introduces major quality-of-life improvements to Face Recognition, including the highly requested ability to automatically pick the sharpest cover photos, safely cluster similar unknown faces to reduce clutter, a beautiful new Light Theme, and a highly requested Undo button for photo tagging!

Under the hood, we've completely eliminated UI freezing on massive databases, implemented a thread-safe LRU Exemplar Matrix Cache, and vectorized the AI similarity engine. Face clustering and searches are now lighting-fast, heavily optimized, and highly accurate. ⚡

🚀 Major New Features

Cluster Unknowns: Added a powerful new "Cluster Unknowns" feature on the People page. It allows you to instantly compare Unknown Persons against other Unknown Persons and automatically merges them if they meet your configured Similarity Threshold, significantly reducing clutter before you assign names.

Reclassify Unknowns: Added a powerful new "Reclassify" feature that breaks apart wrongly-clustered Unknown profiles and re-evaluates every single face against all Named profiles and other Unknowns using your current Similarity Threshold.
Light & Dark Theme Support: Full application theme toggling added to Settings, utilizing a highly-efficient CSS inversion approach that perfectly preserves media and icon colors.

Auto-Pick Cover Photo: A new smart UI button that automatically evaluates bounding box sizes and Laplacian variance (sharpness) across a person's photos to pick the best possible thumbnail.

Purge Small Unknowns: A dedicated database management routine in Settings allowing you to instantly delete noisy "Unknown Person" profiles that contain fewer than a specified number of photos.

Direct Move to Person: You can now select specific photos from any profile (or Unknown group) and instantly reassign them to another named person via a convenient UI dropdown.

Hidden People: Added the ability to explicitly "Hide" specific Known or Unknown people from the UI and Search Auto-Suggest. Hidden profiles are kept in the database to prevent the AI from repeatedly rescanning them.

Video Extraction Features: Added native video container date parsing and metadata tag parsing via mutagen. Video files now map perfectly into the chronological timeline alongside your photos.

✨ UI/UX Enhancements

Live Chunked Progress Bars: Re-engineered the frontend to send bulk AI operations in safe chunks of 250 profiles. This prevents HTTP connection timeouts on massive 30,000+ face databases and provides a smooth, real-time progress bar.

Long-Running Task Cancellations: Added the ability to gracefully cancel massive AI clustering or reclassification tasks midway. The UI dynamically switches the action buttons to "Cancel" during processing.

Undo Action for Tagging: Added an intuitive "Undo" button to the Toast notifications with a comfortable 5-second timeout, allowing you to instantly reverse accidental photo assignments, removals, or profile moves!

AI Actions Menu: Grouped all advanced similarity sliders, clustering, and purge operations into a clean, collapsible "AI Actions" panel to keep the main People UI uncluttered.

Similar Faces Pagination & Sorting: The "Find Similar Unknowns" panel now supports pagination (500 profiles per page) and intelligently sorts ties by matching photo counts and directory/time context.

Lightning-Fast Thumbnails: Replaced artificial JavaScript load delays with native HTML lazy-loading and aggressive backend Cache-Control headers, instantly snapping thumbnails into view from browser memory.

Refined Similarity Threshold: Adjusted the default Cosine Similarity threshold to 55% (and lowered the slider minimum to 35%) to drastically improve matching on side-profiles and diverse lighting.

Intelligent Scroll Memory: Navigating back to the People page from a specific person's photo grid now automatically snaps you back to your exact scroll position and active page.

Thumbnail Debouncing & Fade-ins: Added a 250ms Javascript debounce wrapper to face thumbnails and smooth CSS opacity fade-ins to prevent backend spam and eliminate harsh image popping.

🐞 Bug Fixes & Performance

React O(N²) Render Bottleneck: Fixed a catastrophic browser freeze when selecting thousands of unknown profiles by replacing inline array .find() and .sort() operations with highly optimized O(1) Hash Maps and strict memoization.

LRU Exemplar Matrix Cache: Implemented a highly optimized, thread-safe memory cache that builds a curated 25-photo baseline for each person. It dramatically improves AI accuracy by dropping blurry outliers and speeding up matrix multiplications.

Vectorized AI Similarity: Replaced slow native Python math loops with highly optimized numpy vector operations for cosine similarity, slashing face clustering times.

Comprehensive Backend Logging: The backend now fully logs summary statistics for all Bulk AI operations (Auto-Pick Cover, Merges, Clusters, Reclassifications) to the wabs.log file when Background Logging is enabled.

Dynamic Cache Invalidation: The similarity caches are now explicitly invalidated and recalculated instantly whenever you rename, merge, delete, or manually tag a person.

Database Synchronization & Ghost Faces: Fixed a major bug where the ai_metadata.db retained "ghost" faces for files that were moved or deleted. The System Cleanup routine now flawlessly cross-references the main database and completely purges all orphaned AI records.

Theme-Aware SVG Placeholders: The backend now dynamically generates offline text and document preview SVGs based on your active UI theme, fixing invisible black text in Light Mode.

Group Photo Speedup: Added a 98% match early-exit optimization for face thumbnail extraction. The backend no longer wastes computationally expensive AI cycles checking every single face in massive group photos once the target person is found.

Pillow (PIL) Media Fallbacks: Added robust Pillow fallback logic to both the large photo caching routine and the face cropper, completely fixing missing thumbnails for modern formats (like .webp) that OpenCV silently fails to decode.

Start Scan In-Memory Optimization: The Indexer now pre-fetches all existing file paths into a Python set when starting a scan. O(N) database queries have been replaced with O(1) in-memory lookups, drastically speeding up indexing.
(Includes many more crucial fixes for directory exclusions, orphaned thumbnail cleanup, lazy hashing logic, and SQLite optimizations!)

🛠 Build & CI Updates

Windows Executable Polish: The GitHub Actions Windows build now automatically uses the --noconsole flag (hiding the background command prompt) and utilizes per-matrix icon embedding for a custom application icon (.ico).

ARM Compatibility: Switched the GitHub Actions ARM build runner to ubuntu-22.04 for enhanced build stability and compatibility.

📦 Installation

Download the appropriate executable for your Operating System from the Assets section below. (Note: As always, we strongly recommend running a Full Database Backup from the Settings page before migrating to a new major Beta version!)