Skip to content

Releases

PhotoReview 2.0.518

Choose a tag to compare

@github-actions github-actions released this 15 Oct 07:40
a6e530f

Requires Windows 10/11 x64 and the .NET 10 Runtime (Microsoft.NETCore.App 10.x; the Windows Desktop Runtime is not needed). Unzip and run PhotoReview.exe (Win32 + Direct2D shell).
This package holds only PhotoReview.exe; it does not change your file associations. If .jpg files were opened with the old PhotoReview.App.exe, register PhotoReview.exe again (deploy/install-photo-review-association.ps1).

SHA256 of PhotoReview-v2.0.518-win-x64.zip: DD4FC63947FF1E52B4098C3291B5F4274DE191CFACB5B8411CB4400ACB5BF0C6
SHA256 of PhotoReview.exe: 2CC6FFA18F40159EE91A37ABB967123B330DBF74260DF08BDEA62D77A24C8AB3

Changes since v2.0.510

Features

  • submenu for multiple external editors, default editor + shortcut in #526
  • Core file-rename engine (RenameNamePolicy, RenameAsync, case-only, group) - PR1 FEAT-RENAME in #527
  • rename state (PR2: catalog/session/presenter/cache, Undo re-key, RenameCurrentAsync) in #529
  • UI to rename the image being viewed (PR3 FEAT-RENAME): right-click menu + F2, Win32 in #530

Tests

  • DrainAsync no longer leaves DispatcherTimer.Interval negative (flaky Soak) in #528

Docs

  • WP28B-WARP-EDGE note (cause of random failures on WARP) in #524
  • design for renaming the viewed image via right-click menu (unconfirmed) in #525

CI / Tooling

  • release package contains only the Win32 shell PhotoReview.exe (RELEASE-SHELL-ONLY) in #531

Full Changelog: v2.0.510...v2.0.518

PhotoReview 2.0.510

Choose a tag to compare

@github-actions github-actions released this 14 Oct 12:22
d92d6aa

Requires Windows 10/11 x64 and the .NET 10 Windows Desktop Runtime. Unzip and run PhotoReview.App.exe (the WPF app).
PhotoReview.exe (the Win32 + Direct2D shell) is a parallel build in the same folder; it does not change your file associations.

SHA256 of PhotoReview-v2.0.510-win-x64.zip: 48A3E9469A6B620E0348AF0758E66F1ECE0B870A563B0905FEA4F8776CE16959
SHA256 of PhotoReview.App.exe: 1A082A1B778885D0BCC7BA87484ADFCBDC7972CC08F2361F85BE36A588E55538
SHA256 of PhotoReview.exe: 677BEBE5042CFA62E5776548EEA32DEB686ED2446D0CB0CE69734FB44F8CCE08

Changes since v2.0.371

