Brandon Thomas
|
3ef4eb0687
|
M9.2: preset files — .lcpreset import/export (groups preserved), XMP presets via crs: mapping
- engine presets.rs: .lcpreset JSON format {format: "lightcraft.preset", version, presets[]},
parse_preset_file (.lcpreset file / bare preset / array, or XMP), folder expansion,
Session::add_presets (identical presets skipped, id clashes get fresh user.* ids, built-ins
never replaced).
- crs::preset_from_xmp: crs: fields → partial settings, crs:Name/crs:Group (fallback: file name /
"Imported Presets").
- Commands preset.import {paths} and preset.export {path, ids?, group?}; UI commands
file.importPresets / file.exportPresets (File menu, with native open/save dialogs on desktop),
Presets panel "⋯" menu (Import Presets…, Export User Presets…) and group context menu
(Export Group…).
- Tests: export → import round trip keeps groups/settings, duplicates skipped, clashing ids,
malformed files reported, hand-written XMP preset imports and applies.
- docs/xmp-interop.md: preset file section.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 01:05:26 -04:00 |
Brandon Thomas
|
8af27c11b1
|
M10.8: XMP sidecars — save/read metadata + develop settings, auto-write, crs: interchange
- crates/engine/src/sidecar.rs: <stem>.xmp (default) or <file>.xmp next to originals with rating,
label, title, caption, copyright, creator, keywords, capture time/GPS, pick flag + full develop
settings in lc:settings; atomic writes; read on import (sidecar wins for metadata, edits restored)
and via photo.readMetadataFromFile (one undo step); raw/DNG embedded XMP used without a sidecar.
- Commands: photo.saveMetadataToFile (Cmd+S), photo.readMetadataFromFile, library.xmpPreferences
{autoWrite, naming}, library.toggleAutoWriteXmp; prefs persisted in the library's prefs.json.
Auto-write rewrites sidecars after each committed change (not mid-drag; undo/redo too).
- crates/engine/src/crs.rs: crs: develop fields (PV2012 light, WB abs/incremental, presence, HSL,
B&W mix, parametric + point curves, colour grading, sharpening, NR, vignette, grain, optics,
geometry, crop) → partial settings; documented in docs/xmp-interop.md.
- meta: write_xmp_lc for extra lc: properties; crs namespace canonicalised on read (never written).
- Tests: packet round trip, crs mapping with hand-written snippets, save → delete library →
re-import restores edits, auto-write + prefs persistence, foreign sidecar, DNG-embedded XMP.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 00:36:19 -04:00 |