Commit Graph
1934 Commits
Author SHA1 Message Date
francoisgn 1489f47384 Merge PR #2077: LR-BEHAV-BG-TASKS: one progress bar, spinner and busy button
# Conflicts:
#	crates/ui-egui/src/lib.rs
#	docs/whats-new.md
2026-10-22 22:27:49 +03:00
francoisgn a05bc77ce0 Merge PR #2076: LR-LIB-RATING: one shared star rating for every rating on sc
# Conflicts:
#	docs/whats-new.md
2026-10-22 22:27:34 +03:00
Matej Vrzala ffb57d1a9b Library lock: Don't write through a link at the owner note's name
LibraryLock::acquire wrote catalog.lock.owner with std::fs::write,
which follows a symlink at that name. A library folder someone else
prepared (a shared drive, an unpacked archive, a synced folder) could
carry catalog.lock.owner -> ~/.bashrc or any other file the user can
write, and opening the library replaced that file's content with the
owner JSON. The catalog's staging files had the same problem and were
fixed in #1502; the owner note was missed.

The note is now written through store::create_staging (made
pub(crate)): whatever is at the name is removed (a link itself, never
its target) and the file is created with create_new. Drop already
removed the note with remove_file, which never follows a link.

Test (Unix): a link at catalog.lock.owner pointing at a file outside
the library leaves that file's bytes unchanged through acquire and
drop, and the note lands in the library as a regular file naming this
process.

Reported-by: BS.ehlas.cz
2026-10-22 18:39:33 +02:00
midasdf 867284656e Merge origin/main into #2468: keep main's work and the Japanese paper sizes
Both sides' revision-history rows and change lines are kept (newest first);
print_view.rs auto-merged, so main's shared context_menu call sits beside the
PR's current_paper()/paper_name() punctuation and alias fixes.

# Conflicts:
#	ROADMAP.md
#	docs/gaps.md
#	docs/parity-checklist.md
2026-10-22 23:37:29 +09:00
mahmatias d1ccdc4775 docs(parity): LR-CROP-ASPECT notes crop.lockAspect as its own A row 2026-10-22 10:05:28 -03:00
tylerphotosandCodex 6677edd107 KEY-GRID: reconcile grid shortcut hints with current main
Preserve upstream menu additions and progress documentation while retaining
the focused grid shortcut and native ownership fix. All eight CI gates, five
Windows regressions and native acceptance passed on this exact merged tree.

Co-Authored-By: Codex <noreply@openai.com>
2026-10-22 07:35:20 -05:00
Nathaniel Ledford 2525613e3e LR-PREF-GENERAL: the slide preview stays above the Slideshow page while the templates are browsed 2026-10-22 08:26:54 -04:00
Nathaniel Ledford 193d294822 LRC-LIB-KEYWORDS: a blank line sets the new What's New heading apart 2026-10-22 07:29:52 -04:00
Nathaniel Ledford d431579f52 LRC-LIB-KEYWORDS: the checklist's dot-indicator sentence stands outside the "Not yet" list 2026-10-22 07:28:31 -04:00
Alex Chambers 0cfc70b2fa Issue #2052: merge main and limit export fallback to Thai
Keep the existing Inter and CJK export order and the UI font chain.
Defer Arabic export faces until joining and bidirectional ordering exist.
Restore main's headline documents and record remaining text-layout limits.
2026-10-22 13:27:10 +02:00
Nathaniel LedfordandClaude Opus 5.5 c2145d176e LRC-LIB-KEYWORDS: the Keyword List marks a keyword that has an applied keyword inside it
With `Places|Italy|Rome` on the selected photos, the boxes of `Places`
and `Italy` were empty: a folded keyword gave no sign that something in
it was applied.

A keyword whose own box is empty now carries a dot in it when the
selection has a keyword inside it, at any depth, and the box's tooltip
names what is inside ("Inside: Rome, Venice", four by name, then a
count). The tick and the dash stay about the keyword itself and come
first: a keyword the photos have themselves shows that, not the dot. A
click on the box does what it did.

