Skip to content

feat(library): add focused photo review mode#1400

Open
zjywill wants to merge 7 commits into
CyberTimon:mainfrom
zjywill:codex/photo-review
Open

feat(library): add focused photo review mode#1400
zjywill wants to merge 7 commits into
CyberTimon:mainfrom
zjywill:codex/photo-review

Conversation

@zjywill

@zjywill zjywill commented Jul 21, 2026

Copy link
Copy Markdown

Description

Adds a focused Photo Review mode to the library for fast, one-photo-at-a-time culling and inspection without entering the editor or hiding the existing RapidRAW shell.

This is intentionally narrower than a full preview/loupe workspace. It reuses RapidRAW's existing preview generation, ratings, metadata, file actions, and native Cull view instead of adding another rendering pipeline or cache layer.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Performance improvement
  • Code refactoring
  • Documentation update
  • UI/UX improvement
  • Build/CI or Dependency update

Changes Made

  • Adds Photo Review alongside the existing Grid, List, and Cull library modes.
  • Keeps the title bar and folder panel visible so review stays within the normal library layout.
  • Adds continuous zoom in/out, fit/actual-size reset, panning, and preview prefetching.
  • Supports keyboard navigation, star ratings, Pick/Reject/Clear flags, optional auto-advance, filters, and a toggleable filmstrip.
  • Sends up to six selected photos into RapidRAW's native Cull view, matching the current upstream comparison limit.
  • Provides an archive workflow for rejected originals and sidecars, including restore and system-Trash cleanup actions.
  • Hides internal culling flag tags from normal user tag menus.
  • Adds synchronized strings for all 12 locale files.

Screenshots/Videos

Photo Review embedded in the RapidRAW library shell

Photo Review keeps the title bar and folder panel visible while exposing filters, filmstrip navigation, culling actions, and zoom controls.

Photo Review using the shared RapidRAW theme tokens

Testing

  • I have tested these changes locally and confirmed that they work as expected without issues

Commands run:

  • npm ci
  • npm run i18n:check
  • npm run build
  • Prettier across all files changed by this PR
  • ESLint for the new Photo Review component, hooks, and utilities
  • Manual Tauri review-flow verification on macOS

Test Configuration:

  • OS: macOS 26.5.2
  • Hardware: Apple M4 Mac mini, 24 GB RAM

Checklist

  • My code follows the project's code style
  • I haven't added unnecessary AI-generated code comments
  • My changes generate no new warnings or errors

Additional Notes

AI Disclaimer:

Please state the involvement of AI in this PR:

  • This PR is entirely AI-generated
  • This PR is AI-generated but guided by a human
  • This PR was handwritten with AI assistance (spell check, logic suggestions, error resolving)
  • This PR contains only blood, sweat, and coffee (AI-free)

@zjywill
zjywill requested a review from CyberTimon as a code owner July 21, 2026 07:42
@erik-nie

Copy link
Copy Markdown

please also add the shooting data to culling (ISO, A, T, focal-point, focal-length). perhaps optional.
I shoot several images with different settings, good to see them while culling.
Thanks! I much appreciate this.
It would also be great if there is an option to delete the skipped images, or make a delete option.

@zjywill

zjywill commented Jul 22, 2026

Copy link
Copy Markdown
Author

Thanks @erik-nie. I added these follow-ups in 0d02d900:

  • Photo Review now has an optional, persisted shooting-info overlay for shutter speed, aperture, ISO, and focal length. The values update immediately while navigating, without per-photo animation.
  • Archive Rejects remains the primary safe workflow. A secondary action can move rejected photos and their sidecars to the system Trash after an explicit confirmation; Cancel receives initial focus, and the native command never falls back to permanent deletion.
  • Empty Archive now uses the same no-permanent-delete Trash path.

I have not labeled SubjectDistance as a focal/AF point: RapidRAW's normalized EXIF data does not currently expose a reliable cross-vendor AF-point field. That should be handled separately once the metadata mapping is defined rather than showing misleading data.

Validated with cargo check --lib, the focused Rust test harness, the production frontend build, i18n checks across 12 locales, focused ESLint, formatter checks, and a manual macOS Tauri review.

@zjywill

zjywill commented Jul 22, 2026

Copy link
Copy Markdown
Author
Screenshot 2026-07-22 at 11 03 07 AM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants