v1.0.3
Latent Library v1.0.3 - High-Concurrency & Stability Update
This release focuses heavily on systemic stability, resolving "Backend Unreachable" errors, and preventing application crashes when loading massive image libraries. I have completely overhauled the frontend rendering pipeline and tightened the backend concurrency model to ensure smooth sailing even with thousands of generations.
🚀 How to Update (Important)
Latent Library is a portable, zero-install application. To update without losing your existing collections, tags, or database:
- Close the currently running Latent Library application.
- Download the new v1.0.3 executable for your OS (
.exe,.AppImage, or.dmg). - Replace your old executable with the new one.
- DO NOT DELETE your
data/folder. Keep the new executable right next to your existingdata/folder. The app will automatically connect to your existing SQLite database and thumbnail cache.
🛠️ Core Stability & Performance Fixes
Zero-Crash Lazy Loading (Frontend)
- Network Exhaustion Fixed: I rewrote the
VirtualGalleryandImageCardrendering pipeline to utilize strict HTML5loading="lazy"anddecoding="async". The browser will no longer fire thousands of simultaneous HTTP requests when opening massive folders. - Leak Prevention: I refactored the UI's glassmorphism blur effect from a CSS
backgroundImage(which bypasses lazy loading) to a strictly deferredaria-hiddenimage tag. - Timeout Relaxation: Increased the internal Axios timeout bounds to 60 seconds to accommodate legitimate, heavy CPU/IO indexing tasks on slower physical hard drives.
Concurrency, Security & Boot Handshake (Backend)
- Firewall Prompts Eliminated: The internal server is now explicitly bound to the local loopback address (
127.0.0.1). This prevents Windows Defender and macOS Firewall from triggering network access warnings, ensuring a completely private, isolated local environment. - Startup Race Condition Eliminated: Fixed a critical bug where the Electron frontend would occasionally crash on startup due to reading the
port.txtfile mid-write. The Spring Boot backend now utilizes OS-level atomic file moves (StandardCopyOption.ATOMIC_MOVE) for a failsafe boot sequence. - Database Pool Tuning: Increased the internal HikariCP connection pool size. Virtual Threads can now stream hundreds of thumbnails concurrently without hitting
SQLITE_BUSYlocks or pool starvation. - Indexing Throttling: I implemented a new
Semaphorein theIndexingServiceto limit concurrent file processing batches. This provides backpressure and prevents background tasks from starving the HTTP server of CPU/IO resources. - Resilient dHash Calculation: The
DHashServicenow gracefully handles corrupt or zero-byte AI preview files (e.g., unsupported WebP chunks) by returning a neutral hash instead of throwing exceptions that halt folder indexing. - Log Silencing: Drastically reduced log spam.
Thumbnailatorgeneration failures for unreadable preview chunks are now suppressed from the mainapp.log.
📁 Collection Management
Resolved issues where images could not be properly managed or removed from collections:
- Smart vs. Static Deletions: I added intelligent routing in the UI to handle collection removals.
- Removing an image from a Static Collection now triggers a new
/batch/removeendpoint to delete the hard association. - Removing an image from a Smart Collection now triggers a
/batch/blacklistendpoint to ensure the dynamic filter ignores the image in the future.
- Removing an image from a Static Collection now triggers a new
- Context Menu Fix: Resolved a frontend payload mapping bug that caused
[object Object]label errors and prevented items from being added to collections via right-click.
🎨 UI/UX & Ergonomics
- Sidebar Navigation: Unified the click targets in the Folder Navigation tree. Clicking either the folder icon or the text now acts as a single functional group.
- Context Submenu Bridge: I implemented an invisible "bridge" in custom context menus to prevent focus loss when moving the mouse diagonally toward nested submenus.
- Visual Cleanup: Resolved a "double icon" glitch in the navigation tree, enforcing custom-templated icons globally.
- Placeholder Grid: Added visual CSS layout boxes while the new strict lazy-loader pages in the image thumbnails.
🍎 macOS Specific
- Code Signing Bypass: Added
"identity": nullto the Electron build configuration. This ensures cleaner packaging for unsigned.dmgdistribution on Apple Silicon and Intel Macs. (Note: You may still need to clear the quarantine attribute viasudo xattr -crif macOS Gatekeeper complains, as detailed in the README).
Full Changelog: v1.0.2...v1.0.3