Repository navigation
Releases
RapidReady v0.6.2
RapidReady v0.6.2: RAW + JPEG Stacking, Editorial Rights & Metadata Sidecars, and Capture Date Honesty
RapidReady 0.6.2 introduces intelligent 1:N RAW + JPEG stacking with instant 1:1 sensor-zoom variant comparison, comprehensive non-destructive editorial metadata and rights management via companion sidecars (.rrdata & .xmp), capture date honesty with 1-click archive relocation, improved onboarding, and subfolder grid sorting.
Key Achievements
- Intelligent 1:N RAW + JPEG stacking grouping mother RAWs and derivative JPEGs into single virtual tiles with responsive badges and zero CTSP overhead.
- Instant zero-latency variant comparison (J) in Loupe View with 1:1 sensor-zoom point and pan position preservation.
- Non-destructive editorial metadata management writing Artist, Copyright, Usage Terms, Title, and Description to
.rrdataand.xmpsidecars. - Dedicated Inspector Editorial Card with inline editing and multi-photo batch assignment.
- Capture date honesty with absolute date overrides, relative time-shifts, and 1-click archive relocation for corrected photos.
- Global master metadata presets in Settings with dynamic
{year}copyright macro resolution per photo capture date. - Protected Import Step 2 metadata and date overrides for analog scans and specific shoots with amber warning indicators.
- Improved onboarding with an expandable and collapsible navigation sidebar featuring 1-word labels and a dedicated footer toggle.
- Subfolder grid sorting and Loupe View folder navigation via ↑ and ↓.
- Fast non-blocking asynchronous trash deletion on macOS via native
NSFileManagerwithout AppleScript Finder freezes (v0.6.1). - Comprehensive companion sidecar deletion removing both
.rrdataand.xmpfiles when deleting photos (v0.6.1). - Fail-safe React
<AppErrorBoundary>preventing black-screen crashes with instant 1-click diagnostic interface recovery (v0.6.1). - Bulletproof Loupe View deletion stability eliminating
TypeError: undefinedpreloader crashes via safe index clamping (v0.6.1). - Derived
safeActiveIndexand dynamic forward index shifts preventing selection drift during batch deletion (v0.6.1). - Navigation key scroll lock (↑, ↓, ←, →) preventing unintended browser default scrolling on the folder tree (v0.6.1).
- File-watcher ghost event suppression for
.rrdata/.xmpsidecars and hidden system file filtering (v0.6.1). - Universal Adobe XMP (
.xmp) sidecar engine with non-destructive read-modify-write and 3 configurable sync modes (v0.6.0). - Conflict resolution via filesystem modification timestamps (
mtime) as Single Source of Truth (SSoT) (v0.6.0). - Dual XMP naming convention support: Adobe Standard
STDand darktableDTwith companion JPEG collision protection (v0.6.0). - Native bidirectional compatibility for darktable color labels and hierarchical tags (v0.6.0).
- Configurable external RAW developer launcher (R / Shift+R) supporting RapidRAW, darktable, Lightroom Classic, System Default, or Custom Applications (v0.6.0).
- Zero-I/O lazy on-demand import duplicate detection recognizing pre-existing archive files during SD card scanning without background library hashing (v0.6.0).
- Full rendering and EXIF metadata extraction for reverse-layout Capture One DNGs lacking embedded JPEGs (v0.6.0).
- Archive catalog deletion reconciliation eliminating ghost directories in folder trees upon sync (v0.6.0).
RAW + JPEG Stacking & Seamless Variant Switching
-
Virtual 1:N Stacking Engine (
LibraryCenter.tsx,GridThumbnailItem.tsx): Automatically pairs mother RAW files with companion JPEGs in the same folder as well as direct development subfolders (e.g../LR/,./Export/,./JPG/) into a single virtual tile. The physical directory structure and underlying high-speed cache remain 100% untouched ($0%$ CTSP overhead). -
Responsive Stack Badges: Kacheln display compact format badges (
RAW + JPG,RAW + LR/JPG,RAW +N JPG). Subfolder names dynamically truncate based on current tile width, while the full directory path remains visible via hover tooltips. -
1:1-Zoom Point Preservation (J / </kbd>): Rapidly cycle through all variants of a stack in Loupe View with zero latency. Unlike conventional viewers, RapidReady maintains the exact 100% sensor-zoom crop and pan coordinates when switching variants (
resetZoomKey), making optical sharpness and grain comparisons effortless. - Synchronous Culling & Differentiated Deletion: Star ratings, pick/reject flags, color labels, and tags sync across all stack members. When deleting, a safety modal offers granular options (delete entire stack, RAW only to save space, or specific derivatives only).
Editorial Metadata, Rights Management & Capture Date Honesty
- 100% Non-Destructive Companion Sidecars (
.rrdata&.xmp): Atomically writes Artist (artist), Copyright (copyright), Usage Terms (usage_terms), Title (title), and Description (description) to companion.rrdataand Adobe.xmpsidecars without modifying a single byte of your original RAW or JPEG files. - Inspector Editorial Card: Dedicated collapsible inspector card with an inline pencil editor and multi-photo batch assignment for rapid editorial attribution across large photo selections.
- Capture Date Honesty & Time-Shift: Non-destructively adjust capture dates using relative time shifts (
+/- seconds, ideal for unsynchronized camera clocks or timezone offsets) or absolute date overrides (for digitized film scans). - 1-Click Archive Relocation: If a corrected capture date no longer matches its parent folder structure (e.g.
2023/2023-08), clicking „In passenden Ordner umziehen“ safely moves the image and its companion sidecars into the corresponding year/month directory. - Global Master Metadata & Dynamic
{year}Token: Define persistent defaults for Photographer, Copyright, and Rights in Settings. The{year}macro is evaluated dynamically per photo against its true capture date, guaranteeing accurate copyrights even across mixed-year SD cards. - Protected Import Step 2 Overrides: Pre-populate editorial metadata or override shoot titles and capture dates directly during ingest. Protected by prominent amber warning chips and automatic toggle resets when switching import sources to prevent accidental misattribution.
- For detailed architecture and best practices, see the Metadata & Date Management Guide.
Subfolder Grid Sorting & Loupe Folder Navigation
- Relative Subfolder Sorting: Group and sort photos in the library grid by their relative subfolders within date structures.
- Vertical Folder Navigation in Loupe View: Navigate smoothly to the previous or next archive folder directly from Loupe View using ↑ and ↓.
Fast Non-Blocking macOS Trash Deletion & Sidecar Cleanup (v0.6.1)
- Native
NSFileManagerIntegration (system_cmds.rs): Replaced synchronous AppleScript Finder events (DeleteMethod::Finder) with Cocoa'sNSFileManager.trashItemAtURL(DeleteMethod::NsFileManager). Bypasses/usr/bin/osascriptsub-process overhead, executing batch deletions in milliseconds. - Tokio Thread Protection: All heavy filesystem and SQLite catalog pruning tasks run inside
tauri::async_runtime::spawn_blocking, ensuring Tokio worker threads remain entirely free to serverr-image://tile requests and UI events. - Complete Sidecar Purging: When photos are deleted, RapidReady now automatically locates and removes both
.rrdata(get_sidecar_path) and.xmp(find_existing_xmp_path) companion files from disk.
Fail-Safe React Error Recovery (<AppErrorBoundary>) (v0.6.1)
- App-Wide Error Protection: Added
<AppErrorBoundary>wrapping<App />inmain.tsxand<LoupeViewer />inLibraryCenter.tsx. - Diagnostic Error Card: If an unhandled DOM or lifecycle error occurs, the window never turns black. Instead, it surfaces a dark diagnostic card with the exact error message and component stack trace.
- One-Click Recovery: Includes an „Oberfläche wiederherstellen“ button that switches view mode safely back to Grid, clears selections, and restores the UI without restarting the application.
Loupe View Deletion Stability & Safe Index Synchronization (v0.6.1)
- Preloader Null-Check & Clamping: Eliminated
TypeError: undefined is not an objectinLoupeViewer.tsxby clamping index lookups (idx0 = Math.min(activeImageIndex, displayedImages.length - 1)) and verifying element existence across all lookahead and buffer lookups. - Derived
safeActiveIndex: Introduced an always-valid derived index inLibraryCenter.tsxpassed synchronously toLibraryGrid,LoupeViewer,FullscreenViewer, and keyboard shortcut handlers. - Forward Index Shift: Updated
removeImagesinlibraryStore.tsto shiftactiveImageIndexforward by the exact number of deleted preceding images, ensuring selections follow surviving items smoothly. - Automatic Grid Fallback: Automatically switches view mode to Grid when all images in the active scope are deleted.
Folder Tree & Keyboard Navigation Ergonomics (v0.6.1)
- Navigation Key Scroll Lock: Added
e.preventDefault()to all photo navigation shortcut handlers (↑, ↓, ←, →, J, K), preventing browsers from triggering unwanted default scrolling on the folder tree when it was previously focused. - Stable Tree Viewport: Removed disruptive
scrollIntoViewauto-scrolling fromTreeViewduring grid navigation. - Ghost Event Suppression: Suppressed false-positive
sidecar-updatedevents by checking that both sideca...
RapidReady v0.6.1
RapidReady v0.6.1: Loupe Deletion Hotfix, Non-Blocking macOS Trash, Fail-Safe Error Recovery, and Navigation Ergonomics
RapidReady 0.6.1 is an immediate maintenance and stability release following the major 0.6.0 milestone. It resolves a critical macOS black-screen/freeze issue during Loupe View deletion, introduces lightning-fast non-blocking trash deletion via Cocoa's native NSFileManager, adds a fail-safe React error boundary to eliminate app unmounts, refines keyboard navigation ergonomics by locking folder tree scrolling, and hardens post-import scan and badge state.
Key Achievements
- Fast non-blocking asynchronous trash deletion on macOS via native
NSFileManagerwithout AppleScript Finder freezes. - Comprehensive companion sidecar deletion removing both
.rrdataand.xmpfiles when deleting photos. - Fail-safe React
<AppErrorBoundary>preventing black-screen crashes with instant 1-click diagnostic interface recovery. - Bulletproof Loupe View deletion stability eliminating
TypeError: undefinedpreloader crashes via safe index clamping. - Derived
safeActiveIndexand dynamic forward index shifts preventing selection drift during batch deletion. - Navigation key scroll lock (↑, ↓, ←, →) preventing unintended browser default scrolling on the folder tree.
- File-watcher ghost event suppression for
.rrdata/.xmpsidecars and hidden system file filtering. - Universal Adobe XMP (
.xmp) sidecar engine with non-destructive read-modify-write and 3 configurable sync modes (v0.6.0). - Conflict resolution via filesystem modification timestamps (
mtime) as Single Source of Truth (SSoT) (v0.6.0). - Dual XMP naming convention support: Adobe Standard
STDand darktableDTwith companion JPEG collision protection (v0.6.0). - Native bidirectional compatibility for darktable color labels and hierarchical tags (v0.6.0).
- Configurable external RAW developer launcher (R / Shift+R) supporting RapidRAW, darktable, Lightroom Classic, System Default, or Custom Applications (v0.6.0).
- Zero-I/O lazy on-demand import duplicate detection recognizing pre-existing archive files during SD card scanning (v0.6.0).
- Full rendering and EXIF metadata extraction for reverse-layout Capture One DNGs lacking embedded JPEGs (v0.6.0).
- Archive catalog deletion reconciliation eliminating ghost directories in folder trees upon sync (v0.6.0).
Fast Non-Blocking macOS Trash Deletion & Sidecar Cleanup
- Native
NSFileManagerIntegration (system_cmds.rs): Replaced synchronous AppleScript Finder events (DeleteMethod::Finder) with Cocoa'sNSFileManager.trashItemAtURL(DeleteMethod::NsFileManager). Bypasses/usr/bin/osascriptsub-process overhead, executing batch deletions in milliseconds. - Tokio Thread Protection: All heavy filesystem and SQLite catalog pruning tasks run inside
tauri::async_runtime::spawn_blocking, ensuring Tokio worker threads remain entirely free to serverr-image://tile requests and UI events. - Complete Sidecar Purging: When photos are deleted, RapidReady now automatically locates and removes both
.rrdata(get_sidecar_path) and.xmp(find_existing_xmp_path) companion files from disk.
Fail-Safe React Error Recovery (<AppErrorBoundary>)
- App-Wide Error Protection: Added
<AppErrorBoundary>wrapping<App />inmain.tsxand<LoupeViewer />inLibraryCenter.tsx. - Diagnostic Error Card: If an unhandled DOM or lifecycle error occurs, the window never turns black. Instead, it surfaces a dark diagnostic card with the exact error message and component stack trace.
- One-Click Recovery: Includes an „Oberfläche wiederherstellen“ button that switches view mode safely back to Grid, clears selections, and restores the UI without restarting the application.
Loupe View Deletion Stability & Safe Index Synchronization
- Preloader Null-Check & Clamping: Eliminated
TypeError: undefined is not an object (evaluating 'i[s-1].path')inLoupeViewer.tsxby clamping index lookups (idx0 = Math.min(activeImageIndex, displayedImages.length - 1)) and verifying element existence across all lookahead and buffer lookups. - Derived
safeActiveIndex: Introduced an always-valid derived index inLibraryCenter.tsx(Math.min(Math.max(activeImageIndex, 0), displayedImages.length - 1)) passed synchronously toLibraryGrid,LoupeViewer,FullscreenViewer, and keyboard shortcuts. - Dynamic Forward Shift: Updated
removeImagesinlibraryStore.tsto shiftactiveImageIndexforward by the exact number of deleted preceding images (deletedBeforeActive), allowing the selection safeguard to smoothly track the next surviving photo. - Immediate Grid Fallback: If all images in the active view or last import are deleted, RapidReady immediately returns to the Grid View (
setViewMode('grid')).
Folder Tree & Keyboard Navigation Ergonomics
- Scroll Lock via
e.preventDefault(): Addede.preventDefault()across all navigation shortcut branches (↑, ↓, ←, →, J, K) inuseLibraryShortcuts.ts. Prevents the browser from defaulting to scrolling the folder tree sidebar if it was previously focused. - Calm Tree View: Removed disruptive
scrollIntoViewauto-scrolling fromTreeViewinLibraryLeftSidebar.tsxduring photo navigation, keeping the sidebar tree stable while retaining visual camera indicators and auto-expand branch logic.
File Watcher Ghost Event Suppression & Post-Import Hardening
- Existence Verification: In
archive_cmds.rs, file-watcher events for.rrdataand.xmpverify that both the sidecar (p.exists()) and image file (img_path.exists()) exist before dispatchingsidecar-updatedevents, preventing phantom updates during rapid deletions. - System File Filtering: Watcher ignores
.DS_Storeand AppleDouble._*files, and requires deleted files to lack extensions before recording them asremoved_dirs, preventing non-archive files from triggering directory deletion. - Accurate Source Badges: Only displays the removable media badge (
isRemovableSource) when the import source directory strictly matches a detected drive root. - Post-Import Navigation: Switching to the library or collections after import guarantees
scanState: 'idle'andisLoading: false.
Universal Adobe XMP (.xmp) & RapidRAW (.rrdata) Architecture
- Non-Destructive Read-Modify-Write: Atomically updates ratings, picks, rejects, color labels, tags, GPS coordinates, and orientations via temporary file replacement (
.tmp→ rename). Preserves all foreign XML tags, attributes, and development blocks (such as Lightroomcrs:*parameters, darktable history stacks, and RapidRAWadjustments). - Three Configurable Sidecar Modes:
RapidRAW Native (.rrdata)(Default): Writes native.rrdatawith automatic fallback to.xmpif only an XMP exists.Dual-Sync (.rrdata + .xmp)(Hybrid): Writes changes synchronously to both formats for friction-free switching between RapidRAW, Lightroom, and darktable.Standard XMP (.xmp): Writes directly to.xmp(updating existing.rrdataif present) with read fallback to.rrdata.
- Filesystem
mtimeSSoT Resolution: When both.rrdataand.xmpexist for an image, RapidReady automatically resolves conflicts in favor of the file with the most recent modification timestamp (mtime). - Dual XMP Naming Conventions: Choose between Adobe Standard
STD(<stem>.xmp, e.g.DSC001.xmp) and darktableDT(<file>.<ext>.xmp, e.g.DSC001.ARW.xmp), with automatic per-extension naming whenever companion JPEGs exist. - Inspector Sidecar Badges: Compact header indicators (
[ .rrdata ],[ .xmp ],[ .rrdata · .xmp ]) with interactive tooltips clarifying the authoritative SSoT source based onmtime. - NAS-Safe Bulk Sidecar Sync: On-demand synchronization tool in Settings to reconcile existing archives (
20k+files) between.rrdataand.xmpwith a live progress bar and pause/resume/cancel controls (ScanController).
Configurable External RAW Developer Launcher
- Target Application Selector: Choose between RapidRAW (Default), darktable, Adobe Lightroom Classic, System Default, or a Custom Application (
.appon macOS,.exeon Windows). - Dynamic UI Labels & Shortcuts: Context menus, toolbar popovers, import completion buttons, and shortcut references dynamically display the target app name and key combination (e.g. „In darktable öffnen (Shift+R)“ vs. „In RapidRAW öffnen (R)“).
- Truncate & Layout Protection: 5-column button grid in Settings with hover tooltips and dynamic explanation text. All UI labels and shortcut badges use text truncation and flex protection (
min-w-0 truncate+shrink-0) to ensure long custom application names never obscure shortcut badges. - Dedicated In-App Help Chapter (
HelpRawDevelopers.tsx): Comprehensive guide in the Help modal covering end-to-end integration, recommended sidecar modes per tool, darktablelibrary.dbXMP refresh tips, and guidance on darktable's default 1-star import behavior.
Lazy On-Demand Import Duplicate Detection
- Zero-I/O Archive Duplicate Detection: Photos already existing in a photo archive (e.g. imported prior to RapidReady) are automatically recognized as
already_imported = truewhen scanning an SD card or source directory. - 100% CTSP Compliance: Eliminates background disk hashing during library browsing. During source scanning, pre-filters files by exact byte size and lazily computes 64 KB head hashes only for matching candidates, caching results permanently in
import_index.db. - *Special thanks to community contributo...
RapidReady v0.6.0
RapidReady v0.6.0: Universal Adobe XMP & RapidRAW Sidecars, Multi-RAW Developer Integration, and Lazy Import Duplicate Detection
RapidReady 0.6.0 marks a major architectural milestone: full coexistence and bidirectional synchronization between Adobe XMP (.xmp) sidecars and native RapidRAW (.rrdata) sidecars, non-destructive editing guarantees across all external tools, a configurable external RAW developer launcher, zero-I/O duplicate detection during import, and robust handling of reverse-layout Capture One DNGs.
Key Achievements
- Universal Adobe XMP (
.xmp) sidecar engine with non-destructive read-modify-write and 3 configurable sync modes (RapidRAW Native,Dual-Sync,Standard XMP). - Conflict resolution via filesystem modification timestamps (
mtime) as Single Source of Truth (SSoT). - Dual XMP naming convention support: Adobe Standard
STD(<stem>.xmp) and darktableDT(<file>.<ext>.xmp) with automatic companion JPEG collision protection. - Native bidirectional compatibility for darktable color labels (
<darktable:colorlabels>) and hierarchical tags (<lr:hierarchicalSubject>). - Configurable external RAW developer launcher (
R/Shift+R) supporting RapidRAW, darktable, Adobe Lightroom Classic, System Default, or Custom Applications with dynamic UI labels and truncate protection. - Zero-I/O lazy on-demand import duplicate detection recognizing pre-existing archive files during SD card scanning without background library hashing.
- Full rendering and EXIF metadata extraction for reverse-layout Capture One DNGs lacking embedded JPEGs.
- Archive catalog deletion reconciliation eliminating ghost directories in folder trees upon sync.
Universal Adobe XMP (.xmp) & RapidRAW (.rrdata) Architecture
- Non-Destructive Read-Modify-Write: Atomically updates ratings, picks, rejects, color labels, tags, GPS coordinates, and orientations via temporary file replacement (
.tmp→ rename). Preserves all foreign XML tags, attributes, and development blocks (such as Lightroomcrs:*parameters, darktable history stacks, and RapidRAWadjustments). - Three Configurable Sidecar Modes:
RapidRAW Native (.rrdata)(Default): Writes native.rrdatawith automatic fallback to.xmpif only an XMP exists.Dual-Sync (.rrdata + .xmp)(Hybrid): Writes changes synchronously to both formats for friction-free switching between RapidRAW, Lightroom, and darktable.Standard XMP (.xmp): Writes directly to.xmp(updating existing.rrdataif present) with read fallback to.rrdata.
- Filesystem
mtimeSSoT Resolution: When both.rrdataand.xmpexist for an image, RapidReady automatically resolves conflicts in favor of the file with the most recent modification timestamp (mtime). - Dual XMP Naming Conventions: Choose between Adobe Standard
STD(<stem>.xmp, e.g.DSC001.xmp) and darktableDT(<file>.<ext>.xmp, e.g.DSC001.ARW.xmp), with automatic per-extension naming whenever companion JPEGs exist. - Inspector Sidecar Badges: Compact header indicators (
[ .rrdata ],[ .xmp ],[ .rrdata · .xmp ]) with interactive tooltips clarifying the authoritative SSoT source based onmtime. - NAS-Safe Bulk Sidecar Sync: On-demand synchronization tool in Settings to reconcile existing archives (
20k+files) between.rrdataand.xmpwith a live progress bar and pause/resume/cancel controls (ScanController).
Configurable External RAW Developer Launcher
- Target Application Selector: Choose between RapidRAW (Default), darktable, Adobe Lightroom Classic, System Default, or a Custom Application (
.appon macOS,.exeon Windows). - Dynamic UI Labels & Shortcuts: Context menus, toolbar popovers, import completion buttons, and shortcut references dynamically display the target app name and key combination (e.g. „In darktable öffnen (Shift+R)“ vs. „In RapidRAW öffnen (R)“).
- Truncate & Layout Protection: 5-column button grid in Settings with hover tooltips and dynamic explanation text. All UI labels and shortcut badges use text truncation and flex protection (
min-w-0 truncate+shrink-0) to ensure long custom application names never obscure shortcut badges. - Dedicated In-App Help Chapter (
HelpRawDevelopers.tsx): Comprehensive guide in the Help modal covering end-to-end integration, recommended sidecar modes per tool, darktablelibrary.dbXMP refresh tips, and guidance on darktable's default 1-star import behavior.
Lazy On-Demand Import Duplicate Detection
- Zero-I/O Archive Duplicate Detection: Photos already existing in a photo archive (e.g. imported prior to RapidReady) are automatically recognized as
already_imported = truewhen scanning an SD card or source directory. - 100% CTSP Compliance: Eliminates background disk hashing during library browsing. During source scanning, pre-filters files by exact byte size and lazily computes 64 KB head hashes only for matching candidates, caching results permanently in
import_index.db. - Special thanks to community contributor @DanieGu for suggesting the import duplicate detection backfill mechanism!
Capture One & Reverse-Layout DNG Support
- Reverse TIFF Layout Support: Added decoding for DNG files where
IFD0sits near the end of the file (e.g. exported from Capture One 23 Windows from Sony ILCE-6700). - ImageIO RAW Fallback: Enabled Apple ImageIO RAW decoding fallback for uncompressed sensor CFA files lacking embedded JPEGs.
- Letterbox Border Filtering: Filtered transparent letterbox borders in
thumb_rsto prevent false 404 preview errors.
Archive Deletion Reconciliation
- Ghost Directory Cleanup: Added
removed_dirstracking toArchiveDeltaResultandreconcile_directory_files. - Automatically identifies and purges externally deleted folders and orphaned photos upon folder refresh or archive delta sync, eliminating ghost folders in the directory tree.
Download & Installation
macOS (Apple Silicon & Intel)
- Download
RapidReady_0.6.0_universal.dmg. - Open the
.dmgand drag RapidReady into your Applications folder. - First Launch Note: If macOS Gatekeeper shows a warning because RapidReady is an open-source project without a paid developer certificate, run this command once in Terminal:
(Or right-click
xattr -cr /Applications/RapidReady.app
RapidReady.appin Applications and select Open).
Windows (x64)
- Download
RapidReady_0.6.0_x64-setup.exe. - Run the installer (no administrator privileges required).
- SmartScreen Note: Click More info and then Run anyway if prompted by Windows SmartScreen.
RapidReady v0.5.4
RapidReady v0.5.4 — Fullscreen Presentation, Smooth Crossfades & Olympus RAW Support
Released on October 28, 2026
RapidReady v0.5.4 introduces an integrated Fullscreen Presentation & Slideshow Mode with hardware-accelerated 2-layer crossfades and in-presentation culling, native Olympus and OM System RAW (.ORF) preview extraction including Handheld High-Res Shot (HHHR) multi-frame support (GitHub Issue #4), a real-time Inspector Live Histogram, safe two-stage folder deletion with remote NAS protection, configurable shortcut presets (Standard vs. Darktable), and video codec fallback handling.
Key Achievements in v0.5.4
- Zero-latency Full Window presentation mode (F) unmounting UI sidebars while keeping
LibraryGridmounted in the background to preserve scroll state. - Integrated automated slideshow with customizable intervals (2s, 3s, 5s, 10s), loop toggle, and auto-hiding floating glassmorphism HUD deck.
- Snappy 2-layer hardware-accelerated crossfades (350ms ease-in-out) with GPU compositor layers and HUD toggle button.
- Clean aspect-ratio transitions: outgoing wings dissolve smoothly to black when switching between landscape and portrait.
- Proactive WebKit browser pre-decoding alongside Rust chunk cache pre-warming for instant frame-1 image transitions.
- In-slideshow keyboard rating and culling (P, X, U, 1–5, 6–9) with 1.2s glassmorphic feedback badge.
- Olympus & OM System RAW (
.ORF) MakerNote preview and thumbnail extraction (OLYMPUS\0IIandOM SYSTEM\0\0\0II) (GitHub Issue #4). - Handheld High-Res Shot (HHHR 12-bit / 14-bit) multi-frame sub-IFD traversal for OM-1 and E-M1 cameras.
- Inspector Live Histogram (H) with RGB, single-channel, and Luminance modes in Linear and Logarithmic scale.
- Two-stage folder deletion moving to OS Trash by default, with non-empty confirmation and NAS permanent deletion safety guards.
- User-selectable keyboard shortcut preset in Settings (Standard / Lightroom vs. Darktable).
- Video format preview routing (
.mkv,.webm,.flv,.wmv) with graceful in-app fallback and external player button for unsupported system codecs. - Unified toolbar 3-way toggle switch: Grid (G) / Loupe (E) / Full Window (F) with localized tooltips.
Key Achievements since v0.5.0 (v0.5.0 – v0.5.3)
- Comprehensive technical EXIF inspection with intelligent camera make/model harmonization and crop-sensor 35mm equivalent focal length indicator (v0.5.3).
- Collapsible extended details drawer in Camera Card with monospace summary badge and persistent toggle state (v0.5.3).
- Dynamic sub-second transfer rate formatting and rolling window hardening for slow NAS archives (GitHub Issue #3) (v0.5.3).
- Dedicated in-app guide: "Archive, Scanning & High-Speed Cache" (v0.5.3).
- Speculative L1 RAM pre-caching from local L2 SSD chunk cache (< 0.5 ms) with live visual buffer indicators (v0.5.2).
- Unified thumbnail and inspector portrait orientation pipeline for EXIF orientations 6 and 8 (GitHub Issue #2) (v0.5.2).
- Format-filling edge-to-edge Loupe viewport without artificial borders for 3:2 camera photos (v0.5.2).
- Protocol concurrency throttling (2 concurrent full-res permits) and stale request pruning (v0.5.2).
- Windows compilation hardening, Win32 API RFC 3484 compliance, and volume path normalization (v0.5.2).
- Native Fujifilm RAW (
.raf) header parsing and universal fallback safety net for all proprietary RAW formats (v0.5.1). - Panasonic Lumix (
.rw2) and Olympus (.orf) fast-path single-read header extraction (v0.5.1). - Persistent local disk cache architecture (64 MB chunk containers with single-seek byte-range retrieval and SQLite catalog) (v0.5.0).
- Instant sub-2ms embedded JPEG extraction from CR2, CR3, ARW, DNG, NEF, and PEF (v0.5.0).
Download & Installation
macOS (Apple Silicon & Intel)
- Download
RapidReady_0.5.4_universal.dmg. - Open the
.dmgand drag RapidReady into your Applications folder. - First Launch Note: If macOS Gatekeeper shows a warning because RapidReady is an open-source project without a paid developer certificate, run this command once in Terminal:
(Or right-click
xattr -cr /Applications/RapidReady.app
RapidReady.appin Applications and select Open).
Windows (x64)
- Download
RapidReady_0.5.4_x64-setup.exe. - Run the installer (no administrator privileges required).
- SmartScreen Note: Click More info and then Run anyway if prompted by Windows SmartScreen.
RapidReady v0.5.3
RapidReady v0.5.3 — Technical EXIF Inspection, Camera Harmonization & Scan Precision
Build 0168 · Released on October 24, 2026
RapidReady v0.5.3 delivers deep technical EXIF inspection, intelligent camera make/model harmonization, crop-sensor 35mm equivalent focal length detection, lens specification fallbacks, and a collapsible extended details drawer. It also resolves GitHub Issue #3 by introducing high-precision sub-second transfer rates for slow NAS archives and large video files.
🌟 Key Achievements since v0.5.0
Since the milestone release v0.5.0, RapidReady has evolved into an ultra-fast, professional ingest and culling companion for photographers managing hundreds of thousands of RAW files:
- ⚡ Persistent Local Disk Cache (Picasa & Lightroom Architecture): Packed 64 MB binary chunk containers combined with a high-concurrency SQLite WAL catalog on local NVMe disk. Enables 100% offline-first 60 FPS grid browsing across 100,000+ high-resolution RAWs with sub-millisecond retrieval times (
< 0.5 ms) and zero network latency on SMB/NAS shares. - 🚀 Speculative L1 RAM Pre-Warming & Live Buffer Bubbles: Proactive lookahead caching (+3 rows in Grid, +1–2 images in Loupe View) with visual buffer indicators (
▲/▼and◀/▶) for fluid, stutter-free navigation. - 📷 Universal Camera RAW Safety Net: Sub-millisecond direct header extraction across Canon (CR2, CR3), Sony (ARW), Nikon (NEF), Fujifilm (RAF), Olympus/OM System (ORF), Panasonic Lumix (RW2), Pentax (PEF), Sigma (X3F), and Adobe/Ricoh (DNG) with an intelligent fallback safety net guaranteeing 100% preview availability without blank tiles.
- 🔄 Orientation Synchronization across All Views: Zero-latency bitstream-level EXIF orientation injection (0.001 ms) ensures portrait orientations (EXIF 6 & 8) render consistently across Grid thumbnails, Filmstrip, and Loupe view without lossy re-encoding.
- 🖥️ Large-Display Viewport Scalability: Expanded 256-request cancellation window for ultra-dense 4K/5K viewports, post-semaphore fast-cache re-checks (0 ms), and targeted archive rebuilds protecting other cached catalogs from eviction.
🔍 What's New in v0.5.3
1. Deep Technical EXIF Inspection & Camera Harmonization
- Intelligent Camera Make & Model Fusion: Automatically merges manufacturer and model strings, strips corporate legal suffixes (
CORPORATION,COMPANY, LTD.), harmonizes brand casing (Sony,Fujifilm,Nikon,Canon,Olympus,Ricoh), eliminates redundant brand repetitions (e.g.Canon EOS 6D), and preserves mobile devices (iPhone 13 Pro). LensSpecificationFallback (Tag0xA432): When camera firmware omitsLensModel, RapidReady automatically decodes focal length and aperture ranges into standard photographer notation (e.g.24-70 mm f/2.8).- 35mm Equivalent Focal Length Indicator: Crop sensor captures automatically show the 35mm equivalent focal length inline (e.g.
10.4 mm (28 mm eq.)/(28 mm KB)), while full-frame cameras maintain clean single-focal-length notation. - Extended Technical Shooting Parameters (0 ms Additional I/O): Single-pass extraction directly from the opened header:
- Exposure Program (with automatic bracket detection:
· Bracket) - Metering Mode (Multi-Segment, Center-Weighted, Spot, Partial)
- Flash Mode (fired, fill flash, red-eye reduction, bounce)
- White Balance (Auto, Daylight, Shade, Tungsten, Custom Kelvin)
- Color Space (sRGB, Adobe RGB)
- Focus Distance, Digital Zoom, Serial Numbers & Sub-Second capture timestamps (
subsec_time).
- Exposure Program (with automatic bracket detection:
2. Collapsible "Extended Details" Drawer in Inspector
- Integrated directly into the Camera Card with persistent toggle state (
cameraDetails_open). - Shows a compact monospace summary badge (
M · BKT · sRGB) when collapsed. - Expands into an organized, high-contrast 2-column key-value grid with intelligent empty-row suppression.
- Full technical EXIF resolution is seamlessly passed through during Loupe View navigation for instant inspection.
3. Sub-1.0 Photo/s Transfer Rates (GitHub Issue #3)
-
Dynamic Decimal Rate Formatting: Eliminates misleading
0 photos/sor0.0 photos/sreadouts on slow NAS shares or large video files:- Rates
$\ge 10$ : Integer display (12 photos/s) - Rates between
$0.1$ and$10$ : One decimal (1.4 photos/s) - Low rates
$< 0.1$ : Two decimals (0.05 photos/s)
- Rates
- Hardened Monotonic Rolling Window: Preserves older reference samples during multi-second transfers, preventing buffer starvation and ETA spikes.
-
Instant Fallback Rate: Uses
avgItemsPerSecas an immediate fallback whenever the momentary rolling rate drops to 0 during large single-file processing.
4. i18n & User Experience Refinements
- Fully synchronized Guided Tour reset and settings descriptions across German and English interfaces.
- Localized video poster frame indicators and refined tooltip text.
📥 Download & Installation
macOS (Apple Silicon & Intel)
- Download
RapidReady_0.5.3_universal.dmg. - Open the
.dmgand drag RapidReady into your Applications folder. - First Launch Note: If macOS Gatekeeper shows a warning because RapidReady is an open-source project without a paid developer certificate, run this command once in Terminal:
xattr -cr /Applications/RapidReady.app
(Or right-click RapidReady.app in Applications and select Open).
Windows (x64)
- Download RapidReady_0.5.3_x64-setup.exe.
- Run the installer (no administrator privileges required).
- SmartScreen Note: Click More info and then Run anyway if prompted by Windows SmartScreen.
RapidReady v0.5.2
RapidReady Release Notes (v0.5.0 – v0.5.2)
[0.5.2] – 2026-10-18 (Build 015E)
Performance, stability, and polish release restoring blazing-fast speculative RAM pre-caching with live buffer indicators, synchronizing thumbnail and inspector orientations across all camera portrait orientations (GitHub Issue #2), providing edge-to-edge format-filling Loupe rendering, concurrency-governed full-resolution streaming, canonical volume path normalization, cross-platform Windows compilation hardening, and sanitized EXIF camera body metadata.
Added & Restored
- Cross-Platform & Windows Build Hardening (
metadata_resolver.rs,thumbnail.rs,lib.rs):- RFC 3484 (
unsafe_extern_blocks) Compliance: Updated Win32 API extern block inmetadata_resolver.rstounsafe extern "system"and macOS bindings inlib.rstounsafe extern "C", ensuring error-free compilation on modern Rust toolchains on Windows. - Compiler Warning Elimination: Scoped macOS-specific ImageIO variables in
thumbnail.rsto#[cfg(target_os = "macos")], eliminating compiler warnings across non-macOS platforms.
- RFC 3484 (
- Viewport Scalability & Large-Display Grid Optimization (
lib.rs,thumbnail.rs,GridThumbnailItem.tsx):- Scalable 256-Request Sequence Window: In
lib.rs, expanded the proven protocol handler lookahead cancellation window from 48 to 256. Prevents high-density grid viewports (e.g. 13x13 to 18x15 = 169–270 tiles) on large displays from prematurely aborting visible images with HTTP 499 while reliably dropping requests when the user scrolls past. - Post-Semaphore Fast-Cache Re-check: In
lib.rs, requests re-checkget_cached_preview_jpeg_fastimmediately after acquiring a semaphore permit. If an image was already cached by a concurrent request or background worker during the wait, it is served instantly in 0ms without touching the NAS. - Realtime Progress Tracking During Viewport Loading: Implemented
wait_while_viewport_active_with_pollinthumbnail.rs. While background workers yield decoding priority to interactive viewport requests, they now poll the active viewport cache every 200ms, immediately retiring items cached byrr-image://and firingon_progresslive. The info dialog counter advances smoothly in real time instead of freezing. - Resilient Grid Retry Backoff: In
GridThumbnailItem.tsx, increased retry attempts from 6 to 25 with a throttled backoff (Math.min(1500, 350 * (retryCount + 1))), ensuring heavy RAW folders on slow network shares never abandon visible tiles.
- Scalable 256-Request Sequence Window: In
- Prevent Global ChunkCache Wipe & Isolated Invalidation (
chunk_cache.rs,commands.rs,libraryStore.ts):- Targeted Rebuild Invalidation: Removed global
chunk_cache.clear_cache()fromrebuild_archive_catalog. Rebuilding a single catalog now targets exclusively that archive's cache keys viaremove_entries_for_keys, completely protecting all other SSD and NAS archives from accidental cache eviction. - Explicit Cache Reset Sync: Hardened
clear_disk_cacheto executereset_all_fully_indexed_flags()acrossarchive_meta, ensuring catalog metadata stays 100% in sync whenever the user manually clears the disk cache. - Cooperative Viewport Throttling in Delta-Sync: In
sync_archive_delta, added cooperative pauses (wait_while_viewport_active) every 64 directory entries, prioritizing visible Grid and Loupe thumbnail requests. - De-prioritized Delta-Sync Launch: Delayed background delta reconciliation on archive load by 2 seconds in
libraryStore.ts, giving initial viewport tiles unrestricted SSD/network throughput. - Grid Streaming Chunk Deduplication: Hardened
appendImageChunkinlibraryStore.tswith identity-map deduplication, completely eliminating duplicate tiles during streaming scans. - Legacy Black RAW Chunk Invalidation: Added
is_legacy_black_raw_chunkto automatically heal corrupt/all-black 544×720 fallback thumbnails on read, replacing them on-the-fly with authentic camera previews.
- Targeted Rebuild Invalidation: Removed global
- Speculative RAM Viewport Caching & Live Visual Buffer Indicators (
thumbnail.rs,LibraryGrid.tsx,LoupeViewer.tsx):- L1 RAM Pre-Warming Architecture: Introduced
is_thumbnail_ram_cachedinthumbnail.rsto clearly differentiate between the high-speed in-memory L1 LRU cache (THUMBNAIL_CACHE) and the persistent on-disk L2 chunk cache (chunk_cache.rs). - Local SSD-to-RAM Streaming: In
warm_thumbnail_cache_with_progress, pre-cached thumbnails resident on SSD in the chunk cache are proactively and asynchronously streamed into L1 RAM in< 0.5 mswithout any SMB/NAS network I/O, guaranteeing instant 60 FPS scrolling and zero-latency grid browsing. - Grid View Lookahead Restored: Removed the erroneous
isFullyIndexedgate inLibraryGrid.tsx, re-enabling automatic lookahead preloading (+3 rows in scroll direction, 1 row behind) during 150 ms scroll-settle pauses for fully indexed archives. - Live RAM Buffer Bubbles Restored: Re-enabled floating dark-glassmorphism buffer count badges indicating cached thumbnails in RAM (
▲ top / ▼ bottomin Grid View;◀ left / ▶ rightin Loupe/Filmstrip View). - Optimized Full-Res Loupe Warmup: Restricted scale 100 Loupe warmup to the immediate next 1–2 photos in the culling direction, eliminating network bandwidth saturation when culling high-resolution RAW archives over NAS shares.
- L1 RAM Pre-Warming Architecture: Introduced
- Older TIFF RAW Thumbnail Extraction (Canon Digic II / Olympus ORF) (
thumbnail.rs):- 16-Bit SHORT Compression Tag Parsing: Resolved an issue where older camera firmwares (such as Canon EOS 350D / Digic II and early Olympus/TIFF models) left uninitialized stack memory in the upper 16 bits of TIFF Tag
0x0103(Compression). Previously read as a 32-bit integer, this resulted in erroneous values (e.g.4292804614instead of6), causing the valid 1536×1024 JPEG preview in IFD0 to be discarded and rendering an empty tile in Grid View while Loupe View rendered correctly. - In-Buffer Candidate Validation: Ensured candidate thumbnail streams within the header slice are strictly verified to begin with standard JPEG markers (
FF D8) and discard non-viewable Bayer sensor streams (SOF3 /0xC3). - Full Compatibility: Fix operates purely in the in-memory extraction pipeline with 100% backward compatibility for all existing archive catalogs and chunk caches.
- 16-Bit SHORT Compression Tag Parsing: Resolved an issue where older camera firmwares (such as Canon EOS 350D / Digic II and early Olympus/TIFF models) left uninitialized stack memory in the upper 16 bits of TIFF Tag
- Thumbnail & Inspector Orientation Synchronization (GitHub Issue #2) (
thumbnail.rs):- Consistent Orientation Pipeline: Resolved an issue where portrait photos with EXIF orientation 6 or 8 without manual
.rrdatarotation sidecars diverged between Grid thumbnails (unrotated 0°) and the Inspector/Loupe view (rotated 90°). - Slow-Path Metadata Preservation: Ensured that on the slow thumbnail generation path, effective EXIF orientation is preserved and re-injected via
inject_orientation_into_jpegwhen downscaling large preview JPEGs (e.g. Canon CR2 5 MB previews). - macOS ImageIO Direct-Store Orientation Injection: Corrected macOS
extract_thumbnail_from_databehavior by injecting effective orientation tags into downscaled thumbnails, ensuring perfect parity between Grid tiles, Filmstrip thumbnails, and Loupe view. - Automated Regression Test: Added
test_issue_2_thumb_and_inspector_orientation_consistencyto verify identical orientation output across Grid thumbnails and Inspector previews.
- Consistent Orientation Pipeline: Resolved an issue where portrait photos with EXIF orientation 6 or 8 without manual
- Edge-to-Edge Format-Filling Loupe Viewer (
ZoomableImage.tsx):- Updated non-zoomed photo viewport styling to
width: 100%,height: 100%withobject-contain, ensuring standard 3:2 camera photos properly utilize the full display viewport area without artificial letterboxing or vertical borders.
- Updated non-zoomed photo viewport styling to
- Canonical Volume Path Normalization (
archive_catalog.rs,lib.rs):- Hardened
normalize_canonical_pathon macOS to strip leading double slashes (//Volumes/...), preventing path mismatches between SQLite catalog lookup, chunk cache key hashing, and webview image protocol requests.
- Hardened
- Full-Res Viewport Semaphore & Request Pruning (
lib.rs):- Added
FULLRES_SEMAPHORE(2 concurrent permits) to prevent concurrent 30–50 MB RAW preview reads from saturating network sockets during rapid arrow key navigation. - Proactively discards stale requests in the protocol handler when requests fall >48 images behind the active viewport.
- Added
- Camera Body & Lens Model Sanitization (
metadata_resolver.rs):- Added robust string sanitization for camera make, body model, and lens tags, stripping garbage control characters, unprintable ASCII bytes, stray quotes, and dangling punctuation.
- Thumbnail Placeholder & Grid Polish (
GridThumbnailItem.tsx,FilmstripThumbnailItem.tsx,LibraryGrid.tsx):- Implemented
#161619placeholder styling with smooth opacity fade-in transition and emptyalt=""attributes. - Decoupled
setGridScrollTopfrom synchronousonScrollinto a 150 ms idle debounce, eliminating micro-stutters during high-speed trackpad scrolling.
- Implemented
- Natural Top-to-Bottom Indexing Queue Order (
thumbnail.rs):- Sorted the background thumbnail queue so
.pop()extracts items in natural top-to-bottom reading order, ensuring visible top rows are indexed first.
- Sorted the background thumbnail queue so
- Progress Counter 100% Clamp (
ArchiveScanBanner.tsx):- Clamped the archive scanning percentage to
99%until every file (including videos and complex media) is fully indexed, eliminating the confusing pause at 100% before completion.
- Clamped the archive scanning percentage to
[0.5.1] – 2026-10-16 (Build 013B)
Maintenance and compatibility release adding native Fujifilm RAW (.raf) header parsing, a universal fallback safety net for all camera RAW formats (preventing blank grid tiles on exotic/proprietary containers), fast Panasonic Lumix (.rw2) and Olympus (.orf) tag support, and responsive UI layout fixes for the archive scanning progress banner.
Fixed & Imp...
RapidReady v0.5.1
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 onelseek+readsystem 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-RAWsignatures 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.
- Added dedicated RAF header parsing recognizing
-
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.
- 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
-
Fast-Path Camera Tags (New in v0.5.1):
- Added native single-read header extraction for Panasonic Lumix RW2 (
0x002E/0x002FJpgFromRaw) and Olympus/OM System ORF (0x0280PreviewImage+IIRO/IIRScapture date magic).
- Added native single-read header extraction for Panasonic Lumix RW2 (
-
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$> 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
fsyncoverhead 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) toleft-0with arrow pointer atml-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-fullpreventing container overflows. - Expanded hover trigger encompassing phase pill,
(?)icon, and the photo progress counter.
- Realigned the floating throughput and performance statistics card from centered (
- 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.
RapidReady v0.5.0
RapidReady v0.5.0 — Persistent Chunk Cache, High-Res RAW Engine & Smooth NAS Workflows
RapidReady 0.5.0 is a major milestone release introducing an offline-first Persistent Local Disk Cache inspired by Google Picasa and Adobe Lightroom (packaged binary chunk container architecture indexed by SQLite for 60 FPS grid browsing across 100,000+ images), network-optimized in-process header extraction for NAS/SMB shares, high-resolution Canon CR2 preview extraction with differentiated in-memory downscaling, zero-latency Loupe View viewport debouncing, and high-throughput Phase 2 I/O smoothing for fast NVMe SSDs.
🚀 Highlights & Key Changes
🗄️ Persistent Local Disk Cache (Picasa & Lightroom Model)
-
Binary Chunk Container Architecture (
chunk_XXXX.bin): Thumbnails are sequentially packed into 64 MB rolling binary blobs on local NVMe storage (~/Library/Caches/de.rapidready.app/on macOS,%LOCALAPPDATA%\RapidReady\Cacheon Windows). Completely eliminates inode exhaustion, APFS/NTFS filesystem fragmentation, and random seek penalties across 100,000+ photos. -
Single-Seek
$O(1)$ Byte-Range Reads: Retrieving any cached thumbnail requires exactly onelseek+readsystem call, delivering sub-millisecond thumbnail loading. -
SQLite Catalog Index (
archive_catalog.sqlite): Maps file paths, mtimes, sizes, orientations, and scales to chunk byte offsets in high-concurrency WAL mode. - 100% Offline-First Browsing: Once an archive is indexed, photo grid and filmstrip are served 100% locally from NVMe at 60 FPS without waking sleeping NAS disks.
- Automatic Incremental Delta Sync: Background scans detect added, modified, or deleted files on archive reconnection and update entries incrementally without full rescans.
📷 Canon CR2 High-Res Preview & Differentiated In-Memory Downscaling
-
Hardened TIFF Strip Parser: Validates
Compression == 6 || 7tags, safely discarding uncompressed raw Bayer sensor data (e.g. 860 KB IFD2 slice) and giant sensor streams (>8 MB). - Extended 8 MB Preview Ceiling: Successfully captures Canon CR2's full-sensor IFD0 preview (5472×3648, 2.5–5.5 MB) instead of falling back to the 160×120 micro-thumbnail.
-
Differentiated In-Memory Downscaling:
- Medium camera previews
$\le 1.5,\text{MB}$ (Sony ARW 504 KB, Canon CR3 400 KB, Ricoh DNG 54 KB) are direct-stored with 0 ms CPU overhead. - Large full-sensor previews
$> 1.5,\text{MB}$ (Canon CR2) are downscaled in-memory via Apple ImageIO in ~20 ms to 720px thumbnails (~80–120 KB), keeping the local chunk cache compact (1 GB instead of 35 GB for 10,000 images) while keeping the grid razor-sharp. - Full sensor resolution is strictly preserved for Loupe View and 100% Zoom (
scale >= 100).
- Medium camera previews
⚡ Loupe View Viewport Debouncing & Network Cancellation
- 100 ms Viewport Debouncing: Rapid arrow navigation (
<--/-->) or fast double-clicking immediately jumps the filmstrip selection and bottom counter (0 ms feedback) while debouncing the heavy central viewport, skipping intermediate frames over slow NAS shares. - Proactive Network Abort: Unmounting images instantly cuts in-flight network connections (
img.onload = null; img.src = ''; canceled = true;), preventing queue congestion on network mounts.
🏎️ Phase 2 Throughput Smoothing & SSD Responsiveness
- Deferred Disk Flushes: Removed synchronous
fsyncon every individual 50 KB thumbnail write inchunk_cache.rs, deferring flushes to 64 MB chunk boundary rollover and leveraging the OS page cache for butter-smooth NVMe write performance. - Paced IPC Event Delivery: Replaced unthrottled burst reporting (
done % 10 == 0) with a paced 150 ms (~6.6 Hz) reporting interval, completely eliminating React main-thread starvation and UI freezing on fast NVMe SSDs. - Cooperative CPU Scheduling: Worker threads yield execution (
std::thread::yield_now()) to ensure interactive UI responsiveness during heavy background indexing. - Accurate Live Transfer Rates: Fixed speed calculation by transmitting true accumulated byte counters (
processed_bytes), accurately displaying real MB/s throughput in the scan progress card.
🎨 UI Polish & Contrast Accessibility
- Format Badges in Grid View: Refined background translucency and typography for format pills (
JPG,RAW,VID), ensuring crisp, high-contrast readability against both light and dark photo backgrounds.
⚠️ Known Issues
- Fujifilm RAW (
.raf) Grid Thumbnails: In Grid View,.raffiles currently do not render micro-thumbnails. Full-resolution preview and metadata inspection in Loupe View and the Inspector work correctly. A dedicated RAF header parser is scheduled for the upcoming point release (tracked inROADMAP.md).
📦 Compatibility & System Requirements
- macOS: Universal Binary (Apple Silicon M1/M2/M3/M4 & Intel x64), macOS 11+
- Windows: 64-bit (x64), Windows 10/11
RapidReady v0.4.5
RapidReady v0.4.5
RapidReady v0.4.5 brings major performance optimizations, deeper metadata inspection, and enhanced collection management. It introduces speculative RAM viewport caching with live visual buffer bubbles, a comprehensive technical EXIF inspection card in the Inspector, event-loop throttling for ultra-fast NVMe/APFS archive scans, library-scoped virtual collections with RapidRAW parity, and export compatibility for photos with embedded HDR gain maps.
⚡ What's New & Highlights
🚀 Speculative RAM Viewport Caching & Live Buffer Badges
- Proactive Loupe Preloading: Background preloading of +1 to +5 images in the flip direction (and 1 image backwards buffer) directly in Rust's worker threadpool (
spawn_blocking). Prewarms Scale 2 (720px preview) and Full-Res Preview (scale 100) concurrently. - Proactive Grid Preloading: Lookahead preloading of +3 rows ahead (and 1 row behind) during 150ms idle pauses.
- Live Buffer Count Badges: Floating dark-glassmorphism count badges indicating cached thumbnails in RAM (
▲ top / ▼ bottomin Grid view;◀ left / ▶ rightin Loupe view). - Zero-Latency Invalidation: Atomic cancellation tokens (
WARMUP_TOKEN) instantly abort running preloads on user scroll or navigation to preserve 100% UI responsiveness.
🔍 Comprehensive Technical EXIF & Camera Metadata Hub
A dedicated, clean exposure details card in the Inspector panel:
- Exposure Settings: Clean shutter speed (e.g.
1/250s,2.5s) and aperture (f/2.8) with decimal rounding limits, plus ISO. - Exposure Program: Manual (M), Aperture Priority (Av/A), Shutter Priority (Tv/S), Program (P), Creative and Scene modes.
- Metering Mode: Multi-segment / Evaluative Matrix, Center-Weighted Average, Spot, Partial.
- Flash State: Fired vs. Did not fire, with fill flash and red-eye reduction detection.
- White Balance & Color Temperature: Auto vs. Manual/Preset with Kelvin color temperature.
- Optics & Focal Length: 35mm equivalent focal length (
FocalLengthIn35mmFilm) and subject distance to focal plane in meters. - Color Pipeline: Color space (sRGB, Adobe RGB, Display P3, Uncalibrated) and exposure bias / compensation (
+0.7 EV). - Camera & Lens Specification: Clean camera make/model and optical lens specification display.
📁 Library-Scoped Virtual Collections & Lifecycle Protection
- Library-Scoped Sidebar Filtering: Collections are now scoped to the active library root (
libraryRoot), ensuring sidebar album lists strictly match the active library and eliminating empty collection views when switching between locations. - RapidRAW Central Storage Interoperability: Maintains full compatibility with RapidRAW's central
albums.jsonvia atomic Last-Write-Wins (LWW) synchronization. - Temporary Location Protection Dialog: Prompts users when navigating away from temporary locations containing curated collections, offering to save the folder as a permanent library location, discard temporary collections, or cancel the switch.
🛡️ High-Speed SSD Scan Throttling & UI Fluidity
- Ingest Event-Loop Protection: Batched chunk ingestion during active directory scans buffers incoming 100-file chunks and throttles store updates (max once every 200ms or 500 images) to eliminate main-thread starvation and UI freezing on fast NVMe SSDs and APFS volumes.
- Continuous Progress Counter: Decoupled floating scan banner counter (
files_foundand transfer rate) updates smoothly and continuously without stuttering. - Deterministic Order: Restored 100% deterministic alphabetical path sorting across all archive views.
🛠️ HDR Gain Map Export Compatibility & UI Ergonomics
- HDR Gain Map Export Fix: Resolved export failures and image corruption for photos containing embedded HDR gain maps (Apple, Adobe, and Ultra HDR / ISO 21496-1 gain map metadata) in JPEG and RAW companion files.
- Splitter Ergonomics: Expanded hit-target grab zones for panel splitters and scroll handles, preventing cursor slipping and eliminating layout conflicts between scrollbars and resizers.
- Modal Hierarchy: Resolved z-index hierarchy and splashscreen timing preventing modals from blocking startup.
📥 Installation Notes
macOS
- Download
RapidReady_0.4.5_aarch64.dmg(Apple Silicon) or Intel build. - Open the
.dmgand drag RapidReady into your Applications folder. - First launch: If macOS Gatekeeper shows an unidentified developer warning, run:
xattr -cr /Applications/RapidReady.app
Or: Right-click (Control-click) RapidReady.app in Applications, select Open, and confirm.
Windows (x64)
- Download RapidReady_0.4.5_x64-setup.exe.
- Run the installer (no admin privileges required).
- If Windows SmartScreen appears, click More info → Run anyway.
Full Changelog: v0.4.0...v0.4.5
RapidReady v0.4.0
RapidReady 0.4.0 — The Sharpness & Collections Release 🚀
We are excited to announce RapidReady 0.4.0! With this milestone release, we are officially dropping the -beta designation. Version 0.4.0 delivers professional-grade sharpness verification with GPU-accelerated Focus Peaking, powerful Virtual Collections with drag-and-drop curation and export, instant import scan cancellation, and automatic filesystem reconciliation for external companion apps.
🔍 Dual-View Focus Peaking (Powered by WebGL & darktable Algorithm)
Checking critical focus across high-resolution photos is now instantaneous:
-
Dual-View Inspection: Toggle Focus Peaking on and off anytime using the
Fshortcut — active both in the 1:1 Loupe Viewer and the Inspector preview panel. -
Difference-of-Gradients Bandpass Filter: Unlike naive Sobel/high-pass filters that trigger on blurry background edges or bokeh highlights, RapidReady uses a WebGL shader inspired by darktable's bandpass metric. By measuring gradients across two spatial scales (
$\Delta = 1\text{px}$ vs.$\Delta = 2\text{px}$ ), it isolates true optical micro-contrast at the focal plane while ignoring out-of-focus background transitions and high-ISO sensor noise. - Customizable Appearance: Choose between 4 signal colors (Neon Green, Vivid Red, Electric Cyan, Bright Yellow) and 3 sensitivity levels (High, Normal, Low).
- Buttery Smooth: Fully GPU-rendered with zero lag during 120 FPS panning, zoom transitions, and minimap dragging.
📂 Virtual Collections (Albums) & Drag-and-Drop Sequencing
Organize your photographic projects without copying files or duplicating disk space:
- Hierarchical Collections Tree: Create albums and nested collections directly in the left sidebar.
- Manual Storyboard Sequencing: Arrange the order of images in any collection via drag-and-drop.
- High-Precision Export: Export selected collections with standard naming or sequential numbering (
001_Shooting.jpg) with automatic EXIF and metadata injection. - Import-Time Tagging: Assign ingested media to collections directly inside the Import wizard.
- Safe Deletion Guardrails: Clear separation between non-destructively removing an image from an album vs. deleting it from disk.
⚡ Import Workflow & Media Engine Enhancements
- Instant Native Scan Cancellation: Dedicated
[ ✕ Cancel ]button with real-time background thread termination in the Rust core. Halts directory traversal immediately without UI lockups. - Format Quick-Filter Pills: Filter mixed media cards in Step 2 with a single click (e.g. ingest only RAWs, only JPGs, or only Videos), with instant real-time recalculation of required target storage.
🔄 External Sync & Workspace Ergonomics
- Automatic Filesystem Reconciliation: RapidReady automatically reconciles changes made by external companion software (such as RapidRAW or external file managers) to keep folders and sidecars in perfect sync.
- View Entire Archive: A dedicated one-click toggle in the sidebar flattens and displays all images across all subfolders in the archive.
- Interactive Onboarding Tour: A guided visual walk-through introduces new users to ingestion, culling shortcuts, and inspector workflows.
- UI Polish & Splitter Resizing: Enlarged 7-pixel hit targets on sidebar dividers prevent cursor slipping, and virtual grid layout jitter has been eliminated.
⌨️ New Shortcuts Cheatsheet
| Key | Action |
|---|---|
F |
Toggle Focus Peaking Overlay (Loupe & Inspector) |
Cmd/Ctrl + 1 |
Navigate to Import View |
Cmd/Ctrl + 2 |
Navigate to Library View |
Cmd/Ctrl + , |
Open Settings |
📥 Installation & Download
| Platform | Installer |
|---|---|
| macOS (Apple Silicon) | RapidReady_0.4.0_aarch64.dmg |
| Windows (x64) | RapidReady_0.4.0_x64-setup.exe |
macOS Note: Run
xattr -cr /Applications/RapidReady.appafter installing if prompted by Gatekeeper.
Windows Note: Click More info → Run anyway if prompted by SmartScreen.