umriss-ui

Changes to @umriss-ui/charts

This document describes what changes for callers of the package: exports, props, behaviour.

The numbers. The middle digit rises when something is added; the last one when something is repaired. As long as the first digit is 0, no number promises compatibility — which is why a rule stronger than the figure applies as well: whatever changes existing behaviour stands under a heading "Changed" of its own, no matter which digit rose. Whoever reads only one section before an upgrade reads that one.

From 0.34.0 the packages share one number - five, and six from 0.40.0, when the dashboard joined: they are released together, and a package without a change of its own still gets a heading for it.

Names read forwards. Where an entry describes a name that has since been renamed, it is named here as it is called today; names that were removed stand as they stood.

The versions 0.1.0 and 0.2.0 were reconstructed afterwards, out of the specs; the document itself came into being only with library-audit 08. They are grouped by unit of delivery, not by commit, and were never published.

Release candidates. 0.3.0-rc.0 and 0.3.0-rc.1 were the two versions on the registry, under the tag next. With 0.3.0 that is over: the tag is gone and pnpm add @umriss-ui/charts is the whole install line. A release candidate promised nothing a 0.x does not already fail to promise; it said the interface was still expected to move before 0.3.0.


0.40.0 – No change of its own (Oct. 2026)

Released with the other five packages under their one number. No change of its own.

0.39.0 – No change of its own (Oct. 2026)

Released with the other four packages under their one number. No change of its own.

0.38.0 – No change of its own (Oct. 2026)

Released with the other four packages under their one number. No change of its own.

0.37.0 – No change of its own (Oct. 2026)

Released with the other four packages under their one number. No change of its own.

0.36.0 – No change of its own (Oct. 2026)

Released with the other four packages under their one number. No change of its own.

0.35.0 – React 19 is the floor, and a zoomed chart draws what it shows (Oct. 2026)

Changed

Otherwise


0.34.0 – A view is set, not handed back, and one locale (Oct. 2026)

From this version all five packages carry one number and are released together.

Changed

Fixed


0.16.0 – A stack's total in the data table (Oct. 2026)

Added

Changed


0.15.0 – A chosen hit, a histogram, and zoom keys without a tooltip (Oct. 2026)

Changed

Added


0.14.0 – A chart reads its rows as they come (Oct. 2026)

A chart takes rows as an application has them (ADR-0052). A category is a value: <XAxis value="costCentre" /> over rows that hold a name gives every distinct one a place, a tick and its label - no position computed per row, no ticks listed, no tickFormat that looks the name up. An instant is a value: a Date, or with time the ISO string an API sends. Numeric positions with named ticks keep working as they did; nothing is taken away.

Added

Changed


0.13.0 – A chart fills its frame, never below its floor (Oct. 2026)

Changed


0.12.0 – A chart that is loading says so (Oct. 2026)

A chart takes loading, as the table does (ADR-0042). Over a course already drawn, the course stays and dims. Over nothing to show, a silhouette of the chart to come stands in the plot and shimmers, where the chart used to say "No data" before the first rows. A chart without loading behaves exactly as before.

Added


0.11.0 – A chart bound to its rows, with a view of its own (Oct. 2026)

Two efforts in one break, released together with @umriss-ui/table and @umriss-ui/schedule. A chart is declared through useChart(rows), as a table is through useTable, and every series and axis reads its rows through value - a field name the compiler checks, or a function (ADR-0048). And the chart holds its own view: the span each zoomable x axis shows and the hidden series, taken as a start and reported whole (ADR-0047) - zoom, the legend's toggle and a way back cost a caller no state of its own any more. The old shape is removed, not deprecated; the table below says what stands in each place.

Changed

Moving over. Every export and prop that went, and what stands in its place:

Was Is
import { Chart } from "@umriss-ui/charts", <Chart data={rows}> const { Chart } = useChart(rows), <Chart> without data - one Chart per useChart, a second chart is a second call
import { XAxis, YAxis } const { XAxis, YAxis } = useChart(rows)
import { Line, Area, Bar, Scatter, StateBand, Matrix, BoxPlot } the same names from useChart(rows); a series with its own data is still one, typed by that data
ChartProps<T>, ChartProps.data ChartProps, without a type parameter and without data
accessor={(d: Row) => d.a} on Line, Area, Bar, Scatter, StateBand value="a" - a field name of the row, or a function where a field does not suffice; required
XAxis accessor XAxis value; an axis over series that bring their own data names their row: <XAxis<Row> value="t" />
YAxis accessor, YAxisProps<T> nothing - along y the series place their rows; YAxisProps has no type parameter
Matrix accessor (the row) Matrix value, as the y position on every kind
Matrix value (the colour) Matrix level; MatrixSeriesConfig.value is MatrixSeriesConfig.level
TooltipPoint.value of a matrix cell (its colour) TooltipPoint.level; yValue stays the cell's row
ControlChart accessor ControlChart value, a field name or a function
hidden on every series kind, SeriesBase.hidden the view's hidden, by the series' name: initialView: { hidden: ["…"] }, or toggleSeries, showOnly, showAllSeries from useChart
Legend onToggle nothing - the legend toggles by itself; the change arrives in onViewChange
XAxis onDomainChange XAxis zoomable; the span arrives in onViewChange as view.domains[axisId] - a lone x axis is "x"
a zoomed XAxis domain handed back (controlled) initialView: { domains: { x: span } } or setDomain("x", span); domain stays the axis' configuration and is a zoomable axis' start
clamping the proposed domain in the handler XAxis zoomLimits={{ min, max }}; without it at most the data's extent or the axis' own domain, whichever is wider, at least three data steps; a span equal to the axis' own domain is no part of the view
AxisConfig.onDomainChange AxisConfig.zoomable, AxisConfig.zoomLimits
the type Accessor<T>, ListAccessor<T> ValueFunction<T>, ListFunction<T> - the function form of Value<T> and ListValue<T>, same shape

