Commit Graph
3471 Commits
Author SHA1 Message Date
aiongg 08fa7ca279 Merge PR #2691: LR-PREF-GENERAL: Esc in a Settings text box gives the text back instead of closing Settings 2026-10-31 02:06:58 +00:00
aiongg 8fb464f8f8 Merge PR #2075: LR-BEHAV-DIALOGS: dialog confirm buttons name their action 2026-10-31 02:06:57 +00:00
Brandon Thomas c7d7d3c0fd Merge PR #2540 (maintainer follow-up) 2026-10-30 15:26:31 -04:00
Brandon ThomasandClaude Opus 5.5 831d724b87 Reject .cube data lines that start with nan or inf
A data line such as `nan 0 0` starts with a letter and was skipped as an
unknown keyword, so a file with enough other entries still parsed.
(CodeRabbit review on #2540.)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:26:29 -04:00
Brandon Thomas b854bbb94e Merge PR #2835 2026-10-30 15:24:59 -04:00
Brandon Thomas ac4a98bc2d Merge PR #3147 2026-10-30 15:24:59 -04:00
Brandon Thomas cfdf63c6e4 Merge PR #2917
# Conflicts:
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-30 15:24:59 -04:00
Brandon Thomas 13711ace2b Merge PR #2155 2026-10-30 15:24:41 -04:00
Brandon Thomas c1fb95dfc0 Merge PR #3225 2026-10-30 15:24:30 -04:00
Brandon Thomas 273e9078de Merge PR #2969 2026-10-30 15:24:30 -04:00
Brandon Thomas 5693a3aeaa Merge PR #2540 2026-10-30 15:24:30 -04:00
Brandon Thomas bdb146be43 Merge PR #2833 2026-10-30 15:24:30 -04:00
Brandon Thomas ef83f30327 Merge PR #2834 2026-10-30 15:24:30 -04:00
Brandon Thomas 19eb08dc25 Merge PR #2909 2026-10-30 15:24:30 -04:00
Brandon Thomas b7c52c5032 Merge PR #2918 2026-10-30 15:24:30 -04:00
Brandon Thomas 181a580579 Merge PR #3366 2026-10-30 15:24:30 -04:00
Brandon Thomas 9140e8cd38 Merge PR #3267 2026-10-30 15:24:30 -04:00
Max MittelstädtandGPT-6-Luna b25808686d Reject mismatched XML closing tags
Found while testing crates/lensdb/src/xml.rs:77

Co-Authored-By: GPT-6-Luna <noreply@openai.com>
2026-10-30 06:10:13 +00:00
Dylan M. Taylor 445dd3106e Update prompt shows the app icon and accent color instead of a letter (#3362)
UPDATE_APP (native builds; craft-update is a native-only dependency) carries our 128 px icon and accent (#f2a516, its colour in ArtCraft Launcher). The updater, the self-update
helper and craft-update's startup prompt all get them through crate::UPDATE_APP; the
prompt draws the icon, the accent and "by ArtCraft" (craft-update's default developer).

craft-update is pinned to storytold/craft-libs main at 1065653e7 (#434).
Clippy fixes for Rust 1.99 in untouched code (same logic):
- crates/engine/src/cmd/export.rs
- crates/ui-egui/src/dialogs/rules_editor/rules_move.rs
- crates/ui-egui/src/panels/detail.rs
2026-10-30 01:27:49 -04:00
Nathaniel Ledford c2529503fd LR-BEHAV-DIALOGS: the Move confirm counts restored photos apart from moved ones 2026-10-29 12:22:43 -04:00
radialmonsterandClaude Opus 5.5 20c1f3c057 raw: test the grey JPEG XL restore through decode
The existing synthetic lossy RGB fixture tiles are re-declared grey by a
header edit (colour space RGB to Grey, dropping the 6-bit primaries field
a grey encoding does not carry, per the ColourEncoding bundle). Their XYB
frame data is unchanged, so they decode as one grey plane whose rendered
channels differ. The test checks decode against the gradient's BT.2100
luminance in the linear and sRGB curves.

Refs #275

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ti8KemZbjE2ZgHgV1q1BM
2026-10-28 13:44:42 -04:00
radialmonsterandClaude Opus 5.5 953c4ee5fc raw: decode lossy single-plane (grey) JPEG XL tiles in LinearRaw DNGs
Lightroom Classic's HDR and panorama merges of monochrome raws store a
one-plane LinearRaw image as lossy (XYB) JPEG XL tiles whose codestream
declares a grey colour encoding (16-bit float with a linear curve, or
16-bit integer with the sRGB curve). Those were refused as "lossy JPEG XL
tile with a single colour plane", so the files opened preview-only.

A lossy grey tile is still coded as three XYB channels. It is now
restored like the RGB case: jxl-oxide renders linear sRGB (never the
declared encoding, which would clip), the single plane is the luminance
(CIE Y, D65) of that, then the declared transfer curve is applied.
One plane must be declared grey and three RGB; HDR curves, other white
points and intensity targets above 255 stay unsupported.

RENDER_CACHE_VERSION 70 -> 71: files that showed their embedded preview
before render from raw data now, under the same content key.

Refs #275

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ti8KemZbjE2ZgHgV1q1BM
2026-10-28 13:44:42 -04:00
Max MittelstädtandGPT-6-Luna 7ab2575505 Reject ZIP entries with inconsistent decoded sizes
Found while testing crates/geocode/src/unzip.rs:64

Co-Authored-By: GPT-6-Luna <noreply@openai.com>
2026-10-28 16:41:59 +00:00
Nathaniel Ledford 4c1e996a64 LR-BEHAV-DIALOGS: the confirm label, the slideshow export body and the contact sheet body stay under the complexity limit
main denies cognitive complexity above 30: ok_label (now with the Export count), slideshow_export_body and contact_sheet_body each split out one part (the fixed labels, the summary line and the size rows). No behavior change.
2026-10-28 09:52:17 -04:00
Nathaniel Ledford 2bacaaa717 i18n: Swedish stacks line names its photos the count-neutral way 2026-10-28 08:53:55 -04:00
Nathaniel LedfordandClaude Opus 5.5 039a44ea8c LR-BEHAV-DIALOGS: an unusable denoise model closes, export guide names the real button
The unsupported AI Denoise model dialog only closes, but its button said Install or Accept & Download; it now says Close, like the face model dialog. The export guide no longer bolds Export, which is not the label: the button names the photo count (Export 3 Photos).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 08:53:55 -04:00
Nathaniel LedfordandClaude e4f16fa90c LR-BEHAV-DIALOGS: own verbs for Auto-Stack and Capture Time, test the button itself
Auto-Stack and Capture Time confirms reused the translation keys of a
noun ("Stack") and a field label ("Change"), so other languages showed
"Stapel" or "変更方法" on the button. They now have their own keys,
"Create Stacks" and "Change Time", in all 13 catalogs. Rename Keyword
says "Merge Keywords" when the new name already exists, as Rename
Person does. The Polish rename help says the file name changes.

The confirm label match is exhaustive now (no unreachable "OK" arm).
User guides, the Apple Photos note and the parity rows no longer tell
people to press OK in Export.

Tests read the text painted inside button:dialogOk, reach the plural
Export label, cover Auto-Stack and Slideshow Export plurals, Rename
Person, smart album Save, and check the German translation of the
verbs.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-28 08:53:55 -04:00
Nathaniel LedfordandClaude 023ee0ef5b LR-BEHAV-DIALOGS: dialog confirm buttons name their action
The confirm button was "OK" in every dialog that had no special case:
New Album, Rename Photos, Auto-Stack, Capture Time, Export and more.
It now says what it does: Create, Rename, Stack, Change, Cull, Copy,
Paste, Export N Photos, and a verb per one-field prompt command.
"OK" stays only for a prompt opened with a command that has no verb.
The automation id button:dialogOk is unchanged.

Rename Photos' help text pointed at the Tags button without saying
what it does; it now says it lists template placeholders, and that
each file is renamed on disk with its XMP sidecar. Contact Sheet,
Auto-Stack and Slideshow Export said "1 photos" / "1 stacks"; their
nouns now agree with the count. All 13 catalogs updated.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-28 08:53:55 -04:00
Nathaniel Ledford 71be070a2f LR-PREF-GENERAL: Esc in a Settings text box gives the text back and stays in Settings 2026-10-28 08:24:30 -04:00
Dylan M. Taylor 307ecb981d fix(ui-egui): keep the Export dialog's original spacing before the preset row 2026-10-28 04:06:29 +00:00
Dylan M. Taylor 6e54232557 test: factor long UI and MCP scenarios into helpers 2026-10-28 03:25:18 +00:00
Dylan M. Taylor ce3ce07771 refactor(ui-egui): split the top bar and slider widget 2026-10-28 03:25:18 +00:00
Dylan M. Taylor f858578f8c refactor(ui-egui): split the detail view, mask overlay and denoise panel 2026-10-28 03:25:18 +00:00
Dylan M. Taylor 4ed9a5c869 refactor(ui-egui): split the grid cell and context menu 2026-10-28 03:25:18 +00:00
Dylan M. Taylor 620826cac0 refactor(ui-egui): shorten functions that format localized messages 2026-10-28 03:25:18 +00:00
Dylan M. Taylor 7b4236bc8b refactor(ui-egui): pass related arguments as small structs 2026-10-28 03:25:18 +00:00
Dylan M. Taylor b74612513c refactor(ui-egui): split the Export dialog body into sections 2026-10-28 03:24:18 +00:00
Dylan M. Taylor 8c3dd7ebd2 refactor(ui-egui): split dialog frame into title, buttons and confirm 2026-10-28 03:24:18 +00:00
Dylan M. Taylor 335defee47 refactor(ui-egui): one function per dialog body 2026-10-28 03:24:18 +00:00
Dylan M. Taylor 627804c161 refactor(ui-egui): split import finish and print settings 2026-10-28 03:24:18 +00:00
Dylan M. Taylor 63755f8a2e refactor(ui-egui): split the global shortcut dispatcher 2026-10-28 03:24:18 +00:00
Dylan M. Taylor 2f3002bc5c refactor(ui-egui): split preset import and find-missing commands 2026-10-28 03:24:18 +00:00
Dylan M. Taylor 71bf82f7bb refactor(ui-egui): split run_ui_command into parts and per-command functions 2026-10-28 03:24:18 +00:00
Dylan M. Taylor 6774d1419f refactor(ui-egui): replace wildcard imports with explicit lists 2026-10-28 03:24:18 +00:00
Dylan M. Taylor 5b5ddc3904 fix(engine): import denoise model and gpu names explicitly 2026-10-28 03:24:18 +00:00
Dylan M. Taylor ca69e74b62 fix(raw): check opcode byte counts without overflow 2026-10-28 03:24:18 +00:00
Dylan M. Taylor c9d44f7804 style(engine): expand module imports explicitly 2026-10-28 03:24:18 +00:00
Dylan M. Taylor 4d8369b091 test(engine): factor complex regression scenarios 2026-10-28 03:24:18 +00:00
Dylan M. Taylor 47839a61db refactor(bench): dispatch specialized render modes 2026-10-28 03:24:18 +00:00
Dylan M. Taylor 9c1ea73116 refactor(gpu): extract neural plan validation 2026-10-28 03:24:18 +00:00