What is inside each keyword is worked out with the ticks, once per
selection (`Ticks::inside`), not per row and frame.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 07:08:40 -04:00
ronibalthazar 6413bccbfd #2519: read PSD and PSB metadata 2026-10-22 11:20:53 +01:00
Nathaniel LedfordandClaude Opus 5.5 5d1f9da46c LR-LIB-RATING: say which surfaces share the star row
The parity row and the What's New heading said one star rating 'everywhere', but the
Set Rating / Select By Rating menu rows and the grid context menu are separate menu
items with star text and are unchanged. Name the real scope.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 02:03:25 -04:00
Nathaniel LedfordandClaude d04633d308 LR-LIB-RATING: one shared star rating component
The bottom bar, the Info panel and the filter bar each drew their own
row of stars, and the grid badge, filmstrip badges and compare caption
had private painter loops. They now share rating::Rating (a clickable
row: hover previews, clicking the current rating clears it, read-only
and disabled states, left/right arrows on a focused star) and
rating::paint_rating / paint_star for painter-only contexts.

Existing automation ids (star:bottom:n, star:info:n, filter:starN) are
unchanged. The preset, profile and theme favourite stars use
paint_star too, so Icon::Star lives only in rating.rs.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-22 02:03:17 -04:00
Nathaniel LedfordandClaude b0f184da33 LR-BEHAV-BG-TASKS: one progress bar, spinner and busy button
Progress bars were five raw egui::ProgressBar calls with fixed widths
(240, 260, 380), one hand-drawn bar in the activity stack, and a stock
spinner; text-only waits had no sign of life. progress.rs now has
Progress (a clamped, NaN-safe fraction or a gentle sweep when unknown,
fills the layout's width, announced as a progress indicator with its
percentage and registered by id) and a vector-arc spinner. Button::busy
shows the spinner in the icon's place, keeps the width, ignores clicks
and is announced busy.

Thumbnails still being made draw a themed skeleton colour (a Tokens
field, static) in the grid, the filmstrip and Compare, instead of a
literal grey that was nearly black on the light themes.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-22 02:02:47 -04:00
Nathaniel Ledford 870106a6df MENU-BAR: the new fi, id, sv and vi catalogs carry the renamed menu entries; Parity checklist header names the rename 2026-10-22 02:01:37 -04:00
Nathaniel LedfordandClaude Opus 5.5 5b4f120e8d MENU-BAR: edit-a-photo guide names the view Detail View
Step 1 now uses the current menu label. verified stays 0.7.1 until a release
contains the renamed labels (docs/user/AGENTS.md).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 02:00:58 -04:00
Nathaniel LedfordandClaude 434da7ae68 MENU-BAR: menu switches are named for what they show, and no two commands share a name
Switches read "Show Focus Point ✓" next to "Filmstrip ✓"; now every switch
is named for the thing and the check mark says whether it is on (Focus
Point, Clipping, Photo Counts, Mask Overlay, All Mask Overlays, Mask Pins,
Layout Image). Show Original stays: it is a view, not a switch.

