Skip to content

v1.36.0 — convert gains raster→raster; component handles real-world SVGs

Choose a tag to compare

@shunyagatha shunyagatha released this 15 Aug 02:21
· 33 commits to main since this release

Two defects the docs promised and the code did not deliver. Both were found by executing the documented surface rather than reading it — both exited 0, and neither was visible without looking at the artefact afterwards.

vecline convert photo.png thumb.webp did not work

Every output extension that was not .svg/.dxf/.eps/.pdf fell through to the rasterizer, which accepts only SVG input — so an ordinary raster conversion failed with "does not look like an SVG". The README advertises a square 11×11 format matrix and the library API delivers one, but 100 of those 121 cells were unreachable from the command named convert.

Routing now reads the input bytes as well as the output extension:

vecline convert photo.png thumb.webp   # raster → raster
vecline convert logo.png logo.svg      # raster → vector
vecline convert logo.svg logo@2x.png   # vector → raster

The rule lives in src/io/route.ts so it can be tested without importing cli.ts (which parses argv on import), and is exported from vecline/core — any converter UI answers this same question.

vecline component drawing.svg emitted uncompilable JSX

injectProps anchors on /^<svg/, so a file opening with <?xml version="1.0"?> — which is most SVGs not written by vecline — missed the anchor, silently dropped the {...props} spread, and left the processing instruction and HTML comments inside a JSX return. Tracing a raster hid it completely, because vecline's own output starts at <svg. The body is now reduced to the root element, and comments become JSX comments rather than vanishing.

Docs corrected to what reproduces

  • APNG was advertised as an animate input. The prebuilt sharp binary does not expose APNG frames (vips_image_get: field "n-pages" not found), so an APNG produced a one-frame SVG rather than an error. Animated GIF and animated WebP are the verified inputs.
  • The Graver→Vecline rename had turned "en·graver" into "en·vecline" — the README and the G-code exporter both advertised a "laser envecline".
  • README now leads with Vecline Studio at https://vecline.xyz, and documents the one-click .mcpb install, the registry listings, and the MCP tool annotations.
  • package.json, server.json and the MCPB manifest describe the real breadth instead of "image-to-SVG", and gain the mcp/model-context-protocol keywords that were missing entirely.

476 tests green · smoke clean · corpus problems: 0.

vecline.mcpb is attached — open it with Claude Desktop to install the MCP server in one click.