Commit Graph
2260 Commits
Author SHA1 Message Date
Brandon Thomas 94bae746ed Merge PR #3563 2026-11-01 22:06:44 -05:00
Fridtjof MichelsandClaude Opus 5.5 3e3955bb30 LR-VIEW-SURVEY: ⌘/Ctrl-click on a survey tile takes the photo out of the survey
As in Lightroom Classic, a ⌘/Ctrl-click on a tile in Survey deselects that
photo (library.select, mode toggle), as the hover × does; a plain click still
only makes it active, and the last photo stays so the survey never empties.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 21:12:47 +01:00
Chad ElliottandClaude Opus 5.5 fe3b1813b1 docs(gpu): #1050 the skip check also expects the device-memory test, which a software adapter can't run out of
#3419 added a test that holds device memory until an allocation fails; on lavapipe the allocations
never fail, so it skips with the opt-in too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 23:31:56 -05:00
Chad ElliottandClaude Opus 5.5 15bacc7660 docs(gpu): #1050 the skip-log check catches every GPU skip and logs to a private directory
The check grepped for "no GPU adapter" only, so the ctx unit tests' "no
GPU device" skips (and nn's "no GPU runner here") went unseen. It now
lists every "need":"gpu" line except the expected device-loss one. On
the 2026-10-30 lavapipe logs it shows all 24 GPU skips without the
opt-in (the old grep showed 21) and nothing with it.

The log goes in a new mktemp -d directory instead of a fixed /tmp name
another local user could plant a symlink at.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 22:26:51 -05:00
Chad ElliottandClaude Opus 5.5 21a7d64d46 docs(gpu): #1050 run the GPU tests locally on a software adapter
docs/gpu-pipeline.md says how to run lightcraft-gpu's tests on a machine
without a GPU: LIGHTCRAFT_GPU_ALLOW_SOFTWARE=1 admits Mesa's lavapipe on
Linux and WARP on Windows (Metal on macOS needs nothing), and
LIGHTCRAFT_SKIP_LOG shows whether anything still skipped for want of an
adapter. The comments on the variable and in equivalence.rs no longer
say CI runs them: the platform CI legs of #1148 are not landing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 22:26:51 -05:00
Chad ElliottandClaude Opus 5.5 fc99d212f6 test(gpu): #1050 opt-in software adapter for the equivalence tests
`Gpu::new` refuses software adapters (llvmpipe / lavapipe, WARP): the CPU
pipeline is faster. CI runners have nothing else, so the CPU <-> GPU
equivalence tests have always skipped there.

`LIGHTCRAFT_GPU_ALLOW_SOFTWARE=1` admits them. The app never sets it and
the default is unchanged. On lavapipe all 134 compared renders stay within
max 1 LSB, mean <= 0.0003 LSB, the same as Metal on an M4 Pro.

