Commit Graph
3501 Commits
Author SHA1 Message Date
aiongg 06a94d2d7f Merge PR #3015: Never crash: an oversize export size is an error, not a multiply overflow
crates/engine/src/media.rs: main moved render_now and export_job to media/session.rs; the two size checks ported there
crates/engine/src/tests_export.rs: the test is appended to tests/export.rs
2026-10-31 02:08:30 +00:00
aiongg 1765d19c20 Merge PR #2890: Export: note when LZW is picked for TIFF, 16-bit ZIP size test (#2882)
crates/engine/src/export.rs: main moved the code to export/; the 16-bit ZIP size test ported to export/tests.rs
crates/ui-egui/src/panels/dialogs.rs: main moved the dialog to dialogs.rs and dialogs/export.rs; the LZW note helpers, preset hover hint and tests ported there
crates/ui-egui/src/panels/grid.rs: calls crate::dialogs::preset_lzw_note
The doc comment of export_dialog_params stays directly above that function (review fix)
2026-10-31 02:08:09 +00:00
aiongg c0df71dde6 Merge PR #2849: LR-EXP-METADATA: refuse Originals with embedded place names
crates/engine/src/export.rs: main moved the code to export/prepare.rs; hunk ported there by hand
docs/gaps.md, docs/parity-checklist.md: header keeps the newer line, revision rows are the union
2026-10-31 02:07:23 +00:00
aiongg 48606bfd50 Merge PR #3413: Issue #3412: accessibility audit allows missing glyphs without craft-fonts 2026-10-31 02:06:54 +00:00
aiongg 763a283141 Merge PR #3369: Issue #3368: drop_import's launch-list tests wait for the library checks before clicking 2026-10-31 02:06:54 +00:00
aiongg 8329733e84 Merge PR #3283: Refuse a signed or malformed Content-Length in HTTP responses 2026-10-31 02:06:44 +00:00
aiongg f6d9821561 Merge PR #3234: Reject signed numbers in Content-Range parsing 2026-10-31 02:06:44 +00:00
aiongg 4a491c34e3 Merge PR #3233: Reject signed ports in Url::parse 2026-10-31 02:06:44 +00:00
aiongg 536fb514eb Merge PR #3113: Issue #3067: ui-egui test apps render on two workers, not six (peak −22 %) 2026-10-31 02:06:43 +00:00
aiongg e5ae0a2144 Merge PR #3088: Issue #3065: the settings test puts the memory budget back as it found it, one budget-changing test at a time 2026-10-31 02:06:43 +00:00
aiongg 6a3422d328 Merge PR #3042: Windows: declare the gvfs test path only where it is used 2026-10-31 02:06:43 +00:00
aiongg 9b637831b3 Merge PR #2908: Reject signed chunk sizes in the HTTP chunked decoder 2026-10-31 02:06:42 +00:00
aiongg 739c0d0e20 Merge PR #2748: LR-CLOUD-SMARTPREVIEW: the smart-previews folder test cleans up the folder it takes offline 2026-10-31 02:06:42 +00:00
aiongg f1734e0bef Merge PR #2743: LR-MERGE-PANO: the merge dialog makes a new preview each time it opens, also after a failed one (#2708) 2026-10-31 02:06:41 +00:00
aiongg 4b6448377c Merge PR #2547: Tests: discovery tests use the platform's path separator (Windows) 2026-10-31 02:06:38 +00:00
Bruno-Alumn 8d59ca335e Merge remote-tracking branch 'upstream/main' into fix/merge-preview-after-failure-2708
# Conflicts:
#	docs/parity-checklist.md
2026-10-30 21:22:36 +01:00
Brandon Thomas c7d7d3c0fd Merge PR #2540 (maintainer follow-up) 2026-10-30 15:26:31 -04:00
Brandon ThomasandClaude Opus 5.5 831d724b87 Reject .cube data lines that start with nan or inf
A data line such as `nan 0 0` starts with a letter and was skipped as an
unknown keyword, so a file with enough other entries still parsed.
(CodeRabbit review on #2540.)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:26:29 -04:00
Antonio Sokic cda73d235e Issue #3412: record the craft-fonts skip once per accessibility audit 2026-10-30 20:25:18 +01:00
Brandon Thomas b854bbb94e Merge PR #2835 2026-10-30 15:24:59 -04:00
Brandon Thomas ac4a98bc2d Merge PR #3147 2026-10-30 15:24:59 -04:00
Brandon Thomas cfdf63c6e4 Merge PR #2917
# Conflicts:
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-30 15:24:59 -04:00
Brandon Thomas 13711ace2b Merge PR #2155 2026-10-30 15:24:41 -04:00
Brandon Thomas c1fb95dfc0 Merge PR #3225 2026-10-30 15:24:30 -04:00
Brandon Thomas 273e9078de Merge PR #2969 2026-10-30 15:24:30 -04:00
Brandon Thomas 5693a3aeaa Merge PR #2540 2026-10-30 15:24:30 -04:00
Brandon Thomas bdb146be43 Merge PR #2833 2026-10-30 15:24:30 -04:00
Brandon Thomas ef83f30327 Merge PR #2834 2026-10-30 15:24:30 -04:00
Brandon Thomas 19eb08dc25 Merge PR #2909 2026-10-30 15:24:30 -04:00
Brandon Thomas b7c52c5032 Merge PR #2918 2026-10-30 15:24:30 -04:00
Brandon Thomas 181a580579 Merge PR #3366 2026-10-30 15:24:30 -04:00
Brandon Thomas 9140e8cd38 Merge PR #3267 2026-10-30 15:24:30 -04:00
Antonio Sokic ea2e4bf629 Issue #3412: accessibility audit allows missing glyphs without craft-fonts
Without CRAFT_FONTS_DIR the Reference view's "▸" has no glyph and egui_kittest panicked, failing the audit on every dev build. It now allows boxes then and records a skip!(Fonts) note; with craft-fonts a missing glyph still fails.
2026-10-30 20:09:24 +01:00
Chad ElliottandClaude Opus 5.5 61bcf0f506 test(ui-egui): drop_import's launch list waits for its library checks before a click (#3368)
The launch list's rows say "Checking…" until a worker answers; the
answer drops that line, the centred window shrinks and its buttons move.
draw_launch_list only waited for the list to be drawn, so on a loaded
runner the answer could land between a click's press and release and
ui.clickWidget refused it ("moved before its release"), as on a
windows-latest run of
a_queued_photo_drop_survives_the_choosers_new_library_prompt_and_cancel.
The helper now waits until every row is answered and the window holds
still, as the launch_library tests already do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 12:44:43 -05:00
Bruno-Alumn 2d15ae7718 LR-MERGE-HDR / LR-MERGE-HDRPANO rows record the preview retry; the test accepts a preview that finished in one frame 2026-10-30 18:16:57 +01:00
Max MittelstädtandGPT-6-Luna b25808686d Reject mismatched XML closing tags
Found while testing crates/lensdb/src/xml.rs:77

Co-Authored-By: GPT-6-Luna <noreply@openai.com>
2026-10-30 06:10:13 +00:00
Dylan M. Taylor 445dd3106e Update prompt shows the app icon and accent color instead of a letter (#3362)
UPDATE_APP (native builds; craft-update is a native-only dependency) carries our 128 px icon and accent (#f2a516, its colour in ArtCraft Launcher). The updater, the self-update
helper and craft-update's startup prompt all get them through crate::UPDATE_APP; the
prompt draws the icon, the accent and "by ArtCraft" (craft-update's default developer).

craft-update is pinned to storytold/craft-libs main at 1065653e7 (#434).
Clippy fixes for Rust 1.99 in untouched code (same logic):
- crates/engine/src/cmd/export.rs
- crates/ui-egui/src/dialogs/rules_editor/rules_move.rs
- crates/ui-egui/src/panels/detail.rs
2026-10-30 01:27:49 -04:00
Nathaniel Ledford 0aca56a1b8 engine tests: clear a left-over '.offline' sibling and clean up after the smart-previews test
Tests that take a folder offline rename it to '<dir>.offline'. temp_dir only cleared '<dir>', and smart_previews_folder_is_chosen_per_library never removed anything, so a non-empty '.offline' left by an earlier run whose process id was reused made the rename fail with DirectoryNotEmpty (1 failure in 300 runs under load).
2026-10-29 11:41:03 -04:00
NetterSilverandClaude Haiku 5.5 04a6224dab Refuse a signed or malformed Content-Length in HTTP responses
Found while testing crates/fetch/src/http.rs:598 (get)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 00:06:22 +00:00
radialmonsterandClaude Opus 5.5 20c1f3c057 raw: test the grey JPEG XL restore through decode
The existing synthetic lossy RGB fixture tiles are re-declared grey by a
header edit (colour space RGB to Grey, dropping the 6-bit primaries field
a grey encoding does not carry, per the ColourEncoding bundle). Their XYB
frame data is unchanged, so they decode as one grey plane whose rendered
channels differ. The test checks decode against the gradient's BT.2100
luminance in the linear and sRGB curves.

Refs #275

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ti8KemZbjE2ZgHgV1q1BM
2026-10-28 13:44:42 -04:00
radialmonsterandClaude Opus 5.5 953c4ee5fc raw: decode lossy single-plane (grey) JPEG XL tiles in LinearRaw DNGs
Lightroom Classic's HDR and panorama merges of monochrome raws store a
one-plane LinearRaw image as lossy (XYB) JPEG XL tiles whose codestream
declares a grey colour encoding (16-bit float with a linear curve, or
16-bit integer with the sRGB curve). Those were refused as "lossy JPEG XL
tile with a single colour plane", so the files opened preview-only.

A lossy grey tile is still coded as three XYB channels. It is now
restored like the RGB case: jxl-oxide renders linear sRGB (never the
declared encoding, which would clip), the single plane is the luminance
(CIE Y, D65) of that, then the declared transfer curve is applied.
One plane must be declared grey and three RGB; HDR curves, other white
points and intensity targets above 255 stay unsupported.

RENDER_CACHE_VERSION 70 -> 71: files that showed their embedded preview
before render from raw data now, under the same content key.

Refs #275

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ti8KemZbjE2ZgHgV1q1BM
2026-10-28 13:44:42 -04:00
Max MittelstädtandGPT-6-Luna 7ab2575505 Reject ZIP entries with inconsistent decoded sizes
Found while testing crates/geocode/src/unzip.rs:64

Co-Authored-By: GPT-6-Luna <noreply@openai.com>
2026-10-28 16:41:59 +00:00
NetterSilverandClaude Haiku 5.5 73f0d25405 Reject signed numbers in Content-Range parsing
Found while testing crates/fetch/src/lib.rs:465 (parse_content_range)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 09:09:41 +00:00
NetterSilverandClaude Haiku 5.5 13849307a9 Reject signed ports in Url::parse
Found while testing crates/fetch/src/http.rs:140 (Url::parse)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 08:57:39 +00:00
Dylan M. Taylor 307ecb981d fix(ui-egui): keep the Export dialog's original spacing before the preset row 2026-10-28 04:06:29 +00:00
eliets2 1b9b5e1549 Windows: declare the gvfs test path only where it is used
The doc_path test declares `gvfs` on every platform, but only the
`#[cfg(not(windows))]` assertion below it uses it. A Windows build therefore
reports `unused variable: gvfs`, `cargo clippy --all-targets -- -D warnings`
fails there, and `cargo xtask ci` stops at its clippy step, so none of the
later steps run. The declaration now carries the same cfg as its only use.
Nothing changes on other platforms.
2026-10-28 05:26:07 +02:00
Dylan M. Taylor 6e54232557 test: factor long UI and MCP scenarios into helpers 2026-10-28 03:25:18 +00:00
Dylan M. Taylor ce3ce07771 refactor(ui-egui): split the top bar and slider widget 2026-10-28 03:25:18 +00:00
Dylan M. Taylor f858578f8c refactor(ui-egui): split the detail view, mask overlay and denoise panel 2026-10-28 03:25:18 +00:00
Dylan M. Taylor 4ed9a5c869 refactor(ui-egui): split the grid cell and context menu 2026-10-28 03:25:18 +00:00