Commit Graph
4062 Commits
Author SHA1 Message Date
aiongg bf573029bb refactor(lightcraft-pipeline): move masks.rs tests to crates/pipeline/src/masks/tests.rs 2026-10-26 18:15:59 +00:00
aiongg 581555e248 refactor(lightcraft-pipeline): move optics.rs tests to crates/pipeline/src/optics/tests.rs 2026-10-26 18:15:59 +00:00
aiongg 5b5f860150 refactor(lightcraft-faces): move net.rs tests to crates/faces/src/net/tests.rs 2026-10-26 18:15:59 +00:00
aiongg 5d1053ffe6 refactor(lightcraft-geom): move crop_drag.rs tests to crates/geom/src/crop_drag/tests.rs 2026-10-26 18:15:58 +00:00
aiongg c579f226ab refactor(lightcraft-engine): move print/compose.rs tests to crates/engine/src/print/compose/tests.rs 2026-10-26 18:15:58 +00:00
aiongg e6b0b386a7 refactor(lightcraft-engine): move print/layout.rs tests to crates/engine/src/print/layout/tests.rs 2026-10-26 18:15:57 +00:00
aiongg 41064fabb5 refactor(lightcraft-engine): move crs.rs tests to crates/engine/src/crs/tests.rs 2026-10-26 18:15:57 +00:00
aiongg a3ec3eadef refactor(lightcraft-engine): move rename.rs tests to crates/engine/src/rename/tests.rs 2026-10-26 18:15:57 +00:00
aiongg 89083b6c77 refactor(lightcraft-engine): move camera_preview.rs tests to crates/engine/src/camera_preview/tests.rs 2026-10-26 18:15:56 +00:00
aiongg 68abc4d4ce refactor(lightcraft-engine): move slideshow.rs tests to crates/engine/src/slideshow/tests.rs 2026-10-26 18:15:55 +00:00
aiongg c0fe58a144 refactor(lightcraft-engine): move demo.rs tests to crates/engine/src/demo/tests.rs 2026-10-26 18:15:55 +00:00
aiongg 102fa85a9c refactor(lightcraft-engine): move files.rs tests to crates/engine/src/files/tests.rs 2026-10-26 18:15:55 +00:00
aiongg a70d39eacd refactor(lightcraft-engine): move slide_overlay.rs tests to crates/engine/src/slide_overlay/tests.rs 2026-10-26 18:15:54 +00:00
aiongg 34f15b567f refactor(lightcraft-engine): move lightroom_sqlite.rs tests to crates/engine/src/lightroom_sqlite/tests.rs 2026-10-26 18:15:53 +00:00
aiongg 698ca5a884 refactor(lightcraft-engine): move lightroom_catalog.rs tests to crates/engine/src/lightroom_catalog/tests.rs 2026-10-26 18:15:53 +00:00
aiongg 619f346e74 refactor(lightcraft-engine): move apple_photos.rs tests to crates/engine/src/apple_photos/tests.rs 2026-10-26 18:15:52 +00:00
aiongg 6cf21f552a refactor(lightcraft-engine): move crs_masks.rs tests to crates/engine/src/crs_masks/tests.rs 2026-10-26 18:15:52 +00:00
aiongg 47adb933db refactor(lightcraft-engine): move smart.rs tests to crates/engine/src/smart/tests.rs 2026-10-26 18:15:52 +00:00
aiongg 50116167a6 refactor(lightcraft-engine): move export.rs tests to crates/engine/src/export/tests.rs 2026-10-26 18:15:51 +00:00
aiongg 858046cc4f refactor(lightcraft-engine): move media.rs tests to crates/engine/src/media/tests.rs 2026-10-26 18:15:50 +00:00
aiongg 55c9eac7c7 refactor(lightcraft-meta): move focus.rs tests to crates/meta/src/focus/tests.rs 2026-10-26 18:15:50 +00:00
aiongg 03e3b947dc refactor(lightcraft-meta): move xmp.rs tests to crates/meta/src/xmp/tests.rs 2026-10-26 18:15:50 +00:00
aiongg 5699489a3e refactor(lightcraft-raw): move crates/raw/src/demosaic/mod.rs to crates/raw/src/demosaic.rs 2026-10-26 18:15:09 +00:00
aiongg 62514e34b8 refactor(lightcraft-raw): move crates/raw/src/vendor/mod.rs to crates/raw/src/vendor.rs 2026-10-26 18:15:09 +00:00
aiongg 44680949f7 refactor(lightcraft-merge): move crates/merge/src/pano/mod.rs to crates/merge/src/pano.rs 2026-10-26 18:15:08 +00:00
aiongg bb7289ced4 refactor(lightcraft-segment): move crates/segment/src/fetch/mod.rs to crates/segment/src/fetch.rs 2026-10-26 18:15:08 +00:00
aiongg 728f223ee5 refactor(lightcraft-engine): move crates/engine/src/segment/mod.rs to crates/engine/src/segment.rs 2026-10-26 18:15:08 +00:00
aiongg 15030abbb5 refactor(lightcraft-engine): move crates/engine/src/print/mod.rs to crates/engine/src/print.rs 2026-10-26 18:15:08 +00:00
aiongg 1ebee97353 refactor(lightcraft-engine): move crates/engine/src/cmd/mod.rs to crates/engine/src/cmd.rs 2026-10-26 18:15:07 +00:00
aiongg 486cc1db17 refactor(lightcraft-ui-egui): move crates/ui-egui/src/panels/mod.rs to crates/ui-egui/src/panels.rs 2026-10-26 18:15:07 +00:00
dotCooCoo 86f2ba81eb Originals: refuse a screenshot target when an original cannot be queried
same_file_strict returned false when the metadata of either path could not
be read, so a hard link to an original in a folder the process cannot enter
was accepted as a screenshot target. It now returns the error unless the
path does not exist.
2026-10-26 11:01:51 -07:00
aiongg 567e7f1126 test: scan source directories recursively
xtask parity reads the UI command tables from menus.rs and every file under menus/, and the desktop app's dialog-filter test checks every source file under src/, so both keep finding their items after files move into subdirectories.
2026-10-26 18:01:09 +00:00
dotCooCoo 545ed92d6a Originals: refuse a screenshot target whose file identity cannot be read
On Windows the identity check opens both files to read the volume serial
number and file index. When that open failed (another process holds the
file without sharing it, or the file cannot be read), the hard link was
treated as an ordinary file. The screenshot target check now refuses the
target in that case. A missing original is still not a match, and other
callers of same_file keep the current comparison.
2026-10-26 07:16:41 -07:00
dotCooCoo 1bb11ff321 Local: on Windows the folder trees leave out hidden folders such as AppData
The Local trees left out folders whose names start with a dot, but on
Windows a folder is hidden by its attribute. Home's tree listed
AppData, and browsing a folder inside the temp folder opened Home's
tree down through AppData\Local\Temp, drawing one row for every folder
there on each frame. On a machine with 148,400 folders in Temp each
frame took about 4 s, and
tests_panels::local_photos_cannot_be_added_to_albums_until_they_join_my_photos
timed out on its ui.drag.

