From 80cebe07673a4b7d448286f798b9563c47004aba Mon Sep 17 00:00:00 2001 From: rcoenen <753704+rcoenen@users.noreply.github.com> Date: Sat, 1 Aug 2026 08:34:51 -0400 Subject: [PATCH] fix(tools): document inline SVG path rendering Document the supported inline SVG path route in the render tool prompt. Keep coverage focused on separate open and closed stroked vector paths. --- packages/core/src/tools/create/render.ts | 2 +- tests/engine/render/jsx/gaps.test.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/core/src/tools/create/render.ts b/packages/core/src/tools/create/render.ts index 66aca1f3d..11b3f3ce3 100644 --- a/packages/core/src/tools/create/render.ts +++ b/packages/core/src/tools/create/render.ts @@ -4,7 +4,7 @@ export const render = defineTool({ name: 'render', mutates: true, description: - 'Render JSX to design nodes. Use replace_id to swap a skeleton placeholder with real content (keeps position in parent). Example: Title', + 'Render JSX to design nodes. Supports inline SVG paths, including open stroked paths: . Use replace_id to replace a placeholder while preserving its position.', params: { replace_id: { type: 'string', diff --git a/tests/engine/render/jsx/gaps.test.ts b/tests/engine/render/jsx/gaps.test.ts index 8c13c6e61..a019a6df0 100644 --- a/tests/engine/render/jsx/gaps.test.ts +++ b/tests/engine/render/jsx/gaps.test.ts @@ -27,6 +27,20 @@ describe('jsx gaps', () => { expect(vector?.vectorNetwork).toBeTruthy() }) + it('renders open and closed SVG paths as separate stroked vectors', async () => { + const g = makeSceneGraph() + await renderJSX( + g, + `` + ) + const vectors = [...g.nodes.values()].filter((node) => node.type === 'VECTOR') + expect(vectors).toHaveLength(2) + for (const vector of vectors) { + expect(vector.vectorNetwork?.vertices.length).toBeGreaterThan(0) + expect(vector.strokes.length).toBeGreaterThan(0) + } + }) + it('instance overrides apply child text by name', async () => { const g = makeSceneGraph() await renderJSX(