Skip to content

Releases

RapidReady v0.6.2

Choose a tag to compare

@on370 on370 released this 09 Nov 20:02

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 .rrdata and .xmp sidecars.
  • 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 NSFileManager without AppleScript Finder freezes (v0.6.1).
  • Comprehensive companion sidecar deletion removing both .rrdata and .xmp files 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: undefined preloader crashes via safe index clamping (v0.6.1).
  • Derived safeActiveIndex and 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/.xmp sidecars 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 STD and darktable DT with 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 .rrdata and Adobe .xmp sidecars 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 NSFileManager Integration (system_cmds.rs): Replaced synchronous AppleScript Finder events (DeleteMethod::Finder) with Cocoa's NSFileManager.trashItemAtURL (DeleteMethod::NsFileManager). Bypasses /usr/bin/osascript sub-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 serve rr-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 /> in main.tsx and <LoupeViewer /> in LibraryCenter.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 object in LoupeViewer.tsx by 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 in LibraryCenter.tsx passed synchronously to LibraryGrid, LoupeViewer, FullscreenViewer, and keyboard shortcut handlers.
  • Forward Index Shift: Updated removeImages in libraryStore.ts to shift activeImageIndex forward 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 scrollIntoView auto-scrolling from TreeView during grid navigation.
  • Ghost Event Suppression: Suppressed false-positive sidecar-updated events by checking that both sideca...
Read more

RapidReady v0.6.1

Choose a tag to compare

@on370 on370 released this 06 Nov 15:57

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 NSFileManager without AppleScript Finder freezes.
  • Comprehensive companion sidecar deletion removing both .rrdata and .xmp files 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: undefined preloader crashes via safe index clamping.
  • Derived safeActiveIndex and 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/.xmp sidecars 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 STD and darktable DT with 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 NSFileManager Integration (system_cmds.rs): Replaced synchronous AppleScript Finder events (DeleteMethod::Finder) with Cocoa's NSFileManager.trashItemAtURL (DeleteMethod::NsFileManager). Bypasses /usr/bin/osascript sub-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 serve rr-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 /> in main.tsx and <LoupeViewer /> in LibraryCenter.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') in LoupeViewer.tsx by 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 in LibraryCenter.tsx (Math.min(Math.max(activeImageIndex, 0), displayedImages.length - 1)) passed synchronously to LibraryGrid, LoupeViewer, FullscreenViewer, and keyboard shortcuts.
  • Dynamic Forward Shift: Updated removeImages in libraryStore.ts to shift activeImageIndex forward 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(): Added e.preventDefault() across all navigation shortcut branches (↑, ↓, ←, →, J, K) in useLibraryShortcuts.ts. Prevents the browser from defaulting to scrolling the folder tree sidebar if it was previously focused.
  • Calm Tree View: Removed disruptive scrollIntoView auto-scrolling from TreeView in LibraryLeftSidebar.tsx during 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 .rrdata and .xmp verify that both the sidecar (p.exists()) and image file (img_path.exists()) exist before dispatching sidecar-updated events, preventing phantom updates during rapid deletions.
  • System File Filtering: Watcher ignores .DS_Store and AppleDouble ._* files, and requires deleted files to lack extensions before recording them as removed_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' and isLoading: 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 Lightroom crs:* parameters, darktable history stacks, and RapidRAW adjustments).
  • Three Configurable Sidecar Modes:
    • RapidRAW Native (.rrdata) (Default): Writes native .rrdata with automatic fallback to .xmp if 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 .rrdata if present) with read fallback to .rrdata.
  • Filesystem mtime SSoT Resolution: When both .rrdata and .xmp exist 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 darktable DT (<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 on mtime.
  • NAS-Safe Bulk Sidecar Sync: On-demand synchronization tool in Settings to reconcile existing archives (20k+ files) between .rrdata and .xmp with 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 (.app on macOS, .exe on 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, darktable library.db XMP 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 = true when 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...
Read more

RapidReady v0.6.0

Choose a tag to compare

@on370 on370 released this 05 Nov 19:17

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 darktable DT (<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 Lightroom crs:* parameters, darktable history stacks, and RapidRAW adjustments).
  • Three Configurable Sidecar Modes:
    • RapidRAW Native (.rrdata) (Default): Writes native .rrdata with automatic fallback to .xmp if 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 .rrdata if present) with read fallback to .rrdata.
  • Filesystem mtime SSoT Resolution: When both .rrdata and .xmp exist 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 darktable DT (<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 on mtime.
  • NAS-Safe Bulk Sidecar Sync: On-demand synchronization tool in Settings to reconcile existing archives (20k+ files) between .rrdata and .xmp with 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 (.app on macOS, .exe on 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, darktable library.db XMP 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 = true when 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 IFD0 sits 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_rs to prevent false 404 preview errors.

Archive Deletion Reconciliation

  • Ghost Directory Cleanup: Added removed_dirs tracking to ArchiveDeltaResult and reconcile_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)

  1. Download RapidReady_0.6.0_universal.dmg.
  2. Open the .dmg and drag RapidReady into your Applications folder.
  3. 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)

  1. Download RapidReady_0.6.0_x64-setup.exe.
  2. Run the installer (no administrator privileges required).
  3. SmartScreen Note: Click More info and then Run anyway if prompted by Windows SmartScreen.

RapidReady v0.5.4

Choose a tag to compare

@on370 on370 released this 28 Oct 15:49

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 LibraryGrid mounted 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\0II and OM 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)

  1. Download RapidReady_0.5.4_universal.dmg.
  2. Open the .dmg and drag RapidReady into your Applications folder.
  3. 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)

  1. Download RapidReady_0.5.4_x64-setup.exe.
  2. Run the installer (no administrator privileges required).
  3. SmartScreen Note: Click More info and then Run anyway if prompted by Windows SmartScreen.

