Commit Graph
3770 Commits
Author SHA1 Message Date
francoisgnandClaude Opus 5.5 2e8a50a40c Merge PR #1914@2f88d847f into round3a-integration
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 02:44:32 +03:00
francoisgnandClaude Opus 5.5 c5df3eea40 Merge #2701@f56e8c67a (its upstream merge) into round3a-integration
Docs only, and the batch's side already holds everything #2701's merge
resolved (its rows that differ are main's rows other batch PRs edited).
Tracker summary recomputed (`cargo xtask parity --write`).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 02:43:16 +03:00
KetbomeandClaude Opus 5.5 2f88d847f4 LR-BEHAV-DIALOGS: a backdrop click that closes an open dropdown keeps the dialog
Read whether a popup is open before the dialog window is drawn: drawing it
closes a dropdown the click lands outside of, so a quick click (pressed and
released in one frame) used to see no popup and close the dialog too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:34:47 -03:00
francoisgnandClaude Opus 5.5 f56e8c67a7 Merge upstream/main (integration batch 43) into feat/issue-1290-launch-library-choice
docs/parity-checklist.md: header lists both sides' changes, revision rows of
both sides newest-first, summary recomputed (`cargo xtask parity --write`).
docs/whats-new.md: #1290's entry joins upstream's 2026-10-23 section.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 02:32:25 +03:00
francoisgnandClaude Opus 5.5 987c54bb51 Merge PR #1499@8d71b7999 (graphic watermarks and HDR JPEG size limits, onto batch 43) into round3a-integration
docs/parity-checklist.md: header lists both sides' changes; #1499's two new
dated prose entries (2026-10-23, 2026-10-24) become revision rows like its
two earlier ones, so the history stays one table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 02:27:33 +03:00
francoisgnandClaude Opus 5.5 144d900c21 Merge upstream/main (integration batch 43, #2729, #2737, #2412) into round3a-integration
Conflicts:
- apps/lightcraft/src/native_menu.rs: upstream's item swapping (macOS keys
  given up for real, Help menu not swapped, Settings / Quit tracked) with
  KEY-GRID's keymap-aware rows. `Item.label` stays the text the row shows
  (native_item_presentation), so `Item::native_label` reuses it instead of
  formatting it again; Settings / Quit store theirs through
  display_item_label, as upstream's native_label did. No early return after
  a rebuild (upstream).
- crates/ui-egui/src/i18n.rs: upstream's tests (#2729: one test per check
  across languages, gaps reported, never a failure) plus the batch's two new
  ones (dropped-photos notice, Polish counts); production code as merged.
- grid.rs, keyword_list.rs, masking.rs: the translation tests #2729 removed
  stay removed; the batch's new keyword and segmenter tests stay.
- cmd/library.rs, ui-egui/src/lib.rs: both test modules, each with its
  #[cfg(test)].
- xtask/src/main.rs: #2302's test_selected and upstream's translation_gaps.
- docs: tracker / gap rows take both sides' edits, headers list both sides'
  changes, history rows of both sides newest-first. What's New: one section
  per date, newest first (the batch had 10-22 above 10-23, and second 10-21
  and 10-19 sections); no line lost.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 02:26:48 +03:00