Features

  • External Editor menu item always visible; opens Settings when unconfigured in #383
  • Second Fit width (anchored at bottom third, own key) + assignable middle-click action in #385
  • context menu Copy File Name / Copy Full Pathname + compact menu rows in #384
  • WebP and HEIC/HEIF via Windows codecs (Q-FMT-WEBP-HEIC) in #388
  • customisable right-click menu + Explorer 'Browse with PhotoReview' folder command in #390
  • two-finger touchpad swipe (pan when zoomed, change image by swipe distance) + Refresh command (R / menu) in #391
  • WP-01 Shell.* project skeleton + App.Shared, v1 contract and architecture tests in #399
  • WP-13a interop Win32 (LibraryImport user32/kernel32/gdi32/dwmapi/shcore/comctl32/ole32/shell32) in #400
  • WP-11 JSON source generation for the serializer in Core in #401
  • WP-13b interop D3D11/DXGI/D2D1/DWrite + COM shell in #402
  • WP-07 input and non-WPF UI seams (C-04 adapter, C-06, C-07) in #410
  • WP-02 PixelBuffer, codec, PixelOps (C-01..C-03) + PixelAssert in #408
  • WP-19a native dialogs + clipboard in #404
  • WP-08 placement and F11 per HWND (C-14) in #403
  • WP-14 window, message loop, dispatcher, frame clock (C-04/C-05/C-15 Win32) in #406
  • WP-18 right-click menu model + native menu host in #409
  • WP-10 golden recorder from the WPF build (G-VIEW/INPUT/KEY/MENU/OVL) in #405
  • WP-16 pure viewport engine + ViewportController (do NOT merge before WP-10) in #411
  • WP-05 TurboJpeg and LibRaw to PixelBuffer in #413
  • WP-03 WIC Direct, embedded thumbnail, EXIF to PixelBuffer in #414
  • WP-04 disk cache encode/decode via WIC, byte-compatible in #412
  • WP-15 renderer Direct2D + GpuImageCache + tile (WIP) in #415
  • contract v1.1 - C-07 App.Shared, C-09 IRenderSurfaceFactory, ExifOrientation locked in #441
  • WP-06 split out PhotoReview.Imaging.Wpf, remove UseWPF from Imaging*, codecs mandatory in #442
  • WP-17 DirectWrite text + overlay rounding + animator (C-11) in #443
  • WP-12 WIC moved to [GeneratedComInterface] + LibraryImport (P2) in #444
  • WP-09 split out PhotoReview.App.Shared (move files, AddPhotoReviewShared, inject clipboard/sink) in #445
  • WP-19b App.WpfWindows + Shell.WpfBridge (late-loaded secondary WPF windows) in #446
  • WP-20 composition root + startup shell (Win32 PhotoReview.exe actually runs) in #447
  • WP-21 image presentation, compare, crossfade (Win32 shell) in #450
  • WP-22 shell input (keys, mouse, wheel, touchpad, drag-drop) in #449
  • WP-24 right-click menu, Zoom submenu, custom zoom in #453
  • WP-23 HUD overlay, toolbar, status, auto-hide, native folder picker in #448
  • WP-26 custom-drawn scrollbar (NE-3 a) matching WPF ScrollViewer in #451
  • WP-25 F11, multi-monitor, DPI, dark title bar (Win32 shell) in #452
  • WP-30 two-exe packaging, CI, Explorer association for PhotoReview.Shell in #458
  • WP-29 perf host + probe, perf gate wave 3 (shell vs WPF, R2R) in #460
  • WP-33 COM shell / Recycle Bin without late binding (IFileOperation, IShellItem2/IContextMenu, IShellWindows) in #470
  • WP-36 Native AOT publish for PhotoReview.exe (separate artifact) + CI job in #475
  • WP-34 IsAotCompatible everywhere + LibraryImport + AOT publish gate with 0 warnings in #477
  • AOT - secondary windows stub: Settings opens config.json, other windows report they are unavailable in this build in #481
  • bridge secondary WPF windows into the Win32 shell (Settings/Diagnostics/Recovery/... now open) in #486
  • JSON measurement results with schema + compare + -PerfGate in #485
  • WP-35 Phase 1 - native Win32 dialogs (ZoomPrompt, Diagnostics, Skipped, BatchReview) + secondary window router in #489
  • WP-35 Phase 2 - new Win32 controls + Action profiles + modeless Benchmark in #490
  • WP-35 Phase 3a - Win32 Settings frame + page contract + first 3 pages in #493
  • WP-35 Phase 4 - Recovery as a native Win32 dialog in #494
  • WP-35 Phase 3b - Performance page of Win32 Settings in #495
  • WP-35 Phase 3b - Files page of Win32 Settings (Radio + FocusExternalEditor) in #497
  • WP-35 Phase 3b - Shortcuts page of Win32 Settings (27 key-capture boxes, nested Action profiles) in #498
  • WP-35 Phase 3b - Mouse page of Win32 Settings (20 properties, 18 right-click menu slots) in #496