Added


0.10.0 – Every export explained, and a limit's colour at its label (Oct. 2026)

The package explains itself where it is used: every export carries a comment, every default a @default tag, and the demo lists all of it in an API index (ADR-0044). Every prop of a props table is shown by an example or named as an exception. A limit's own color reaches its label, as a stroke before the text, and on an x axis the label leaves no tick label half covered (see Fixed).

Added

Fixed


0.9.0 – A box plot (Oct. 2026)

Changed

Added


0.8.2 – Room on a phone (Sep. 2026)

Changed

Fixed


0.8.1 – Found by search (Sep. 2026)

Fixed


0.8.0 – Working time (Sep. 2026)

Changed

0.7.0 – Data table, marks and stacks (Sep. 2026)

Added

Changed

Fixed


0.6.0 – By keyboard and screen reader (Sep. 2026)

Added

Changed


0.5.0 – Tokens for type and motion, a legend that answers (Sep. 2026)

Added

Changed


0.4.1 – The axis band after the web font (Sep. 2026)

Fixed


0.4.0 – The charts examined (Sep. 2026)

The result of a review of the whole package (.scratch/charts-review/spec.md), delivered in three parts: the bugs it found and the removal of Span (charts-fixes), what a plant screen expects of a chart (charts-essentials), and long courses (charts-long-series). Span is gone - occupancy is drawn by @umriss-ui/schedule (ADR-0026).

Changed

Added

Fixed


0.3.2 – Phones, touch and a review (Sep. 2026)

Fixed


0.3.1 – The README catches up (Sep. 2026)

Nothing in the code changed; the README counts four packages sharing the design language, not three.


0.3.0 – Arithmetic with a second consumer (Sep. 2026)

From .scratch/schedule/spec.md (ADR-0022): @umriss-ui/schedule takes its time arithmetic from here, so what it uses is public now.

Added

No longer a release candidate

The tag next is gone: 0.3.0 publishes to latest, and pnpm add @umriss-ui/charts is the whole install line. Nothing in the package changed for that — the candidates 0.3.0-rc.0 and 0.3.0-rc.1 are what this is, with the arithmetic above added for @umriss-ui/schedule, which now stands on it in a released version of its own.


0.3.0-rc.1 – Styles that load themselves, and touch nothing else (Sep. 2026)

Delivery report for .scratch/styles-without-side-effects/spec.md, the charts' share (ADR-0021).

Changed


0.3.0-rc.0 – One language, one scope (Sep. 2026)

Delivery report for .scratch/english-and-umriss-ui/spec.md, the charts' share.

Changed — the limit model's values

Verdict is "ok" | "unknown" | "warning" | "alarm", Severity is "warning" | "alarm", Side is "upper" | "lower", and the fields of Limit, LimitSet and Assessment are value, side, severity, limits, target, verdict, limit, excess, deviation.

ADR-0006 holds this model twice — once here, once in @umriss-ui/core — and the copies are pinned together by a runtime conformance test that compares both results structurally rather than importing either. The two packages, the shared case table and that test therefore moved in a single commit; a divergence stays a red test and not a report from the field.

--uc-color-alarm is unchanged. What moved beside the model is .uc-limit-label[data-severity="warnung"], which now reads "warning" — the same word tone has carried all along.

0.3.0-rc.0 – Where the library contradicted itself (Sep. 2026)

Delivery report for .scratch/library-audit/spec.md, tickets 03 and 05.

Changed

The package brings no text along any more. It has no text layer, and four German defaults stood there regardless:

A series keeps its colour. The palette followed the position in the registration; a series that unregistered and registered again landed at the back, and every series of the chart changed colour. The palette now follows the name: on first mounting as before in JSX order, after that a returning series gets its colour back. A series without a name still takes the colour of its position and warns in DEV when that shifts. Drawing happens unchanged in registration order.

role="img" and aria-label stand at the plot area (.uc-plot), no longer at the root. The root contains the legend, and the descendants of an image are presentation to a screen reader — the legend was unreachable. Whoever looked for the role at .uc-root finds it one level deeper.

New

0.2.0 – Limits, states, instruments (Aug. 2026)

Delivery report for .scratch/judging-values/spec.md, .scratch/shopfloor-instruments/spec.md and .scratch/plant-at-a-glance/spec.md, the charts' share. The decisions stand in ADR-0006 to ADR-0011.

New

Nothing changes in the behaviour of the four existing series kinds.

0.1.0 – Takeover state and mixed series kinds (Aug. 2026)

The number stood at 0.1.0 the whole time; it covers the takeover state (packages C.1–C.7) and .scratch/mixed-series-kinds/.

New

Changed

LineChart is called Chart and is generic over the series kinds within it (mixed-series-kinds 01). The takeover state knew only lines.

Suggest an edit on GitHub