Files
lightcraft/docs/whats-new.md
T
Brandon ThomasandClaude Opus 5.5 2218ca5a4c Issue #78: GPU export: respect device limits, fall back to CPU on GPU errors
A GPU render no longer hands back an image it cannot vouch for:
- set the wgpu device-lost callback (wgpu never reports a lost device as an
  error, so a driver reset went unnoticed); readback waits with a timeout and
  checks the poll result and map callback instead of blocking forever
- each render runs in OutOfMemory/Validation/Internal error scopes; errors
  fail that render (OOM and limit failures for that render only, device
  errors for the process) and it is redone on the CPU
- every buffer is checked against the device limit when created (no
  validation error, no process-wide disable); LIGHTCRAFT_GPU_LIMITS=webgpu|<MiB>
  creates the device with lower limits to reproduce small adapters
- the output buffer is cleared and the per-pixel kernel writes alpha 255:
  any unwritten pixel (work silently dropped, the issue's all-black export)
  fails the render; an all-black result is re-rendered on the CPU
- renders submit per stage and every 16 M invocations, the per-pixel stage
  runs in ~4 MP bands: no long submission for a slow iGPU's watchdog to reset
- ui.inspect perf.gpuReason / perf.gpuFallback, app.gpu reason/lastFallback,
  System Info and Settings say why the GPU is off (e.g. llvmpipe skipped) and
  why the last render fell back

Tests: crates/gpu/tests/fallback.rs (limit, mid-render limit, validation
error, dropped work, black photo), engine export falls back to the CPU image,
banded 3000x2000 GPU/CPU equivalence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 05:06:24 -04:00

3.3 KiB

What's new in LightCraft

October 2026

Presets and profiles

  • Import presets from other editors: XMP presets, classic .lrtemplate files, "DNG presets" from mobile apps and .zip bundles of any of these — whole folders at once, grouped by pack. Masks inside presets come along.
  • Luminar looks: .lmp files and .mplumpack collections import as presets (grouped by collection); the sliders with a counterpart here come along, the rest is listed.
  • 23 new built-in presets: Portrait, Landscape, Urban, Food, Seasons, Vintage and B&W toners.

Reliability

  • Exports are never black because of the GPU (issue #78): a GPU render that runs out of device memory, exceeds the GPU's buffer limits, hits a driver error or reset, or comes back incomplete is redone on the CPU — the file is the same image either way. Work is sent to the GPU in short pieces so slow integrated GPUs aren't reset by their watchdog. ui.inspect → perf (gpuReason, gpuFallback), Help ▸ System Info and Settings ▸ Performance say why the GPU isn't used (e.g. a skipped software adapter such as llvmpipe) and why the last render fell back.

Library

  • Smart albums with a rule editor: match all / any / none, nested groups, 26 fields.
  • Quick Collection and target album (B in the grid), keyword sets (⌥1–⌥9), colour-label sets.
  • Colour-label filter with several labels at once; expandable folder tree in Local.
  • Import: copy to any folder, by day / by month / one folder, rename on import, metadata preset, Copy as DNG.
  • Import ▸ Move: photos go into the destination (with the same folders and renaming as Copy, e.g. Photos/2026/20260114/20260114_001.jpg) together with their XMP sidecars; each original leaves the card only after its copy is verified and in the library. Duplicates and files that fail stay where they were.
  • Watched-folder auto import; Convert to DNG; Duplicate; Build Standard / 1:1 / Smart Previews.
  • Export file names use the Rename Photos tokens ({title}, {seq:2}, {date:%Y-%m-%d}…), plus new {num}, {folder}, {lens}, {iso}, {rating}, {creator}.
  • Copyright status, rights usage terms and copyright info URL in Info, metadata presets and exports.
  • Auto-Tag from Tracklog: GPS locations for your photos from a GPX track log, matched by capture time.
  • A change that can't be saved to disk (full or unplugged drive) is no longer silent: the command reports "saved in memory but not written to disk", the top bar shows a warning, and LightCraft keeps retrying until the save goes through.
  • Smaller, faster catalogs: photos you only looked at in Local (never added, rated or edited) are forgotten once their folder has not been browsed for 30 days — your files and sidecars stay, and browsing the folder shows them again. Change the period (or turn it off) in Settings → Performance.

Editing

  • Auto Sync: edits apply to every selected photo. Auto B&W mix. Automatic versions.
  • Colour-range masks: click the photo to sample. Luminance ranges: range bar, smoothness, luminance map.
  • ⌘-drag to straighten, ⇧G Guided Upright, a grid while transforming.

Viewing and sharing

  • Slideshow, second window, All Metadata, System Info.
  • Edit in External Editor (⇧⌘E): a 16-bit TIFF copy, stacked, refreshed when you come back.
  • Lossy DNG files and Smart Previews open as raw photos.