mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-27 11:37:13 -06:00
Threads the Vec<Region> that lightcraft-meta already reads from XMP (MWG-RS) through to the screen, so it's no longer inert: - catalog::Meta gains a `regions` field (catalog now depends on lightcraft-meta, which doesn't depend back on catalog, so no cycle). - crates/engine/src/files.rs (meta_of) and src/sidecar.rs (parse_sidecar / merge_into) populate it for both embedded-XMP and external-sidecar photos, mirroring how `keywords` is already handled. - ui-egui's loupe view (panels/detail.rs) draws each region as a rectangle over the photo via the existing CanvasMap, color-coded by kind (Face/Pet/other) with its name label if present, right alongside the existing info overlay. Read-only, no new interaction. New end-to-end test (regions_from_sidecar_are_read_on_import) covers a region written to a sidecar reaching Photo.meta.regions through real import, not just the parser. cargo xtask ci green (fmt, clippy -D warnings, test, parity, layers, assets, wasm). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
23 lines
587 B
TOML
23 lines
587 B
TOML
[package]
|
|
name = "lightcraft-catalog"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "LightCraft library: photos, albums, ratings/flags, search/filter/sort, op-log persistence (L3)"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
lightcraft-develop = { workspace = true }
|
|
lightcraft-meta = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
crc32fast = { workspace = true }
|
|
log = { workspace = true }
|
|
web-time = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
proptest = { workspace = true }
|