Skip to content

nteract/semiotic

v3.7.1 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

Published 1mo MCP Data & Storage
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai d3 data-visualization nteract react streaming
+1 more
visualization

Summary

AI summary

Updates Tests, experimental, and 2.8:1 across a mixed release.

Changes in this release

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-readable RenderEvidence object computed from the rendered scene graph — mark counts by
    scene type, resolved axis domains, an empty flag, 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 MCP renderChart tool 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-interpolating curve="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 the color-contrast
    rule on the strength of the gate.
  • Scorecard top-1 agreement. The capability quality scorecard now reports strict
    top1AgreementRate beside 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 as renderChart and returns a
    text/html;profile=mcp-app widget (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 as CHATGPT_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 a docs/build/llms-routes.json route index for agent readers; the docs route
    check verifies the output.

Changed

  • Theme legibility fixes (WCAG AA). pastels textSecondary/focus/annotation, bi-tool
    textSecondary, and the tufte-dark/journalist/playful annotation colors 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's textSecondary.
  • Capability descriptor judgment fixes. DifferenceChart no longer takes full compare-series
    marks when it would silently drop series beyond its native two; flat BarChart yields on crossed
    two-categorical matrices (Grouped/Stacked/Heatmap show the matrix) and on raw-observation data;
    ChoroplethMap requires 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 NetworkCustomChart and OrdinalCustomChart escape 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

Track nteract/semiotic

Get notified when new releases ship.

Sign up free

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.

All releases →

Related context

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]