| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| semiotic-3.11.1.provenance.json | 2026-09-28 | 1.6 kB | |
| semiotic-3.11.1.sbom.cdx.json | 2026-09-28 | 80.6 kB | |
| semiotic-3.11.1.tgz | 2026-09-28 | 5.8 MB | |
| semiotic-3.11.1.tgz.sha512 | 2026-09-28 | 150 Bytes | |
| README.md | 2026-09-28 | 9.9 kB | |
| Semiotic v3.11.1 source code.tar.gz | 2026-09-28 | 76.6 MB | |
| Semiotic v3.11.1 source code.zip | 2026-09-28 | 79.6 MB | |
| Totals: 7 Items | 162.1 MB | 0 | |
Added
- RealtimeHistogram and TemporalHistogram stacked segments carry
categories: every non-zero{ category, value }in the bin, bottom to top, shared by the bin's segments. The default histogram tooltip adds acategory countrow. getSourceRows(datumOrHover)insemiotic/realtimeandsemiotic/utilsreturns the authored rows behind a histogram bin, stacked segment, orcategoriesentry. TheHistogramBinDatumtype describes the bin datum.createDagreFit(nodes, edges, plot, config?)andcreateFlextreeFit(nodes, plot, config?)insemiotic/recipesreturn the exact fitdagreLayout/flextreeLayoutapply (scale,dx,dy,bounds,project,invert,nodeBounds), so minimaps and overlays can align with the fitted graph without copying recipe defaults.semiotic/network/zoomexportsprojectNetworkPointandinvertNetworkRectfor applying the zoom camera.adaptiveTimeTicksaccepts opt-inincludeYearandincludeDate("always"default,"auto","never"),referenceTime, anddeltaStyle: "clock"to shorten axis labels. Defaults and value-only (tooltip) labels are unchanged.- Top-level
showAxeson LineChart, AreaChart, StackedAreaChart, DifferenceChart, Scatterplot, BubbleChart, Heatmap, QuadrantChart, MultiAxisLineChart, WaterfallChart, CandlestickChart, ConnectedScatterplot, and MinimapChart (its detail chart). It follows the chart mode by default; an explicit value wins, matchingresponsiveRuleswin over it, andframeProps.showAxesstill wins over both. Margins are kept. Chart schemas andvalidatePropsaccept it. - GaugeChart
centerLabel: a serializable caption drawn beneath the center value as native SVG text. - RealtimeHistogram and TemporalHistogram support
tooltip="multi"and{ mode: "multi", content? }: hovering anywhere in a column (above a short stack or between bars included) lists every stacked category in that bin, with its range and total. Keyboard focus gets the same rows. LinearBrushinsemiotic/controls: an accessible one-dimensional range brush for any track. It is controlled (value) or uncontrolled (defaultValue);onChangefires on every change andonChangeEndonce per release or keyboard step, withatDomainStart/atDomainEndflags. Map it withdomainor the chart's ownscale, overlay a chart's plot withinset, and customize it withmaskStyle, selection and handle styles,renderHandle, a move handle, double-click reset,minSpan,snap, and extent and domain labels (two lines with a\n). It is a group of three sliders with arrow, Shift, Page Up/Down, Home/End, and Escape keys, emits control observations, and follows the ThemeProvider colors without a store.- MinimapChart overview brush options:
minimap.brushStyle(fill,fillOpacity,stroke,strokeWidth,activeStroke,mask),minimap.handles(with an optional move handle),minimap.renderHandle,minimap.showExtentLabelswithminimap.extentLabelFormat(defaults toxFormat),minimap.resetOnDoubleClick,minimap.minSpan, andminimap.brushLabel.onBrushEnd(extent, meta)fires once per changed release, keyboard step, or reset. MinimapChart acceptsonObservation(brush/brush-end, pluscontrol-start/control-endfor gestures) andchartId.renderChartdraws the mask, handles, and labels.
Changed
- Multi-series hover (
tooltip="multi"and{ mode: "multi" }) snaps to the first or last sample in x-extent padding instead of showing nothing, on every chart that uses it (LineChart, AreaChart, StackedAreaChart, DifferenceChart, MultiAxisLineChart, MinimapChart, BumpChart, XYCustomChart, and RealtimeLineChart). The crosshair and series dots sit on the edge sample, andxValue/xPxreport it; the tooltip still follows the cursor. -
Brush selections take the theme's
colors.selection, falling back tocolors.primary, instead of a fixed steelblue: XY and ordinal frame brushes, ScatterplotMatrix, MinimapChart, andrenderChartMinimapChart output. In the browser they follow the--semiotic-selection-colorand--semiotic-primaryvariables that ThemeProvider sets, so theme changes restyle them in place. Without a theme they use the light theme's#00a2ce. -
MinimapChart's overview brush is a LinearBrush, so the minimap no longer loads d3-brush. It is keyboard-accessible (start, range, and end sliders) and themed. Unlike the d3 brush, the ends cannot cross (they stop 1px, or
minSpan, apart), there are no Alt/Space/Meta modifier gestures, a touch drag across the brush axis pans the page, edges have 24px targets, a new selection starts after 3px of movement, andonBrushno longer repeats the final extent on release. The d3.brush-group/.overlay/.selectionSVG is replaced by HTML parts markeddata-semiotic-brush-part; update CSS or tests that target the d3 classes. Static output insets the selection by half its stroke to match the browser's border. - MinimapChart re-reads the overview's scales after size, margin, and y-extent changes, not only data changes, so the brush maps through the current layout after a resize.
Fixed
- Horizontal XY axes call index-aware formatters such as
adaptiveTimeTickswith the ticks actually rendered, after overlapping labels are thinned, and judge duplicate labels on those rendered labels. Date changes are no longer hidden by thinning, rendered ticks are no longer dropped as look-alike duplicates, andincludeMaxlabels compare with the tick before them. A formatter that readsindexnow sees rendered indices. Static rendering matches. adaptiveTimeTickshour-granularity labels show the tick's minutes ("14:30") instead of always":00".- BumpChart passes the rendered ticks to
xFormatas authored dates, soadaptiveTimeTicksshortens its labels there too. - BumpChart resolves
showAxesthroughmodeandresponsiveRulesin the browser, matchingrenderChart, so compact modes hide its axes. - GaugeChart string and number
centerContentrender as native SVG text in the browser and in static SVG, instead of an HTML overlay andforeignObject. Fragments of SVG elements also stay native. renderChartGaugeChart takes its compact readout and scale-label defaults from the resolved mode, includingresponsiveRules, as the browser does.- Static and pre-hydration SVG areas multiply
fillOpacity(default 0.7) byopacity, as the canvas does. This fixes BumpCharthighlightTopneutral trajectories and ribbon/line opacity (drawn fully opaque in SSR), bounds bands, and the AreaChart/StackedAreaChartopacityprop. SSR areas that set onlyopacitynow render lighter, matching the canvas. - BumpChart honors a named
colorSchemetogether withhighlightTop, instead of deferring to the theme palette. renderChartBumpChart normalizeshighlightTop,neutralColor, andcolorthe same way as the browser (numeric strings count) and draws the default rank grid.- Static SVG violins fall back to
opacityfor their fill opacity, as the canvas does. - BumpChart reserves endpoint-label room from the label text on each labeled
side (capped at 38% of the width; today's margins are the floor), so long
names no longer run off the chart. Start labels clear the rank ticks, and
over-long labels truncate with "…" and keep the full name in
<title>. Partial margins merge over these defaults in the browser and inrenderChartalike,frameProps.margincounts as explicit, and a side legend shares its side with the labels instead of overlapping them. renderChartLineChartdirectLabelno longer grows margin sides the caller pinned, matching the browser.- Custom multi-series tooltip content near the last sample receives every series instead of one datum.
- Keyboard focus in multi-series mode carries
allSeriesandxValuelike pointer hover. - LineChart
gapStrategy="break"no longer writes_gapSegmentonto datums passed to tooltips,onClick, and observations. Series from a functionlineBystay separate across gaps,fillAreaseries lists keep their fill, style rules see the authored series, and multi-series rows show the series name instead of an internal segment key. - Multi-series rows for an ungrouped series have an empty
groupinstead of_default, so RealtimeLineChart labels its row with the value accessor. - Declarative and multi-series tooltip content, click observations, and tap-to-lock linked hover keep a histogram bin's source rows instead of losing them to a copied datum.
- Realtime and physics chart specs no longer claim multi-series tooltip
support for charts that fall back to one datum (RealtimeSwarmChart,
RealtimeWaterfallChart, RealtimeHeatmap, and physics charts). In
development,
{ mode: "multi", content }on such a chart warns once. - RealtimeHistogram and TemporalHistogram bins match a linked point selection
on any time inside
[binStart, binEnd), not only a time a source row carries exactly, so a time picked on a linked line chart highlights its bin. - Mobile
tapToSelecton an aggregate mark publishes its source rows' field values, as linked hover does. - MinimapChart keeps a brush drag going when the chart re-renders during it,
as with a controlled
brushExtentor an inlineonBrushthat sets parent state. Every move after the first, and the release, used to be lost. ScatterplotMatrix cell brushes read their callback the same way. - MinimapChart
minimap.brushDirection: "y"sets the detail chart's y domain instead of its x domain, reports ascending extents, and draws a controlled y extent in the overview (it was drawn with negative height, so invisible).renderChartapplies the brushed range to the same axis.