Names that meant two things: View ▸ Detail and the Edit section Detail
(Detail View now, like Reference View), Window ▸ Edit and the Edit menu
(Edit Panel), Compare and Compare Before and After (Before/After Side by
Side, next to Split and Top/Bottom), and Clear/Discard Preview Cache (one
command, now Discard Preview Cache everywhere). New labels in all 13
catalogs. Tests: no "Show …" switch; no two menu commands share a label or
a menu's name.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-22 02:00:54 -04:00
Nathaniel LedfordandClaude f84347a88e LR-IMP-DRAGDROP: review follow-ups
A finished scan waits for an open dialog before opening its review; drops are refused while an import runs (and, on the web, while a dialog is open); orphaned doc comment restored to builtin_label.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-22 01:58:50 -04:00
Nathaniel LedfordandClaude 266f623480 LR-IMP-DRAGDROP: show what a file drop will do and open the import review
While files are dragged over the window a veil and a card say what dropping
does (review N items, import N presets, open the face model; close the open
dialog first when one is open). Dropped photos and folders open the import
review like File > Import; Settings > Import can import them at once. A drop
while a dialog is open is refused with a toast. The web build now reports
unreadable and failed drops. Adds the control request ui.dropFiles.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-22 01:58:44 -04:00
Nathaniel LedfordandClaude Opus 5.5 6b8cb9826c PERF-SMART: count every smart album once per pass, not once per album that tests it
A full count (AlbumTally::of, albums.list) keeps each loop-free smart album's photos for the pass and
answers "album is #N" from them, so an album tested by 51 others is worked out once instead of 52 times
per photo. Albums in or reaching a loop, or in a chain too deep for the depth limit, are evaluated by
their rules as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:54:43 -04:00
ronibalthazar 8d4e6e1e01 LR-META-XMP: preserve foreign namespace collisions 2026-10-22 06:42:11 +01:00
helgehelge123 b1f6c1513d Merge remote-tracking branch 'origin/main' into cull-burst-params
# Conflicts:
#	docs/parity-checklist.md
2026-10-22 07:28:25 +02:00
chordpli 52ff2b5c4f LR-VIEW-INFOOVERLAY: the info overlay clears the macOS window controls and shows the rating and flag (#2460)
The full-screen preview hides the top bar, but on macOS the window controls
stay at the top-left, where the info overlay drew the file name. When they
are visible, the overlay now starts below them. In macOS full screen they
are gone and the overlay keeps the corner.

The overlay also shows the photo's star rating and flag under its lines,
when the photo has them.
2026-10-22 14:10:22 +09:00
Nathaniel LedfordandClaude Opus 5.5 5863025e50 LR-PREF-GENERAL: the Settings window is one size on every tab, and nothing in it runs off the side
- settings::window draws the tab bar, which stays put, above the page of the open tab, which
  scrolls: 560 pt wide and up to 640 pt tall on every tab (less in a smaller app window), each
  page with a scroll position of its own and a handle that shows without the pointer on it.
- A row's controls wrap in the room beside the label; a label longer than its column wraps.
- Paths (the library's location, the Auto Import folder, the smart previews folder, a monitor
  profile's file) are one line shortened from the front, the whole path in a tooltip only when cut.
- The Slideshow tab is one column the width of the page, the preview first; pointing at a
  template no longer moves the page, and the Export buttons wrap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:08:11 -04:00
radialmonster 8b4bdcea11 LR-IMP-FORMATS: decode Nikon small raw (sRAW) NEFs as 4:2:2 luma/chroma 2026-10-22 00:45:13 -04:00
tylerphotosandCodex 48e1cde8b7 KEY-GRID: show live cycle shortcut in View menus
Fixes #2500. Preserve direct menu selection and native accelerator ownership.

Co-Authored-By: Codex <noreply@openai.com>
2026-10-21 22:32:43 -05:00
aiongg bf96159526 Integration: regenerate the parity checklist summary 2026-10-22 02:59:01 +00:00
aiongg 8daa25c4c9 Merge track r2-t04 into next
# Conflicts:
#	ROADMAP.md
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/target-app-parity.md
#	docs/whats-new.md
2026-10-22 02:53:42 +00:00
aiongg 727e66babe Merge track r2-t03 into next
# Conflicts:
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/ui-parity.md
#	docs/whats-new.md
2026-10-22 02:53:00 +00:00
aiongg 3300e6dad8 Merge track r2-t01 into next
# Conflicts:
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/raw/coverage.tsv
#	docs/whats-new.md
2026-10-22 02:49:52 +00:00
aiongg d26c11a676 Merge track r2-t02 into next
# Conflicts:
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-22 02:42:47 +00:00
aiongg fa6f5b285b Integration: one LOOK_VERSION (12) and RENDER_CACHE_VERSION (69) bump for the merged camera-look changes 2026-10-22 02:42:38 +00:00
aiongg e705eb563c Merge PR #2380: LR-EDIT-DETAIL-DENOISE: GPU denoise gives the right result on DX12 with NVIDIA Pascal 2026-10-22 02:42:06 +00:00
aiongg 70e9338085 Merge PR #1040: LR-IMP-FORMATS: decode Minolta MRW
docs/parity-checklist.md: header keeps the newer date; LR-IMP-FORMATS row keeps both sides' changes.
docs/raw-parity.md: header change note names both sides' changes.
docs/raw/coverage.tsv: merged cleanly; same rows as both sides, no duplicates (regenerated on the combined branch).
2026-10-22 02:42:05 +00:00
aiongg cd3e6941e7 Integration: #2054 one parity-checklist header line
The PR's branch carried a second header line; its change note joins the existing one.
2026-10-22 02:41:38 +00:00
aiongg 2fc56a5374 Merge PR #2441: feat(ui): add "Show in Folders" to the photo menu (#2437)
docs/parity-checklist.md: header and revision rows from both sides; generated summary line left for cargo xtask parity --write
2026-10-22 02:41:14 +00:00
aiongg 91744336d0 Merge PR #2006: LR-EDIT-COLOR-TEMP: Kelvin white balance for the Nikon Z5II from built-in presets
crates/raw/src/kelvin_presets.rs: covered_models keeps the Z5II asserts (#2006) and the Canon cases (#2009).
docs/parity-checklist.md: LR-EDIT-COLOR-TEMP row keeps both sides' preset clauses.
2026-10-22 02:41:12 +00:00
aiongg 1e99e2e1d9 Merge PR #2386: The Windows x64 installer is verified on Windows 11
Conflicts:
- docs/gaps.md: header keeps both changes; revision rows are the union
- docs/target-app-parity.md: revision rows are the union
2026-10-22 02:41:08 +00:00
aiongg d598092f6a Merge PR #2349: LRC-LIB-LIBFOLDERS: the sidebar trees narrow their indent step before names are cut (#2298)
docs/parity-checklist.md: header and revision rows from both sides
2026-10-22 02:40:59 +00:00
aiongg 61ad2ff853 Merge PR #2054: LR-VIEW-PHOTOGRID: the grid reads only the photos an import batch or an edit touched
crates/ui-egui/src/tests_grid.rs: both sides' tests

docs/whats-new.md: both entries under one 2026-10-16 heading

docs/parity-checklist.md: header and revision rows from both sides
2026-10-22 02:40:53 +00:00
aiongg aea654b59a Merge PR #2257: LR-META-XMP: fewer false "XMP adjustments were not imported" warnings for raws edited elsewhere
Conflicts:
- docs/parity-checklist.md: LR-META-XMP row carries both changes (JPEG embedded XMP, bookkeeping crs fields)
2026-10-22 02:40:48 +00:00
aiongg d158d75b59 Merge PR #1917: KEYC-RATING: backslash shows and hides the Filter Bar in the grids
docs/parity-checklist.md: header and revision rows from both sides

docs/ui-parity.md: header keeps the newer dates and both change notes
2026-10-22 02:40:33 +00:00
aiongg 5acc4dead6 Merge PR #2066: LR-BEHAV-LOCALIZE: German catalog filled, 217 interface strings and 862 What's New lines (80% → 97%)
Conflicts:
- docs/localization-parity.md: header keeps the newer date and both changes
2026-10-22 02:40:30 +00:00
aiongg 2959b3a7e8 Merge PR #2009: Kelvin white balance from Canon CR2 ColorData presets (PowerShot G1 X Mark III)
docs/raw-parity.md: header change note and revision rows keep both sides (newest first).
2026-10-22 02:40:28 +00:00
aiongg 3ec8b08ad8 Merge PR #2042: LR-META-XMP: reread embedded JPEG metadata
Conflicts:
- crates/engine/src/sidecar.rs: imports keep HashSet and add Read, Seek, SeekFrom
- docs/parity-checklist.md: LR-META-XMP and LR-META-EXIF-FULL rows carry both changes (import stem ranking, JPEG embedded XMP)
- docs/xmp-interop.md: Read row carries both changes
2026-10-22 02:40:19 +00:00
aiongg 792b2517e5 Merge PR #1468: Issue #1449: Search Photos finds named people, and quotes keep a name together (steps 1 and 2) 2026-10-22 02:40:15 +00:00
aiongg 8dec1e1183 Merge PR #2444: LR-EDIT-OPTICS-PROFILE: read Fujifilm's nine-knot lens tables at the plain radius
crates/engine/src/media.rs: RENDER_CACHE_VERSION keeps the higher value.
2026-10-22 02:40:15 +00:00
aiongg df319373cc Merge PR #2450: LRC-LIB-COMPARE: the Info panel labels the active photo while culling…
crates/ui-egui/src/tests_compare.rs: both sides' tests

docs/parity-checklist.md: header and revision rows from both sides
2026-10-22 02:40:11 +00:00
aiongg 04b099a4f5 Merge PR #1901: LR-EDIT-OPTICS-PROFILE: apply A7CR embedded distortion for corrected full-frame raws
crates/engine/src/camera_preview.rs: LOOK_VERSION keeps both history lines and the higher value.
crates/engine/src/media.rs: RENDER_CACHE_VERSION keeps the higher value.
docs/whats-new.md: both 2026-10-14 entries under one heading.
2026-10-22 02:40:09 +00:00