Michael Anderson
19008bdee9
Test cancelling a name lookup while it waits
2026-10-18 08:36:24 -05:00
Michael Anderson
25d466fd69
Merge remote-tracking branch 'upstream/main' into fix/1532-dns-deadline
...
# Conflicts:
# docs/whats-new.md
2026-10-15 09:14:06 -05:00
Michael Anderson
fc6719d1db
Merge remote-tracking branch 'upstream/main' into feat/brush-shift-click
...
# Conflicts:
# docs/whats-new.md
2026-10-15 01:07:50 -05:00
Michael Anderson
888a54f52a
Merge remote-tracking branch 'upstream/main' into fix/1532-dns-deadline
...
# Conflicts:
# docs/whats-new.md
2026-10-15 01:05:38 -05:00
Michael Anderson
c877e8e9ee
Merge remote-tracking branch 'origin/feat/nikon-z6ii-camera-profile' into feat/nikon-z8-d5300-profiles
...
# Conflicts:
# README.md
# README.zh-hans.md
# crates/engine/src/camera_preview.rs
# crates/engine/src/tests_xmp.rs
# docs/camera-preview-colour.md
# docs/parity-checklist.md
# docs/whats-new.md
2026-10-15 00:58:42 -05:00
Michael Anderson
296e2ce73c
Merge remote-tracking branch 'origin/fix/colour-fit-lens-geometry' into feat/nikon-z6ii-camera-profile
...
# Conflicts:
# crates/engine/src/camera_preview.rs
# crates/engine/src/tests_xmp.rs
# docs/parity-checklist.md
# docs/whats-new.md
2026-10-15 00:55:18 -05:00
Michael Anderson
a77eafb32a
Merge remote-tracking branch 'upstream/main' into feat/brush-shift-click
...
# Conflicts:
# docs/whats-new.md
2026-10-15 00:54:23 -05:00
Michael Anderson
aed214da7e
Merge remote-tracking branch 'upstream/main' into fix/1532-dns-deadline
...
# Conflicts:
# docs/whats-new.md
2026-10-15 00:50:50 -05:00
Michael Anderson
9ad2c1766b
Merge remote-tracking branch 'upstream/main' into fix/colour-fit-lens-geometry
...
# Conflicts:
# crates/engine/src/camera_preview.rs
# crates/engine/src/files.rs
# docs/whats-new.md
2026-10-15 00:48:09 -05:00
Michael Anderson
dc562c654a
Merge remote-tracking branch 'upstream/main' into feat/brush-shift-click
...
# Conflicts:
# crates/engine/src/cmd/masks.rs
# crates/ui-egui/src/panels/detail.rs
# docs/parity-checklist.md
# docs/whats-new.md
2026-10-14 23:45:14 -05:00
Michael Anderson
e48d5d428d
Merge remote-tracking branch 'upstream/main' into fix/1506-explicit-targets
...
# Conflicts:
# crates/engine/src/cmd/library.rs
# crates/engine/src/tests.rs
# crates/ui-egui/src/panels/grid.rs
# crates/ui-egui/src/panels/keywording.rs
# crates/ui-egui/src/panels/right.rs
# docs/whats-new.md
2026-10-14 23:38:19 -05:00
Michael Anderson
ef216d2110
Merge remote-tracking branch 'upstream/main' into fix/1532-dns-deadline
...
# Conflicts:
# docs/whats-new.md
2026-10-14 23:29:27 -05:00
Michael Anderson
bcffde1a06
Merge remote-tracking branch 'upstream/main' into feat/nikon-z8-d5300-profiles
...
# Conflicts:
# README.md
# README.zh-hans.md
# crates/engine/src/camera_preview.rs
# docs/camera-preview-colour.md
# docs/parity-checklist.md
# docs/whats-new.md
2026-10-14 23:28:25 -05:00
Michael Anderson
68ef6ff3b3
Merge remote-tracking branch 'upstream/main' into feat/nikon-z6ii-camera-profile
...
# Conflicts:
# README.md
# README.zh-hans.md
# crates/engine/src/camera_preview.rs
# docs/camera-preview-colour.md
# docs/parity-checklist.md
# docs/whats-new.md
2026-10-14 23:26:01 -05:00
Michael Anderson
f9076514e7
Merge remote-tracking branch 'upstream/main' into fix/colour-fit-lens-geometry
...
# Conflicts:
# crates/engine/src/camera_preview.rs
# docs/parity-checklist.md
# docs/whats-new.md
2026-10-14 23:22:42 -05:00
Michael Anderson
2953b63576
Merge remote-tracking branch 'upstream/main' into feat/brush-shift-click
...
# Conflicts:
# docs/parity-checklist.md
2026-10-14 21:05:05 -05:00
Michael Anderson
ca6077ab81
Merge remote-tracking branch 'upstream/main' into fix/1524-faces-after-relink
...
# Conflicts:
# crates/engine/src/lib.rs
2026-10-14 21:03:02 -05:00
Michael Anderson
453757773d
Merge remote-tracking branch 'upstream/main' into fix/xmp-write-retry
...
# Conflicts:
# docs/parity-checklist.md
2026-10-14 20:59:59 -05:00
Michael Anderson
6c5eacc839
Merge remote-tracking branch 'upstream/main' into fix/1392-browse-forgets-deleted
...
# Conflicts:
# docs/parity-checklist.md
2026-10-14 20:58:44 -05:00
Michael Anderson
9e597bf6dd
Merge remote-tracking branch 'upstream/main' into fix/1627-d610-image-area
...
# Conflicts:
# docs/parity-checklist.md
2026-10-14 20:58:11 -05:00
Michael Anderson
e423d55ea1
Merge remote-tracking branch 'upstream/main' into fix/1373-jpeg-optimal-huffman
...
# Conflicts:
# docs/parity-checklist.md
2026-10-14 20:57:31 -05:00
Michael Anderson
15becc9eb4
Merge remote-tracking branch 'upstream/main' into feat/nikon-z8-d5300-profiles
...
# Conflicts:
# docs/parity-checklist.md
2026-10-14 20:56:06 -05:00
Michael Anderson
88455a837c
Merge remote-tracking branch 'upstream/main' into feat/nikon-dslr-lens-names
...
# Conflicts:
# docs/parity-checklist.md
2026-10-14 20:55:26 -05:00
Michael Anderson
a68da45fc3
Merge remote-tracking branch 'upstream/main' into fix/colour-fit-lens-geometry
...
# Conflicts:
# docs/parity-checklist.md
2026-10-14 20:55:01 -05:00
Michael Anderson
35f347397d
Merge remote-tracking branch 'upstream/main' into feat/nikon-z6ii-camera-profile
...
# Conflicts:
# docs/parity-checklist.md
2026-10-14 20:54:03 -05:00
Michael Anderson
b70571448c
Merge remote-tracking branch 'upstream/main' into feat/import-on-card
...
# Conflicts:
# docs/parity-checklist.md
2026-10-14 20:53:05 -05:00
Michael Anderson
e5c6e17bdb
LR-MASK-BRUSH: Shift-click draws a straight brush stroke from the last one
...
A Shift-click with the brush paints a straight line from where the last stroke ended, tapering size, feather and flow when they changed in between, as one undo step. mask.brushStroke takes connect: true for it.
2026-10-14 19:11:34 -05:00
Michael Anderson
8283ae1687
LR-PREF-GENERAL: Keep the Settings window in place when switching tabs
...
Anchor Settings at its top edge instead of the center and don't let it get narrower, so the tab row stays under the pointer.
2026-10-14 14:12:36 -05:00
Michael Anderson
e65b97e239
Model downloads: Time out and cancel the name lookup ( #1532 )
...
The host name lookup blocked with no deadline before the cancel check, and each address then got the full connect timeout. The lookup now runs on a helper thread under the connect deadline, which all addresses share.
2026-10-14 13:56:34 -05:00
Michael Anderson
1f87328c6d
Never crash: Write preview cache files from one bounded writer ( #1522 )
...
Each deferred cache write started its own thread holding its image, with no limit. One writer thread per cache now takes them in turn, and a write is skipped once 128 MB is waiting.
2026-10-14 13:56:34 -05:00
Michael Anderson
6d080de447
Never crash: Check raw data size before allocating in PEF, TIFF tiles and ARW6 ( #1512 )
...
A compressed PEF too short for its size, an uncompressed tile claiming far more samples than it holds, and an ARW6 with a failed tile now get refused before the big buffer is allocated.
2026-10-14 13:56:34 -05:00
Michael Anderson
9ef40b9886
Commands: Refuse malformed photo ids instead of using the selection ( #1506 )
...
A wrongly typed id or ids fell back to the selection, or kept only the valid part of the list. Session::targets now returns an error for those, and callers pass it on.
2026-10-14 13:56:33 -05:00
Michael Anderson
30ec48d9b3
LR-META-XMP: Retry automatic XMP sidecar writes that failed
...
A sidecar write that failed because the folder was offline or read-only was only logged. Keep those photos waiting, write them again once their files are reachable, and tell the user.
2026-10-14 13:56:23 -05:00
Michael Anderson
ef3642c39f
LR-IMP-CAMERA-COVERAGE: Nikon D600, D610 and D5000 NEFs drop the columns past the image ( #1627 )
2026-10-14 13:44:58 -05:00
Michael Anderson
4352147910
Faces: Drop faces made from a photo's old file when it is replaced ( #1524 )
2026-10-14 13:19:22 -05:00
Michael Anderson
bb9d3d4022
Catalog and downloads: Don't write through a link at a temp file's name ( #1502 )
2026-10-14 13:13:27 -05:00
Michael Anderson
e8818281d5
LR-IMP-LOCAL: Forget deleted files when browsing from the sidebar too
...
The sidebar reads the folder on a worker thread and skipped the cleanup library.browse does, so the fix for #1392 didn't reach the app.
2026-10-14 10:40:41 -05:00
Michael Anderson
ead24aded9
LR-PROF-CAMERACOLOR: Add a bundled Nikon D5300 camera profile
...
Fitted with lightcraft-cli calibrate to 264 of my own D5300 photos.
2026-10-14 07:32:56 -05:00
Michael Anderson
975b08c334
LR-PROF-CAMERACOLOR: Add a bundled Nikon Z 6II camera profile
...
Fitted with lightcraft-cli calibrate to 296 of my own Z 6II photos.
2026-10-14 07:32:56 -05:00
Michael Anderson
2bc2f60277
LR-PROF-CAMERACOLOR: Add a bundled Nikon Z 8 camera profile
...
Fitted with lightcraft-cli calibrate to 261 of my own Z 8 photos.
2026-10-14 07:32:56 -05:00
Michael Anderson
c854e172e4
LR-PROF-CAMERACOLOR: Match the camera look against lens-corrected JPEGs
...
The fit compared the uncorrected raw with the corrected JPEG. It now warps the raw with the file's own lens correction when that lines up better.
2026-10-14 07:32:47 -05:00
Michael Anderson
441f46683a
LR-IMP-DEVICE: Show the import review when a card is connected
...
Adds an option under Settings > Import > Cameras and Cards that opens Import from Device when a camera or memory card shows up. It's off by default, and a card that was already in at startup doesn't ask.
2026-10-14 07:32:47 -05:00
Michael Anderson
1acbf88661
LR-META-INFO: Show the lens for Nikon DSLR raws
...
They don't write a lens name, so read the range from the maker note's Lens tag.
2026-10-14 07:32:46 -05:00
Michael Anderson
02d5d6bc03
LR-MERGE-PANO: Keep panoramas at full resolution when memory allows ( #1455 )
...
Drop the 40 MP default and free each photo's pixels once it's projected.
2026-10-14 07:32:45 -05:00
Michael Anderson
b0b86aca84
LR-BEHAV-GPU: Turn GPU rendering off after the GPU is lost while running ( #1337 )
...
Report it as LightCraft stopping instead of the window failing to open, and start on the CPU next time.
2026-10-14 07:32:44 -05:00
Michael Anderson
697010d520
LR-IMP-LOCAL: Forget untouched records of deleted files when browsing a folder again ( #1392 )
...
Rated, flagged or edited photos stay and show as missing.
2026-10-14 07:32:43 -05:00
Michael Anderson
e0690b5f63
LR-EXP-QUALITY: Use optimized Huffman tables for JPEG exports ( #1373 )
...
Build the tables from each image's own symbol counts. Same pixels, smaller files.
2026-10-14 07:28:30 -05:00
Michael Anderson
1ee751ebdf
LR-EDIT-OPTICS-PROFILE: Apply Nikon's in-file distortion correction for the Z 6II, Z 8 and Z f
...
Read the polynomial, zoom and optical center offset from NikonNEFInfo.
2026-10-13 11:10:46 -05:00
Michael Anderson
853a92e2de
LR-EDIT-OPTICS-PROFILE: Apply Nikon's in-file distortion correction for the Z 6II and Z f
...
Read the polynomial, zoom and optical center offset from NikonNEFInfo.
2026-10-13 10:47:57 -05:00
Michael Anderson
271bc41842
Never crash: Repair damaged catalog snapshots on open
...
Fix ids, stacks, album folders and counters that don't agree, and stop album trees at 64 deep.
2026-10-13 10:46:47 -05:00
Michael Anderson
4a07254e06
Never crash: Read the edge pixel for bilinear samples outside the picture
...
Infinite coordinates from a zero-size crop overflowed the sampler.
2026-10-13 10:46:42 -05:00
Michael Anderson
f753778f45
Never crash: Fix blur overflow and hangs on sliver crops
...
Cap the sigma at twice the picture's long side and square the box width in i64.
2026-10-13 10:46:37 -05:00
Michael Anderson
4c088c3284
Never crash: Give the loupe a finite aspect for a zero-size crop
...
Count each side as at least one pixel.
2026-10-13 10:46:33 -05:00
Michael Anderson
b43b7169aa
Never crash: Limit how much a preset zip can unpack
...
Cap entries at 256 MB and the archive at 1 GB, and check the offsets.
2026-10-13 10:46:28 -05:00
Michael Anderson
307843b2ad
Never crash: Fix defringe radius overflow for amounts past the sliders
...
Treat the amount as the slider's end and keep the radius within the picture.
2026-10-13 10:46:23 -05:00
Michael Anderson
e1860067a6
Never crash: Render demo scenes at most at their own size
...
A damaged width asked for a buffer size that overflowed.
2026-10-13 10:46:18 -05:00
Michael Anderson
911d7df321
Never crash: Fix panic dragging a tone curve point between close neighbours
...
Keep the point midway when there's no room, and keep curve points sorted.
2026-10-13 10:46:13 -05:00
Michael Anderson
57487875b5
Never crash: Cap the spot radius so huge spot sizes render ( #1519 )
...
Sidecar spot sizes aren't limited to the slider range. Count at most two long edges.
2026-10-13 10:45:50 -05:00
Michael Anderson
f157654628
Never crash: Fix overflow on a BigTIFF IFD with a huge entry count ( #1516 )
...
Only read the next IFD offset when the whole table was read, with checked math.
2026-10-13 10:45:45 -05:00
Michael Anderson
27d1e9b04d
Never crash: Cap enlarged exports at 512 MP and check memory first
...
A huge enlargement failed to allocate and took the app down.
2026-10-13 10:45:39 -05:00
Michael Anderson
337f02b4dc
Never crash: Fix export size panic for very long strips
...
Apply the 1 px and 65535 px bounds in turn instead of clamping between bounds that can cross.
2026-10-13 10:45:34 -05:00
Michael Anderson
3624a50423
Never crash: Refuse raw data with two samples per pixel ( #1511 )
...
The demosaic read past each pixel. DNG decode and validation refuse it now.
2026-10-13 10:45:29 -05:00
Michael Anderson
cef6f2d4b8
Never crash: Fix demosaic panic on a NaN black level
...
Read non-finite DNG black levels as 0 and map non-finite normalized samples to black.
2026-10-13 10:45:18 -05:00
Michael Anderson
d5cba8b3dc
xtask parity: Fail when docs/gaps.md lists a gap more than once
...
Also remove the duplicate rows for gaps 10, 22 and 23.
2026-10-13 10:45:11 -05:00
Michael Anderson
65dbba9ecd
LRC-LIB-CATALOG-IMPORT: Open catalogs whose tables are all still in the WAL
...
Accept schema format 0 in the main header and check page 1 again after the WAL overlay.
2026-10-13 10:45:06 -05:00
Michael Anderson
b62b51378e
Never crash: Fix i32 overflow in the NEF and PEF Huffman predictors ( #1515 )
...
Use checked adds and return a corrupt data error instead of panicking.
2026-10-13 10:45:00 -05:00
Michael Anderson
e9d36451e6
Never crash: Fix overflow in mask.move with a huge delta
...
Saturate index + delta so any delta just moves the mask to the top or bottom.
2026-10-13 10:44:46 -05:00