RapidReady v0.5.3

Choose a tag to compare

@on370 on370 released this 24 Oct 08:32

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).
  • LensSpecification Fallback (Tag 0xA432): When camera firmware omits LensModel, 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).

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/s or 0.0 photos/s readouts 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 $&lt; 0.1$: Two decimals (0.05 photos/s)
  • Hardened Monotonic Rolling Window: Preserves older reference samples during multi-second transfers, preventing buffer starvation and ETA spikes.
  • Instant Fallback Rate: Uses avgItemsPerSec as 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)

  1. Download RapidReady_0.5.3_universal.dmg.
  2. Open the .dmg and drag RapidReady into your Applications folder.
  3. 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)

  1. Download RapidReady_0.5.3_x64-setup.exe.
  2. Run the installer (no administrator privileges required).
  3. SmartScreen Note: Click More info and then Run anyway if prompted by Windows SmartScreen.

RapidReady v0.5.2

Choose a tag to compare

@on370 on370 released this 18 Oct 19:40

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 in metadata_resolver.rs to unsafe extern "system" and macOS bindings in lib.rs to unsafe extern "C", ensuring error-free compilation on modern Rust toolchains on Windows.
    • Compiler Warning Elimination: Scoped macOS-specific ImageIO variables in thumbnail.rs to #[cfg(target_os = "macos")], eliminating compiler warnings across non-macOS platforms.
  • 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-check get_cached_preview_jpeg_fast immediately 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_poll in thumbnail.rs. While background workers yield decoding priority to interactive viewport requests, they now poll the active viewport cache every 200ms, immediately retiring items cached by rr-image:// and firing on_progress live. 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.
  • Prevent Global ChunkCache Wipe & Isolated Invalidation (chunk_cache.rs, commands.rs, libraryStore.ts):
    • Targeted Rebuild Invalidation: Removed global chunk_cache.clear_cache() from rebuild_archive_catalog. Rebuilding a single catalog now targets exclusively that archive's cache keys via remove_entries_for_keys, completely protecting all other SSD and NAS archives from accidental cache eviction.
    • Explicit Cache Reset Sync: Hardened clear_disk_cache to execute reset_all_fully_indexed_flags() across archive_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 appendImageChunk in libraryStore.ts with identity-map deduplication, completely eliminating duplicate tiles during streaming scans.
    • Legacy Black RAW Chunk Invalidation: Added is_legacy_black_raw_chunk to automatically heal corrupt/all-black 544×720 fallback thumbnails on read, replacing them on-the-fly with authentic camera previews.
  • Speculative RAM Viewport Caching & Live Visual Buffer Indicators (thumbnail.rs, LibraryGrid.tsx, LoupeViewer.tsx):
    • L1 RAM Pre-Warming Architecture: Introduced is_thumbnail_ram_cached in thumbnail.rs to 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 ms without any SMB/NAS network I/O, guaranteeing instant 60 FPS scrolling and zero-latency grid browsing.
    • Grid View Lookahead Restored: Removed the erroneous isFullyIndexed gate in LibraryGrid.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 / ▼ bottom in Grid View; ◀ left / ▶ right in 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.
  • 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. 4292804614 instead of 6), 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.
  • 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 .rrdata rotation 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_jpeg when downscaling large preview JPEGs (e.g. Canon CR2 5 MB previews).
    • macOS ImageIO Direct-Store Orientation Injection: Corrected macOS extract_thumbnail_from_data behavior 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_consistency to verify identical orientation output across Grid thumbnails and Inspector previews.
  • Edge-to-Edge Format-Filling Loupe Viewer (ZoomableImage.tsx):
    • Updated non-zoomed photo viewport styling to width: 100%, height: 100% with object-contain, ensuring standard 3:2 camera photos properly utilize the full display viewport area without artificial letterboxing or vertical borders.
  • Canonical Volume Path Normalization (archive_catalog.rs, lib.rs):
    • Hardened normalize_canonical_path on macOS to strip leading double slashes (//Volumes/...), preventing path mismatches between SQLite catalog lookup, chunk cache key hashing, and webview image protocol requests.
  • 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.
  • 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 #161619 placeholder styling with smooth opacity fade-in transition and empty alt="" attributes.
    • Decoupled setGridScrollTop from synchronous onScroll into a 150 ms idle debounce, eliminating micro-stutters during high-speed trackpad scrolling.
  • 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.
  • 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.

[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...

Read more

RapidReady v0.5.1

Choose a tag to compare

@on370 on370 released this 16 Oct 09:16

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.

RapidReady v0.5.0

Choose a tag to compare

@on370 on370 released this 14 Oct 16:00

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\Cache on 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 one lseek + read system 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 || 7 tags, 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 $&gt; 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).

⚡ 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 fsync on every individual 50 KB thumbnail write in chunk_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, .raf files 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 in ROADMAP.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

Choose a tag to compare

@on370 on370 released this 07 Oct 06:15

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 / ▼ bottom in Grid view; ◀ left / ▶ right in 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.json via 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_found and 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

  1. Download RapidReady_0.4.5_aarch64.dmg (Apple Silicon) or Intel build.
  2. Open the .dmg and drag RapidReady into your Applications folder.
  3. 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)

  1. Download RapidReady_0.4.5_x64-setup.exe.
  2. Run the installer (no admin privileges required).
  3. If Windows SmartScreen appears, click More info → Run anyway.

Full Changelog: v0.4.0...v0.4.5

RapidReady v0.4.0

Choose a tag to compare

@on370 on370 released this 27 Sep 18:11

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 F shortcut — 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.app after installing if prompted by Gatekeeper.
Windows Note: Click More info → Run anyway if prompted by SmartScreen.