This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+1 more
Summary
AI summaryUpdates Tests, experimental, and 2.8:1 across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Low |
Adds renderChartWithEvidence() returning SVG plus machine‑readable RenderEvidence. Adds renderChartWithEvidence() returning SVG plus machine‑readable RenderEvidence. Source: llm_adapter@2026-06-12 Confidence: high |
— |
| Feature | Low |
Adds diagnoseConfig() deception‑check diagnostics for chart design issues. Adds diagnoseConfig() deception‑check diagnostics for chart design issues. Source: llm_adapter@2026-06-12 Confidence: high |
— |
| Feature | Low |
Adds WCAG AA contrast‑conformance gate for all shipped theme presets. Adds WCAG AA contrast‑conformance gate for all shipped theme presets. Source: llm_adapter@2026-06-12 Confidence: high |
— |
| Feature | Low |
Adds experimental renderInteractiveChart widget for ChatGPT Apps integration. Adds experimental renderInteractiveChart widget for ChatGPT Apps integration. Source: llm_adapter@2026-06-12 Confidence: high |
— |
| Feature | Low |
Adds colocated tests for NetworkCustomChart and OrdinalCustomChart escape hatches. Adds colocated tests for NetworkCustomChart and OrdinalCustomChart escape hatches. Source: llm_adapter@2026-06-12 Confidence: high |
— |
| Feature | Low |
Adds top‑1 agreement rate to capability quality scorecard and new fixtures. Adds top‑1 agreement rate to capability quality scorecard and new fixtures. Source: llm_adapter@2026-06-12 Confidence: low |
— |
| Feature | Low |
Adds prerendered HTML files per docs route with machine‑readable fallback content. Adds prerendered HTML files per docs route with machine‑readable fallback content. Source: llm_adapter@2026-06-12 Confidence: low |
— |
| Feature | Low |
Extends MCP `renderChart` tool to return the same `RenderEvidence` block alongside output. Extends MCP `renderChart` tool to return the same `RenderEvidence` block alongside output. Source: granite4.1:30b@2026-06-12-audit Confidence: low |
— |
| Feature | Low |
Adds `top1AgreementRate` to capability quality scorecard, ranks distinct components, and includes new fixtures (Heatmap, GaugeChart, FlowMap, DistanceCartogram). Adds `top1AgreementRate` to capability quality scorecard, ranks distinct components, and includes new fixtures (Heatmap, GaugeChart, FlowMap, DistanceCartogram). Source: granite4.1:30b@2026-06-12-audit Confidence: low |
— |
| Feature | Low |
Emits prerendered HTML file per docs route with machine‑readable `<noscript>` fallback and `llms-routes.json` index. Emits prerendered HTML file per docs route with machine‑readable `<noscript>` fallback and `llms-routes.json` index. Source: granite4.1:30b@2026-06-12-audit Confidence: low |
— |
| Bugfix | Medium |
Fixes theme legibility by deepening colors to meet WCAG AA contrast floors. Fixes theme legibility by deepening colors to meet WCAG AA contrast floors. Source: llm_adapter@2026-06-12 Confidence: high |
— |
| Bugfix | Medium |
Fixes capability descriptor judgment logic for DifferenceChart, BarChart, and ChoroplethMap. Fixes capability descriptor judgment logic for DifferenceChart, BarChart, and ChoroplethMap. Source: llm_adapter@2026-06-12 Confidence: high |
— |
| Bugfix | Medium |
Fixes contrastRatio() to parse 3‑digit hex shorthand values. Fixes contrastRatio() to parse 3‑digit hex shorthand values. Source: llm_adapter@2026-06-12 Confidence: high |
— |
Full changelog
Added
- Render evidence.
renderChartWithEvidence()(semiotic/server) returns the SVG plus a
machine-readableRenderEvidenceobject computed from the rendered scene graph — mark counts by
scene type, resolved axis domains, anemptyflag, category/node/edge counts, annotation count,
and the accessible name — so agent repair loops and CI assertions can verify a chart actually drew
data marks without pixel inspection. The MCPrenderCharttool now returns the same evidence block
alongside its SVG/PNG output. - Misleading-design diagnostics.
diagnoseConfig()gains a deception-check pack: inverted
extents (INVERTED_AXIS), unlabeled dual-axis series (DUAL_AXIS_UNLABELED), trend windows
cropped to a favorable slice (CHERRY_PICKED_WINDOW), negative values in part-to-whole encodings
(PART_TO_WHOLE_NEGATIVE— an error for pie/donut/funnel), non-interpolatingcurve="basis"
smoothing (NON_PASSING_CURVE), slope-distorting aspect ratios (EXTREME_ASPECT_RATIO), and
over-sliced pies (PIE_TOO_MANY_SLICES). These patterns mislead human readers and — per the
chart-deception literature — vision-language models the same way. - Theme contrast conformance gate. Every shipped theme preset is now tested against WCAG-derived
floors (4.5:1 for text/tooltip/annotation roles, 3:1 for the focus indicator), with sub-3:1 mark
colors pinned in an exact-match known-exceptions ledger so palette regressions fail and
improvements must shrink the ledger. The axe integration scan re-enables thecolor-contrast
rule on the strength of the gate. - Scorecard top-1 agreement. The capability quality scorecard now reports strict
top1AgreementRatebeside the lenient top-3 rate (current canonical set: 93% top-1 / 100% top-3),
ranks the top-3 over distinct components rather than variants of one chart, and gains fixtures
for the previously unexercised Heatmap, GaugeChart, FlowMap, and DistanceCartogram descriptors. - ChatGPT Apps widget (experimental). The MCP server gains
renderInteractiveChart, which
renders a static-data chart through the same server render path asrenderChartand returns a
text/html;profile=mcp-appwidget (ui://semiotic/chart-widget.html) with fit/zoom, data,
hover, and render-evidence controls for ChatGPT developer-mode connectors over
semiotic-mcp --http. A deployment playbook lives in the repo asCHATGPT_APPS_DEPLOYMENT.md,
and an MCP protocol test suite covers the tool and widget resource end to end. - Docs prerender route artifacts. The docs build now emits one prerendered HTML file per
route with sanitized, route-specific machine-readable content in each page's<noscript>
fallback, plus adocs/build/llms-routes.jsonroute index for agent readers; the docs route
check verifies the output.
Changed
- Theme legibility fixes (WCAG AA).
pastelstextSecondary/focus/annotation,bi-tool
textSecondary, and thetufte-dark/journalist/playfulannotationcolors were deepened to
clear the contrast floors; the empty-state / BigNumber-empty / data-table-caption fallback color
moved from#999(2.8:1) to#666, matching the default theme'stextSecondary. - Capability descriptor judgment fixes.
DifferenceChartno longer takes fullcompare-series
marks when it would silently drop series beyond its native two; flatBarChartyields on crossed
two-categorical matrices (Grouped/Stacked/Heatmap show the matrix) and on raw-observation data;
ChoroplethMaprequires at least two area features (a one-region choropleth has nothing to
compare). contrastRatio()now parses 3-digit hex shorthand (#333), making the default themes measurable.
Tests
- Colocated tests for the
NetworkCustomChartandOrdinalCustomChartescape hatches (the
XY variant was already covered).
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About nteract/semiotic
React data visualization MCP server with 30+ chart types. 5 tools: suggest charts for a dataset, render validated React configs to SVG, diagnose configuration anti-patterns, get component schemas, and report issues.
Related context
Related tools
Earlier breaking changes
- v3.8.1 Removed `/healthz` alias; only `GET /health` is supported for health checks.
- v3.8.0 Deprecates `GuantletChart` typo alias; use `GauntletChart`. Migration required.
- v3.6.0 Changes DifferenceChart to accept 2+ series via top‑2 subselection, adding caveats for extra series.
- v3.6.0 Changes AreaChart to a single‑series chart; multi‑series inputs are subselected.
Beta — feedback welcome: [email protected]