Releases: markyip/RAWviewer
Release list
v2.5
RAWviewer Release Notes
🚀 Version 2.5.0
Release Date: July 3, 2026
RAWviewer 2.5 is built for serious libraries — faster culling, smarter search, and a viewer that stays responsive from the first folder open to the ten-thousandth frame.
🚀 Key Feature Highlights
🎨 Gallery & View
- Gallery Zoom Slider — A sleek wedge-shaped zoom track with scroll anchoring: the top-left thumbnail stays locked on screen while you resize the grid.
- macOS HDR / EDR — See HDR stills and RAW the way they were meant to look on supported Mac displays (HEIC, AVIF, 16-bit TIFF, and RAW High Quality workflow). Embedded JPEG preview stays SDR when you want speed.
- Animated GIF & WebP — Play, scale, and browse animated files natively in single-image view.
- RAW recovery preview (P) — Press P for an instant shadow/highlight recovery preview on RAW/DNG — judge extreme contrast without waiting for a full export. Session-only, fit view.
- Clipping overlay (J) — Press J to see exactly what's clipping — red for blown highlights, blue for crushed shadows — on both RAW and in Compare mode.
👥 Culling & Comparison
- Burst Image Grouping — Rapid-fire sequences stack automatically by capture time. Double-click to expand and pick the keeper.
- Dual-Pane Compare (C) — Anchor vs. candidate, side by side. Promote (↑), reject to Discard (↓), or delete — with synced composition guides (G) and clipping overlays (J) on both panes. Space toggles synchronized zoom and pan across both panes; press F for focus overlays, then Space zooms each pane to its own AF/subject point for side-by-side sharpness checks.
🗺️ Maps & Location Search
- Interactive GPS Overlay (M) — A live map card for geotagged shots, with one-click Google Maps from the coordinate badge.
- Offline place search — 100,000+ cities and landmarks resolved locally during indexing. Search
city:tokyoorcountry:jpwith no internet — ever.
⚡ Performance at Scale
Built to stay fluid on 5k–10k+ image libraries, whether you're on a fast internal SSD or a slow external drive.
📦 Smarter cache
- WebP tiles — New cache writes are smaller and faster to read; size-based LRU keeps disk use in check.
- Your existing JPEG cache still works — no forced migration. Clear cache manually only if you want immediate WebP savings.
- One decode, many uses — Preview, grid, and thumbnail tiers fill from a single pass instead of reopening every file.
🤖 Background indexing that gets out of your way
- Two-phase indexing — Metadata first, then AI embeddings (Full). Search unlocks when indexing is ready for your edition (metadata on Lite; metadata + AI on Full).
- Scroll-aware — Indexing pauses while you scroll the gallery and yields to foreground navigation so arrow keys stay smooth.
⏱️ Snappier navigation
- Staggered prefetch — Switching photos cancels low-priority loads; full-res neighbors wait until the current frame paints.
- Off the UI thread — Sorting, heavy conversions, and metadata work move to background workers — fewer micro-stutters.
🪟 Windows polish
- Fixed a GPU hand-off race when returning to the gallery after large single-image views.
- Gallery scrollbar jumps load visible tiles immediately.
- Optional stable file picker:
RAWVIEWER_QT_FILE_DIALOG=1.
Gallery reliability (large folders)
- Folder switching — Layout and thumbnail loads reset per folder; scattered tiles and blank gaps after changing albums are gone.
- Huge folders — Gallery opens in capture-time (EXIF) order; the Gallery button appears once that sort finishes (instant when metadata is fully cached).
- Orientation-aware tiles — EXIF display orientation is applied consistently when thumbnails enter the gallery grid, so portrait shots keep correct framing when you jump scroll position or enter the gallery from single view.
RAWviewer 版本發布說明
🚀 版本 2.5.0
發布日期:2026 年 7 月 3 日
RAWviewer 2.5 為大型圖庫而生——更快的篩選、更聰明的搜尋,從第一個資料夾到第上萬張相片都保持流暢。
🚀 重點功能
🎨 圖庫與檢視
- 圖庫縮放滑桿 — 楔形縮放軌道搭配捲動錨定:拖曳時左上角縮圖固定在畫面上。
- macOS HDR / EDR — 在支援的 Mac 上以延伸動態範圍檢視 HDR 靜態與 RAW 高品質工作流程(HEIC、AVIF、16-bit TIFF)。內嵌 JPEG 工作流程仍為快速 SDR 預覽。
- GIF / WebP 動畫 — 單張檢視原生播放、縮放與瀏覽動畫檔。
- RAW 復原預覽(P) — 在 RAW/DNG 上按 P 即時預覽陰影/高光復原,無需等待完整匯出。僅本工作階段、符合模式。
- 裁切疊圖(J) — 按 J 標示過曝(紅)與死黑(藍);比較模式兩側皆可同步顯示。
👥 篩選與比較
- 連拍分組 — 依拍攝時間自動堆疊連拍;雙擊展開挑選最佳張。
- 雙欄比較(C) — 錨點 vs 候選並排;提升(↑)、拒絕至 Discard(↓)、刪除;可同步構圖輔助線(G)與裁切疊圖(J)。空白鍵切換兩側同步縮放與平移;按 F 顯示對焦框後,空白鍵可將左右各自縮放至該張的 AF/主體對焦點,方便比對銳利度。
🗺️ 地圖與地點搜尋
- GPS 地圖疊圖(M) — 含 GPS 相片的互動地圖;座標徽章一鍵開啟 Google Maps。
- 離線地點搜尋 — 背景索引解析 10 萬+ 城市與地標;可搜尋
city:tokyo、country:jp,完全離線。
⚡ 大資料夾效能
針對 5k–10k+ 張圖庫優化,內建 SSD 與外接慢碟皆適用。
📦 更聰明的快取 — 新寫入採 WebP、依大小 LRU;舊 JPEG 快取仍可用;單次解碼填滿多層縮圖。
🤖 背景索引 — 先中繼資料、再 AI 嵌入(Full);搜尋欄在對應版本索引就緒後解鎖;捲動圖庫時暫停索引、讓路給前景導覽。
⏱️ 更順的導覽 — 分段預載、切換相片取消低優先級載入;排序與重轉換移至背景執行緒。
🪟 Windows — 修正大圖單張後切回圖庫的 GPU 競爭;捲軸跳轉即時載入;可選 RAWVIEWER_QT_FILE_DIALOG=1 穩定檔案選擇器。
藝廊可靠性(大型資料夾)
- 切換資料夾 — 每個資料夾重設版面與縮圖載入。
- 大型資料夾 — 以 EXIF 拍攝時間排序;中繼資料已快取時 Gallery 按鈕幾乎即時出現。
- 方向感知縮圖 — 縮圖進入藝廊時一致套用 EXIF 顯示方向。
v2.4.1
RAWviewer Release Notes
🚀 Version 2.4.1
Release Date: June 20, 2026
Bug-fix release for Canon CR2/CR3 (and similar RAW) orientation and capture-date handling, plus memory safety on relaunch when session restore reopens a large folder. Treats gallery mixed orientation, single-image rotation, and out-of-memory on restart as separate issues.
Gallery — mixed portrait / landscape thumbnails
Some users saw some vertical shots correct and others sideways in the gallery after upgrading to v2.4. That pattern usually means old cached thumbnails or EXIF rows (from before v2.4 orientation fixes) sitting beside freshly warmed ones — not only a live warm-up clash (semantic vs gallery indexing, addressed in v2.4).
What's fixed in 2.4.1:
- EXIF cache validation — Persisted orientation is checked against LibRaw flip and embedded-JPEG orientation; stale
orientation=1rows for portrait Canon RAW are rejected and re-extracted. - Cache version bump (
sensor_meta_ver9) — Forces refresh of outdated EXIF metadata on upgrade. - Thumbnail load repair — When a cached gallery thumbnail's pixels don't match container orientation, it is corrected or dropped instead of reused.
If thumbnails still look wrong once: Run scripts/Launch/shell/clear_cache.sh (macOS) or clear_cache.bat (Windows), then reopen the folder. This clears mixed old/new cache in one step.
Single-image view — rotation unlike gallery
Gallery and single view used different preview paths: gallery favored embedded JPEG previews (with EXIF transpose); opening from gallery could force immediate full LibRaw decode with wrong container orientation on Canon CR2/CR3.
What's fixed in 2.4.1:
- Same preview pipeline — RAW thumbnails prefer LibRaw's embedded JPEG segment; byte-scan fallbacks apply container orientation after decode.
- Gallery → single — No longer skips straight to full-resolution LibRaw; uses the same progressive preview → full decode path as normal navigation.
- Unified orientation lookup — Single view uses
EXIFExtractor(LibRaw flip + embedded JPEG), not header-only exifread alone. - Canon CR2/CR3 metadata — When exifread returns sparse tags, pyexiv2 fills in orientation and DateTimeOriginal (also improves capture-date sorting).
Memory — relaunch / session restore (macOS & Windows)
On 8–16 GB machines, closing RAWviewer and reopening it could restore the last folder and file while full-resolution decode, neighbor prefetch, and AI/metadata indexing all started in the same second — sometimes killing the app (macOS jetsam, exit 137) or freezing Windows under heavy paging.
What's fixed in 2.4.1:
- Staged session restore — After the first preview paints, full decode for the current image waits ~2.5 s, then neighbor prefetch waits ~0.8 s more. Normal folder open and gallery navigation are unchanged.
- Preview vs full cache tiers — Full-resolution embedded JPEGs are stored separately from the smaller preview tier used for fit-to-window, reducing peak RAM during upgrades.
- macOS memory stats fallback — On newer macOS kernels where
psutilfails, RAM tier and cache pressure usesysctl+vm_statinstead of a fake 50% value.
What you might notice after relaunch: Fit view may stay on a fast preview for a few seconds before full quality; arrow-key navigation to the next file may be slightly slower for the first ~3 s. Space / double-click zoom to 100% still requests full resolution immediately.
If relaunch still fails on low RAM: Use Lite, set RAWVIEWER_DISABLE_SESSION_RESTORE=1, or temporarily disable semantic search — see README troubleshooting.
Tuning (optional):
| Variable | Default | Effect |
|---|---|---|
RAWVIEWER_SESSION_RESTORE_DEFER_PRELOAD |
1 |
Staged heavy loads after session restore |
RAWVIEWER_SESSION_RESTORE_FULL_DECODE_DELAY_MS |
2500 |
Delay before full decode on relaunch |
RAWVIEWER_SESSION_RESTORE_PRELOAD_DELAY_MS |
800 |
Extra delay before neighbor prefetch |
RAWVIEWER_DISABLE_SESSION_RESTORE |
0 |
Skip restoring last folder on launch |
Recommended test after upgrade
- Optional but best:
clear_cache.shonce (orientation cache refresh). - Open a folder of Canon (or other) portrait RAWs — gallery should be consistent.
- Click into single view — direction should match the gallery; full quality loads in the background.
- Relaunch test: Close RAWviewer, reopen the same session on a large RAW folder — app should stay up; check logs for
[SESSION] Deferring heavy loads until first paint.
v2.4
RAWviewer Release Notes
🚀 Version 2.4
Release Date: June 19, 2026
Highlights — new in 2.4
- RAWviewer Lite — A lighter edition for fast browsing and culling: smaller download, no AI model install, and gallery search by camera, ISO, date, GPS, and filename. On Windows, pick Lite in the installer; on Mac, use
RAWviewer-v2.4-macOS-Lite.zip. - One Windows installer —
RAWviewer_Setup.exeis all you need. In the wizard, choose Full (CUDA), Full (DirectML), or Lite — no more hunting for separate setup files. - Drag photos out — Drag a gallery thumbnail or a film-strip thumb to Explorer, Finder, Mail, WhatsApp (where supported), Lightroom, or any app that accepts files. Select several gallery photos first and drag once to export them all.
- Composition guides — Press G in single-image view to cycle overlays: rule of thirds, diagonals, or phi grid — handy for checking framing while you cull.
- Bookmarks — Star keepers per folder; filter the gallery to bookmarked shots only; share or slideshow your picks; works with gallery search (see below).
- Release highlights image — The GitHub release includes a new visual summary of v2.4 so you can see what's new at a glance before you download.
Introducing RAWviewer Lite
Lite is RAWviewer without the AI search engine — built for photographers who want the same fast viewer, gallery, and culling workflow, but prefer a smaller install and snappier loading over plain-language search.
What you keep (same as Full):
- Open folders of RAW and JPEG, gallery grid, film strip, fit / 100% zoom, histogram, focus overlay, composition guides (G)
- Drag photos out to Explorer, Finder, Mail, or your editor
- Bookmarks, Discard folder, keyboard shortcuts
- Gallery search by metadata — camera, lens, ISO, date, city, filename, and more (e.g.
camera:sony iso<800)
What Lite leaves out:
- Semantic (AI) search — you can't type
sunset on beachand have the app guess meaning; use metadata filters or your eyes instead - Face-based filters — no
has:face/peoplestyle queries - AI model download — no ~600 MB (Windows) or ~150 MB (Mac) model install
Why Lite feels faster and uses less disk:
- No background AI indexing eating CPU, GPU, and RAM while you browse
- Tuned prefetch so the next photos in the gallery and film strip load sooner when you scroll or arrow through a folder
- Smaller app footprint (~500 MB install vs ~1.5 GB+ for Full after models)
How to get Lite: On Windows, choose Lite in RAWviewer_Setup.exe. On Mac, download RAWviewer-v2.4-macOS-Lite.zip. Already on Full? You can install Lite side by side — they don't share the same shortcut name.
Not sure which to pick? Lite if you cull by eye and search by camera/date/location. Full if you want to describe photos in everyday words or filter by faces.
Bookmarks
- Mark keepers per folder — Press ↑ to toggle. In single view, click the star on the bottom-right bar too.
- Single-image view — White star = bookmarked; outline star = not bookmarked. Click the star or press ↑ to toggle either way.
- Gallery — Star badges on thumbnails and in the film strip. ↑ toggles the current selection; with multiple thumbnails selected (Ctrl/Cmd+click, Shift+click), ↑ or the bottom star toggles all selected photos at once.
- Bookmark-only gallery — In gallery view, click the outline star (nothing selected) to show bookmarked photos only (star turns gold). Click again or press Esc to return to the full grid. With thumbnails selected, the star toggles bookmarks (same as ↑).
- Search + bookmarks — Search still runs on the whole folder; the bookmark filter narrows what you see. Turn off the filter to see all search matches; clear search with the filter still on to see every bookmark.
- Share / Open — In single view, opens or shares the current photo. In gallery, the button appears when you multi-select photos or when bookmark filter is on. With filter on and nothing selected, it targets all visible bookmarked photos.
- Slideshow — Play button in gallery and single view. In bookmark-filter mode, slideshow cycles bookmarked photos only.
- Esc order (gallery) — Clears multi-select first, then exits bookmark filter (before leaving gallery from single view).
- Persistence — Bookmarks are saved per folder locally and restored when you reopen that folder.
Improvements & fixes
- Portrait photos look right — Gallery thumbnails and the film strip no longer show vertical shots sideways or "twisted twice."
- Smoother on huge folders (especially Mac) — Large libraries scroll more reliably; the app eases off when your Mac is busy instead of freezing.
- Gallery multi-select — Ctrl+click (Windows) or Cmd+click (Mac) to pick photos; Shift+click for a range (follows visible gallery order, including search and bookmark filter). Works with drag-out and the bottom Share / Open bar.
Gallery & everyday workflow
- Multi-select — Ctrl/Cmd+click toggles a thumbnail on or off; Shift+click selects a continuous range (great for picking a burst or a run of keepers).
- Drag out — One thumbnail drags one file; a multi-selection drags every selected file together.
- No accidental re-open — Dragging a photo from RAWviewer and dropping it back on the window no longer opens it again.
- Search while indexing — Progress messages stay clearer; Lite won't pretend AI search is ready when only metadata has finished indexing.
Portrait orientation
- Vertical RAW and JPEG shots appear upright in the gallery grid and film strip.
- Cached thumbnails from older versions are refreshed when needed — run
clear_cacheonce if you still see old sideways previews.
Large libraries (Mac)
- Better behavior when a folder has thousands of photos — less stutter, fewer "system busy" moments.
- Background search/indexing pauses while you scroll the gallery and picks up again when you stop.
- On 8 GB Macs, the app stays conservative; on 16 GB+ machines it can work a bit harder automatically.
Drag & drop
- Gallery: Drag one thumbnail, or drag while several are selected to export all of them.
- Filmstrip: Drag the active strip thumbnail the same way.
- Drop in (unchanged): Drag a folder or image onto the window to open it in RAWviewer.
Install & uninstall
- Windows install: Unified
RAWviewer_Setup.exe— choose Full (CUDA / DirectML) or Lite in the wizard; launchRAWviewer.exe(not Setup) after install. Default folder:%LOCALAPPDATA%\RAWviewer. - Windows uninstall: Settings → Apps → RAWviewer → Uninstall, or
uninstall.batin the install folder. Removes the app,%USERPROFILE%\.rawviewer_cache, and%LOCALAPPDATA%\RAWviewerlogs/tiles. SetRAWVIEWER_UNINSTALL_FULL=1beforeuninstall.batto also clear saved preferences. - macOS install: Extract release zip →
bash install_macos_app.sh(seeStart Here.txtin the zip). Copies the app to Applications and clears download quarantine. - macOS uninstall: Release zips include
uninstall_macos_app.shandUninstall RAWviewer.command— removes Applications copies,~/.rawviewer_cache, logs, and preferences. Keep the zip (or re-download) to run uninstall later; Trash alone does not clear cache. - Documentation: README,
Start Here.txt, andscripts/Launch/README.mdupdated with install/uninstall steps and an uninstall-vs-clear_cachetable for both platforms.
v2.3.2
RAWviewer Release Notes
🚀 Version 2.3.2
Release Date: June 7, 2026
Installer and in-app MobileCLIP download UX — real byte progress, clearer Hugging Face messaging, and documentation for model size and first-time download times.
🪟 Windows installer
- Live model download progress: The ~600 MB Hugging Face download maps to 5–100% on the installer progress bar (no longer stuck at 75%); short status lines avoid truncated UI text.
- Byte-level reporting:
download_mobileclip_onnx.pystreams@RAWVIEWER_PROGRESSlines parsed by the bootstrap installer. - Optional faster downloads: Set a
HF_TOKENenvironment variable before setup if you use a Hugging Face account (inherits into the download subprocess).
🔍 Semantic search (all platforms)
- In-app download progress in search field: After you click Download, progress appears as Downloading... N% in the gallery search bar (same place as Metadata/Semantic/Face indexing), with byte-level updates on macOS Core ML downloads.
- Shared progress helpers: New
mobileclip_download_progress.pyused by installer scripts, bootstrap, and the main app.
📖 Documentation
- README and release notes clarify models come from Hugging Face (~600 MB on Windows), and first download may take longer without a Hugging Face account.
v2.3.1
RAWviewer Release Notes
🚀 Version 2.3.1
Release Date: June 7, 2026
Focus overlays, RAW ↔ embedded-JPEG workflow, faster gallery indexing, background update checks, Windows installer stability, and macOS release packaging (Terminal install, in-app MobileCLIP download, SSL fix).
🔔 Release updates
- Background check on launch: Once per app start, RAWviewer quietly compares your version to the latest GitHub release (offline or unreachable → no UI).
- MD3 update prompt: When a newer release is available, a styled dialog shows your version vs the latest tag and offers Open Download Page or Not Now.
- Respectful snooze: Not Now hides the prompt for 14 days for that release; a newer release tag will notify you again sooner.
- Opt out: Set
RAWVIEWER_SKIP_UPDATE_CHECK=1to disable the check entirely.
🎯 Focus overlay (F)
- Broader maker AF: Nikon NEF (
AFInfo2, image-height fallback), Olympus ORF (AFPointSelected,AFFocusArea/AFSelectedArea), Panasonic RW2 (AFPointPosition, including decimal/1024form), and refined Canon EOS point placement (center origin, Y-up). - Brand guide: README documents which formats support maker-note AF vs CIPA
SubjectAreaonly (e.g. Fujifilm RAF, Hasselblad 3FR, typical Adobe DNG, Pentax PEF, Samsung SRW, Sigma X3F).
🖼️ Viewing
- RAW ↔ JPEG workflow (single view): One-click toggle on the bottom bar — embedded JPEG (fast) vs full RAW decode (high quality); switching clears display caches and reloads the current file. Shown in single view only, not in gallery grid.
- Snappier RAW navigation: Bidirectional embedded-JPEG prefetch (default radius 6), focus-anchored zoom when upgrading resolution.
- RAW zoom fix: Space and double-click reach 100% zoom reliably on RAW when fit-to-window state was out of sync (Ctrl+scroll already worked).
🛠️ Gallery & navigation
- Cleaner libraries: Composite DNG panoramas (e.g. Lightroom/Photoshop HDR stitches) are hidden from the gallery and navigation lists.
- Scroll-friendly indexing: Background metadata and semantic indexing pause while you scroll the gallery and resume after idle, keeping large folders responsive.
🔍 Semantic search & indexing
- Gallery thumbnail reuse: Semantic warm-up reuses paths already in
ImageCache(preview/grid tiers from loaded tiles), cutting duplicate RAW decodes during indexing. - Faster neural pass: Auto-tuned MobileCLIP batch size on your GPU/CPU for higher indexing throughput.
- Safer setup: Incomplete ONNX installs report a clear reinstall hint instead of failing silently.
🪟 Windows installer & launch
- Clearer release filenames:
RAWviewer_Setup_DirectML.exe(recommended) andRAWviewer_Setup_CUDA.exereplace the old single-file names. - Dedicated app launcher: Install folder
RAWviewer.exeis a small stub that starts the app;RAWviewer_Setup.exein the same folder is for repair/reinstall only. - More reliable setup: Pixi and MobileCLIP downloads retry on failure with clearer network/disk/proxy errors; canceling setup removes incomplete install folders; welcome page text simplified (no Ctrl+Shift+O / disk-space hints).
- MobileCLIP optional at install: If AI models fail during setup, browsing still works; download them later from gallery Search (MD3 prompt + in-dialog progress, same style as macOS).
- Uninstall fixes: Settings → Apps and
uninstall.batwork on Win11; a confirmation message appears when removal finishes. - Shortcuts button: Status-bar i opens the keyboard-shortcuts dialog (not just a tooltip).
🍎 macOS
- Release zip:
RAWviewer-v2.3.1-macOS.zip(~82 MB); minimum macOS 13.0; bundles scipy (GPS reverse geocoding) and pyexiv2. MobileCLIP models are not in the zip. - Terminal install: Extract the zip, then
bash install_macos_app.shin the extracted folder (see README). - In-app model download: When the user opens gallery search, the app prompts to download MobileCLIP (~150 MB, one-time, needs internet). No download prompt on app startup.
- HTTPS / SSL fix: Packaged app bundles certifi CA certificates and configures SSL before Hugging Face / tokenizer downloads, fixing
[SSL: CERTIFICATE_VERIFY_FAILED]on fresh installs. - Dock — single app icon: LibRaw process pool off by default (PyInstaller runtime hook + spawn-safe startup); opt in with
RAWVIEWER_USE_PROCESS_POOL=1(may bring back extra Dock entries). - Startup splash: Dismisses automatically when the main window is ready (no extra click).
- Gallery search crash (macOS 26+): NSTextField autocomplete disabled on the search field (including after focus and wake-from-sleep) to avoid ViewBridge /
SPCompletionListServiceViewControlleraborts under Qt 6.11.
🏗️ Build
- Removed unused
mediapipefrom Windowsbuild.pydependencies (face detection uses YuNet ONNX). - macOS SSL bundling: PyInstaller collects certifi and runs an SSL runtime hook for HTTPS downloads in the packaged app.
📄 Docs
- README: focus-overlay brand guide, macOS version support table, Setup vs launcher exe, DirectML recommendation, Terminal install, gallery-search model download, uninstall, and troubleshooting.
v2.2
RAWviewer Release Notes
🚀 Version 2.2
Release Date: June 5, 2026
Unified 2.2 release — search, gallery, film strip, frameless window polish, RAW loading consistency, indexing improvements, and macOS share behavior aligned with Qt6.
🎯 What's New
- Search from single-image view: Search button in single view; submitting a query switches to gallery with filtered results.
- Fast single-file open: Opening one image no longer waits for full folder scan and EXIF sort on large libraries.
- Windows — Open with another app: Native picker via
OpenAs_RunDLLW/SHOpenWithDialogwithOAIF_EXECfor Lightroom, Photoshop, etc., directly exposed in the bottom bar via the Share button (bypasses dropdown for instant editing selection). - macOS — Share (single image): Bottom-bar share in single view uses a Qt menu of
NSSharingServicetargets (Mail, Messages, …). AirDrop is hidden from the menu by default; use Finder for reliable AirDrop (seedocs/macos-sharing-v21-v22.md). - Experimental GPU single-image view: Opt in with
RAWVIEWER_GPU_VIEW=1for smoother zoom/pan on supported hardware (classic scroll area remains the default). - Consistent RAW color (fit ↔ zoom): Single-image RAW defaults to LibRaw half-res for fit view and full decode at 100% zoom (
RAWVIEWER_LIBRAW_CONSISTENT_PREVIEW=1), avoiding embedded-JPEG color snap. Gallery thumbnails still use fast embedded previews. - Unified EXIF dual-backend: Metadata routes through
metadata_backend— fast header reads for RAW, optionalpyexiv2for JPEG/TIFF (RAWVIEWER_EXIF_BACKEND=auto). - Frameless window resize (Windows): Drag any window edge (including top strip and bottom-right grip) to resize; gallery scrollbar keeps original 24px / 6px padding with a non-layout overlay for right-edge grip.
🛠️ Fixes & improvements
Search & gallery
- Search → gallery navigation: Clicking a search result opens the correct image; film strip and arrow keys stay within filtered results.
- Gallery refresh after EXIF sort: Gallery auto-updates when background capture-time refinement completes.
- Gallery thumbnails: Click handler uses the widget’s current path so reordered/filtered grids navigate correctly.
- Search panel UI: Collapsing the search field no longer shifts nearby status-bar icons; fixed width jump when clearing the query.
- Search indexing UX: No flash of stale
Semantic/Face X/10progress after search completes; session-aware index status. - Semantic indexing: Skip duplicate RAW companion files when writing to the index; resolved progress bar resets by scaling progress between thumbnail warming (10%) and MobileCLIP neural pass (90%); prevented brief double-count displays by filtering duplicate companion files in start fallbacks.
Film strip & rotation
- Film strip animation: Smooth fade-in/out when revealing or dismissing the single-image thumbnail strip; extended bottom hot zone.
- Film strip hover: Tuned show delays (350ms / 120ms direct) with prefetch so the strip feels responsive without flicker.
- Film strip sync: Fixed phantom selection, recursion on hover, and sync to search-filtered lists instead of the full folder.
- Rotation consistency: Non-destructive rotation stays aligned across single view, film strip, and gallery after
Ror arrow navigation.
Performance & image pipeline
- Butter-smooth gallery scroll: Faster scroll-speed detection and throttled prefetch during fast scrolling.
- Fast-open / EXIF refinement: Parallel capture-time probing, gated gallery EXIF sort, viewport scroll anchor on manual sort, instant gallery button when sort cache is warm.
- GPU navigation: Smoother gallery→single transitions and priority full-resolution decodes; 27% zoom race fix.
- CPU downscaling: Replaced LANCZOS with HAMMING for thumbnail downscales (faster, cleaner edges on CPU).
- GPU viewport scaling: Experimental GPU view uses hardware-accelerated scaling where enabled.
- GPU single-view navigation: Arrow keys and film strip keep the previous frame visible until the next buffer is ready; prefetched preview/full caches paint immediately; thumbnail-only stages are skipped during in-folder navigation to reduce flicker.
- GPU fit ↔ 100% zoom: Space and double-click now reach true 100% on the first action on RAW (fixes stale fit-mode flag showing ~fit% until a second toggle); resolution upgrades no longer undo an active 100% zoom.
- Resolution crossfade (optional): Smoother preview→full upgrades in single view (
RAWVIEWER_RESOLUTION_CROSSFADE_MS, default 280; setRAWVIEWER_DISABLE_CROSSFADE=1to disable). - Idle display prefetch: Neighbor images warm preview/full buffers while browsing (
RAWVIEWER_IDLE_DISPLAY_PREFETCH,RAWVIEWER_NAV_PRELOAD_*). - Multi-core RAW postprocess: Process pool for LibRaw when
RAWVIEWER_USE_PROCESS_POOL=1(default on 4+ cores). - Progressive RAW load: Optional embedded-first path via
RAWVIEWER_PROGRESSIVE_RAW_LOAD=1(off by default).
Platform & docs
- macOS share under Qt6: Default dev/shipping path uses Qt menu +
performWithItems_; picker fallback and AirDrop/Finder behavior documented indocs/macos-sharing-v21-v22.md. - Folder sort: Production uses EXIF / probe / birth / mtime only; Windows Shell
DateTakenPOC removed. clear_cache.bat/clear_cache.sh: Full dev/session reset; repo-rootclear_cache.batforwards toscripts/Launch/bat/clear_cache.bat.- Windows share helper (sources retained): .NET
WindowsShareHelper.exefor WinRT share in dev builds. - Launch scripts: macOS build/test workflow in
scripts/Launch/README.md; version aligned to 2.2 acrossbuild.py,pixi.toml, andQApplication. - Environment:
activation.envwithPYTHONNOUSERSITE=1to prevent global package leaks and splash issues.
v2.1
RAWviewer Release Notes
🚀 Version 2.1.0
Release Date: May 28, 2026
🎯 What's New
- Film strip (single-image view): Bottom thumbnail strip on pointer hover; dismisses when leaving the strip or entering the status bar.
- Windows guided installer: Run
RAWviewer.exeto install into a folder you choose, provision Python dependencies and AI models on first setup, and get Desktop / Start Menu shortcuts—replacing loose zip-style drops with a clearer install, launch, and uninstall flow (uninstall.batin the install folder).
🛠️ Fixes & improvements
- Installer model download: Added
requeststo Pixi dependencies sohuggingface_hubcan download MobileCLIP ONNX models on first install (no HF account required for public models). - Indexing stability: Stronger RAW thumbnail fallbacks, skip permanently unindexable files, conservative face-scan warm-up defaults, clearer progress phases.
- Delete confirmation dialog: Centered on the main window using global coordinates.
- Face detection threshold: YuNet / SSD confidence raised to 0.75 (fewer false positives).
- Dependencies:
pixi.tomlis the source of truth; legacyrequirements.txtremoved. - Docs: Pixi-first build instructions, minimum macOS 13 for prebuilt releases.
Includes fixes from 2.0.1 (Pixel DNG, gallery aspect ratio, DNG single-view zoom).
v2.0.1
RAWviewer Release Notes
🚀 Version 2.0.1
Release Date: May 23, 2026
🛠️ Fixes & improvements
- Google Pixel DNG Support: Fixed critical crashes in the
QImageReaderandEXIFExtractorfallbacks that prevented Google Pixel DNG files from rendering on macOS. - Gallery Aspect Ratio Fix: Fixed a bug where thumbnail crops were improperly bypassed, ensuring that all gallery tiles now correctly display cropped square previews without distorted aspect ratios or zoomed-in glitches.
v2.0
RAWviewer Release Notes
🚀 Version 2.0.0
Release Date: May 7, 2026
🎯 What's New
- Local Semantic Search: Cross-platform natural-language gallery search. Harness the power of MobileCLIP (Core ML on macOS, ONNX on Windows) to rank images by meaning (e.g., "sunny landscape" or "vintage portrait").
- Structured Metadata Filters: Powerful new query syntax to narrow by
camera:,lens:,iso:,ext:, and more. - Slideshow Mode: Automatic hands-free playback of your photos with adjustable intervals.
- macOS Native Share: Integration with the native macOS share sheet for instant sending via Mail, AirDrop, or Messages.
- High-Fidelity Rendering: New LANCZOS resampling and 2x JPEG oversampling for razor-sharp display on 4K and Retina screens.
- Native macOS & Windows Shell Integration: Improved Windows shell verbs and deep Finder/Explorer compatibility.
- Non-Destructive Rotation: Instantly rotate any image (including RAW) by 90° steps visually without modifying the original file.
- Massive Location Intelligence: Added ~150+ world cities to the GPS contradiction filter and improved multi-word place detection (e.g., "Hong Kong").
- Precision Focus Overlays: Added focus point visualization using MakerNote data for Canon, Nikon, and Sony.
🛠️ Fixes & improvements
- High-Quality RAW Fallback: Automatically triggers high-quality "fast RAW decode" for files with poor-quality embedded previews.
- Performance Hardening: Refactored
UnifiedImageProcessorto open RAW files exactly once, drastically reducing Disk I/O.
⌨️ Keyboard & Gesture Map
- Space / Double-click: Toggle between "Fit to Window" and 100% zoom.
- Pinch-to-Zoom: Smoothly zoom in/out via trackpad or Ctrl+Scroll Wheel.
- Left / Right Arrow: Navigate between images (preserves zoom level).
- Down Arrow: Move current image to "Discard" folder.
- Delete: Remove the current image.
- H / F: Toggle Histogram / Focus Subject outlines.
v1.6.0
RAWviewer Release Notes
🚀 Version 1.6.0
Release Date: April 28, 2026
🎯 What's New
- macOS Native Integration: The application can now be set as the default viewer for images and RAW files on macOS. Added support for handling
FileOpenevents to instantly display files opened from Finder. - Seamless pinch-to-zoom support for Mac and Windows trackpads
- Improved large-folder gallery behavior, a cacheless-by-default mode, faster non-RAW thumbnail decoding, and polished single-image UI controls.
🛠️ Fixes & improvements
- Pinch-to-Zoom: Smoothly zoom in and out of images using the native two-finger pinch gesture on Mac trackpads, and precision touchpads on Windows (or via Ctrl+Scroll Wheel).
- Smart Cursor Anchoring: Zooming naturally anchors to the current cursor position, matching the expected behavior of modern macOS applications like Apple Photos.
- Smart Zoom Gesture: Double-tap with two fingers to instantly toggle between "Fit to Window" and 100% zoom.
- Boundary Limits: Maximum zoom is capped at 100% to ensure smooth performance, and zooming out is neatly bounded to the "Fit to Window" size.
- Live Percentage: The status bar actively displays the precise zoom percentage in real-time as you pinch.
- Reduced EXIF Re-Reads: Orientation lookup now checks memory cache first to reduce repeated EXIF reads.
- Faster Non-RAW Thumbnail Path: Standard image thumbnails now use
QImageReader.setScaledSize()for faster decode at target size. - Robust Embedded JPEG Fallback: Improved fallback scanning logic for embedded previews when RAW decode paths fail.
- Single-Pass Gallery Rebuilds: Removed duplicate gallery rebuild/cleanup work that could slow large folders and make thumbnail updates appear unstable.
- EXIF-Aware Gallery Ordering: Gallery can refresh ordering after background EXIF capture-time extraction, while keeping the UI responsive during the initial load.
- Current Image Positioning: Switching from single image view back to gallery now scrolls to the current image instead of starting from the beginning.
- Gallery Total Count: Gallery view now shows the total number of images in the bottom status bar.
- Open Behavior Consistency: Restored open-flow behavior for choosing gallery folder vs single image loading.
- Histogram UX Guard: Histogram visibility now resets correctly when moving to a new image while still staying disabled when no image is loaded.