The two big-source window tests used a 24 MP (288 MB) source. That is over
lavapipe's 128 MiB storage binding (the WebGPU default), so geometry ran on
the CPU and nothing was uploaded: one test failed and the other passed
without checking anything. They now use 3200 x 3200 (117 MiB): above
RETAIN_SOURCE_BYTES, so the source is still shared, and uploaded on every
adapter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 22:26:43 -05:00
Nathaniel Ledford a26512c39c Docs: the accessibility bus access is untested with Orca 2026-10-31 07:33:54 -04:00
Nathaniel Ledford e845b97d8d LR-BEHAV-ACCESS: the Flatpak may talk to the accessibility bus, so Orca can read LightCraft 2026-10-31 07:33:45 -04:00
aiongg e80c3e3e13 Merge upstream main into integration-r3 2026-10-31 05:09:34 +00:00
aiongg a9ac47cbce docs: tidy wording 2026-10-31 04:25:37 +00:00
aiongg ffd5a4a22b docs: tidy agent, contributor and asset docs 2026-10-31 04:17:15 +00:00
aiongg a4dc70c07b Integration: sort modules, merge duplicated checklist and gap rows from the combined tracks 2026-10-31 02:42:54 +00:00
aiongg ee0a627536 Merge track r3-t10
# Conflicts:
#	crates/engine/src/cmd/masks.rs
#	crates/ui-egui/locales/de.json
#	crates/ui-egui/locales/es.json
#	crates/ui-egui/locales/fr.json
#	crates/ui-egui/locales/ja.json
#	crates/ui-egui/locales/ka.json
#	crates/ui-egui/locales/pt-br.json
#	crates/ui-egui/locales/ru.json
#	crates/ui-egui/locales/uk.json
#	crates/ui-egui/locales/zh-hant.json
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-31 02:31:38 +00:00
aiongg 56c842d8fe Merge track r3-t09
# Conflicts:
#	docs/parity-checklist.md
#	docs/raw-parity.md
#	docs/ui-parity.md
#	docs/whats-new.md
2026-10-31 02:31:25 +00:00
aiongg e05c4f7e7c Merge track r3-t08
# Conflicts:
#	crates/meta/README.md
#	crates/ui-egui/locales/cs.json
#	crates/ui-egui/locales/de.json
#	crates/ui-egui/locales/es.json
#	crates/ui-egui/locales/fi.json
#	crates/ui-egui/locales/fr.json
#	crates/ui-egui/locales/id-formats.json
#	crates/ui-egui/locales/id.json
#	crates/ui-egui/locales/it.json
#	crates/ui-egui/locales/ja.json
#	crates/ui-egui/locales/ka-formats.json
#	crates/ui-egui/locales/ka.json
#	crates/ui-egui/locales/pl.json
#	crates/ui-egui/locales/pt-br.json
#	crates/ui-egui/locales/ru.json
#	crates/ui-egui/locales/sv-formats.json
#	crates/ui-egui/locales/sv.json
#	crates/ui-egui/locales/uk.json
#	crates/ui-egui/locales/vi.json
#	crates/ui-egui/locales/zh-hans.json
#	crates/ui-egui/locales/zh-hant.json
#	crates/ui-egui/src/panels/grid.rs
#	crates/ui-egui/tests/it/main.rs
#	docs/gaps.md
#	docs/library-shortcuts.md
#	docs/parity-checklist.md
#	docs/raw-parity.md
#	docs/user/guides/export-photos.md
#	docs/whats-new.md
2026-10-31 02:31:16 +00:00
aiongg 1f111b5e80 Merge track r3-t07
# Conflicts:
#	crates/engine/src/tests/libops.rs
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-31 02:30:21 +00:00
aiongg 8415fd6a90 Merge track r3-t06
# Conflicts:
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-31 02:30:12 +00:00
aiongg 0fa59f8846 Merge track r3-t05
# Conflicts:
#	crates/ui-egui/locales/cs-formats.json
#	crates/ui-egui/locales/cs.json
#	crates/ui-egui/locales/de-formats.json
#	crates/ui-egui/locales/de.json
#	crates/ui-egui/locales/es-formats.json
#	crates/ui-egui/locales/es.json
#	crates/ui-egui/locales/fi-formats.json
#	crates/ui-egui/locales/fi.json
#	crates/ui-egui/locales/fr-formats.json
#	crates/ui-egui/locales/fr.json
#	crates/ui-egui/locales/id-formats.json
#	crates/ui-egui/locales/id.json
#	crates/ui-egui/locales/it-formats.json
#	crates/ui-egui/locales/it.json
#	crates/ui-egui/locales/ja-formats.json
#	crates/ui-egui/locales/ja.json
#	crates/ui-egui/locales/ka-formats.json
#	crates/ui-egui/locales/ka.json
#	crates/ui-egui/locales/pl-formats.json
#	crates/ui-egui/locales/pl.json
#	crates/ui-egui/locales/pt-br-formats.json
#	crates/ui-egui/locales/pt-br.json
#	crates/ui-egui/locales/ru-formats.json
#	crates/ui-egui/locales/ru.json
#	crates/ui-egui/locales/sv-formats.json
#	crates/ui-egui/locales/sv.json
#	crates/ui-egui/locales/uk-formats.json
#	crates/ui-egui/locales/uk.json
#	crates/ui-egui/locales/vi-formats.json
#	crates/ui-egui/locales/vi.json
#	crates/ui-egui/locales/zh-hans-formats.json
#	crates/ui-egui/locales/zh-hans.json
#	crates/ui-egui/locales/zh-hant-formats.json
#	crates/ui-egui/locales/zh-hant.json
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-31 02:30:12 +00:00
aiongg 5e56e9536b Merge track r3-t04
# Conflicts:
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-31 02:30:01 +00:00
aiongg 67b636329a Merge track r3-t03
# Conflicts:
#	crates/ui-egui/src/tests/drop_import.rs
#	crates/ui-egui/tests/it/main.rs
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-31 02:29:52 +00:00
aiongg 46982a5c4f Merge track r3-t02
# Conflicts:
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-31 02:29:22 +00:00
aiongg 1e0289cb37 Merge PR #3403: LRC-LIB-CATALOG-SWITCH: files waiting for a library wait for a running import instead of being dropped
crates/ui-egui/src/dialogs/settings/libraries.rs: can_switch_library keeps both refusals (folder.move pick pending, files waiting to import).
docs/whats-new.md: the PR's entry added under the 2026-10-30 heading.
2026-10-31 02:12:00 +00:00
aiongg e235ac71e2 Merge PR #3375: LR-IMP-FORMATS: a Samsung panorama JPEG with its SEF trailer imports
docs/whats-new.md: the PR's 2026-10-30 section added above main's sections.
2026-10-31 02:11:48 +00:00
aiongg 9b5a339ac5 Merge PR #3325: LRC-LIB-FOLDERS: Move Folder To… asks for the destination without freezing the window
crates/ui-egui/src/panels/left/folders.rs: main's built-in-place guard around Rename and Move kept; the Move item is the PR's move_folder_item inside it.
docs/parity-checklist.md: the PR's edits to its rows applied to main's rows.
docs/whats-new.md: the PR's entry added under the 2026-10-29 heading.
2026-10-31 02:11:38 +00:00
aiongg d8f45ed5a5 Merge PR #3322: LRC-LIB-CATALOG-SWITCH: a library missing at launch is reported instead of being made anew with demo photos
docs/parity-checklist.md: the PR's edit to the LRC-LIB-CATALOG-SWITCH row applied to main's row.
docs/whats-new.md: the PR's 2026-10-29 section added above main's sections.
2026-10-31 02:11:23 +00:00
aiongg c2155326d6 Merge PR #2942: Issue #2936: build the GPU kernels on parallel threads 2026-10-31 02:11:04 +00:00
aiongg e619c977b9 Merge PR #3276: LRC-LIB-FOLDERS: the home folder and Local's built-in places can't be renamed or moved
docs/parity-checklist.md: header keeps main's newer date plus the PR's item; the PR's edit to the LRC-LIB-FOLDERS row applied to main's row; revision rows union, newest first.
docs/whats-new.md: the PR's 2026-10-28 section added above 2026-10-27.
2026-10-31 02:11:01 +00:00
aiongg c9c69ddd4c Merge PR #2919: PERF-WINDOW: the window queues one frame, not two (eframe's low-latency surface)
# Conflicts:
#	docs/whats-new.md
2026-10-31 02:11:01 +00:00
aiongg c034f5bc52 Merge PR #2848: LRC-SS-LAYOUT: the Slideshow settings page no longer moves when the slide preview finishes rendering
docs/whats-new.md, docs/parity-checklist.md: both sides kept; header keeps the newer date.
2026-10-31 02:10:51 +00:00
aiongg 8f9e146217 Merge PR #3286: FACES: a person's page finds its look-alikes in seconds, not minutes
docs/whats-new.md, docs/parity-checklist.md: both sides kept; header keeps the newer date.
2026-10-31 02:10:50 +00:00
aiongg 3af32798f3 Merge PR #2821: LR-META-LOCATION: reject malformed typed GPS coordinates
crates/engine/src/cmd/library.rs: kept main's split; the PR's parse_gps changes and tests are ported to crates/engine/src/cmd/library/gps.rs.
docs/gaps.md, docs/parity-checklist.md: both sides kept (header items, rows, LR-META-LOCATION note).
2026-10-31 02:10:49 +00:00
aiongg a1ef1bf5fd Merge PR #3176: LR-IMP-ADD-DIALOG: an import's probe opens each file once
docs/whats-new.md: the PR's entry added under the 2026-10-27 heading after main's entry.
2026-10-31 02:10:38 +00:00
aiongg b38bb32185 Merge PR #3386: Never crash: strip byte counts near u64::MAX don't overflow their sum in ORF, SRW, ARW and PEF
docs/whats-new.md: both entries under 2026-10-30
2026-10-31 02:10:25 +00:00
aiongg b3ddfefa5d Merge PR #3141: Issue #2589: a reference app import never creates a photo already in Recently Deleted
crates/engine/src/import/job.rs: union of the imports (main's Seen, reusable_probes, sidecars_of plus the PR's FileFacts); the sidecar read uses main's batched found_sidecar and the PR's skip for duplicates with a known capture time.
2026-10-31 02:10:23 +00:00
aiongg 5062acc601 Merge PR #2421: fix(windows): add opt-in DirectComposition workaround for VRR flicker
apps/lightcraft/src/main.rs: kept main's split; hunks ported (clear_color, compose_window, with_transparent); test moved to tests.rs
crates/ui-egui/src/panels/settings.rs: deleted on main; checkbox ported to dialogs/settings/performance.rs
crates/ui-egui/src/state.rs: compose_window field and default ported to state/settings.rs
crates/ui-egui/locales/*.json: main's file plus the new key
docs/gaps.md, docs/parity-checklist.md: main's header and rows plus the PR's additions; duplicated header line and blank lines dropped
2026-10-31 02:10:21 +00:00
aiongg 1d10bc70e1 Merge PR #3321: LR-IMP-FORMATS: decode compressed RAF 13–17 % faster with a buffered bit reader 2026-10-31 02:10:18 +00:00
aiongg acf0f6b938 Merge PR #2698: LR-IMP-FORMATS: AHD blends its candidates where noise alone would pick one, no maze in noisy raws (#2094)
docs/whats-new.md: both entries kept
2026-10-31 02:10:17 +00:00
aiongg bfb9572eb1 Merge PR #2529: LR-MAP-TRACKLOG: Decode XML character references in GPX
docs/gaps.md, docs/whats-new.md, docs/parity-checklist.md: both sides' header items, entries and rows kept.
2026-10-31 02:10:14 +00:00
aiongg b54f299e55 Merge PR #3398: Never crash: a photo renders at most 64 red eye corrections (#2556)
docs/whats-new.md: both entries under 2026-10-30
2026-10-31 02:10:08 +00:00
aiongg 9d4de0518a Merge PR #2979: LRC-LIB-CATALOG-SWITCH: a library's catalog.snap or folder given at launch opens that library
docs/parity-checklist.md: header keeps main's newer date plus the PR's item; revision rows union.
2026-10-31 02:10:05 +00:00
aiongg 35d2fc957b Merge PR #3402: RAW.colour: fit the per-file look on the vignetting-corrected sensor
Conflicts: crates/engine/src/camera_preview.rs: LOOK_VERSION stays 13, all three version notes kept; docs/raw-parity.md header merged (newer date, both changes)
2026-10-31 02:10:02 +00:00
aiongg f6b9c3ee8f Merge PR #3331: LR-VIEW-HISTOGRAM: the histogram's clipping buttons read in every theme
docs/parity-checklist.md: header from main with this PR's date and text; Histogram row gets this PR's clause; revision rows both kept
docs/whats-new.md: both entries, newest first
2026-10-31 02:09:58 +00:00
aiongg 847fc7558d Merge PR #3027: LR-PROF-CAMERACOLOR: docs count 9 bundled camera profiles, not 5 2026-10-31 02:09:51 +00:00
aiongg e8566e839a Merge PR #2952: LR-EDIT-COLOR-TEMP: a one-field white balance partial keeps the other field's look (#2910)
Conflicts: docs unioned
2026-10-31 02:09:50 +00:00
aiongg b28ef86773 Merge PR #2724: fix(codecs): validate JPEG ICC APP2 chunk sequences
Conflicts: docs/gaps.md header merged (newer date, both change lists), rows kept; other docs unioned
2026-10-31 02:09:46 +00:00
aiongg 5a7a1b2ad9 Merge PR #2964: LR-IMP-ADD-DIALOG: handle rename sequence exhaustion
crates/engine/src/import.rs, cmd/library.rs: main split these files; kept main's side here and ported the PR's hunks to import/job.rs, cmd/library/import.rs and cmd/library/specs.rs (module doc stays in import.rs).
docs: headers keep main's newer date plus the PR's item; the PR's row additions applied to main's rows; revision rows and What's New entries kept, one heading per date.
2026-10-31 02:09:36 +00:00
aiongg 42254ce585 Merge PR #2809: LR-CROP-AUTO: Auto straighten reads the vertical vanishing point and the horizon
docs/parity-checklist.md: LR-CROP-STRAIGHTEN row from main (moved test path); LR-CROP-AUTO row from the PR; header and revision rows both kept.
docs/whats-new.md: both entries kept.
2026-10-31 02:09:32 +00:00
aiongg d68af705a0 Merge PR #2981: Issue #2819: the histogram stays SDR when HDR is switched off
crates/ui-egui/src/panels/edit/histogram.rs: live_hdr_histogram added above main's histogram() (now in edit/histogram.rs, pub(crate))
docs/parity-checklist.md: main's Histogram row with this PR's HDR-off clause
2026-10-31 02:09:32 +00:00
aiongg dc946d9876 Merge PR #3265: LR-BEHAV-ACCESS: the grid's Thumbnail size reads as a slider
crates/ui-egui/tests/it/main.rs: all mod lines kept. docs: both sides kept; header keeps the newer date.
2026-10-31 02:09:27 +00:00
aiongg 0cc014c79a Merge PR #2514: Kelvin for Fujifilm X-Trans III bodies from the RAF's own neutral pair (#730) 2026-10-31 02:09:20 +00:00