Skip to content

v1.0.3

Choose a tag to compare

@github-actions github-actions released this 26 Feb 16:08
· 182 commits to main since this release

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:

  1. Close the currently running Latent Library application.
  2. Download the new v1.0.3 executable for your OS (.exe, .AppImage, or .dmg).
  3. Replace your old executable with the new one.
  4. DO NOT DELETE your data/ folder. Keep the new executable right next to your existing data/ 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 VirtualGallery and ImageCard rendering pipeline to utilize strict HTML5 loading="lazy" and decoding="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 deferred aria-hidden image 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.txt file 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_BUSY locks or pool starvation.
  • Indexing Throttling: I implemented a new Semaphore in the IndexingService to 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 DHashService now 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. Thumbnailator generation failures for unreadable preview chunks are now suppressed from the main app.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/remove endpoint to delete the hard association.
    • Removing an image from a Smart Collection now triggers a /batch/blacklist endpoint to ensure the dynamic filter ignores the image in the future.
  • 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": null to the Electron build configuration. This ensures cleaner packaging for unsigned .dmg distribution on Apple Silicon and Intel Macs. (Note: You may still need to clear the quarantine attribute via sudo xattr -cr if macOS Gatekeeper complains, as detailed in the README).

Full Changelog: v1.0.2...v1.0.3