Fixes

  • Fit HUD percent, click-zoom key no-toggle setting, no stale-scroll frame on keyboard zoom in #387
  • open file at its real position, undo Delete in place, refuse Delete without Recycle Bin up front in #386
  • verify-all -Hidden -Parallel false failure + unique hidden-runner log names in #389
  • arrow-key step equal in pixels on both axes (short viewport side) in #407
  • clean up empty destination folder when the journal fails at Begin in #427
  • single Recycle post-checks that the source has disappeared (B-06) in #433
  • back up a newer config.json before Save overwrites it (C-04) in #434
  • return graphics when child HWND is alive (fixes Flush hang on CI) + standalone shell test in #455
  • WicCom.Wrap - failed QI exception no longer depends on leftover IErrorInfo (flaky CI) in #454
  • agent-finish-check no longer falsely flags pre-existing empty files in #459
  • Win32PresentationSink keeps FIFO when a UI-thread update arrives after a pending cross-thread update in #476
  • Settings version line shows the build time again in #491
  • owner-draw dark menu, app icon, shell-errors.log + Menu error in #492
  • Win32 dialog dark theme no longer depends on uxtheme ordinals/DarkMode_* in #499
  • scrolling Settings pages leaves no ghost images (WS_CLIPSIBLINGS) in #503
  • Settings pages show full content (group boxes sent to bottom of Z-order) + not-all-background-color test in #511
  • color emoji in the Win32 shell (L2 WP-27) in #516
  • text in tall input boxes vertically centered + test that Tab does not blank the page (WP-35) in #517
  • vertically center text in single-line inputs of Benchmark/ActionProfiles/ZoomPrompt in #522
  • combobox has only one paint style after focus/selection (WP-35) in #523

Performance

  • opening an image from Explorer - placement before showing, cloak until first frame (no white frame), decode launch image early in #394
  • P-1 - decode first image from App_Startup, warm up config parser, remove JIT/...
Read more

PhotoReview 2.0.371

Choose a tag to compare

@github-actions github-actions released this 09 Oct 02:27
cf9b34e

Requires Windows 10/11 x64 and the .NET 10 Windows Desktop Runtime. Unzip and run PhotoReview.App.exe.

SHA256 of PhotoReview-v2.0.371-win-x64.zip: 4B2C72795954FC359D623B028C80A8C284CC59E0D90DB144AF333B6043DDF454
SHA256 of PhotoReview.App.exe: A847298A5E7A9ABEC310FD38844A23E50DBA12E7F55CD4B781A601DC643E645A

Changes since v2.0.240

Features

  • --set overrides + tune-matrix/tune-rank for device tuning by @ConanKLOP2 in #341
  • pooled-latency ranking, resource sampler, MemBalloon, subset fixtures, stage files S1-S8 by @ConanKLOP2 in #358

