Skip to content

RapidReady v0.5.1

Choose a tag to compare

@on370 on370 released this 16 Oct 09:16
· 34 commits to main since this release

RapidReady v0.5.1 — High-Speed Local Disk Cache, Fujifilm RAW & Universal RAW Safety Net

RapidReady v0.5.1 marks a major performance milestone! This release introduces our persistent local binary chunk cache (inspired by Google Picasa and Adobe Lightroom for 100% offline-first 60 FPS browsing across 100,000+ images), combines it with native Fujifilm RAW (.raf) support, an architectural universal RAW fallback safety net, and responsive UI fixes.


🚀 Highlights & Major Innovations (v0.5.0 + v0.5.1)

⚡ Persistent Local Disk Cache (Picasa & Lightroom Architecture)

  • 64 MB Binary Chunk Containers (chunk_XXXX.bin): Thumbnails are packed sequentially into rolling binary blobs stored directly on your local system NVMe (~/Library/Caches/de.rapidready.app/ on macOS, %LOCALAPPDATA%\RapidReady\Cache\ on Windows). This completely eliminates APFS/NTFS filesystem fragmentation, inode exhaustion, and slow directory walks across massive 100,000+ photo collections.
  • Single-Seek $O(1)$ Byte-Range Access: Retrieving any cached thumbnail requires exactly one lseek + read system call, delivering sub-millisecond retrieval times.
  • High-Concurrency SQLite Index (archive_catalog.sqlite): A robust, WAL-mode database tracks canonical file paths, mtimes, sizes, orientations, and thumbnail scales.
  • 100% Offline-First 60 FPS Grid Navigation: Once an archive folder is indexed, the entire photo grid, filmstrip, and previews are served locally from ultra-fast NVMe storage — without waking up sleep-state drives or generating network seek traffic over slow NAS/SMB mounts.
  • Incremental Delta Sync: Automatically detects added, modified, or removed files upon archive reconnection without requiring full re-indexing.

📸 Complete Camera RAW Pipeline & Universal Safety Net

  • Native Fujifilm RAW (.raf) Ingest (New in v0.5.1):
    • Added dedicated RAF header parsing recognizing FUJIFILMCCD-RAW signatures and reading the embedded JPEG preview offset/length directly in a single < 2 ms read.
    • In-memory downscaling generates sharp 720px grid thumbnails for compact cache storage (~80–120 KB) while preserving the uncompressed full-sensor preview for Loupe View and 100% Zoom.
    • Full capture date resolution and camera EXIF extraction (camera make, model, lens, exposure data) for Fuji X-T, X-Pro, X100, X-E, and GFX cameras.
  • Universal RAW Fallback Safety Net (New in v0.5.1):
    • Implemented a two-tier architectural defense against missing grid thumbnails: if fast header extraction does not encounter preview tags on non-standard RAW containers (e.g. Sigma X3F FOVb, deep Olympus ORF previews, or rare variants), RapidReady automatically scans for the largest embedded JPEG stream, downscales in memory, and caches it locally.
    • Zero Blank Tiles: Ensures 100% of camera RAW files across all supported manufacturers render sharp thumbnails in Grid View.
  • Fast-Path Camera Tags (New in v0.5.1):
    • Added native single-read header extraction for Panasonic Lumix RW2 (0x002E/0x002F JpgFromRaw) and Olympus/OM System ORF (0x0280 PreviewImage + IIRO/IIRS capture date magic).
  • High-Resolution Canon CR2 & Differentiated In-Memory Downscaling:
    • Hardened TIFF strip parser captures Canon CR2 full-sensor IFD0 previews (5472×3648, 2.5–5.5 MB) instead of falling back to 160×120 micro-thumbnails.
    • Previews $\le 1.5,\text{MB}$ (Sony ARW, Canon CR3, Ricoh DNG) are cached with 0 ms CPU overhead; full-sensor previews $&gt; 1.5,\text{MB}$ are resized in-memory via Apple ImageIO in ~20 ms. Full sensor resolution is strictly preserved for 1:1 Loupe Zoom.

🎯 Loupe View Debouncing & Zero-Lag Viewport

  • 100 ms Viewport Debouncing: Rapid arrow navigation (← / →) or fast double-clicking immediately updates the filmstrip cursor and photo counters (0 ms instantaneous feedback) while debouncing the heavy central viewport, skipping intermediate frames over slow network shares.
  • Proactive Request Abort: Switching images instantly cuts in-flight network connections, preventing queue congestion on network mounts.

📈 Throughput Smoothing & UI Responsiveness on Fast SSDs

  • Paced Progress Reporting: Progress updates are paced at ~6.6 Hz (150 ms) instead of unthrottled bursts, keeping the React UI silky smooth during heavy background indexing.
  • Deferred Flush Strategy: Flushes are deferred to 64 MB chunk boundary rollover, removing synchronous per-thumbnail fsync overhead and unlocking full NVMe write speeds.
  • Accurate Live Speeds: Accurately calculates real throughput (MB/s) in the scan progress card.

🐛 Bug Fixes & Refinements

  • Archive Scan Banner Layout & Narrow Window Overflow (Issue #1):
    • Realigned the floating throughput and performance statistics card from centered (left-1/2) to left-0 with arrow pointer at ml-7, ensuring the bubble expands into the visible center view rather than overflowing under the left folder tree pane on narrow windows.
    • Constrained scan banner width to max-w-full preventing container overflows.
    • Expanded hover trigger encompassing phase pill, (?) icon, and the photo progress counter.
  • Format Badge Contrast: Enhanced readability of format pills (JPG, RAW, VID) with refined background translucency and typography across both dark and bright backgrounds.

📦 Supported Formats

  • Camera RAW: Canon (.cr2, .cr3), Sony (.arw), Nikon (.nef, .nrw), Adobe/Leica/Ricoh (.dng), Fujifilm (.raf), Olympus/OM System (.orf), Panasonic Lumix (.rw2), Pentax (.pef), Hasselblad (.3fr), Sigma (.x3f).
  • Raster & Next-Gen: JPEG (.jpg, .jpeg), HEIF/HEIC (.heic, .heif, .hif), WebP (.webp), AVIF (.avif), PNG (.png), TIFF (.tif, .tiff).
  • Video: .mp4, .mov, .m4v, .avi.