nevicia2010-hub 8d71b79993 LR-EXP-WATERMARK: integrate batch 43 while preserving export fixes 2026-10-24 00:14:33 +02:00
nevicia2010-hub 11bbada692 LR-EXP: integrate upstream export changes and parity records 2026-10-24 00:01:09 +02:00
Brandon Thomas 98702b5c44 Merge PR #2744: integration batch 43 (21 community PRs)
Integration batch 43: 21 community PRs
2026-10-23 17:36:11 -04:00
Brandon ThomasandClaude Opus 5.5 82eef5b266 Integration: What's New lists 2026-10-23 above 2026-10-22
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 17:21:34 -04:00
Brandon Thomas 73f1b4906e Merge PR #2622
# Conflicts:
#	docs/gaps.md
2026-10-23 17:21:18 -04:00
Brandon Thomas 1acd2938ea Merge PR #2546
# Conflicts:
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-23 17:21:18 -04:00
Brandon Thomas 708e8a8bfc Merge PR #2688
# Conflicts:
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-23 17:21:17 -04:00
Brandon Thomas 92bd08ba5c Merge PR #2618
# Conflicts:
#	docs/whats-new.md
2026-10-23 17:21:17 -04:00
Brandon Thomas bbf9b713f2 Merge PR #2526
# Conflicts:
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-23 17:21:17 -04:00
Brandon Thomas e700170dc6 Merge PR #2727
# Conflicts:
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-23 17:21:17 -04:00
Brandon Thomas b106ceaca1 Merge PR #2621
# Conflicts:
#	docs/whats-new.md
2026-10-23 17:21:16 -04:00
Brandon Thomas 0605272e69 Merge PR #2620 2026-10-23 17:21:16 -04:00
Brandon Thomas 4d9914d4db Merge PR #2709 2026-10-23 17:21:16 -04:00
Brandon Thomas 652fa88c12 Merge PR #2670 2026-10-23 17:21:16 -04:00
Brandon Thomas d7763492c4 Merge PR #2210 2026-10-23 17:21:16 -04:00
Brandon Thomas c342c480cf Merge PR #2665 2026-10-23 17:21:16 -04:00
Brandon Thomas a344e277f0 Merge PR #2728 2026-10-23 17:21:16 -04:00
Brandon Thomas 433ce2375d Merge PR #2109 2026-10-23 17:21:16 -04:00
Brandon Thomas 8c52e2ee95 Merge PR #2630 2026-10-23 17:21:16 -04:00
Brandon Thomas 3ab88f50ac Merge PR #2612 2026-10-23 17:21:16 -04:00
Brandon Thomas cb94eb0e3a Merge PR #2626 2026-10-23 17:21:16 -04:00
Brandon Thomas 4f30720374 Merge PR #2702 2026-10-23 17:21:16 -04:00
Brandon Thomas 6a9e1b504f Merge PR #2694 2026-10-23 17:21:16 -04:00
Brandon Thomas d9db2d32e7 Merge PR #2596 2026-10-23 17:21:16 -04:00
Brandon Thomas e44cbc8725 Merge PR #2543 2026-10-23 17:21:16 -04:00
Brandon ThomasandClaude Opus 5.5 5e5602b4ca Enable Filters: Find Similar turns filtering back on; a filter put aside follows renamed keywords, people and folders
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 17:20:11 -04:00
Brandon ThomasandClaude Opus 5.5 089bf60ede Colour-range mask: mask.update caps the samples too
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 17:13:39 -04:00
francoisgnandClaude Opus 5.5 ce339b0b66 Merge #2701@c6fe7281f (no drop toast on frames with nothing dropped) into round3a-integration
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:10:14 +03:00
francoisgnandClaude Opus 5.5 85947ca069 Round 3a: the failing-download test no longer races the mirror's 404
tests_segment::a_failing_download_ends_with_an_error_and_never_blocks
checks that a second download request while one runs starts nothing. Its
local mirror answered 404 at once, so on a loaded runner the first
download could end before the second request, which then rightly started
a new one: the assertion failed (upstream's gate on #2689, 5223c8095). The
mirror's first answer now waits until the second request is made. A
300 ms pause between the two requests failed the test before and passes
now. Test code only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:10:12 +03:00
Brandon ThomasandClaude Opus 5.5 4d3ea22e9c Masking: drop the one-off overlay screenshot example and its png dev-dependency
Keeps CanvasMap::new and mask_overlay private to detail.rs again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 17:06:43 -04:00
Dylan M. Taylor 5ca49b3eab ci(sonar): don't cancel superseded runs on main, so coverage is published (#2737) 2026-10-23 17:01:32 -04:00
aiongg b264557916 i18n: missing translations are reported, never a failure (#2729)
A message a catalog lacks, or translates as an empty string, shows in
English and fails nothing:

- build.rs no longer requires every formats catalog to carry the same
  messages, and tr_format! gets a last arm that formats the English
  source, so a message no catalog has builds.
- Coverage tests (every language translates X) and tests of one
  language's exact wording are gone; the language-switching, layout,
  date, placeholder and user-value tests read the catalog's own value
  instead of a hard-coded translation.
- i18n::tests::translation_gaps_report lists, per language, the plain
  and format messages it lacks and its untranslated What's New lines.
  It always passes; cargo xtask ci
  runs it from the test step's binary after the tests.
- catalogs_load checks that every catalog file is a JSON object of
  strings with each key once; it.json named "Dimensions" twice.
2026-10-23 16:42:28 -04:00
aiongg d71b83b2bc Catalog import: resolve catalog paths with craft-docpath's resolve_absolute (#2412)
doc_path::resolve uses craft_docpath::resolve_absolute; a path that resolves but is not absolute here is reported as not on this computer. Adds tests for Windows-form, GVFS-relative and colon-in-name paths, and a git-sources check in nix.yml and release.yml.
2026-10-23 16:42:09 -04:00
francoisgnandClaude Opus 5.5 c6fe7281f5 #1290: no drop toast on frames with nothing dropped
The drop code runs every frame, mostly with nothing dropped; while the
launch list was up, hold_dropped then toasted "The photos are imported once
a library is open" on every frame, hiding any other toast (the presets
one among them). An empty drop is a no-op now. Found by CodeRabbit on
#2701; the test steps frames with the list up and fails without the fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 23:25:40 +03:00
Nathaniel Ledford c13875f77d LR-BEHAV-ACCESS: the feature row records the dialog Tab order and its test 2026-10-23 15:33:59 -04:00
NetterSilverandClaude Haiku 5.5 c7cff2d9a7 Fix smart album gte/lte rules missing equal f-number and focal length
Found while testing crates/catalog/src/rules.rs:673 (num_op), reached via Rule::matches at :956-957

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 21:24:32 +02:00
Nathaniel Ledford aae03c8f47 LR-BEHAV-ACCESS: Tab leaves the name field of a dialog
dialog_field took the focus back every frame while the field wasn't being edited, so Tab never
reached the check box, Cancel or OK of New Album, New Smart Album, Save Metadata Preset and the
other one-field dialogs. It now takes the focus once, when the dialog opens (the way the keyword
dialogs already did).
2026-10-23 15:20:09 -04:00
Nathaniel Ledford f0cdb20a86 Tests: a photo chosen during an import is chosen while the import is held, not while a clock runs 2026-10-23 15:10:15 -04:00
francoisgnandClaude Opus 5.5 5223c80954 Merge #2701@da434b059 (presets dropped with no library open are refused) into round3a-integration
crates/ui-egui/src/lib.rs: the batch's handle_dropped_files refuses presets
while no library is open, as #2701 does. The drop card says so, and its
"photos wait" line is desktop-only (the web build's drops import into its
session as before). photos_dropped_with_no_library_open_wait_for_one also
drops a preset; LR-IMP-DRAGDROP row updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:05:14 +03:00
francoisgnandClaude Opus 5.5 da434b0598 #1290: presets dropped with no library open are refused, not lost
Presets belong to a library (presets.json, <library>/Profiles): dropped
while the launch list or the failed-library window is up, they went into
the session the library opened then replaced. They are refused with a
toast now; the photos of the same drop still wait for the library. Docs:
What's New, control protocol, the #1290 tracker row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:02:11 +03:00
francoisgnandClaude Opus 5.5 edecba5ae8 Merge #2701@52ce53622 (photos dropped with no library open wait for one) into round3a-integration
crates/ui-egui/src/lib.rs: the batch's handle_dropped_files holds the photos
(library_problem::hold_dropped) before the Lightroom / running-import
checks. The drop card (drop_overlay.rs, LR-IMP-DRAGDROP) says the photos
wait instead of announcing an import or a review; test
photos_dropped_with_no_library_open_wait_for_one drops through
`ui.dropFiles`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:55:16 +03:00
francoisgnandClaude Opus 5.5 52ce536225 #1290: photos dropped on the launch list wait for the library chosen
While no library is open (the launch list, or the window of a library that
failed to open), a drop went into the in-memory session that the library
chosen then replaced, so the photos were gone from view. They now join the
command line's files (`pendingImport`) and are imported into the library
that opens (or the temporary session), with a toast saying so. Found by
CodeRabbit on #2689. Test
photos_dropped_on_the_launch_list_go_into_the_library_chosen fails with
the hold disabled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:52:44 +03:00
francoisgnandClaude Opus 5.5 be51f07495 Round 3a: Lightroom import docs say when the destination question is asked; one revision table
CodeRabbit on #2689 (head b840f3f29):
- docs/control-protocol.md, docs/lightroom-catalog-import.md (#2685): the
  destination window opens only when settings.lightroomImport is "ask"; the
  three places that said it always asks now say so.
- docs/parity-checklist.md: two dated prose entries cut the revision table,
  so the rows after them (#2685's among them) fell outside it. They are rows
  now, and the batch's rows read newest-first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:51:28 +03:00
francoisgnandClaude Opus 5.5 b1611b6d5e Merge upstream/main (#2667 shared CI gate workflow) into round3a-integration
.github/workflows/ci.yml (add/add with #2302): upstream's, which runs the
same `cargo xtask ci` gate through craft-common-actions' gate.yml. #2302's
workflow is superseded; its `ci --quick` (xtask) stays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:41:21 +03:00