Skip to content

Semiotic v3.13.1

Choose a tag to compare

@github-actions github-actions released this 26 Oct 10:10
· 165 commits to main since this release
6d2f66b

Added

  • EventDropChart sourceRail.side: "right" places producer tiles on the
    right edge. The plot insets from the right, travel starts at those tiles,
    and the late gutter stays on the left.
  • LiteLLM evaluation provider with configurable proxy URLs, model pricing
    discovery, reasoning-token cost estimates, and spend checks that reject
    partially priced model deployments. Run it with npm run eval:ai:litellm.

Fixed

  • Keyboard focus on a TemporalHistogram or RealtimeHistogram bin stays on
    that bin when the scene rebuilds, as it does on a data push or when a linked
    selection restyles the bars. A histogram that publishes linkedHover and
    consumes a selection lost focus on each arrow press, so its tooltip showed
    on every other press and focus never moved past the first bin.
  • Render preparation and inspection return blocked reports for renderer errors.
    Render memoization preserves color-map insertion order, and error observers
    cannot leak synchronous exceptions or rejected promises into agent workflows.
  • MCP widgets enforce SVG and CSS allowlists, including local-only mask
    references. Widget evidence identifies the final themed, sanitized SVG.
  • Canvas none paint and accessible mark counts agree with the rendered marks.
    Stacked domains retain zero-sum samples, while heatmap ticks, brushes,
    crosshairs, and marginal bins follow the visible data extent.
  • Atlas queries now scope evidence references to relevant graph relations and
    matching traces. Preparation rejects duplicate trace IDs and measure rows;
    derived section totals retain the most uncertain status regardless of row
    order and distinguish IDs containing delimiters.
  • Evidence publication checks resolve claim references, including upstream
    observations and artifact transformations, and reject missing, ambiguous, or
    cyclic references. Model-authored support requires explicit human review.
  • MCP cancellation now handles zero and empty-string request IDs without
    changing caller-visible IDs or confusing numeric and string identities.
    Every MCP scenario suite now rejects missing or stale executable artifacts.
  • MCP startup validates profiles and options, supports equals-form arguments,
    and rejects configuration typos that previously exposed developer tools.
    All tool responses now share a configurable size ceiling before child IPC
    and transport serialization, including SDK-generated errors.
    Shutdown signal handling remains active between tool calls so idle child
    cleanup cannot swallow a concurrent termination signal.
  • MCP tool execution runs in bounded child processes, so deadlines and
    cancellation stop synchronous rendering and native PNG work while the
    server remains responsive. HTTP and stdio share argument limits; stdio
    also caps each input line before JSON parsing. Chart creation reuses one
    render for its SVG, evidence, and widget instead of rendering repeatedly.
  • MCP processes load the optional DOM runtime only for interactive widgets,
    avoiding repeated startup work on schema lookups, diagnostics, artifact
    audits, and static renders.
  • MCP HTTP request quotas are isolated by client, refill continuously, and
    keep bounded accounting alongside the shared concurrency cap. Forwarded
    client addresses require explicit trusted-proxy configuration. Authorization
    rejects trailing credentials and uses constant-time token comparison.
  • Unknown chart names matching JavaScript prototype properties no longer
    claim built-in accessibility capabilities.
  • Categorical heatmap axes accept string tickValues. Each string is the
    column or row key and is drawn at that cell's center.
  • A log axis keeps an explicit positive end when no positive sample remains,
    including an empty axis. The open end stays one decade away. [1, 10] is
    used only when neither end is fixed.
  • A long heatmap axis no longer throws when it sorts its keys or formats a
    date axis. Extents and the sorted key list are copied in a loop.
  • A candlestick log domain includes open and close, so a positive body stays
    visible when the wick low is not positive.
  • An empty log axis with only a lower bound opens one decade above that bound.
    An explicit upper bound still opens one decade below it.
  • A line with stroke none stays unstroked in SVG when a stroke gradient is
    set, matching canvas. The fill under that line still paints.
  • Update the MCP SDK's transitive ip-address dependency to 10.7.4, fixing
    CVE-2026-111997 and clearing the release security audit.
  • Update transitive body-parser, fast-uri, undici, and zod so the
    preflight npm audit gate is clean.
  • Align Vitest's coverage and UI packages with the test runner so release
    validation uses a supported dependency combination.