github storytold/lightcraft v0.17.0
LightCraft v0.17.0

3 hours ago

What's Changed

  • Updates: shared check-result dialog from craft-update by @aiongg in #3437
  • docs: tidy agent, contributor and asset docs by @aiongg in #3436
  • Integration r3: 178 reviewed PRs by @aiongg in #3430
  • Issue #3405: Auto Import waits for an import that starts during its listing by @finaler1x in #3409
  • LR-BEHAV-ACCESS: a date header in the photo grid is named with the text it shows by @nledford in #3212
  • LR-BEHAV-ACCESS: a slider's value field is named " value" and describes how to use it by @nledford in #3214
  • LR-VIEW-PHOTOGRID: the grid's empty view names Import Photos' shortcut as the keymap has it by @nledford in #3221
  • Issue #3228: the hard-link originals test holds under SeBackupPrivilege (Git Bash, the CI gate) by @THEtheChad in #3230
  • Reject signed ports in Url::parse by @Silvertree2010 in #3233
  • Reject signed numbers in Content-Range parsing by @Silvertree2010 in #3234
  • Show the remembered crop ratio's box on an untouched photo by @Silvertree2010 in #3235
  • Reject EXIF offsets beyond 18 hours by @TheGalitube in #3242
  • LR-BEHAV-ACCESS: an icon button's accessible name is its label, with the shortcut as its description by @nledford in #3253
  • LR-BEHAV-ACCESS: a dialog is exposed to screen readers as a dialog, not a group by @nledford in #3260
  • LR-BEHAV-ACCESS: the photo in Detail is named with its file name by @nledford in #3262
  • LR-BEHAV-ACCESS: the grid's Thumbnail size reads as a slider by @nledford in #3265
  • LR-BEHAV-ACCESS: panels and bars are named as landmarks and toolbars by @nledford in #3273
  • LRC-LIB-FOLDERS: the home folder and Local's built-in places can't be renamed or moved by @nledford in #3276
  • Develop exports from a source at least twice the output size by @Silvertree2010 in #3281
  • Refuse a signed or malformed Content-Length in HTTP responses by @Silvertree2010 in #3283
  • FACES: a person's page finds its look-alikes in seconds, not minutes by @tabasko78 in #3286
  • MENU-BAR: merge the native menu's identical quit/about/settings branches (clippy::if_same_then_else) by @Peaperfish in #3295
  • Issue #3293: README no longer lists an MCP mask helper by @Peaperfish in #3296
  • Issue #3251: People card badge shows the full photo count by @Peaperfish in #3297
  • Issue #3272: AI masks are enlarged along the photo's edges, no outline under a raised Exposure by @Peaperfish in #3298
  • Contributors: add my entry (Peaperfish) by @Peaperfish in #3307
  • Reject malformed base64 in MCP and segmask decoders by @Silvertree2010 in #3309
  • LR-IMP-FORMATS: decode compressed RAF 13–17 % faster with a buffered bit reader by @cbram in #3321
  • LRC-LIB-CATALOG-SWITCH: a library missing at launch is reported instead of being made anew with demo photos (#3239) by @Bruno-Alumn in #3322
  • LR-MASK-PINS: Object and Describe masks show a pin that selects them (#3049) by @Bruno-Alumn in #3323
  • LRC-LIB-FOLDERS: Move Folder To… asks for the destination without freezing the window (#3140) by @Bruno-Alumn in #3325
  • LR-VIEW-HISTOGRAM: the histogram's clipping buttons read in every theme by @nledford in #3331
  • LR-BEHAV-TITLEBAR: a dialog leaves the macOS title bar undimmed by @nledford in #3332
  • fix(ui): translate the white balance preset menu by @newdives in #3364
  • Reject multiple GPX document roots by @TheGalitube in #3367
  • Issue #3368: drop_import's launch-list tests wait for the library checks before clicking by @THEtheChad in #3369
  • Ignore negative XMP pixel dimensions by @TheGalitube in #3371
  • LR-IMP-FORMATS: a Samsung panorama JPEG with its SEF trailer imports (#3350) by @Bruno-Alumn in #3375
  • LR-MASK-COLORRANGE: a colour-range mask keeps at most 64 samples however it is loaded (#2556) by @Bruno-Alumn in #3379
  • PERF-SMART: a File path rule over a non-ASCII path folds case in stack buffers instead of allocating two strings per photo by @nledford in #3383
  • LR-MASK-OBJECTS: a SAM 3 checkpoint in Meta's original format is named as such, not as an unsupported dtype (#3378) by @Bruno-Alumn in #3384
  • Never crash: a mask id at the u32 limit doesn't overflow the next mask's id by @Bruno-Alumn in #3385
  • Never crash: strip byte counts near u64::MAX don't overflow their sum in ORF, SRW, ARW and PEF by @Bruno-Alumn in #3386
  • LRC-LIB-MISSING: settling waits for the Missing Photos count, which can't panic on spawn by @mpratsaki in #3392
  • LR-EXP-DIM: export sizes keep the pixels typed (#3300) by @Bruno-Alumn in #3396
  • Never crash: a photo renders at most 64 red eye corrections (#2556) by @Bruno-Alumn in #3398
  • Never crash: a Samsung encryption key past i64::MAX doesn't overflow keyed() by @Bruno-Alumn in #3400
  • RAW.colour: fit the per-file look on the vignetting-corrected sensor by @cbram in #3402
  • LRC-LIB-CATALOG-SWITCH: files waiting for a library wait for a running import instead of being dropped (#2779) by @Bruno-Alumn in #3403
  • Control: pointer and scroll gestures refuse numbers past any screen instead of queueing NaN positions by @Bruno-Alumn in #3408
  • Issue #3406: Auto Import says when it can't read the watched folder by @finaler1x in #3410
  • i18n(it): panel and tab group menus, update check, rules, import and retouch labels by @fabiodalez-dev in #3411
  • Issue #3412: accessibility audit allows missing glyphs without craft-fonts by @finaler1x in #3413
  • Issue #1764: running out of device memory falls back without stopping the GPU by @finaler1x in #3419
  • fix(ui): wrap the Edit header buttons instead of letting Reset cover HDR by @Enthendor in #2804
  • Enable Filters: a folder moved while filters are off is followed by the filter put aside, and Cmd+L still brings it back (follow-up to #2709) by @marcoarnulfo in #2805
  • LR-META-LOCATION: reject malformed typed GPS coordinates by @ronibalthazar in #2821
  • LR-BEHAV-DRAGDROP: a right-click on a text field while photos are carried opens no menu by @nledford in #2823
  • LR-LIB-ALBUM: album commands skip photos the library lacks and record nothing when they add nothing by @nledford in #2825
  • LR-BEHAV-MULTISELECT: replacing the selection with a repeated id keeps each photo once by @nledford in #2830
  • Write sidecar keywords as names in dc:subject and paths in lr:hierarchicalSubject by @j-a-b-r-o-n-i in #2841
  • GPU: black pixels take the colour tools and a light vignette as on the CPU by @radialmonster in #2844
  • LRC-SS-LAYOUT: the Slideshow settings page no longer moves when the slide preview finishes rendering by @nledford in #2848
  • LR-EXP-METADATA: refuse Originals with embedded place names by @ronibalthazar in #2849
  • i18n(fr): complete the French catalog (1,154 entries) by @Atalantis in #2851
  • Keywords: start and stop painting with the keyboard shortcut by @dotCooCoo in #2856
  • LRC-LIB-LIBFOLDERS: Don't ask again when moving photos is kept only when the move started by @nledford in #2858
  • docs(linux): document LLVM 23 ThinLTO SIGILL workaround (#2811) by @Zaxaerith in #2885
  • Export: note when LZW is picked for TIFF, 16-bit ZIP size test (#2882) by @radialmonster in #2890
  • Reject signed chunk sizes in the HTTP chunked decoder by @Silvertree2010 in #2908
  • Reject incomplete ISO timestamps in metadata and track logs by @ronibalthazar in #2912
  • PERF-WINDOW: the window queues one frame, not two (eframe's low-latency surface) by @ZJHeepfixer in #2919
  • Issue #2936: build the GPU kernels on parallel threads by @iluebbe in #2942
  • LR-EDIT-COLOR-TEMP: a one-field white balance partial keeps the other field's look (#2910) by @hnoerenberg in #2952
  • LR-IMP-ADD-DIALOG: an import checks its probes and looks up sidecars several at a time by @nledford in #2954
  • Accept a UTF-8 BOM at the start of lightcraft-cli --script files by @Silvertree2010 in #2963
  • LR-IMP-ADD-DIALOG: handle rename sequence exhaustion by @ronibalthazar in #2964
  • LR-META-EXIF-FULL: reject malformed EXIF clocks by @ronibalthazar in #2977
  • Issue #2819: the histogram stays SDR when HDR is switched off by @x-labb in #2981
  • Issue #2980: Clear Color Label can be given a keyboard shortcut by @x-labb in #2986
  • GPU-TESTS: every WGSL kernel parses and validates in the test run, without a GPU by @OneSlips in #2989
  • LR-EDIT-EFFECTS-GRAIN: grain skips a degenerate frame instead of producing NaN pixels by @emmertex in #3003
  • CLI-HOSTILE: render --set refuses inf / NaN instead of dropping the value by @emmertex in #3006
  • LR-EDIT-OPTICS-PROFILE: lens profiles for compact cameras with a built-in lens by @emmertex in #3013
  • Never crash: an oversize export size is an error, not a multiply overflow by @emmertex in #3015
  • LR-PROF-CAMERACOLOR: docs count 9 bundled camera profiles, not 5 by @Peaperfish in #3027
  • i18n(it): launch library chooser, Lightroom import destination and new settings by @fabiodalez-dev in #3035
  • Windows: declare the gvfs test path only where it is used by @eliets2 in #3042
  • Issue #3069: --connect resends a command that crossed the app's idle-close notice by @THEtheChad in #3076
  • Issue #3065: the settings test puts the memory budget back as it found it, one budget-changing test at a time by @THEtheChad in #3088
  • Issue #3070: the CLI's refused-connection tests use a free port, not 18437 by @THEtheChad in #3098
  • Issue #3067: ui-egui test apps render on two workers, not six (peak −22 %) by @THEtheChad in #3113
  • PERF-CATALOG: a smart album's per-photo test stops storing an answer nothing can read by @nledford in #3121
  • LC-002: reject non-object script parameters by @DAnaeto in #3122
  • LC-001: stop commands after failed imports by @DAnaeto in #3123
  • LC-003: reject non-Unicode CLI arguments without panicking by @DAnaeto in #3124
  • Reject signed list indexes in indexed develop control ids by @Silvertree2010 in #3165
  • LR-BEHAV-DIALOGS: a one-line prompt that's refused stays open and says why by @nledford in #3167
  • LR-IMP-ADD-DIALOG: an import's probe opens each file once by @nledford in #3176
  • Disarm color picking when adding mask components by @TheGalitube in #3182
  • Drop the sign from slider text that rounds to zero by @Silvertree2010 in #3188
  • MENU-BAR: the macOS menu bar keeps every row when two rows run the same command by @nledford in #3196
  • MENU-BAR: shortcuts list their modifiers in one order everywhere on macOS (⇧⌘I, not ⌘⇧I) by @nledford in #3200
  • LR-BEHAV-ACCESS: the sidebar's disclosure triangles name their row by @nledford in #3209
  • MENU-HELP-HELP: on macOS the Help menu is registered with AppKit after the menu bar is installed by @nledford in #3220
  • LR-MAP-TRACKLOG: Decode XML character references in GPX by @ronibalthazar in #2529
  • Return None from shift_iso for impossible calendar dates by @Silvertree2010 in #2530
  • Tests: discovery tests use the platform's path separator (Windows) by @OneSlips in #2547
  • i18n(ka): Georgian for 336 interface strings, 48 format messages and the 559 untranslated What's New lines by @devius in #2582
  • Reset the profile section to the default profile by @eliets2 in #2583
  • Write capture time UTC offset and sub-seconds in write_exif by @Silvertree2010 in #2605
  • LR-CROP-RECT: sidecar settings kept in range; a turned crop bounded to the photo (#2555) by @insideTheFlux in #2623
  • i18n(it): translate the effect presets, slideshow, print, people and overlay strings by @fabiodalez-dev in #2624
  • raw: CR3 preview box scan checks 32-bit lengths for overflow (#2569) by @radialmonster in #2628
  • LRC-LIB-MISSING: library.missing from the control channel checks the files off the UI thread by @nledford in #2629
  • LR-EDIT-DETAIL-DENOISE: GPU denoise doesn't hang when its tiles in flight fail (#2577) by @Bruno-Alumn in #2631
  • MCP: render and screenshot PNGs go through a private temp folder (#2573) by @Bruno-Alumn in #2632
  • LR-MASK-BRUSH: with the mask overlay hidden, the stroke being painted no longer tints the photo (#2549) by @Bruno-Alumn in #2639
  • LR-LIB-SMARTALBUM: editing a smart album made from an album view keeps the album by @nledford in #2647
  • Never crash: the work gate's byte count saturates instead of overflowing (#2576) by @insideTheFlux in #2648
  • LR-FILT-FLAG: the filter bar's flag buttons combine, Picked + Unflagged hides only the rejects by @marcoarnulfo in #2651
  • LR-PROF-CAMERACOLOR: limit tone-curve steps between pixel populations (#1904) by @radialmonster in #2656
  • raw: read Canon CR3/CR2 preview colour space from the maker note (#2654) by @radialmonster in #2664
  • LR-PREF-GENERAL: Esc in a Settings text box gives the text back instead of closing Settings by @nledford in #2691
  • "Favorite" and "Listing folders" in the catalogs that lack them by @nledford in #2693
  • LRC-LIB-LIBFOLDERS: a count never covers a name in a narrow sidebar by @nledford in #2696
  • LR-IMP-FORMATS: AHD blends its candidates where noise alone would pick one, no maze in noisy raws (#2094) by @pick2510 in #2698
  • LR-BEHAV-LOCALIZE: the translation report also lists plain tr() strings a catalog lacks, wrapped calls included by @nledford in #2703
  • Never crash: NaN in tone curves and an i16::MIN UTC offset (#2579 items 3 and 4) by @darthnut in #2712
  • Never crash: History is bounded on load and by every op that sets it (#2579 item 8) by @darthnut in #2714
  • Never crash: rational tag lists show 16 values like every other list (#2579 item 7) by @darthnut in #2717
  • LR-VIEW-FILMSTRIP: photos drag from the filmstrip like from the grid by @nledford in #2722
  • Control port: close gracefully so the client reads its last reply (Windows reset) by @insideTheFlux in #2723
  • fix(codecs): validate JPEG ICC APP2 chunk sequences by @ronibalthazar in #2724
  • LRC-LIB-CATALOG-LOCK: quitting on macOS removes the lock's owner note by @nledford in #2725
  • LR-BEHAV-LOCALIZE: panel layout toasts, face recognition prompts and the second window title are translated by @nledford in #2726
  • Brush dabs: build only as far as the caller will look (#1520) by @saad-mughal435 in #2731
  • LR-EDIT-OPTICS-PROFILE: Sony ILCE-6700 in-file distortion by @Enthendor in #2732
  • LR-BEHAV-DRAGDROP: a drop's destination is named with its parent when another folder or album has the same name by @nledford in #2735
  • Never crash: ARW and SRW strips shorter than declared are refused before allocating (#2561) by @mercuryVM in #2740
  • LR-VIEW-HISTOGRAM: the histogram stays in view while the Edit panel's sliders scroll (#2679) by @Bruno-Alumn in #2741
  • LR-MERGE-PANO: the merge dialog makes a new preview each time it opens, also after a failed one (#2708) by @Bruno-Alumn in #2743
  • LR-CLOUD-SMARTPREVIEW: the smart-previews folder test cleans up the folder it takes offline by @nledford in #2748
  • Never crash: tiles far larger than the image are refused before decoding (#2554) by @mercuryVM in #2750
  • KEYC-RATING: deleting the only keyword of the filter Enable Filters put aside leaves filtering on by @nledford in #2758
  • LR-VIEW-PHOTOGRID: a thumbnail that can't be read is tried again only when its photo changes (#2682) by @insideTheFlux in #2764
  • LR-VIEW-PHOTOGRID: the grid asks the image decoders for no thumbnail of a video (#2682) by @insideTheFlux in #2765
  • LR-BEHAV-DRAGDROP: only the primary button drags and drops photos from the grid by @nledford in #2766
  • Read Canon maker-note lens when LensModel is missing by @eliets2 in #2771
  • Reject signed numeric character references in XML entity decoding by @Silvertree2010 in #2776
  • LR-EDIT-OPTICS-PROFILE: Fujifilm X-S20 embedded lens corrections and spectral matrices by @samuelili in #2777
  • LR-LIB-VIRTUALCOPY: prevent numbering overflow in copy batches by @ronibalthazar in #2781
  • docs: gap 9 — the CI gate runs the tests on Linux x64; macOS, Windows and the GPU tests still don't by @nledford in #2796
  • LR-LIB-SMARTALBUM: the catalog refuses an edit that makes a smart album include itself by @nledford in #2798
  • LR-BEHAV-DRAGDROP: a right-click while photos are carried opens no context menu by @nledford in #2808
  • LR-CROP-AUTO: Auto straighten reads the vertical vanishing point and the horizon by @ingolfteetz in #2809
  • Alt/Option-drag previews for clipping and sharpening (#937) by @itrycodinganditsbad in #999
  • Do not read a sibling's shared stem sidecar for a non-owner photo (#1523) by @MarekSpodBiedry in #1575
  • Bound interpolation for extreme brush segments by @eliets2 in #1654
  • Fix Lightroom catalog video classification and filtering by @harrisonoconnorhover in #2021
  • KEY-TOGGLEZOOM: hold Space over a tool to pan and click-zoom, as in Lightroom (#1895) by @helgehelge123 in #2065
  • LR-BEHAV-DIALOGS: dialog confirm buttons name their action by @nledford in #2075
  • LR-VIEW-PHOTOGRID: the active photo's selection ring shows on light themes and differs from the other selected photos by weight by @nledford in #2162
  • LR-IMP-ADD-DIALOG: remembered import thumbnail-size slider by @tylerphotos in #2237
  • Lightroom catalog import: turn masks into the photo's upright frame by @marcoarnulfo in #2246
  • #2284: read the Exif and XMP items of HEIF files by @john01px2022 in #2290
  • LR-CROP-RECT: a free crop corner on a straightened photo grows both sides (#2308) by @chordpli in #2322
  • fix(windows): add opt-in DirectComposition workaround for VRR flicker by @Kaan88 in #2421
  • PERF-SMART: test a smart album's rules cheapest first by @nledford in #2423
  • i18n: complete the Simplified Chinese (zh-hans) catalog (162 missing strings) by @joblonfk001 in #2427
  • i18n: complete the Traditional Chinese (zh-hant) catalog (200 missing strings) by @joblonfk001 in #2429
  • Kelvin for Fujifilm X-Trans III bodies from the RAF's own neutral pair (#730) by @radialmonster in #2514
  • i18n: add Vietnamese (vi) interface language by @sonth87 in #2520
  • LR-VIEW-ZOOM: test pinch display fitting with controlled completions by @AlexChambers in #2521
  • Issue #136: applying the GPU setting never waits for the device on the UI thread by @OneSlips in #2545
  • LR-IMP-FORMATS: GIF and BMP sizes from the header; a canvas the file can't fill is refused (#2553) by @insideTheFlux in #2607
  • LC-SAFETY: Refuse to create a library photo's XMP sidecar by @endthestart in #2658
  • LR-BEHAV-ACCESS: the Flatpak may talk to the accessibility bus, so Orca can read LightCraft by @nledford in #3390
  • packaging(flatpak): add OCI image build and GHCR publishing helper by @dylanmtaylor in #3498

New Contributors

Full Changelog: v0.16.0...v0.17.0

Don't miss a new lightcraft release

NewReleases is sending notifications on new releases.