What's Changed
- Fix Lightroom catalog import results and reduce CPU and memory use by @skylartaylor in #1406
- ci: add comfortable runtime limits to unbounded jobs by @skylartaylor in #1836
- Integration batch 36: 110 reviewed community PRs (slideshow, camera verification, translations, never-crash, UI) by @echelon in #1843
- DNG export and Convert / Copy as DNG write the colour a raw without matrices opens with by @marcoarnulfo in #1750
- Edit panel: the Reset tooltip shows the platform's shortcut, Ctrl+Shift+R on Windows and Linux by @marcoarnulfo in #1753
- LR-META-XMP: Retry automatic XMP sidecar writes that failed by @endthestart in #1772
- Never crash: Check raw data size before allocating in PEF, TIFF tiles and ARW6 (#1512) by @endthestart in #1776
- Catalog and downloads: Don't write through a link at a temp file's name (#1502) by @endthestart in #1779
- Faces: Drop faces made from a photo's old file when it is replaced (#1524) by @endthestart in #1780
- LR-PREF-GENERAL: Keep the Settings window in place when switching tabs by @endthestart in #1782
- fix(ui): prevent search text selection from dragging the window by @Ni-zav in #1784
- cli: refuse non-object snapshot params instead of panicking by @midasmatterhorn in #1791
- Packaging: advertise HEIF images and repair the AppStream screenshot by @IanHollow in #1795
- codecs: decode lossless (SOF3) JPEGs correctly by @midasmatterhorn in #1796
- Open the active grid photo with Enter by @FredApps in #1797
- LRC-DEV-LOUPEOVERLAY: a layout image over the loupe (View ▸ Loupe Overlay) by @BuonBreda in #1798
- LR-CROP-STRAIGHTEN: turning a crop shrinks it about its centre instead of swapping it for the largest crop (#1794) by @guillehr2 in #1804
- ui: render the Show All Masks overlay in zoom windows by @midasmatterhorn in #1808
- Fix crop.rotateAspect turning a zero-size crop into a NaN rect by @Silvertree2010 in #1813
- Keep crop finite when crop.set gets a huge rect by @Silvertree2010 in #1816
- LR-META-XMP: radial masks keep their inside/outside from Lightroom (fixes #1815) by @bitshiftza in #1817
- LR-LIB-REMOVE-ALBUM: removing a photo from an album keeps it in its folder (fixes #1805) by @bitshiftza in #1818
- LR-IMP-LOCAL: browsing a Local folder keeps or picks the active photo (fixes #1447) by @bitshiftza in #1820
- Detail: snap the 100% view to whole screen pixels by @john01px2022 in #1831
- LR-VIEW-BEFOREAFTER: both panes animate together during click zoom (stacked on #1747) by @AlexChambers in #1832
- CI-RUST195: keep strict Clippy clean on Rust 1.95 by @Myrarc in #1835
- Keywords panel: sections fold, Add keyword offers the library's keywords, and removals say what they touched by @nledford in #1166
- i18n: add Czech (cs) interface language by @Losminek in #1190
- Nix: nix build and nix develop work again on NixOS by @dev-null-undefined in #1211
- KEY-SLIDER-NUDGE: scrolling sideways over a slider adjusts it by @PiMinusMax in #1465
- LR-RAW-NEF: Coolpix P7000 NRW files decode without stripes and with their white balance by @radialmonster in #1467
- build: automatically include CJK fonts and fix Windows packaging compatibility by @draco892 in #1479
- LR-VIEW-PHOTOGRID: a mouse-wheel notch scrolls a third of the grid or filmstrip by @MarkusFriedel in #1482
- LR-EDIT-DETAIL-NR: noise reduction works in the original's pixels, so previews match the full-size render scaled down (fixes #960) by @atmikshetty in #1489
- KEYC-RATING: backtick cycles the flag; Cmd+Up / Cmd+Down raise / lower it by @atmikshetty in #1490
- LR-LIB-PEOPLE: rename a person across the library (#1444) by @Hossamvs in #1510
- LR-EDIT-EFFECTS-DEHAZE: raster::morph square min / max filters (split from #1286) by @mattsivak in #1521
- Fix range-mask handle drags and color sampling settings by @nevicia2010-hub in #1538
- LR-IMP-LOCAL: Forget untouched records of deleted files when browsing a folder again (#1392) by @endthestart in #1547
- LR-BEHAV-GPU: Turn GPU rendering off after the GPU is lost while running (#1337) by @endthestart in #1548
- LR-MERGE-PANO: Keep panoramas at full resolution when memory allows (#1455) by @endthestart in #1549
- Library grids: Home/End and Shift+Left/Right selection keys; Cmd+O opens a library, Shift+H visualizes HDR by @eliets2 in #1555
- LR-LIB-STACK: deleting a stacked photo drops it from the stack so i/n badges update (fixes #1493) by @squareSphere29 in #1556
- LR-META-INFO: Show the lens for Nikon DSLR raws by @endthestart in #1590
- LR-IMP-DEVICE: Show the import review when a card is connected by @endthestart in #1601
- LR-MERGE-HDR: merged DNGs declare the white balance their source shows (follow-up to #1123) by @alvarohn in #1613
- LR-BEHAV-WINDOW: the window opens at the size it was left at, zoomed if it was by @nledford in #1625
- Protect originals and preserve existing files when exporting presets by @SarimSyed in #1637
- LR-LIB-SMARTALBUM: a view can hold its photos until it is refreshed by @nledford in #1656
- PERF-EDIT: an edit is followed from what it touched, not worked out from every photo (stacked on #1656) by @nledford in #1660
- PERF-EDIT: a smart album's count follows an edit, asking only the photos it touched (stacked on #1660) by @nledford in #1662
- LRC-LIB-PEOPLE: a double click on an unnamed face opens its photo in the loupe by @marcoarnulfo in #1665
- Import: find sidecars whose photo extension or .xmp differs in case by @emmertex in #1686
- fix(mcp): stop stdio cleanly after output failure by @euisuh in #1688
- Loupe: the info overlay's shadow is dark, not a second white copy of the text by @marcoarnulfo in #1693
- LR-IMP-FORMATS: decode EOS R6 Mark II C-RAW with adaptive QP up to 175 by @cookingwithsimon in #1694
- Metadata: read the Panasonic lens name from maker note tag 0x0051 (#1671) by @switch87 in #1703
- LR-PROF-BROWSER: long profile names are cut short in a narrow panel by @marcoarnulfo in #1710
- LR-MERGE-HDR: moving clipped highlights stay, less memory, and HDR for Each Bracket Set by @dev-null-undefined in #1715
- Colour grading wheels: vivid sRGB rim fading evenly to neutral by @emmertex in #1719
- MCP-CONTROL: validate remote reply framing and IDs (#1716) by @G6bill in #1722
- Perf: DNG Deflate tiles at level 1, 4.8–7× faster writes for 3–12 % more bytes by @dev-null-undefined in #1731
- render --settings applies the preset in a .lcpreset, and refuses files it can't read by @marcoarnulfo in #1733
- Lightroom import: raise catalog/WAL size limit from 1 GiB to 4 GiB by @vpjl in #1738
- catalog: slice captured dates on char boundaries so non-ASCII dates don't panic by @midasmatterhorn in #1741
- packaging: RPM requires library sonames, so openSUSE can install it by @tydude001 in #1744
- Before/After: a click on the Before view zooms in on the point clicked by @marcoarnulfo in #1747
- gpu: init-marker tests use their own scope counter so parallel device tests cannot join them (#1721) by @MarekSpodBiedry in #1758
- Top bar: in full screen the left buttons move into the traffic lights' space by @marcoarnulfo in #1767
- Widen offline reverse-geocoding longitude search at high latitudes by @Silvertree2010 in #1769
- Never crash: Write preview cache files from one bounded writer (#1522) by @endthestart in #1777
- raw: check maker-note crop bounds with checked_add by @midasmatterhorn in #1792
- engine: refuse negative indices instead of targeting element 0 by @midasmatterhorn in #1793
- LRC-SS-PLAYBACK: slideshow playback: fades, random order, repeat, previews prepared in advance, playback controls by @bitshiftza in #796
- Use consistent arrows throughout the app and clarify histogram controls by @shurkanTwo in #806
- Slideshow layout, options and backdrop: composed slides in playback and a live preview (LRC-SS-LAYOUT/OPTIONS/BACKDROP, stacked on #796) by @bitshiftza in #808
- Slideshow overlays: identity plate, rating stars, text with tokens, watermark (LRC-SS-OVERLAYS, stacked on #808) by @bitshiftza in #821
- LR-EDIT-OPTICS-PROFILE: Sony ILCE-7RM6 embedded lens corrections (distortion applied; CA and vignetting parsed) by @dev-null-undefined in #824
- Slideshow intro and ending screens (LRC-SS-TITLES, stacked on #821) by @bitshiftza in #904
- Slideshow templates: built-ins of our own, user templates, browser with hover preview (LRC-SS-TEMPLATES, stacked on #904) by @bitshiftza in #912
- Slideshow export to PDF, JPEG sequence and AV1 video (LRC-SS-EXPORT, stacked on #912) by @bitshiftza in #929
- Rotate left/right turns the crop with the image instead of cutting it (#962) by @MarekSpodBiedry in #966
- LR-IMP-FORMATS: recheck stale preview-only raws when a library opens (#662) by @valenfys in #974
- Export: "Same folder as original photo" destination (#956) by @itrycodinganditsbad in #996
- LR-VIEW-ZOOM: slider drags stay sharp where the GPU keeps up (#330) by @mattsivak in #1009
- LR-EXP-DNGOPT: lossy DNG export by @emmertex in #1010
- LR-IMP-FORMATS: verify 22 more CR3 bodies; EOS R6 Mark III white balance by @emmertex in #1029
- LR-MASK-BRUSH: pen pressure scales brush size and flow by @emmertex in #1033
- LR-BEHAV-ACCESS: canvas tools by keyboard (stacked on #1023) by @emmertex in #1038
- LR-IMP-CAMERA-COVERAGE: verify 117 Nikon and Fujifilm bodies on CC0 files by @emmertex in #1045
- LR-IMP-CAMERA-COVERAGE: measured image area for Nikon bodies without CropArea by @robmdunn in #1053
- LR-MASK-EFFECTS: local adjustment presets with Lightroom Classic import by @OneSlips in #1062
- LR-IMP-CAMERA-COVERAGE: verify 97 Canon CR2, Pentax and Ricoh models on CC0 files by @emmertex in #1081
- LR-IMP-FORMATS: decode Epson ERF by @emmertex in #1087
- LR-IMP-CAMERA-COVERAGE: verify 21 Sony and Leica models on CC0 files by @emmertex in #1096
- Add complete Polish (pl) localization by @neronek22 in #1100
- UI: align Local folder rows, paint dock gaps, bottom-align the tool strip (#1097, #1098, #1099) by @mattsivak in #1102
- LR-IMP-FORMATS: import and decode Mamiya MEF (stacked on #1087) by @emmertex in #1105
- Preview cache: cached thumbnails are no longer taken for the person's photos (#610, #1066) by @nledford in #1106
- LR-IMP-CAMERA-COVERAGE: verify 17 uncompressed Olympus and Samsung models on CC0 files by @emmertex in #1108
- L10N: fill the de, es, fr, ja and uk catalogs (gap 21) by @emmertex in #1111
- docs: add user docs in docs/user by @itrycodinganditsbad in #1180
- LR-EDIT-SECTION-SOLO: Solo Mode for Edit sections by @mattsivak in #1308
- Fonts: finish Thai fallback delivery for desktop and web releases by @LabDennis in #1311
- LR-IMP-FORMATS: property tests for the CRX decoder by @eliets2 in #1461
- LR-IMP-FORMATS: CI-enforce the unsupported CRX variants listed in docs/cr3.md by @eliets2 in #1462
- LR-PROF-CAMERACOLOR: Canon EOS R7 / R6 Mark II calibrate measurements by @cookingwithsimon in #1466
- KEY-HIDEPINS: Tool Overlay modes (Auto / Always / Selected / Never) for spot and mask pins, Shift+H cycles them (fixes #224) by @atmikshetty in #1473
- KEYC-COMPARE: = and - make the grid thumbnails larger and smaller by @atmikshetty in #1491
- People: confirm suggested faces above a chosen score (#1442) by @Th4nat0s in #1495
- LR-EXP-QUALITY: Use optimized Huffman tables for JPEG exports (#1373) by @endthestart in #1540
- fix(rawinfo): report failed validation batches through exit status by @FooVoo in #1696
- LR-PROF-CAMERACOLOR: bundled Sony ILCA-99M2 camera profile by @PiMinusMax in #1019
- Integration batch 37: 20 rebased community PRs (print module, decode speed-ups, camera coverage, Italian) by @echelon in #1852
- feat(xtask): #1037 ci reports the machine, GPU adapters and skipped tests by @THEtheChad in #1135
- perf(catalog): #1136 index stacks and album membership; no per-photo list scans at 100k by @THEtheChad in #1138
- LR-EDIT-OPTICS-PROFILE: decode Sony shading, CA and distortion tables (nothing new applied), plus a BigTIFF overflow fix by @AlexChambers in #1176
- i18n: translate dialog notes, toasts and tooltips by @emmertex in #1298
- DNG: fit tone and chroma curves to the embedded preview (#1277) by @radialmonster in #1316
- Perf: 64 MP raws decode faster (AHD 1.7×, ARW6 decode, camera-look colour 1.9×, no full-size copy), same pixels by @dev-null-undefined in #1320
- LR-IMP-CAMERA-COVERAGE: verify 30 more camera models on public raw files by @AlexChambers in #1327
- LR-IMP-PROFILES: Presets apply the imported profile they name (#1001) by @cookingwithsimon in #1469
- LR-RAW-NEF: stretch non-square pixels (Nikon D1X/D1H) to square by @radialmonster in #1475
- fix(export): a metadata/sharpen/conflict value that passes validation is the one exported by @sperea in #1705
- Edit panel: the histogram clipping buttons stay clear of the hovered scroll bar by @marcoarnulfo in #1708
- LRC-LIB-KEYWORDS: the Keyword List holds its place as the Keywords box above it changes by @nledford in #1755
- LR-BEHAV-EMPTY-STATES: an empty library leads to Import by @nledford in #1761
- LR-PROF-DROPDOWN: a long profile name no longer widens the Edit panel by @marcoarnulfo in #1762
- Commands: Refuse malformed photo ids instead of using the selection (#1506) by @endthestart in #1773
- Dialogs: the confirm button is on the right, filled when it is the next step by @nledford in #1802
- Buttons: one component with kinds, sizes and icons (stacked on #1802) by @nledford in #1810
- Add Italian interface translation by @GabrielePecchioli in #1198
- Print module: picture and custom packages, printer colour management, colour-managed PDF (gap 15) by @atmikshetty in #1215
- LR-MERGE-PANO: a panorama or HDR merge of raws keeps the as-shot white balance of its frames by @eliets2 in #1471
- Integration batch 38: 6 rebased community PRs (Nikon camera profiles, lens-corrected colour, HDR frame order, focus points) by @echelon in #1857
- LR-PROF-CAMERACOLOR: Match the camera look against lens-corrected JPEGs by @endthestart in #1586
- LR-PROF-CAMERACOLOR: Add a bundled Nikon Z 6II camera profile by @endthestart in #1592
- LR-MERGE-HDR: frame-order independent merges, and no magenta bias next to clipped pixels by @alvarohn in #1614
- LRC-LIB-LIBFOLDERS: drag photos from the grid onto a Folders row to move them there by @nledford in #1834
- Show the camera's focus point (Sony α1, A7S III) and zoom to it (#1480) by @bitshiftza in #1487
- LR-PROF-CAMERACOLOR: Add bundled Nikon Z 8 and D5300 camera profiles by @endthestart in #1595
- Integration batch 39: 4 rebased community PRs (Georgian, slider scrub and reset hints, straight brush lines) and the Windows ARM64 font pin by @echelon in #1865
- LR-MASK-BRUSH: Shift-click draws a straight brush stroke from the last one by @endthestart in #1829
- KEY-SLIDER-RESET: a slider's name and thumb say a double-click resets it (fixes #1436) by @atmikshetty in #1474
- KEY-SLIDER-SCRUB: drag a slider's value sideways to scrub it by @good-news-everyone in #1604
- i18n: Georgian (ka) interface language by @devius in #1823
- Integration batch 40: 3 rebased community PRs (GPU face detection, soft-proof zoom windows, faster folder sync) and restored tracker rows by @echelon in #1867
- LR-VIEW-ZOOM: soft proofing gets zoom windows; 1:1 tested equal to export by @emmertex in #1027
- PERF-SYNC: a Synchronize Folder scan reads off the folder's listing whether a photo and its sidecar are there by @nledford in #1602
- Faces: GPU (wgpu) path for detection and recognition convolutions by @emmertex in #1663
- ci: refactor workflows to use storytold/craft-common-actions by @dylanmtaylor in #967
- Follow catalog paths only on this computer or the catalog's share by @skylartaylor in #2175
- Open Original: only file types LightCraft reads reach the system opener by @skylartaylor in #2199
- Fix offline reverse geocoding for cities at longitude exactly 180 by @Silvertree2010 in #2061
- Fix Assisted Culling bursts that cross midnight at month end by @Silvertree2010 in #2095
- Search words with an unknown field prefix as plain text by @Silvertree2010 in #2099
- Keep the zone when shifting a capture time without seconds by @Silvertree2010 in #2146
- Codecs: clip positive-infinity float samples to white (#1952, item 6) by @AlexChambers in #2071
New Contributors
- @midasmatterhorn made their first contribution in #1791
- @IanHollow made their first contribution in #1795
- @FredApps made their first contribution in #1797
- @guillehr2 made their first contribution in #1804
- @Silvertree2010 made their first contribution in #1813
- @Myrarc made their first contribution in #1835
- @Losminek made their first contribution in #1190
- @draco892 made their first contribution in #1479
- @Hossamvs made their first contribution in #1510
- @nevicia2010-hub made their first contribution in #1538
- @squareSphere29 made their first contribution in #1556
- @SarimSyed made their first contribution in #1637
- @euisuh made their first contribution in #1688
- @G6bill made their first contribution in #1722
- @vpjl made their first contribution in #1738
- @tydude001 made their first contribution in #1744
- @valenfys made their first contribution in #974
- @neronek22 made their first contribution in #1100
- @LabDennis made their first contribution in #1311
- @Th4nat0s made their first contribution in #1495
- @FooVoo made their first contribution in #1696
- @sperea made their first contribution in #1705
- @GabrielePecchioli made their first contribution in #1198
- @good-news-everyone made their first contribution in #1604
- @devius made their first contribution in #1823
Full Changelog: v0.8.0...v0.9.1