From 929202b95f63887731598c6a4423ef111a1179d8 Mon Sep 17 00:00:00 2001 From: Chad Elliott Date: Sun, 11 Oct 2026 16:26:04 -0500 Subject: [PATCH] docs: #1046 document the cancelled flags and that the UI decides on error kinds Co-Authored-By: Claude Opus 5.5 --- docs/ai-masks.md | 5 +++++ docs/apple-photos.md | 1 + docs/localization-parity.md | 7 +++++-- docs/mcp.md | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/ai-masks.md b/docs/ai-masks.md index 0c5ea6a50..b02912abc 100644 --- a/docs/ai-masks.md +++ b/docs/ai-masks.md @@ -191,6 +191,11 @@ Therefore: | `segment.model.cancel` | `{}` | stop it (it resumes next time) → `{cancelled}` | `remote` reports the configured endpoint, not its health. `installed` describes local weights only. +`download` is `{running, done, total, file, error, cancelled, finished}`: `cancelled` is true when the last +download was cancelled (its `error` says so in words; decide on the flag). An AI mask command refused because +the model is not installed (or still downloading) fails with an error that starts with "The SAM 3 model is +not installed"; inside LightCraft it is `ErrorKind::ModelMissing(Sam3)`, which is what the app offers the +download on. Coordinates are normalized to the uncropped, oriented photo, like every mask shape. `seg` passes a stored segmentation (as `mask.list` / the develop settings hold it): the mask is made without diff --git a/docs/apple-photos.md b/docs/apple-photos.md index f0d47c5e3..dfc0f4389 100644 --- a/docs/apple-photos.md +++ b/docs/apple-photos.md @@ -28,6 +28,7 @@ An export can hand the files it wrote to Apple Photos, optionally into an album An import can take minutes, and the first one waits for the user to answer macOS's permission prompt. Each import is a job: `{job, running, requested, album}`, plus, once Photos is done, `{imported, ids, warning?}`, `{error}` or `{skipped}` (`exporting: true` while an export that will add its files is still writing them). +`skipped` says why Photos wasn't asked, in words; `cancelled: true` comes with it when the export was cancelled. While Photos works, the activity stack ([background-tasks.md](background-tasks.md)) shows it. An export adding its files keeps its own row, which reads "Adding to Apple Photos…" and loses its ✕, since Photos can't be stopped once diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 18aae618a..c90f3a270 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -1,6 +1,6 @@ # Localization parity -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-10 · **Change:** major (first per-language measurement from the catalogs) · **Target:** Adobe Lightroom Classic 15.5 / Lightroom 9.6 +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-11 · **Change:** minor (the interface no longer decides on error text, a prerequisite for translating lower-layer errors) · **Target:** Adobe Lightroom Classic 15.5 / Lightroom 9.6 How far each interface language is from `full`. How to add or maintain a language is in [localization.md](localization.md); per-language notes are in `localization-.md` @@ -73,7 +73,9 @@ Target languages LightCraft lacks: Italian, Korean, Dutch, Polish, Swedish, Norw ## Shared work before any language is `full` (counted once, ~20–35 h) - Route lower-layer error messages (catalog, raw, codecs, engine) through translatable message ids - instead of English `format!` strings (~12–20 h). + instead of English `format!` strings (~12–20 h). Translating them must not change what the app does: + since #1046 the interface decides on an error's kind (`lightcraft_engine::ErrorKind`, a download's or + Apple Photos import's `cancelled` flag), not its words; new decisions on an error go through a kind too. - A check in `cargo xtask ci` that every user-visible literal reaches a catalog (~4–8 h). - A user manual / help pages beyond What's New and the shortcut sheet (Lightroom links to online help; ~4–8 h for a translatable in-app help index). @@ -89,4 +91,5 @@ Target languages LightCraft lacks: Italian, Korean, Dutch, Polish, Swedish, Norw | Date | Change | Summary | |---|---|---| +| 2026-10-11 | minor | Shared work: the interface decides on error kinds, not English error text (#1046) | | 2026-10-10 | major | Created: per-language counts measured from the catalogs, the twelve key languages, script support, estimates | diff --git a/docs/mcp.md b/docs/mcp.md index e1fb07373..c18f695a0 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -274,7 +274,7 @@ lightcraft-cli calibrate --max 300 ~/Pictures/2026 # camera colour profiles (d `app.export` (MCP `export` tool, `lightcraft-cli run`, the desktop app) takes `addToPhotos: true` and `photosAlbum` to hand the files it wrote to Apple Photos, into that album (a top-level album of exactly that name, made when missing). The result's `applePhotos` is the import job: `{job, running, requested, album}` -plus `{imported, ids, warning?}`, `{error}` or `{skipped}` once Photos is done; the files are written either +plus `{imported, ids, warning?}`, `{error}` or `{skipped}` (with `cancelled: true` when the export was cancelled) once Photos is done; the files are written either way. Headless (this server, `lightcraft-cli`) waits for Photos by default; the desktop app (connect mode) answers with the running job and `export.photosImports {job}` gives the outcome. `export.addToPhotos {paths, album?, wait?}` does the same for files already on disk (`wait` defaults to true headless, false in the desktop