openpencil/apps/web/server/api
Fini 59f25dac82 feat(ai): add_chart_line_v0 + add_chart_pie_v0 — two chart skeletons (46th, 47th)
chart_line: polyline through N data points (normalized to max),
optional dots at each vertex. Emits a `path` node with computed SVG
`d`="M x y L x y …" + N `ellipse` dots. fit_content width = values
× point_spacing.

chart_pie: N colored slices via ellipse `startAngle`/`sweepAngle`
arc support. NOT the "stacked full ellipses" anti-pattern — each
slice has a UNIQUE sweep range (sums to 360°). Supports donut cut-
out via `inner_radius_ratio`. Default 6-color palette rotates.
All-zero input throws (degenerate chart can't be drawn).

Wired across all three paths + elements.md decision-tree entries +
keyword map + examples. Both use layout=none (absolute positioning
for vertices / slices stacked at origin).

Tests:
- pen-mcp: 8 cases chart_line + 8 cases chart_pie (height math,
  clamp bounds, custom colors, donut, error paths, id uniqueness)
- Parametric coverage auto-extended (+2 cases each in 9 files)
- Total delta: 2979 → 3027 passing (+48).

Closes #45 + #46; covers part of #50 (charts entries).
2026-04-22 06:35:00 +08:00
..
ai V0.7.3 (#111) 2026-04-15 22:19:12 +08:00
mcp feat(ai): add_chart_line_v0 + add_chart_pie_v0 — two chart skeletons (46th, 47th) 2026-04-22 06:35:00 +08:00
local-asset.get.ts V0.7.0 (#95) 2026-04-11 23:25:13 +08:00