list_subfolders now also skips folders with FILE_ATTRIBUTE_HIDDEN set.
Test: panels::left::tests::subfolders_leave_out_hidden_folders.
2026-10-26 03:03:39 -07:00
dotCooCoo a97f19605c Originals: compare lengths before the Windows file identity
On ReFS two files can share the 64-bit file index that same_file
compares, so same_file now rejects files of different lengths before
it checks the volume serial number and file index.

The hard-link test skips with a recorded reason when the temporary
folder's volume has no hard links (FAT/exFAT, some shares), the same
errors publish_new treats as a volume without hard links.
2026-10-25 22:32:37 -07:00
aiongg bb08a697a4 Merge pull request #2839 from aiongg/docking-adoption
Docking: side panels in dock columns, on craft-ui's shared docking
2026-10-25 23:12:34 -04:00
aiongg 67f11a5018 Merge pull request #2930 from aiongg/title-bar-movable
Top bar: the title-bar drag uses craft-window's title_bar; a panel over the bar keeps the window still
2026-10-25 23:08:37 -04:00
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
Brain Wang c7961df10b Camera profile: Sony ILCE-7RM5 (α7R V) (#3022)
* 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
2026-10-25 22:04:19 -04: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
skylar taylor-barrick 387bed199f chore(deps): refresh safe dependency bumps (#2994) 2026-10-25 19:30:51 -04:00
dotCooCoo 7ebbb17a82 Originals: on Windows a hard link to an original counts as that original
safe_file::same_file compared length and canonical paths on every
platform other than Unix. On Windows canonicalize returns a hard link's
own path, so a hard link to a library original under another name was
not the same file, and pin_write_target accepted it as a screenshot
destination. For this reason the engine test
write_targets_pin_absent_paths_and_recheck_the_current_library failed
on Windows.

On Windows same_file now first compares the volume serial number and
file index through the same-file crate (already in Cargo.lock through
walkdir), then falls back to the resolved-path comparison. The catalog
crate takes same-file as a Windows-only dependency.
2026-10-25 15:55:21 -07:00
Dylan M. Taylor 522beb0c3e build: pin craft-update to craft-libs main (495e597) (#2990)
Picks up the startup prompt without the glyphs a font may lack (storytold/craft-libs#343, #344): the close mark is painted and the version pill is ASCII, so apps that panic on a missing glyph no longer take the prompt down.

Part of tracking issue storytold/craft-libs#319
2026-10-25 17:55:29 -04:00
Dylan M. Taylor 2833d8fc9a Merge pull request #2780 from storytold/security/raw
security/raw: bound hostile-memory paths in the raw decoders
2026-10-25 16:45:57 -04:00
Dylan M. Taylor c6c4f96cf8 Merge pull request #2770 from dylanmtaylor/security/heif
security: bound heic-rs 0.1.4 work around hostile HEIF containers
2026-10-25 16:42:27 -04:00
Dylan M. Taylor 3022baa861 security(raw,meta): follow-ups from review
An oversized CR3 candidate is skipped without ending the search, repeated child IFD references count once toward the pending cap, deflated chunks lay their rows out as the unpacker reads them (16-bit words, 32-bit word alignment), the tile grid's nominal size is checked against the image before anything is decoded, chunk grouping saturates, and the XMP flattened-key budget is document-wide. The JPEG-header test now parses a real header.
2026-10-25 16:12:03 -04:00
Dylan M. Taylor 63cb047c7e Merge pull request #2933 from dylanmtaylor/feat/startup-update-prompt
feat(update): add startup update prompt modal and self-update
2026-10-25 16:07:03 -04:00
Dylan M. Taylor 0c71f75325 security(heif): scan the primary item before heic_rs::probe, the alpha plane, and each thumbnail candidate
heic_rs::probe rebuilds a grid primary's descriptor, so the pre-scan runs before it; the alpha item that decode reconstructs is counted too; and a thumbnail candidate is scanned before its coded size is resolved, with all candidates sharing one budget.
2026-10-25 16:06:39 -04:00