`source_edge_needed` bounds the crop in the photo as shown (turned by its orientation), but counted
the rect's pixels with the unturned width and height. On a photo turned a quarter, a crop whose
aspect differs from the photo's then asked for too small a source: a square crop of a 3:2 photo
shown 2000 px long needs the full-size source, and got the 2560 px preview. It now counts them with
the turned size. The two tests that pinned the old count use the turned size too, and one checks
that square crop. Found by CodeRabbit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CvoftLURuf4uBmSatewB6V
source_edge_needed read the turned crop's rect unbounded, so a crop
reaching far past the photo (from a sidecar or an agent) picked the
512 px thumbnail for a frame the render bounds to photo size, and the
view was stretched from it. It now bounds the crop as Frame does, in the
photo's oriented frame; crops on the photo keep their source level.
Found by CodeRabbit on #2623.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CvoftPiKeZ3QkVHvA5LmR6
* Camera profile: Sony ILCE-7RM5 (α7R V)
* Camera profile: register the bundled ILCE-7RM5 profile
* Camera profile: attribution for the ILCE-7RM5 profile
* Camera profile: list ILCE-7RM5 among the built-in profiles in the README
* Camera profile: list ILCE-7RM5 in the Simplified Chinese README
* Camera profile: list ILCE-7RM5 in the Traditional Chinese README
* Camera profile: ILCE-7RM5 calibration set used the Standard creative style only
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.
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.
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.
The template file tests now create their folder through a Scratch guard
that removes it when the test ends, including when an assertion fails,
as tests_folders.rs and tests_slideshow_export.rs do.