Skip to content

feat: add Capture Date editing - #1486

Open
dimafa wants to merge 2 commits into
CyberTimon:mainfrom
dimafa:codex/feat/capture-date
Open

feat: add Capture Date editing#1486
dimafa wants to merge 2 commits into
CyberTimon:mainfrom
dimafa:codex/feat/capture-date

Conversation

@dimafa

@dimafa dimafa commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Description

Adds a dedicated Capture Date workflow for individual photos and batches. Users can set a corrected date and time relative to a reference photo or shift selected Capture Dates by signed day, hour, minute, and second offsets.

Edits are always stored in RapidRAW metadata. For JPEG sources, users can optionally update EXIF DateTimeOriginal in the original file and later revert changes made by RapidRAW.

Addresses #861.

Type of Change

  • New feature
  • UI/UX improvement

Changes Made

  • Adds Edit Capture Date(s) to the thumbnail context menu with localized singular and plural labels.
  • Adds an accessible Capture Date modal with Adjust and signed Shift modes.
  • Applies Adjust changes as a delta across a selection so the time between photos is preserved.
  • Stores the original Capture Date in .rrdata and enables Revert only when every selected photo has a RapidRAW backup.
  • Optionally updates JPEG EXIF DateTimeOriginal; fixed-width values are validated and changed in place.
  • Uses a durable recovery copy when adding or removing DateTimeOriginal requires a full JPEG metadata rewrite.
  • Refreshes Capture Date, modified time, editor state, library rows, virtual copies, and cached image metadata immediately after an edit.

Screenshots/Videos

CaptureDateMenu CaptureDateAdjust CaptureDateAdjust

Testing

  • These changes were tested locally by a human and confirmed to work.

Interactive testing covered single and multiple selections, absolute adjustments, signed shifts, undated JPEGs, sidecar-only edits, original JPEG writes, Revert, modified-time refresh, dark-theme controls, tooltips, and context-menu labels.

Automated validation:

  • cargo fmt --manifest-path src-tauri/Cargo.toml -- --check
  • cargo test --manifest-path src-tauri/Cargo.toml capture_date_tests --lib — 14 passed
  • cargo check --manifest-path src-tauri/Cargo.toml --bin RapidRAW
  • npm run build
  • Focused ESLint checks for CaptureDateModal.tsx and GlobalTooltip.tsx

The repository-wide TypeScript, ESLint, Prettier, and i18n checks continue to report pre-existing baseline failures unrelated to this contribution.

Test Configuration:

  • OS: macOS 26.4
  • Hardware: Apple M5 Pro

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

  • Writing directly to originals is intentionally limited to JPEG in this first implementation.
  • Original-file writes intentionally update the file's modified time.
  • Revert consumes the stored backup after a successful restore.

AI Disclaimer:

Please state the involvement of AI in this PR:

  • This PR is mostly AI-generated but edited/merged together by a human

@dimafa
dimafa marked this pull request as ready for review August 6, 2026 20:58
@dimafa
dimafa requested a review from CyberTimon as a code owner August 6, 2026 20:58
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.

1 participant