Fixes

  • RAW container fixes RV-R01..R04 by @ConanKLOP2 in #249
  • never start queued file-action work under the gate lock (RV-A01) by @ConanKLOP2 in #250
  • RV-S01/S03/S04 config load repairs by @ConanKLOP2 in #251
  • decoding hardening (RV-I03..I08) by @ConanKLOP2 in #252
  • RV-P01..P08 review fixes (restore guard, explorer enum, prefetch race, generator) by @ConanKLOP2 in #258
  • review 2026-10 cache/preload fixes (RV-I02, I09..I16) by @ConanKLOP2 in #253
  • review 2026-10 PR 9 - journal torn-tail repair + C05/C09/S02/S05/S06/S07 by @ConanKLOP2 in #257
  • error-handling review - guards, catches, observed tasks across all projects by @ConanKLOP2 in #261
  • error-handling review round 2 - journal/settings/undo guards, observed tasks, libraw search path, decoder bounds by @ConanKLOP2 in #263
  • Settings > Import uses the same parse pipeline as startup Load by @ConanKLOP2 in #270
  • a faulting present no longer replaces a failed file action's error text by @ConanKLOP2 in #279
  • non-finite font size / keyboard zoom step settings (R05) by @ConanKLOP2 in #287
  • queued file commands and undo reopen are scoped to their folder (R02, R08, R09) by @ConanKLOP2 in #288
  • WIC factory failure ignores stale IErrorInfo (flaky test) by @ConanKLOP2 in #289
  • Copy cleanup must not delete a foreign destination (R01); AtomicCacheFile temp ownership (R07) by @ConanKLOP2 in #290
  • publish guard follows ancestor junctions (R03) by @ConanKLOP2 in #292
  • R04 stale Fit correction + R10 fade identity on same-file swap by @ConanKLOP2 in #298
  • LibRaw CancellationState frees its GCHandle once (suspected cause of red master) by @ConanKLOP2 in #300
  • SessionWriter shutdown flush honours the budget around the save itself by @ConanKLOP2 in #296
  • memory-admission refusal skips WPF fallback (R06); stale persist worker keeps newer cache file (C1) by @ConanKLOP2 in #299
  • journal robustness (W2-FA-04, -07, -01, -03) by @ConanKLOP2 in #311
  • recycle eligibility follows real volume (junction/mounted folder), fail closed (P-RB-01) by @ConanKLOP2 in #312
  • Core audit follow-ups (D-06, W2-FA-02/05/06/10) by @ConanKLOP2 in #310
  • folder-identity leftovers D-02/D-03/D-04 by @ConanKLOP2 in #309
  • wave 2 platform/imaging/session P3 audit findings (P-EXP-01, P-COM-01, P-DISP-01, D-05, D-07, D-08) by @ConanKLOP2 in #314
  • Core P3 robustness - diagnostics, updates, localization (W2CM-01..06) by @ConanKLOP2 in #313
  • Core P3 robustness - catalog/model (W2-CC-01, 03, 06, 07) by @ConanKLOP2 in #315
  • Core P3 robustness - IO/settings/session (F02, F03, F07) by @ConanKLOP2 in #316
  • harden benchmark CLI (wave 2 tooling-b) by @ConanKLOP2 in #317
  • PerfAnalysis t_decode, LowSampleWarning and summary.json keys (wave 2 tooling-a) by @ConanKLOP2 in #318
  • R14 older folder open replacing newer, APP-P02 glide double-count by @ConanKLOP2 in #321
  • permanent delete fails closed on unknown volumes (R11); recycle size re-read before shell call (R26) by @ConanKLOP2 in #322
  • P2 candidates R16/R21/R23/R32 from review PR #284 by @ConanKLOP2 in #323
  • recovery/undo/reconcile prove file identity, not existence (R15, R17, R18) by @ConanKLOP2 in #324
  • volume-GUID paths bypass permanent-delete drive-type guard (R44) by @ConanKLOP2 in #325
  • benchmark CLI report writes never go through links; unique report dir; slow-link bandwidth; action steps (R13, R30, R34, R35, R20) by @ConanKLOP2 in #329
  • scripts/CI leftovers R12, R27, R28, R29 by @ConanKLOP2 in #330
  • ORF thumbnail fallback byte accounting; ImagePresenter captured-token hardening (APP-P01) by @ConanKLOP2 in #331
  • Copy rollback and startup reconcile prove file identity (R01a, R01b, R01c) by @ConanKLOP2 in #328
  • sibling folder navigation skips Hidden/System folders by @ConanKLOP2 in #335
  • back up config.json before load repairs overwrite it (F06 option B) by @ConanKLOP2 in #336
  • F11 from maximized no longer flashes Fit big-then-small by @ConanKLOP2 in #339
  • no stale image frames during F11 transition (measured) by @ConanKLOP2 in #346
  • F11 never flips the OS window state (measured cause of the zoomed-crop jump) by @ConanKLOP2 in #351
  • throwing Recycle Bin, busy guard, dead move entry by @ConanKLOP2 in #357
  • SourceBytesCache never re-reads a range a racing reader just published by @ConanKLOP2 in #359
  • coverage.ps1 single-project empty merge, per-case fuzz hang bound, RawDecoder first-failure contract by @ConanKLOP2 in #360
  • auto-resume preload after a transient memory pause by @ConanKLOP2 in #356
  • safety fixes from static review (coverage raw, fullscreen cleanup, A/A split, alias registration) by @ConanKLOP2 in #370
  • review-2 LOW findings (fullscreen frame cleanup in finally, behavioural test, A/A split test) by @ConanKLOP2 in #371
  • validate fullscreen-exit rect against current monitors; strengthen StopListening oracle by @ConanKLOP2 in #372

