| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| semiotic-3.13.3.provenance.json | < 19 hours ago | 1.6 kB | |
| semiotic-3.13.3.sbom.cdx.json | < 19 hours ago | 77.9 kB | |
| semiotic-3.13.3.tgz | < 19 hours ago | 6.6 MB | |
| semiotic-3.13.3.tgz.sha512 | < 19 hours ago | 150 Bytes | |
| README.md | < 21 hours ago | 11.6 kB | |
| Semiotic v3.13.3 source code.tar.gz | < 21 hours ago | 85.0 MB | |
| Semiotic v3.13.3 source code.zip | < 21 hours ago | 88.4 MB | |
| Totals: 7 Items | 180.2 MB | 0 | |
Added
- Compositional
routing: "terminals"for applications drawing their own curves, androuting: "bump"with shared paint/metric geometry. Same-owner connections default to routing opt-out; per-edgeroutehints preserve trace identities without routing costs. - Headless
useCompositionalInterfacesnavigation and opt-innavParentIdowner/row keyboard groups with accessible table grouping. - Fully pinned row optimization supports cyclic owner projections and compound graphs, with request-local geometry/route reuse. Semantic cycle validation remains enforced.
- Documented and tested nested rectangle hit priority, module-worker integration, and a 3.13.2 consumer fallback that computes fresh row anchors after routing failure.
RealtimeHistogramandTemporalHistogramacceptaggregation="count"to count events per bin instead of summingvalueAccessor, so click or log streams without a numeric field still bin. The default stays"sum".- Stream schemas can declare
cardinality(expected distinct values) andadditive(whether summing across events is meaningful) on each field.suggestStreamChartsreturns therankingIntentsit used andwarningsfor unknown keys, invalid kinds or hints, and duplicate fields. Kind aliases such as"timestamp"are mapped to"date".explainStreamCapabilityFit(schema, component)explains why one chart was suggested, excluded, or filtered out. Scatterplotis registered as a stream capability, so thecorrelationintent has a streaming recommendation.
Fixed
- Pie and donut charts use padding without reserving space for axes. Sankey, tree, and ProcessSankey charts use smaller side margins with labels fitted inside the plot; treemap layouts keep their compact cell padding. React, direct Stream Frames, and server rendering share the matching defaults.
- Chart error boundaries recover when data, props, or dimensions change after a rendering failure, preserving the intended chart size during recovery.
- Streaming replacements and retention preserve edited extents, pointer detail, and keyboard focus. Aggregation, waterfall carry-in, and freshness updates stay consistent as retained data changes.
- MCP stream schemas retain unknown keys for typo warnings. Heatmap legends tolerate sparse input, and server-rendered realtime histograms preserve count aggregation for rows without numeric values.
- Patched the Hono Node adapter and Seroval dependencies.
- Line charts preserve series whose names match JavaScript prototype keys and retain zero-value gaps through function accessors and copied rows.
- Annotations preserve zero coordinates and skip brackets whose positions cannot be resolved. Value domains can round to ticks from the final layout.
- Touch interactions retain inspected detail through compatibility mouse events, and chart marks retain their native accessible names.
- Stream chart suggestions read the schema more faithfully:
- A
keyFieldscolumn is now a category candidate, so a keyed table gets a bar per key instead of only BigNumber or GaugeChart. An explicitrole: "category"wins even on a key. - Time charts split by the series role or, failing that, the primary category. A windowed series per brand gets one line per brand.
- Without an intent, ranking weights intents from the schema. A measure over
time leads with
RealtimeLineChartinstead of the histogram. - Charts that score zero for the ranking intents are dropped unless you pass
minScore: 0. - Charts that total a measure explain what they sum:
- Append-stream bars, pies, and donuts rank lower while the measure's
additivity is unknown, and are excluded for
additive: false. RealtimeWaterfallChartis demoted unless the measure is a declared or delta-named change.RealtimeHistogramcounts events unless the measure is additive, and now always includes thebinSizeit requires. It ranks for activity over time rather than value distribution, whichRealtimeHeatmapcovers.- Throughput and retention now shape the suggested props:
- Numeric throughput sizes
windowSizeandbinSize, so 260 and 4,000 rows/s no longer share a 200-row buffer. - At high throughput the line is suggested with windowed
aggregate, and per-event swarms, waterfalls, and scatters are excluded. - Cumulative retention maps to
windowMode: "growing". - Declared cardinality excludes pies and donuts above eight slices and warns about crowded lines, stacks, and swarms.
- A numeric-only stream scores the same whether or not it declares
shape: "aggregate". GaugeChart sets a 0–100 or 0–1 range only for percentage- or ratio-named measures, and says when the range is unknown. TemporalHistogramis no longer suggested for live streams because it has no push API; the exclusion reason points toRealtimeHistogram.- Suggestion
reasonslist field bindings and adaptations such as windowed aggregation, and name the field-order choice when several categoricals compete. inferIntentrecognizes "spiking" and "surge" phrasing.suggestCharts,scoreChart, and variant discovery weight intents from the data profile when no intent is given, the same way stream suggestions now do. A time axis ranks as a trend first, so a price series leads withLineChartinstead of a steppedAreaChart. Aggregated categories rank as a ranking, ten or more rows per category rank as a distribution, and two plain measures rank as a correlation. Graph, hierarchy, and geographic data keep the previous mean of each chart's non-zero intent scores.suggestChartsalso drops charts scoring 0 for the ranking intents unlessminScore: 0is passed.- Left- and right-side categorical legends stay inside the chart. Items that
would pass the chart bottom wrap into columns, and long labels truncate with
an ellipsis while keeping the full text as hover text and accessible name.
When columns still cannot hold every item, the last slot reads "+N more"
with the hidden names on hover. A measured side legend takes at most 30% of
the chart width, never less than the existing 100px box, so a compact card
keeps most of its plot.
legendLayout.maxWidthnow sets this cap for side legends. Empty-string categories are labelled "(empty)" instead of drawing a blank row. Interactive, static, andrenderChartoutput share the same layout; the standalone<Legend>fits only when given the newmaxHeight. - Top and bottom legends stay inside the chart. A measured legend reserves at
most 40% of the chart height; rows beyond that, or beyond the space a
compact chart can give, collapse into a "+N more" slot whose hover text
names the hidden categories. A single legend item wider than the plot is
truncated with an ellipsis instead of overflowing sideways.
renderChart("ProcessSankey")reserves the measured legend width as the React component does, so long legend labels no longer overlap the ribbons and time axis. RealtimeLineChartwithseriesAccessorgives each series its own palette colour, honouringCategoryColorProvider, linked colours, and the theme. An explicitstrokestill applies to every series. It also shows a series legend by default; passshowLegend={false}to hide it. Legend highlight and isolate dim the other series,styleRulessee the series ascategory, and the default tooltip names the series. The same holds inrenderChartand aggregate mode. Aggregate-mode tooltips also show window values when custom accessors are used.RealtimeSwarmChart's default tooltip names the category.- Streaming time axes fed epoch-millisecond numbers (for example
Date.now()) show clock-time labels on calendar-aligned ticks instead of raw integers. Automatic time labels carry only the precision their ticks need, so sub-second windows stay distinct and whole-second ticks drop.000. - XY and ordinal horizontal axis end labels that would overflow the chart's side margin, or run under a right-side legend, are nudged inside, in the browser and in static rendering.
RealtimeHistogramtooltips label a bin's total "total" when it sums a field and "count" when it counts events; it previously said "count" for both.- Ordinal value axes, horizontal or vertical, drop a tick whose label repeats
the previous one, matching XY axes, in the browser and in static SVG. Grid
lines follow the remaining ticks, so a coarse
valueFormatno longer prints the same label several times. DonutChartand pie layouts no longer draw an inverted, flat-clipped ring wheninnerRadiusexceeds the radius available in a short container. A hole that fits is kept exactly; one that does not falls back to a 12px ring (or a quarter of the radius on very small donuts). Tiny plots no longer produce a negative radius.GaugeChartsizes its arc so the centre readout (value, scale range, andcenterLabel) stays inside the chart, below the title strip when there is a title. On half-circle and other shallow sweeps the value sits inside the arch instead of level with the arc's ends. Threshold scale labels count toward the fit, so short or narrow gauges keep them inside the chart. When the needle is shown, the value sits below the hub in the gap the needle never sweeps, so the needle no longer crosses it (on a full circle it can still meet the value near min and max). A responsive gauge (responsiveWidth/responsiveHeight) lays out at its measured size instead of the nominal width and height. Browser and static rendering share the same layout.- Static
renderChartforPieChartandDonutChartcolours slices by the defaultcategoryfield and showsDonutChart's default legend, matching the browser charts. - Heatmap gradient legends take their domain and colours from the drawn
cells in the browser, server rendering and hydration, and
renderChart. An aggregated or auto-binnedHeatmaplegend shows counts or means rather than raw values, and a server-renderedRealtimeHeatmaplegend no longer reads 0–1.renderChartdraws the gradient legend forHeatmapandRealtimeHeatmapwhenshowLegendis set. Server-renderedRealtimeHeatmapand directStreamXYFrameheatmap cells draw the same 1px surface-coloured separator as canvas. -
RealtimeHeatmapno longer re-renders on every streaming frame when no legend is shown. Turning onshowLegendmid-stream shows the current colour domain at once, and the gradient legend uses the theme's sequential scheme whencolorSchemeis not set, matching the cells. -
Ordinal keyboard order follows the scene. Horizontal bars, stacked segments, and radar points move in category order, pie and donut wedges move by start angle, and funnel steps share one group so ArrowRight crosses them. Series groups follow first appearance rather than bar height.
- A single-category pie, donut, gauge, or chord arc is hoverable and clickable on canvas in every direction. A zero-length wedge still matches only its ray.
- Ungrouped network keyboard navigation starts on the first node, including after Escape. Exploded compositional parts appear once as children of their owners, and authored accessible
groupvalues take precedence over navigation metadata. - Compositional scroll projection preserves the solve direction for bump curves and alignment metrics, including TB/BT layouts with explicit east/west anchors.