Skip to content

inksmcp 0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Oct 06:56

First public release. Round-2 build from ten field reports, editing of files made elsewhere, and release packaging:
24 tools, 160 tests against the real Inkscape.

Added

  • 2026-09-28 — Release packaging: MIT license, PyPI metadata (uvx inksmcp), server.json for the MCP Registry, CI on Linux, Windows and macOS, a tag-triggered release workflow (PyPI trusted publishing, GitHub release, registry), user docs (getting started, recipes, a tool reference generated from the server), contributing and security notes. Development docs moved to docs/development/.
  • 2026-09-28 — Editing files made elsewhere (D-030, experiment e30): document_open normalises page geometry (%, mismatched or offset viewBoxes, stretched pages) and root paint without changing the rendering, and says so in notes; .svgz open/save; inspect shows computed fill/stroke, use targets, flowed text and symbols, and find lists matches by type, colour, text, href or id prefix; use element type (library.svg#symbol copies a symbol in once); deleting elements removes defs only they used. 6 new tests (140 total).
  • 2026-09-28 — Round-2 step 3 (D-028): repeat cell (rows placed by their own column/row numbers) and the split tool (a region divided into named cell rects by column ratios, height ratios and gutters). Tables are a documented split + repeat recipe. Experiment e28. 3 new tests (132 total).
  • 2026-09-28 — Round-2 step 2 (D-027): automatic overlap warnings in editing responses (text on text, text across a shape edge, un-haloed text crossed by a line; stacked elements reported once); place key (stored below/above/left_of/right_of + gap + align, re-applied with fit_to in one dependency order, also after align/layout moves of the reference); layout items with an anchor. Experiment e27. 6 new tests (129 total).
  • 2026-09-28 — Round-2 step 1, files in (D-026): image element (linked or embedded, natural size, object_fit), import_file tool (SVG as one scaled group with renamed ids and fixed references; images), add_elements elements_path and repeat rows_path (JSON/CSV). Experiments e25, e26; findings F33, F34. 4 new tests (123 total).
  • 2026-09-28 — Round-2 step 0 (D-025): clip key on any element (element id or rect; clipped bbox; follows the element), text halo / halo_width, connector start_gap / end_gap, connectors placed in their ends' layer or a "Connectors" layer with layers and labels in the response, repeat order: "column", shortened id runs in repeat responses, id_prefix clash error, clearer repeat / align / element descriptions. Experiment e24; findings F32, S11. 6 new tests (119 total).
  • 2026-09-28 — path_operation returns result: the ids holding the outcome (combine keeps the top id, the other boolean ops the bottom one; E22, F30).
  • 2026-09-28 — grid log axes: labels: "decades" | "paper"; decade labels follow start by default when it is given (D-023).
  • 2026-09-27 — rect fit_to / fit_padding / fit: a box sized around other elements after wrapping, re-fitted when they are edited, chained in dependency order, usable in repeat templates. Decision D-020. 4 new tests (103 total).
  • 2026-09-27 — repeat tool: stamp a template per data row (placeholders, local ids, step/columns, alternate mirroring that reflects shapes and moves texts/groups as blocks, off-page warnings, all or nothing). Experiment e21; finding F29; decision D-019. E20 timeline: 37 % less request text. 3 new tests (99 total).

Fixed

  • 2026-09-28 — Windows: with Inkscape installed through Chocolatey (and other package managers whose shims start the GUI build), the server picked the shim on PATH and silently loaded nothing. The locator now prefers inkscape.com on PATH, then the install folders, and refuses a GUI-only build with a message (F39).
  • 2026-09-28 — From field report 12 (re-run on 0.3.0) and the first CI run: text wrapped with width could overflow by up to 2.3 % in fonts other than Arial (lines are now measured, F38); use ignored width/height for symbols without a viewBox and drew library icons in the wrong units; run_actions extensions silently changed the whole drawing when select was given (now refused, F37); saved files reopened with a rounding "normalisation"; find text missed flowed text past 160 characters. document_save reports bytes, PNG exports their pixel size. 9 new tests (159 total); locator test (160).
  • 2026-09-28 — From field report 11 (editing Inkscape's own sample files): .svgz could not be opened and unexpected errors reached the agent as an empty "Error executing tool"; pages whose viewBox didn't match their size were measured wrongly and page_fit wrote a non-uniform scale; import_file dropped the source root's fill/stroke, could stretch, and numbered id-less elements differently from document_open; place reported the move instead of the box; sodipodi:docname kept a temp name; the defaults error blamed every key when type was the problem; find-style lookups skipped elements at random (unstable proxy ids).
  • 2026-09-28 — Overlap warnings no longer flag shapes hidden under a text's opaque balloon or caption box (comic page 2: 15 false warnings → 0), and findings are grouped per text (D-029, experiment e29). 2 new tests (134 total).
  • 2026-09-28 — A crash of the Inkscape shell part-way through a tool left the document half-changed (e.g. elements written but not wrapped/fitted). Every tool now restores the document on failure, and a dead shell is retried once (E23, D-022). Errors name the exit code and command. 10 new tests (113 total).
  • 2026-09-28 — grid silently dropped major lines and labels when major was a rounded multiple of minor (11.6667 / 2.3333); spacings that don't nest are now an error (D-023). plot no longer warns about edge points a hair outside.
  • 2026-09-28 — path_operation described combine's surviving id wrongly.
  • 2026-09-27 — The element help in the add_elements description showed a garbled em dash (—).
  • 2026-09-27 — vertical_anchor placed texts inside transformed groups or layers wrongly: it compared the local y with document-space measurements.