1929 Commits

Author SHA1 Message Date
aiongg 21a53cf61f Merge title-bar-movable (lightcraft#2930) into docking-adoption; every craft-libs crate at craft-libs main 1e6f127 2026-10-26 02:20:20 +00:00
aiongg 1952d4fd3c Merge upstream main into docking-adoption 2026-10-26 02:18:38 +00:00
aiongg 003779ce51 Merge upstream main into title-bar-movable; craft-window at craft-libs main 1e6f127 2026-10-26 02:18:22 +00:00
Dylan M. Taylor 8020cd081c showcase: check the file is readable without an empty with-block (#3001) 2026-10-25 21:13:45 -04:00
aiongg 672baaea46 Merge lightcraft#2913 (egui 0.37) into docking-adoption; craft-ui and craft-docpath at craft-libs main a091680 2026-10-25 17:36:59 +00:00
aiongg c01d4c7074 Merge lightcraft#2913 (egui 0.37) into title-bar-movable; craft-window at craft-libs main a091680 2026-10-25 17:19:47 +00:00
aiongg d4cfd2e6d5 LR-BEHAV-TITLEBAR: the checklist row follows craft-window's title_bar 2026-10-25 17:07:16 +00:00
skylar taylor-barrick c627ce7210 egui-037: preserve modal input ownership and packaged font notices 2026-10-25 13:14:34 +01:00
skylartaylor e7144adc1f M0.37: reconcile current LightCraft main and qualify the migration 2026-10-25 07:47:22 +01:00
aiongg 7291abdc14 Merge upstream main into docking-adoption 2026-10-25 05:55:03 +00:00
aiongg 31ec62cd03 Info panel Target Photo edits, Add Keywords cursor request and Fixed keys follow-ups (#2889)
* LR-PREF-SHORTCUTS: the shortcuts panel's Fixed keys ignore keys saved for unknown commands

* KEYC-METADATA: an Add Keywords request the Keywords panel can't take in time expires

* LR-META-INFO: Target Photo saves an Info edit to the photo it shows
2026-10-25 00:58:10 -04:00
aiongg c3feda15c0 LR-META-INFO: the Info panel shows Selected Photos by default; gaps.md lists its change notes once 2026-10-25 03:36:14 +00:00
aiongg e339afc263 Merge PR #2810: LR-META-INFO: the Info panel can show metadata for the selected photos 2026-10-25 02:25:16 +00:00
aiongg 6e5e958639 Merge PR #2792: LRC-DEV-VIEWOPTIONS: View Options can turn off the loupe's "Rendering…" message 2026-10-25 02:24:50 +00:00
aiongg 17a3b80702 Merge PR #2790: LRC-DEV-VIEWOPTIONS: the info overlay can show briefly when the photo changes 2026-10-25 02:24:29 +00:00
aiongg 77196373a9 Merge PR #2870: KEYC-METADATA: Cmd+K / Ctrl+K puts the cursor in the Add keyword box 2026-10-25 02:24:29 +00:00
aiongg 122859d269 Merge PR #2846: KEYC-METADATA: Alt+0 / Alt+Shift+0 go to the next / previous keyword set 2026-10-25 02:24:03 +00:00
aiongg 387ad02b79 Merge PR #2832: LR-PREF-SHORTCUTS: a declared shortcut yields to a key the saved keymap gives another command 2026-10-25 02:23:22 +00:00
aiongg eb9ef0a40e Merge PR #2824: KEYC-METADATA: Cmd+Alt+Shift+C / V copy and paste metadata 2026-10-25 02:23:21 +00:00
aiongg 5c46163e66 Merge PR #2778: LRC-PRINT-TEMPLATES: print templates export to a file and import from one 2026-10-25 02:23:20 +00:00
aiongg f923967c63 Merge PR #2786: LRC-SS-PLAYBACK: a manual slideshow waits for the arrow keys 2026-10-25 02:23:20 +00:00
skylartaylor c057ccc23f Migrate LightCraft to egui 0.37 and reconcile dependency and font locks
Preserve current main, adapt frame/input and IME handling, and keep library
check results stable across layout passes. Include the matching Nix font lock
and reviewed attribution changes.
2026-10-25 02:54:42 +01:00
dotCooCoo beb42abb25 KEYC-METADATA: Cmd+K / Ctrl+K puts the cursor in the Add keyword box
Lightroom Classic's keyboard shortcut page lists Command+K (Ctrl+K on
Windows) for Add keywords. LightCraft had no key for it.

Add Keywords (panel.addKeywords, Cmd+K) shows the Keywords panel,
opens its Keywording section when it is folded shut, and puts the
cursor in the Add keyword box, so the next keywords typed go to the
selected photos. Pressed again, it leaves the panel open. With no photo
selected the panel shows its note, and selecting photos later does not
move the cursor into the box.

The command label has a row in every catalog. The KEYC-METADATA row,
docs/ui-parity.md and docs/library-shortcuts.md list the key. The
KEYC-METADATA row also lists the existing Alt+1 to Alt+9 keyword set
keys in place of "no keyword sets".
2026-10-24 16:48:57 -07:00
aiongg 02aa1e0f59 Docs: only the five split zones of ui.dock move have PascalCase names 2026-10-24 23:41:54 +00:00
aiongg a27d8c05d4 Docs: ui.dock above and below name the target's group 2026-10-24 22:19:29 +00:00
aiongg 5b7a4e9a94 Docs: ui.dock move lists the tab, above and below zones 2026-10-24 21:31:46 +00:00
dotCooCoo b572dee19f KEYC-METADATA: Alt+0 / Alt+Shift+0 go to the next / previous keyword set
Lightroom Classic's keyboard shortcut page lists Option+0 / Option+Shift+0
(Alt+0 / Alt+Shift+0 on Windows) for cycling forward and backward through
the keyword sets; LightCraft had no key or command for it. Next Keyword
Set (keyword.nextSet, Alt+0) and Previous Keyword Set
(keyword.previousSet, Alt+Shift+0) make the set after or before the
current one current, in the Keyword Set menu's order: Recent Keywords,
then the saved sets. The keys wrap around at either end, and Alt+1 to
Alt+9 then apply the new set's keywords.

The two command labels have rows in every catalog. The KEYC-METADATA and
LRC-LIB-KEYWORDS rows, docs/ui-parity.md and docs/library-shortcuts.md
list the keys.
2026-10-24 12:55:46 -07:00
aiongg 5ce171da23 Docking: the workspace, its commands and their parser come from craft-ui (craft-libs 16fb3d4)
craft-ui and craft-docpath are pinned to craft-libs 16fb3d46e1eaa0d455465e4e66a3ac7b17b55bd3.
The saved workspace is craft_ui::docking::Workspace<Panel>; settings written
before it had a version load as version 1. ui.dock params parse as the shared
DockCommand and apply through Workspace::apply_all. LightCraft keeps its
panels, permissions, default layout, photo-view checks, the fallback beside
the photo view for a panel with no recorded place, and its settings file.

The photo view takes side splits (accepts_splits on PROTECTED), so panels
still open and move beside it.

Tests: a version 1 workspace file loads and reopens its hidden panel; a drag
of a group by its bar moves both of its panels.
2026-10-24 19:23:08 +00:00
dotCooCoo 8d67b834e4 LR-PREF-SHORTCUTS: a declared shortcut yields to a key the saved keymap gives another command
When a saved keymap gave a key to one command and a later build declared
the same key as another command's default, one press ran both commands,
and menus and Help > Keyboard Shortcuts listed the key on both.

binding() now drops a declared shortcut while the keymap gives its key to
another known command, other than its contextual partner. handle(),
conflicts(), shortcut_of(), the menus and the shortcut editor read it.
In the editor such a row counts as changed, so its restore button takes
the key back.

handle() also let every saved entry stop the fixed keys on its key
(Enter in the grid, secondary keys such as Shift+X, the rating and
label digits, Home, End and Shift+arrows), including entries for
commands the build does not know. It now reads only the entries of
known commands, as binding() does, so a stale entry in ui.json no
longer silences Shift+X, a rating digit or a label digit.
2026-10-24 11:20:04 -07:00
dotCooCoo 2d5ce5382b Merge branch 'main' into feat/loupe-info-briefly 2026-10-24 10:32:28 -07:00
dotCooCoo cc557e189d KEYC-METADATA: Cmd+Alt+Shift+C / V copy and paste metadata
Copy Metadata and Paste Metadata had no shortcut. They now use
Cmd+Option+Shift+C and Cmd+Option+Shift+V on macOS and
Ctrl+Alt+Shift+C and Ctrl+Alt+Shift+V on Windows and Linux, the keys
Lightroom Classic's keyboard shortcut page lists for copying and
pasting metadata in the Library module. Both keys also work when
Windows and Linux deliver them as clipboard events. The KEYC-METADATA
row now lists the keys LightCraft binds (Cmd+S, the two new keys and
Alt+1 to Alt+9 for keyword sets) and every other key of that table
that is still missing. Gap 28 in docs/gaps.md and the Library keys in
docs/ui-parity.md list the two new keys.
2026-10-24 09:13:54 -07:00
Brandon Thomas 5f8593a074 Merge PR #673 2026-10-24 10:20:14 -04:00
Brandon Thomas f7d11bf750 Merge PR #1956 (with maintainer follow-up)
# Conflicts:
#	docs/whats-new.md
2026-10-24 10:20:14 -04:00
Brandon Thomas 82c39a9847 Merge PR #2011 (with maintainer follow-up)
# Conflicts:
#	docs/whats-new.md
2026-10-24 10:20:14 -04:00
Brandon Thomas d7e7639d7a Merge PR #2800 2026-10-24 10:20:13 -04:00
Brandon Thomas 3f1e5c21d6 Merge PR #2775
# Conflicts:
#	docs/gaps.md
#	docs/parity-checklist.md
2026-10-24 10:20:13 -04:00
Brandon Thomas 57c639246b Merge PR #2762
# Conflicts:
#	docs/parity-checklist.md
2026-10-24 10:20:13 -04:00
Brandon Thomas c19e1bd095 Tone Curve: What's New and parity row for the draggable parametric graph; the hover test compares with a frame away from the line
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 10:19:51 -04:00
Brandon Thomas 0deec1251f Merge main into #673
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 10:14:13 -04:00
Brandon Thomas a1ee846ad6 Merge main into #2011
Resolves the parity summary (regenerated), drops a duplicated #[cfg(test)], files the What's New entry
under today's date and bumps the checklist's Last updated line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 10:13:16 -04:00
Brandon Thomas 5ba9b48d30 Merge main into #2800
main replaced "Show Clipping" with "Clipping": the PR's Beschneidung term moves to the new key.
Also takes CodeRabbit's two wording suggestions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 10:08:20 -04:00
dotCooCoo 0b1b47ee7b LR-META-INFO: the Info panel can show metadata for the selected photos
With several photos selected, the Info panel offers Show Metadata For:
Target Photo (the default) shows the active photo's values as before,
and Selected Photos shows the values the selected photos share. A text
field or GPS where they differ is empty with a Mixed hint, and
Copyright Status shows Mixed. What is typed there is saved to every selected
photo, and a Mixed field typed in and left empty clears it on all of
them. A field left as it was saves nothing, even when the choice
changes during the edit. The choice is saved with the app settings, and
`view.infoSelectedPhotos {on?}` sets it for an agent.
2026-10-24 07:03:31 -07:00
Julian Zahnow 18b84f97d1 i18n(de): review the interface strings and formats messages
A pass over all 2,565 interface strings and 299 formats messages of the
German catalogs (What's New lines not included). 108 messages change:

- Lightroom terms: Tönung (Tint), Beschneidung (Clipping)
- one word per thing: Bedienfeld (panel; Bereich stays for sidebar
  sections), Begleitdatei (sidecar), Dia (slide), Zuschnitt (crop),
  Farbmarkierung (label) where "Markierung" read as the pick/reject flag,
  Verschlusszeit, Smart-Album, Perspektivkorrektur (Upright),
  Aktivitätsstapel
- "Ihre Dateien/Fotos" at the start of a sentence read as the formal
  "your" in a du catalog; rephrased
- double colons and "1 Fotos" in count messages, awkward phrasings
- spaced en dash instead of em dash, no space before a final ellipsis,
  German quotes around {profile}

The terms are listed in docs/localization-de.md; localization-parity
records the review.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 15:28:43 +02:00
dotCooCoo a4ddb9198f LRC-DEV-VIEWOPTIONS: View Options can turn off the loupe's "Rendering…" message
View Options gets the Loupe View tab's General section with "Show message
when loading or rendering photos". It is on by default, so the loupe keeps
saying "Rendering…" as before. With it off, the loupe does not show the
"Rendering…" pill while an edit renders, or the "Rendering…" text over an
empty loupe; the "can't be opened" messages still show. The choice is saved
with the app settings, and `view.viewOptions {loupeMessages}` sets it for
an agent.
2026-10-24 04:45:18 -07:00
dotCooCoo 758c5e170a LRC-DEV-VIEWOPTIONS: the info overlay can show briefly when the photo changes
View Options had no Show Briefly When Photo Changes. A tick box under
Loupe Info 1 and one under Loupe Info 2 now choose the Info that shows
for 3 seconds each time the loupe changes to another photo while the
info overlay is off. Ticking one unticks the other. An overlay that is
on stays on and shows its own Info. view.viewOptions takes
briefly (off, basic or exposure), and the choice is saved with the app
settings; a settings file without it reads as off.
2026-10-24 03:23:50 -07:00
dotCooCoo adf94a87cb LRC-SS-PLAYBACK: a manual slideshow waits for the arrow keys
The slideshow always advanced on its own after the slide duration.
The new Manual slideshow setting (Settings > Slideshow > Playback, or
manual in slideshow.playback and view.slideshow) keeps each slide, the
intro and the ending up until the right or left arrow or the control
bar changes it. Space, Esc, random order and repeat work as before.
Exports still use the slide duration. The setting is saved with the
library and in slideshow templates; a template without it reads as off.
2026-10-24 01:46:49 -07:00
skylartaylor aa870ffbe1 egui-037: reconcile current main and preserve valid catalog chains 2026-10-24 09:04:49 +02:00
ronibalthazar 522ae832ec fix: scope relative-date expiry to referenced albums 2026-10-24 07:28:51 +01:00
dotCooCoo 59e9a6a4f3 LRC-PRINT-TEMPLATES: print templates export to a file and import from one
The Print dialog's templates could be saved, applied and deleted, but
not moved to another library or another computer. Each saved template
now has an Export… button that writes it to a .lcprint file, and
Import… beside Save adds templates from such files.

print.template.export {name, path} writes {format, version, name,
settings}. print.template.import {path} reads at most 256 KB, checks
the format, version, name and every setting as a saved template's
settings are checked, drops cell photos and guides, and adds the
template under its name, or under "name (2)" and so on when the name is
in use. The buttons appear where the host provides open and save
dialogs: the desktop app does, and the web build does not.
2026-10-23 23:18:35 -07:00
ronibalthazar 18c56f03d4 fix: expire relative-date view caches on minute change 2026-10-24 07:02:22 +01:00