Commit Graph
4826 Commits
Author SHA1 Message Date
Brandon ThomasandClaude Opus 5.5 d346fba2d3 #3601: rustfmt (drop the trailing blank line)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 08:36:22 -05:00
Brandon ThomasandClaude Opus 5.5 b873084d05 #3601: the Preview pill sits on the photo too, above its badge band
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 08:36:03 -05:00
Rahulandrahul05ranjan 01fa8545e8 #3601: the Square Grid's badge band sits on the photo itself
paint_cell_badges sized the badge band from the cell's whole image area, so on a portrait photo it stuck out past the photo on both sides and crossed the selection frame (which paint_cell_thumbnail draws around the photo's fitted rect). The band is now built from the rect the photo actually occupies - fitted rect, or the placeholder's - and a photo shorter than the band keeps its own top edge.

Co-authored-by: rahul05ranjan <11793455+rahul05ranjan@users.noreply.github.com>
2026-11-02 15:00:11 +05:30
Brandon Thomas ebe2477108 Merge PR #3443: keep unequal margins when merging full settings with linkMargins on
Keep unequal margins when merging full settings with linkMargins on
2026-11-02 01:13:54 -05:00
NetterSilverandClaude Sonnet 5.5 7a7be84e41 test: pin three linked margin keys boundary and wrap merged doc comment
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 04:33:24 +00:00
Brandon Thomas 0fad22a286 Merge PR: integration batch 46 (6 community PRs)
Integration batch 46 (6 community PRs)
2026-11-01 22:39:34 -05:00
Brandon Thomas 94bae746ed Merge PR #3563 2026-11-01 22:06:44 -05:00
Brandon Thomas d6a947bea0 Merge PR #3370 2026-11-01 22:06:44 -05:00
Brandon Thomas c37e73137e Merge PR #3442 2026-11-01 22:06:44 -05:00
Brandon Thomas 9e976e1741 Merge PR #3445 2026-11-01 22:06:44 -05:00
Brandon Thomas db30da9e6a Merge PR #3465 2026-11-01 22:06:44 -05:00
Brandon Thomas 6e943e9adc Merge PR #3515 2026-11-01 22:06:44 -05:00
Fridtjof MichelsandClaude Opus 5.5 da558f5b8f LR-VIEW-SURVEY: test that ⌘/Ctrl-click on the active survey photo activates the last one left
Review follow-up (#3563).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 22:34:35 +01:00
Fridtjof MichelsandClaude Opus 5.5 3609fe8466 LR-VIEW-SURVEY: the survey ⌘/Ctrl-click test covers a non-active tile and the last photo
Review follow-up (#3563): a plain click on another tile makes it active, a
⌘/Ctrl-click on a selected tile that is not active removes only that one, and
⌘/Ctrl-click on the last photo leaves it in the survey and active.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 22:13:54 +01: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
Brandon ThomasandClaude Opus 5.5 5a09d07530 Release 0.17.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.17.0
2026-11-01 13:57:58 -05:00
Dylan M. Taylor 496524ced5 docs: sync Craft App Suite list with ArtCraft Launcher 2026-11-01 12:29:55 -05: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
NetterSilverandClaude Haiku 5.5 50879d4d26 Fix Histogram::percentile returning black when the target truncates to 0
Found while testing crates/raster/src/histogram.rs:171 (Histogram::percentile)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 03:50:13 +00:00
Dylan M. Taylor 07301cbd1e ci: grant packages write permission to release workflow 2026-10-31 23:42:58 -04: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
Dylan M. Taylor c50b74df9c packaging(flatpak): add OCI image build and GHCR publishing helper (#3498) 2026-10-31 18:53:05 -04:00
Brandon Thomas 2987aeef7a Merge pull request #3390 from nledford/flatpak-a11y-bus
LR-BEHAV-ACCESS: the Flatpak may talk to the accessibility bus, so Orca can read LightCraft
2026-10-31 13:11:30 -04:00
NetterSilverandClaude Haiku 5.5 4cb62dcfaa Reject overflowing LIGHTCRAFT_GPU_LIMITS values instead of panicking
Found while testing crates/gpu/src/ctx.rs:768 (parse_limits)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 13:00:19 +00: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
NetterSilverandClaude Haiku 5.5 9d4f33a77c Match library search date: token case-insensitively
Found while testing crates/catalog/src/query.rs:178 (token_matches, the "date" branch at :215)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:25:18 +00:00
NetterSilverandClaude Haiku 5.5 af4d1f54a7 Keep unequal margins when merging full settings with linkMargins on
Found while testing crates/slideshow/src/settings.rs:233 and :267 (merged)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:45:28 +00:00
NetterSilverandClaude Haiku 5.5 7e92c28b23 Reject shutter fractions with a non-positive numerator or denominator
Found while testing crates/catalog/src/model.rs:160 (parse_shutter_seconds)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:05:02 +00:00
aiongg c4fd54e0a6 Merge pull request #3430 from aiongg/integration-r3
Integration r3: 178 reviewed PRs
2026-10-31 01:59:18 -04:00
aiongg e80c3e3e13 Merge upstream main into integration-r3 2026-10-31 05:09:34 +00:00
Dylan M. Taylor 8aedfce0dc Merge pull request #3436 from aiongg/docs-tidy
docs: tidy agent, contributor and asset docs
2026-10-31 01:06:30 -04:00
Dylan M. Taylor 24a3033395 Merge pull request #3437 from aiongg/update-result-dialog
Updates: shared check-result dialog from craft-update
2026-10-31 01:06:04 -04:00
aiongg e31f826d5f updates: show check results with craft-update's CheckResultDialog 2026-10-31 04:42:29 +00:00
aiongg da3d2c768c docs: tidy wording 2026-10-31 04:26:44 +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 7b6e1114a0 Integration: drop #2707 (multi-select model waits for its stack: #3106, #3107, #3108, #2757) 2026-10-31 03:49:08 +00:00
aiongg 1b5cdc89ca Integration: catalog videos pass the non-media filter (#2021 with the #2135 refusal) 2026-10-31 03:36:11 +00:00
Brandon ThomasandClaude Opus 5.5 cdf00cc84b Release 0.16.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.16.0
2026-10-30 23:22:53 -04:00
aiongg 71aaf18818 Integration: GPX attributes use decoded_and_normalized_value (deprecated method fails clippy) 2026-10-31 03:09:09 +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