Commit Graph
4204 Commits
Author SHA1 Message Date
aiongg 7cd07ce61e Merge PR #3410: Issue #3406: Auto Import says when it can't read the watched folder 2026-10-31 02:09:28 +00:00
aiongg 0ebcca0a82 Merge PR #3392: LRC-LIB-MISSING: settling waits for the Missing Photos count, which can't panic on spawn 2026-10-31 02:09:27 +00:00
aiongg 9c471f3934 Merge PR #3383: PERF-SMART: a File path rule over a non-ASCII path folds case in stack buffers instead of allocating two strings per photo 2026-10-31 02:09:27 +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 69eaf50db9 Merge PR #3262: LR-BEHAV-ACCESS: the photo in Detail is named with its file name
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:11 +00:00
aiongg 13b2534f80 Merge PR #3221: LR-VIEW-PHOTOGRID: the grid's empty view names Import Photos' shortcut as the keymap has it
docs/whats-new.md, docs/parity-checklist.md: both sides' entries; header keeps the newer date.
2026-10-31 02:08:54 +00:00
aiongg e2d750ca0e Merge PR #3212: LR-BEHAV-ACCESS: a date header in the photo grid is named with the text it shows
crates/ui-egui/tests/it/main.rs: both mod lines kept. docs/whats-new.md, docs/parity-checklist.md: both sides' entries, header and LR-BEHAV-ACCESS row combined.
2026-10-31 02:08:33 +00:00
aiongg 6b99e96207 Merge PR #3209: LR-BEHAV-ACCESS: the sidebar's disclosure triangles name their row
docs/whats-new.md: both entries kept under their dates. docs/parity-checklist.md: header and revision rows carry both sides.
2026-10-31 02:08:16 +00:00
aiongg 8cbd95ef89 Merge PR #2991: KEYC-METADATA: Cmd+Alt+Shift+K / Ctrl+Alt+Shift+K sets the keyword shortcut, and Shift+K adds or removes it
docs/parity-checklist.md, docs/ui-parity.md: headers, the KEYC-METADATA and LRC-LIB-KEYWORDS rows carry both sides' changes; revision rows kept from both.
2026-10-31 02:07:47 +00:00
aiongg c250fa0c11 Merge PR #2986: Issue #2980: Clear Color Label can be given a keyboard shortcut 2026-10-31 02:07:12 +00:00
aiongg 1167de60d7 Merge PR #2879: KEYC-METADATA: Cmd+Shift+K / Ctrl+Shift+K edits the keyword picked in the Keyword List
docs/parity-checklist.md, docs/ui-parity.md: header lines and the KEYC-METADATA row carry both sides' changes; revision rows kept from both.
2026-10-31 02:07:10 +00:00
aiongg 33403b171d Merge PR #2856: Keywords: start and stop painting with the keyboard shortcut 2026-10-31 02:06:48 +00:00
aiongg 6871d49c96 Merge PR #2830: LR-BEHAV-MULTISELECT: replacing the selection with a repeated id keeps each photo once
docs/parity-checklist.md: kept both revision rows.
2026-10-31 02:06:47 +00:00
Dylan M. Taylor c9808c2291 fix(flatpak): allow reading launcher version pins (#3420)
* fix(flatpak): allow reading launcher version pins

* fix(flatpak): allow reading launcher version pins
2026-10-30 20:06:01 -04:00
x-labb edcc801a9c Issue #2980: Clear Color Label's toast ignores a label parameter
photo.clearLabel takes no colour, but the toast code read params[label] for
it as for photo.label, so photo.clearLabel {label: red} cleared the photo and
showed 'Red Label'. The colour is read for photo.label only.
2026-10-30 21:03:50 +01:00
x-labb cc8a9f3d3d Issue #2980: Clear Color Label can be given a keyboard shortcut
Setting a colour label is photo.label with the colour as a parameter, and the
keyboard shortcuts editor binds a key to a command, not to a parameter, so
only 6-9 had keys and clearing a label could not be given one. photo.clearLabel
is the same as photo.label with none, as a command of its own. The Photo >
Set Color Label > None row runs it and shows its key.
2026-10-30 21:03:50 +01:00
Brandon Thomas 8aabf61449 Merge PR: integration batch 45 (17 community PRs)
Integration batch 45 (17 community PRs)
2026-10-30 15:57:58 -04:00
Antonio Sokic b9ba9d4640 Issue #3406: tie the unreadable-folder note to the folder that failed
The note now goes when another folder is watched, a listing of a folder no longer watched is ignored, and "can be read again" is logged only for the folder that failed.
2026-10-30 20:26:34 +01: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 7e8bf5cd9e Merge PR #2831 2026-10-30 15:24:41 -04:00
Brandon Thomas ddbc218ad1 Merge PR #3213
# Conflicts:
#	docs/parity-checklist.md
2026-10-30 15:24:40 -04:00
Brandon Thomas c1fb95dfc0 Merge PR #3225 2026-10-30 15:24:30 -04:00
Brandon Thomas a0133db92e Merge PR #3038 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
Brandon Thomas a5721dedfd Merge PR #3314 2026-10-30 15:24:30 -04:00
Antonio Sokic 052d95cd66 Issue #3406: Auto Import says when it can't read the watched folder
A watched folder that was removed, unmounted or not allowed looked like one with nothing new: the listing error was logged at debug only. It is now logged as a warning once when it starts (and once when the folder can be read again), and Settings > Import shows the reason under the watched folder.
2026-10-30 19:58:09 +01:00
mpratsakiandClaude Opus 5.5 eb693b33b0 LRC-LIB-MISSING: restore the album-menu labels' … and – characters
The previous commit's sections.rs went through a PowerShell read and
write in the Windows ANSI code page, which turned …, – and ▸ into
mojibake in five album-menu labels (Create Album…, Sort Albums A–Z, …)
and two doc comments, so the labels missed their translation keys
(CodeRabbit on #3392). The file's text outside missing_count is now
byte for byte what it was before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 18:49:51 +02:00
mpratsakiandClaude Opus 5.5 1def7587f5 LRC-LIB-MISSING: a catalog change during a timed refresh is pending at once
A catalog change seen while a timed refresh of the Missing Photos count
is running cannot start its recount until the refresh ends, and the
refresh is not pending work, so settle() could return before either
finished and the row the recount adds moved the folder rows afterwards
(CodeRabbit on #3392).

The change is now counted as pending from the frame it is seen
(`owed`); the recount takes that entry over when it starts and drops it
once its count is stored. settling_waits_for_a_recount_owed_during_a_timed_refresh
adds a missing photo while a slow refresh runs and fails without this.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 18:16:05 +02:00
mpratsakiandClaude Opus 5.5 9f7936c3c6 LRC-LIB-MISSING: a slow count's timed refresh doesn't hold up settling
While a headless run settles, its simulated clock runs several times
faster than wall time, so with every Missing Photos count pending, a
count that takes about a second started the next 5 s refresh before the
last one finished and settle() never ended (120 s timeout with a 1 s
count, 48 s with 600 ms). That would also stall lightcraft-cli snapshot
on a library on a slow share.

Only the first count and a recount after a catalog change, which add or
take away the Missing Photos row, are pending work now; the timed
refresh is not. Settling takes as long as the count (1.0 s for 1 s,
3.0 s for 3 s). The regression test also checks that settling ends
while a slow count refreshes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:32:15 +02:00
Nathaniel Ledford 07db9568ef LR-BEHAV-ACCESS: the grid's Thumbnail size reads as a slider to screen readers 2026-10-30 09:28:07 -04:00
Nathaniel Ledford c208859ec2 PERF-SMART: a filePath rule over a non-ASCII path folds case in stack buffers instead of allocating two strings per photo 2026-10-30 09:09:43 -04:00
Dylan M. Taylor 5194cc20de UPD.1: honor pretend versions and track the updater icon in CI (#3365) 2026-10-30 09:02:24 -04:00
mpratsakiandClaude Opus 5.5 142ddcff29 LRC-LIB-MISSING: the Missing Photos count is pending sidebar work
The sidebar's Missing Photos row appears when the background count of
missing files lands, and moves every row below it down. That worker was
not counted in fs_cached_running, so Headless::settle() did not wait for
it: on a busy machine the row appeared after settling, and a click aimed
at a folder row from the settled layout landed on the row above it
(a_folder_menu_locates_its_missing_tree_only located `other` instead of
`trip`).

- missing_count adds itself to the fs_cached_running counter before it
  starts and takes itself off after the count is stored, as fs_cached does
- the worker starts with thread::Builder::spawn instead of thread::spawn,
  which panics when the OS refuses a thread; on failure the last count
  stays and the next refresh tries again
- settling_waits_for_the_missing_photos_count delays the worker by 1 s
  (test-only field on LightcraftApp, which ui.set does not rebuild) and
  fails without the fix

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 14:05:18 +02: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
Dylan M. Taylor b2d89895ad CI: workflows only call craft-common-actions at @main (#3356)
AGENTS.md (and CLAUDE.md where present) gets a CI workflows section: workflows only call
craft-common-actions at @main, with no other jobs; feature and fix PRs don't touch CI and
link or open a craft-common-actions issue (a PR only for a small fix that is safe for
every app and does not increase CI time); legacy jobs
aren't added to and move only as their own task, staying until a shared workflow runs them.

windows-arm64.yml moves from its SHA pin to @main. The pinned revision is on
craft-common-actions main and the workflow (and the actions it calls) is identical
there, so nothing changes in behaviour.
2026-10-29 22:36:34 -04:00
Dylan M. Taylor 260d797acc deps: bump tar, zip, roxmltree, rustls-webpki and symphonia to their latest versions (#3358)
- `rustls-webpki`: 0.102.8, 0.103.15 → 0.102.8, 0.103.16
- `zip`: 7.2.0, 9.1.0 → 7.4.0, 9.1.3

Lockfile only.
2026-10-29 22:21:27 -04:00
Nathaniel Ledford 5fe7a46f58 LR-BEHAV-ACCESS: the photo in Detail is named with its file name for screen readers 2026-10-29 13:38:03 -04:00