mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-30 21:18:11 -06:00
`faces.models.list / inspect / install / remove / select` and `faces.enable`, all
reachable from the UI, CLI, control channel and MCP. Models live in a folder the
host provides (`Session::face_models_dir`): one subfolder each with the model, its
manifest and a record of what the user accepted, plus settings.json.
- install needs `acknowledged: true` (the user has been shown the licence), copies
the file under a .part name, checks the copy's SHA-256 against the original, then
renames; a failure leaves nothing behind.
- ids are validated before they become folder names (and a manifest that disagrees
with its folder is ignored); remove only ever deletes a folder that has a model
manifest. A manifest id can no longer be `.`, `..` or start with a dot.
- inspect describes any .onnx without writing anything; unusable files are an
answer ("unsupported" with the reason), not a crash.
- the list says plainly that running a model is not built in yet.
`faces::synthetic` makes a minimal valid ONNX for tests (and the later self-check).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
46 lines
1.5 KiB
TOML
46 lines
1.5 KiB
TOML
[package]
|
||
name = "lightcraft-engine"
|
||
version.workspace = true
|
||
edition.workspace = true
|
||
license.workspace = true
|
||
description = "LightCraft engine: session, command registry, history, render jobs, view-models (L4)"
|
||
|
||
[lints]
|
||
workspace = true
|
||
|
||
[dependencies]
|
||
lightcraft-geom = { workspace = true }
|
||
lightcraft-color = { workspace = true }
|
||
lightcraft-raster = { workspace = true }
|
||
lightcraft-develop = { workspace = true }
|
||
lightcraft-scenes = { workspace = true }
|
||
lightcraft-pipeline = { workspace = true }
|
||
lightcraft-gpu = { workspace = true }
|
||
lightcraft-catalog = { workspace = true }
|
||
web-time = { workspace = true }
|
||
lightcraft-preview = { workspace = true }
|
||
lightcraft-codecs = { workspace = true }
|
||
lightcraft-raw = { workspace = true }
|
||
lightcraft-meta = { workspace = true }
|
||
lightcraft-faces = { workspace = true }
|
||
miniz_oxide = { workspace = true }
|
||
lightcraft-merge = { workspace = true }
|
||
rayon = { workspace = true }
|
||
serde = { workspace = true }
|
||
serde_json = { workspace = true }
|
||
thiserror = { workspace = true }
|
||
log = { workspace = true }
|
||
ab_glyph = { workspace = true }
|
||
# Apply the font’s vertical substitutions and origins to Japanese watermarks.
|
||
harfrust = { version = "0.12", default-features = false, features = ["std"] }
|
||
unicode-segmentation = "1.13"
|
||
lightcraft-segment = { workspace = true, optional = true }
|
||
|
||
[features]
|
||
# AI masks with SAM 3 (Object / Describe). Off for the web and CLI builds.
|
||
sam = ["dep:lightcraft-segment"]
|
||
|
||
[dev-dependencies]
|
||
libc = { workspace = true }
|
||
lightcraft-tiff = { workspace = true }
|