mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-24 09:57:08 -06:00
- architecture.md listed dotted MCP tool names (doc.open, command.run...) that the server rejects; it now uses the advertised underscore names, adds the missing tools, and points out that dotted names belong to the JSON control protocol. - development.md's MCP tool inventory gains jobs_list and jobs_cancel. - crates/codecs/README.md: oversized JPEG EXIF/XMP is dropped with a warning (XMP first sheds its layered-document properties), not an error; supported deep EXR opens flattened with a DeepFlattened warning, and only deep ZIP and mip/rip-map tiles are unsupported. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UHgFEHEsefoQoBParH47JA
This commit is contained in:
+11
-3
@@ -114,8 +114,12 @@ the same.
|
||||
* CMYK is always written 4:4:4 (subsampled CMYK is not portable) as Adobe-inverted CMYK with an
|
||||
APP14 marker.
|
||||
* Text is not written because there is no COM-segment support.
|
||||
* EXIF and XMP must each fit in one 64 KiB APP1 segment, otherwise the encoder returns an error.
|
||||
Extended XMP is not written.
|
||||
* EXIF and XMP must each fit in one APP1 segment (65 533 bytes with its header). Metadata that
|
||||
doesn't fit is dropped and the export still succeeds, with a
|
||||
`MetadataTooLarge` warning ("EXIF (… bytes) is too large for the format; it will be dropped").
|
||||
Before dropping XMP, the encoder first removes the layered-document properties
|
||||
(`DocumentAncestors`, `TextLayers`) that mean nothing in a flat JPEG. Extended XMP is not
|
||||
written.
|
||||
* **TIFF decode**
|
||||
* Classic TIFF and BigTIFF (version 43, 8-byte offsets), both byte orders, strips or tiles,
|
||||
planar configuration 1 or 2.
|
||||
@@ -140,7 +144,11 @@ the same.
|
||||
* **EXR**
|
||||
* Reads the first valid layer at full resolution, from its data window.
|
||||
* Channel names are matched by suffix, so `layer.R` counts as `R`.
|
||||
* Subsampled channels and deep data are unsupported.
|
||||
* Subsampled channels are unsupported.
|
||||
* Deep data (scanlines or single-level tiles, compressed NONE, RLE or ZIPS) opens as a flat
|
||||
image: each pixel's samples are composited into one, with
|
||||
`DecodeWarning::DeepFlattened` because per-pixel depth is not kept. Deep ZIP (16-line
|
||||
blocks) and deep mip-map or rip-map tiles return `Unsupported`.
|
||||
* Only lossless compressions are offered for writing: None, RLE, ZIP1, ZIP16 and PIZ.
|
||||
* **Netpbm writing** picks the subtype from the image: float gives PFM, gray gives P5, RGB gives
|
||||
P6, and anything with alpha or CMYK gives P7 (PAM). Writing a `.pbm` file therefore produces
|
||||
|
||||
@@ -434,9 +434,11 @@ psd/src/
|
||||
|
||||
## 12. Automation and extensibility
|
||||
|
||||
- **`automation`:** an MCP server built on `rmcp`. It exposes:
|
||||
- `session.list`, `doc.open`, `doc.save`, `doc.export`, `doc.inspect` (layer tree as JSON), `doc.render_preview` (PNG).
|
||||
- `command.list` and `command.run(id, params)`, both generated from the registry.
|
||||
- **`automation`:** an MCP server built on `rmcp`. Its tool names use underscores (the dotted
|
||||
names such as `doc.open` belong to the JSON control protocol, `docs/control-protocol.md`). It exposes:
|
||||
- `session_list`, `doc_open`, `doc_new`, `doc_save`, `doc_export`, `doc_inspect` (layer tree as JSON), `doc_render_preview` (PNG), `doc_select`, `doc_close`.
|
||||
- `command_list`, `command_run` and `command_batch`, generated from the registry; `jobs_list` and `jobs_cancel` for background jobs.
|
||||
- Bridge only (a running app): `ui_inspect`, `ui_screenshot`, `ui_pointer`, `ui_menu_invoke`, `ui_set`, `control_call`. The full list is in `docs/development.md` › MCP.
|
||||
- Stdio for agent CLIs, and optionally loopback TCP with a token so it can attach to a running GUI.
|
||||
- `AuthorizedWorkspace`, which holds independent read and write directory capabilities. Remote
|
||||
paths are validated relative names; engine commands that still require ambient filesystem
|
||||
|
||||
@@ -143,6 +143,7 @@ Tools:
|
||||
- `session_list`
|
||||
- `doc_open`, `doc_new`, `doc_save`, `doc_export`, `doc_inspect`, `doc_render_preview` (returns a PNG image), `doc_select`, `doc_close`
|
||||
- `command_list`, `command_run`, `command_batch` (several commands per call)
|
||||
- `jobs_list` (running background jobs with progress, then recently finished ones with their result or error), `jobs_cancel` (one job by id, or every running job)
|
||||
- bridge only: `ui_inspect`, `ui_screenshot`, `ui_pointer`, `ui_menu_invoke`, `ui_set`, `control_call`
|
||||
|
||||
Claude Code (`.mcp.json` in the repo root, or `claude mcp add`):
|
||||
|
||||
Reference in New Issue
Block a user