Tests

  • kill surviving mutants in core/imaging (Stryker round 1) by @ConanKLOP2 in #269
  • internal test seams for TurboJpeg/WIC/PhysicalFileSystem/OperationJournal survivors by @ConanKLOP2 in #271
  • kill surviving mutants in RawDecoder, RawJpegIccProfile, SourceRawHeaderSource and LibRaw by @ConanKLOP2 in #273
  • seams for prune/persist/late-dispose survivors; journal commit survives a failing clock by @ConanKLOP2 in #272
  • kill surviving mutants in App view-models, services and WPF glue by @ConanKLOP2 in #274
  • kill surviving mutants in App coordinators and input by @ConanKLOP2 in #275
  • Core mutation gaps (SessionStore, DuplicateFinder, RecoveryFileCheck) by @ConanKLOP2 in #280
  • kill surviving mutants in Imaging decoding, preload, caching by @ConanKLOP2 in #283
  • mutation gaps in Imaging Metadata, Raw, LibRaw, TurboJpeg and journal tail by @ConanKLOP2 in #281
  • raise App mutation score (round 3: seams for dialogs, mouse, dispatcher, file actions) by @ConanKLOP2 in #282
  • mutation gaps in Core Diagnostics and Updates (FileLog, PerfCsvListener, PhotoReviewPerf, DiagOptions, AppVersion, UpdateChecker) by @ConanKLOP2 in #285
  • kill surviving mutants in Localization, LenientEnumConverter, NavigationStatWorker by @ConanKLOP2 in #286
  • mutation gaps in Imaging.LibRaw, TurboJpeg and journal tail (follow-up to #281) by @ConanKLOP2 in #291
  • App mutation round 3b (stat refresh, listing, selection, zoom-target gaps) by @ConanKLOP2 in #295
  • pin the logged failure when showing the original throws in ZoomDeta...
Read more

PhotoReview 2.0.240

Choose a tag to compare

@github-actions github-actions released this 01 Oct 02:56
2f2bf34

Requires Windows 10/11 x64 and the .NET 10 Windows Desktop Runtime. Unzip and run PhotoReview.App.exe.

SHA256 of PhotoReview-v2.0.240-win-x64.zip: C299B7B57F19E3BBD9C3A85E7E1402E0B0E5EB230A61AE22A550B82DDA04ECC3
SHA256 of PhotoReview.App.exe: 1613BAB94EBB3C11B642B4AF344BEA58031A8C2FB02AD97E5BAE7499AA302D6B

Changes since v2.0.239

Features

  • camera RAW support integration branch (RAW-01..RAW-70) by @ConanKLOP2 in #239

Full Changelog: v2.0.239...v2.0.240

PhotoReview 2.0.239

Choose a tag to compare

@github-actions github-actions released this 29 Sep 00:15
53c45d9

Requires Windows 10/11 x64 and the .NET 10 Windows Desktop Runtime. Unzip and run PhotoReview.App.exe.

SHA256 of PhotoReview-v2.0.239-win-x64.zip: 58B58DA97B151ED2B613ECAAFE531302D6216ACC4E0FD7CD13536A3A011E0089
SHA256 of PhotoReview.App.exe: 84A8C0B4551421050F951C520D618C6F78891BD994F134A92622D4D54ACE7C85

Changes since v2.0.231

Fixes

  • review small findings — zoom-detail after compare failure, undo fingerprint leak by @ConanKLOP2 in #231

Performance

  • IMG-07 single JPEG header marker walk in TurboJpegDecoder.Decode by @ConanKLOP2 in #234
  • single parse per line + provably safe compaction by @ConanKLOP2 in #235

Tests

  • hidden-desktop local runner keeps UI-category windows off the desktop by @ConanKLOP2 in #233
  • fix 4 rotted Category=Slow MainWindow tests and run them in CI by @ConanKLOP2 in #240

Docs

  • detailed camera RAW support plan + multi-agent task cards by @ConanKLOP2 in #237
  • split AGENTS.md Tests detail into docs/TESTING.md, raise T0 budget to 18 KB by @ConanKLOP2 in #236

Other

  • refactor(settings): guard SettingsWindow field-map sync, de-dup shortcut read, cache probe Actions parse by @ConanKLOP2 in #232

Full Changelog: v2.0.231...v2.0.239

PhotoReview 2.0.231

Choose a tag to compare

@github-actions github-actions released this 28 Sep 15:42
2fbcae8

Requires Windows 10/11 x64 and the .NET 10 Windows Desktop Runtime. Unzip and run PhotoReview.App.exe.

SHA256 of PhotoReview-v2.0.231-win-x64.zip: 243190E0319095160F6D6AB619FE4564471249C19C16C11CE5B43EFE60764AC1
SHA256 of PhotoReview.App.exe: C6E2AD86CC9172F2A676BB506095C8CA3D24E2CFF0545BA450F9A3019274F03B

Changes since v2.0.223

Features

  • Add Delete menu item, fix shortcut hint visibility, clarify terminology by @ConanKLOP2 in #225

Fixes

  • Fit width/height always honor the configured anchor, settle scrollbar side effects by @ConanKLOP2 in #228
  • v2.0.203 feedback triage — Q-R40..Q-R49 + OPEN-DECISIONS conflict mitigation by @ConanKLOP2 in #229

Performance

  • ISourceReader seam + fix slow-link preload/viewer contention (Q-R29 C-2) by @ConanKLOP2 in #222
  • eliminate JPEG header double-read and FileInfo allocation by @ConanKLOP2 in #224
  • use HashSet instead of List for TrGenerator placeholder lookups by @ConanKLOP2 in #227

Other

  • docs+test: cost-optimized review of remaining 8096 ledger rows (7 fixes, 1 false-positive rejected) by @ConanKLOP2 in #223
  • #225 follow-ups: 'Move to Recycle Bin' wording in English; context-menu docs by @ConanKLOP2 in #230

Full Changelog: v2.0.223...v2.0.231

PhotoReview 2.0.223

Choose a tag to compare

@github-actions github-actions released this 27 Sep 17:44
0c2ec43

Requires Windows 10/11 x64 and the .NET 10 Windows Desktop Runtime. Unzip and run PhotoReview.App.exe.

SHA256 of PhotoReview-v2.0.223-win-x64.zip: 55CDBF20F8A3E2CF395F7AFC990A086C534879AFD19A680677F89394316D2C3B
SHA256 of PhotoReview.App.exe: 3EE29E92F613B178AAC5E8E90A2047ECCA0A53053C3A20719676D0DDBB37AAF0

Changes since v2.0.203

Features

  • setting to hide the zoom cluster, default off by @ConanKLOP2 in #213
  • title-bar instance label for test/agent-launched windows by @ConanKLOP2 in #218

Fixes

  • guard Recovery retry against a concurrent retry in another window (P02) by @ConanKLOP2 in #204
  • stop seeding Undo from journal at startup (P03) by @ConanKLOP2 in #205
  • make crossfade-completion test's opacity check CI-proof with a value-changed watcher by @ConanKLOP2 in #211
  • harden publish-directory ownership guard (SEC-03) by @ConanKLOP2 in #215
  • close Encode/TryDecode validation gap in forward protocol (SEC-02) by @ConanKLOP2 in #216
  • push tag-version tags individually so one blocked ref can't fail the job by @ConanKLOP2 in #220
  • close SEC-01 symlink/junction destination escape gap by @ConanKLOP2 in #219
  • damp mouse-release kinetic glide speed (Q-R40) by @ConanKLOP2 in #221

Performance

  • Q-R29 simulated slow-link measurement (option B) by @ConanKLOP2 in #202
  • Q-R29 option C part 1 -- navigation stat off the UI thread by @ConanKLOP2 in #206

Tests

  • automate 6 of 11 GUI manual checks with real-window UI tests by @ConanKLOP2 in #207
  • fix FolderLoadCoordinator race-test flake (session sweep took the scan-block hook) + sibling flakes by @ConanKLOP2 in #209
  • repo-wide dotnet test hang guard (test.runsettings) by @ConanKLOP2 in #208
  • fix hang/flake/coverage gaps from test-suite review by @ConanKLOP2 in #214

Docs

CI / Tooling

Full Changelog: v2.0.203...v2.0.223

PhotoReview 2.0.203

Choose a tag to compare

@github-actions github-actions released this 27 Sep 12:51
abbc056

Requires Windows 10/11 x64 and the .NET 10 Windows Desktop Runtime. Unzip and run PhotoReview.App.exe.

SHA256 of PhotoReview-v2.0.203-win-x64.zip: FBA5A436C2FE888F1F3795939BFCC02D12C8D43D4232B728AAFED1AF622D5692
SHA256 of PhotoReview.App.exe: D055367AE187588CE3E0BDE6B463D78BE697D6505E8E3B5B08DCAA64B8F0ABF6

Changes since v2.0.137

Features

  • Zoom card in Settings and Fit / Zoom-to-level in the right-click menu (#134)
  • Keyboard zoom anchors at the pointer; arrow keys glide (#177)
  • Fit width / Fit height modes, new initial zoom presets, keep zoom across images (#178)
  • Optional fade transition when changing photo (#181)
  • Redesigned right-click context menu (#183)
  • PHOTOREVIEW_DIAG_FORCE_LOG to enable AppLog for debugging without config edit (#179)
  • Change default sort mode, kinetic pan and keyboard zoom anchor (#186)

Fixes

  • Unique temp file for window placement save (#145)
  • BenchmarkWindow no longer logs a fake Fail row when closed mid-run (F-WIN-8) (#149)
  • tools/CI review backlog: timing regex, temp zip, link check, culture (#144)
  • Refuse Recycle when the drive's Recycle Bin is off or too small (F-WIN-2) (#154)
  • Script audit fixes (idx 29, 38, 39, 48, 66) (#158)
  • Late-navigation preload gap, SourceBytesCache evict race, comment drift (#164)
  • FileActionController failure status, Copy leaves reads alone, undo restores order position (idx 43, 45, 52) (#168)
  • docs-budget -Check fails closed (#138)
  • Undo drops dead Move entries; Diagnostics shows Explorer order; remove legacy Delete combo item (#147)
  • Treat any damaged disk-cache entry as a miss; a faulting thumbnail no longer fails the image (#150)
  • Readability probe result survives StopForAction (#146)
  • Close-during-ownership race and localized folder-open failure (#142)
  • LRU touch on disk cache hit; capacity 0 disables preview disk cache (#148)
  • Survive unwritable default config on first run; migrate unversioned legacy config (#162)
  • A partial user language override keeps shipped nativeName and plural rule (#163)
  • Settings live-language refresh, benchmark logging restore, instance re-claim, Process disposal (#165)
  • Keep Undo/Permanent flags when retrying a failed journal entry (#161)
  • Dispose waits for a write the timer thread already drained (#166)
  • IWICBitmapSourceTransform vtable order (F-IMG-6) (#143)
  • Benchmark.Cli audit fixes (idx 5, 6, 40) (#157)
  • Duplicate batch status survives reload; evict recycled files from RAM caches (idx 2, 14) (#169)
  • Shutter text, toggle auto-repeat, drive-root title (idx 3, 33, 64 partial) (#170)
  • Report TimedOut, not Canceled, when only the timeout fired (#174)
  • Duplicate-check hashing streams oversized files, fewer redundant fades, close cancels hashing (#159)
  • Close TOCTOU race in DarkScrollBarRenderingTests' Application creation (#180)
  • Resolve unresolved merge-conflict markers left in master by #178 (#182)
  • Recovery-dismiss race and stale glide-stop flag (#192)
  • Queue rapid Move/Delete/Copy presses instead of dropping them (Q-T1 reversed) (#190)

Performance

  • Skip hashing unremovable duplicate size groups; ReviewCatalog.Remove keeps the path index (#167)
  • Measure and address UI-thread metadata I/O in navigation/compare/file-actions (#191)
  • Measure preload contention and startup sweep cost (#195)
  • Benchmark concurrency, preview-cache queue bound, benchmark-dialog enumeration; instance-forward evidence test (#194)
  • Measure R15-R18 whole-project review findings (no fix needed) (#199)

Tests

  • Arrow-pan step validation and click-zoom level tests (#137)
  • Zoom context menu and Settings zoom shortcut summary (#141)
  • Unit tests for KeyboardPan.Step with stepFraction parameter (#140)
  • Fix flaky InfoOverlayFaultTests.SiblingSearchFault_* (#153)
  • Isolate window placement file and caches from the real data dir (#156)
  • Fix slow PreviewImageServiceDiskCacheTests (never-persisted 64px fixture) (#152)
  • Tighten weak shortcut-validation asserts, cover ManagedIStream (#151)
  • Replace source-text tests with behavioral tests (F-TEST-1, option B) (#155)
  • Deterministic SourceBytesCache file-changed-while-reading test (#173)
  • Make weak tests fail on real breakage (idx 56, 57, 7, 37) (#171)
  • Make weak tests fail on real breakage (idx 20, 67, 74) (#172)
  • Fix two PerfTraceTests fixtures too small to trigger the downscale path (#188)
  • Categorize UI/STA tests, add parallel local test runner (#184)

Docs

  • Prune stale archive and refresh status (#136)
  • Docs and config audit fixes (idx 19, 59, 60, 73, 77) (#160)
  • Never edit, commit or pull in the master checkout (#175)
  • Consolidate GUI-check rows; all five PRs merged (#187)
  • Carve out a fast-forward-pull exception for Release builds (#189)
  • Whole-project review and optimization proposals (#185)
  • Correct handoff after review PR merged (#196)
  • Split decisions/perf logs into fragment files; stop routine PRs editing shared hub docs (#198)
  • Deep-review 289 needs-deep-review ledger rows, fix 2 findings (#200)
  • Fix stale doc-comment links; pin/fix navigation notification count (#193)

CI / Tooling

  • Release notes list changes since the previous published release (#135)
  • Require a green CI check on the tagged commit (#139)
  • Run docs/i18n checks in a parallel repo-checks job (#176)

Full Changelog: v2.0.137...v2.0.203

PhotoReview 2.0.137

Choose a tag to compare

@github-actions github-actions released this 26 Sep 17:18
a864ef0

Requires Windows 10/11 x64 and the .NET 10 Windows Desktop Runtime. Unzip and run PhotoReview.App.exe.

SHA256 of PhotoReview-v2.0.137-win-x64.zip: 407DE8145FAEE005DDE98F2BC7175534C7CCB3CBF800E41487F21894B00F9BD4
SHA256 of PhotoReview.App.exe: 4611A7508C86BFBA18FA94950F7EE7B0606CEA1DEB0A8EC424A1A5DD85C83620

What's Changed

  • feat(settings): configurable arrow-key pan step on a zoomed image by @ConanKLOP2 in #133

Full Changelog: v2.0.136...v2.0.137

PhotoReview 2.0.127

Choose a tag to compare

@github-actions github-actions released this 26 Sep 15:21
af7f8d8

Requires Windows 10/11 x64 and the .NET 10 Windows Desktop Runtime. Unzip and run PhotoReview.App.exe.

SHA256 of PhotoReview-v2.0.127-win-x64.zip: 6FB3178BCC10AF0C513A06E9DDD8634DCD809005A3F90D330F4F63BE3BFFD3B2
SHA256 of PhotoReview.App.exe: 0B171D2945160DB37E242C9274A52330DA64496274B9BA787875A8378837BF5A

What's Changed

  • feat(ui): tester feedback — dark chrome, toolbar auto-hide, title-bar fields, click-zoom controls, glide smoothing by @ConanKLOP2 in #123

Full Changelog: v2.0.126...v2.0.127