Repository navigation
Releases
chartlet 0.21.0
Breaking
- Topic map and knowledge landscape: the experimental types
topicmapandatlasare gone,
with their blocks, the area picker of the HTML figure, their example files, the stylesheet part
and their warnings. A specification with either type is refused withinvalid_spec.
Added
- Themes:
tokensin a specification set single colors of the palette by the name of the
--chartlet-*custom property without its prefix; they reach the print and social variants and
PNG. Details: Customize the look. - Themes: a theme file of your own colors is applied to any number of specifications with
--theme <name|file>, thethemeoption of@casoon/chartletand<Chart>, thethemeinput
ofchartlet_renderandchartlet::apply_theme.light,darkandblueprintship as such
files inthemes/. - Themes: a color set in
tokensthat lies on another with less contrast than WCAG 2.2 asks for is
reported aslow_contrastat the token. Details: Contrast. - CLI:
chartlet stylesheetstarts its output with/* generated by chartlet - do not edit */.
Details: Formatters and linters. - Schema:
chartlet-theme.schema.jsonfor theme files, andtokensin the specification schema. - Site: the Customize page shows five ways to restyle a chart, each rendered.
- Site: the showcase gains the sequence diagram
sign-in-sequence, the architecture diagram
tenant-architectureand a QR code, the first example ofchartlet::qr.
Changed
- Rust: the crate declares
rust-version = "1.88", which README and the installation page already
stated; it builds with that version, with and withoutpng. - Site: the showcase is grouped by topic with a jump list and shows one example per variant.
Full changelog: https://casoon.github.io/chartlet/changelog/
0.8.0
chartlet 0.7.1
Fixes only, from a render sweep across sizes, languages and variants and three code reviews of
0.7.0. Specifications that rendered with 0.7.0 still render, except a declared axis step that
would give more than 50 ticks (or none), which is now refused instead of drawing an unreadable or
endless axis.
Fixed
- A time axis counts the ticks a step actually places instead of estimating them, and spaces its
ticks by the width its plot actually has: a narrow chart no longer ends up with a single tick,
and labels with a time of day get the room they need. - A low pane of a time chart labels only the value ticks that stand a label's height apart; its
gridlines stay. - The value label of a short negative horizontal bar no longer runs into the category labels;
its category leaves out its value labels instead (value_labels_omitted). - PNG output warns with
glyph_missingabout characters its fonts have no glyph for. - A declared
valueAxis.stepmust give at most 50 ticks (an exact axis at least 2), and a
declaredtimeAxis.step1 to 50; a tiny step could draw millions and hang the renderer.
Stacked bar charts now use a declaredvalueAxis.step, which they ignored. - Tooltips and the description write a value axis
unitafter the values. - A plot keeps at least 40 pixels of height and reports
dense_chartinstead of turning upside
down on a small chart; a calendar reports cells smaller than 4 pixels. - The value-axis gutter of time charts grows past 72 pixels where long labels, such as a value
with its unit, need it (up to 40 % of the chart); small multiples measure their panel gutter
the same way, report labels that do not fit, and shorten or leave out a unit that has no room. - Zoom windows show their own span:
timeAxis.min,maxandstepapply to the whole axis
only, andstepEndonly to a window that holds the last observation. stepEndafter trailing missing values no longer draws over the gap.- A declared coarser
timeAxis.precisionno longer removes ticks within a day. - An unnamed layer's data table column carries the value axis
unit. - The legend of range bar groups wraps instead of running off a narrow chart.
- A sparkline refuses
valueAxis.unit,valueAxis.stepandtimeAxis.step, which need axes. - A PNG of a chart without a mobile variant fails with
missing_mobile, like the SVG. labels_thinnednames/datafor charts withdata, and its message reads "one category in
n".
chartlet 0.7.0
Wider plots for time charts and a unit at the top tick. The specification keeps
schemaVersion: 1; every specification that rendered with 0.6.0 still renders, with the
changes in output listed under Changed.
Added
- Time charts and small multiples:
valueAxis.unit, the unit after the top tick label and the
data table's column names, instead of a title above the plot.
Changed
- Every time chart makes its value-axis gutter as wide as its widest tick label needs, at most
the former 72 pixels, so the plot is wider; time tick labels at the left edge move inward like
those at the right edge.
chartlet 0.6.0
Small panels, continued, and semibold text in PNG output. The specification keeps
schemaVersion: 1; every specification that rendered with 0.5.0 still renders, with the
changes in output listed under Changed and Fixed.
Added
- Time charts:
timeAxis.minandtimeAxis.maxextend the time axis to a position such as a
round year before the first observation. - Time charts:
"stroke": "medium", a two-pixel line for small panels.
Changed
- A compact time chart (below 320 pixels) makes its value-axis gutter as wide as its widest
tick label needs. - A time chart with neither a drawn title, a legend nor a value axis title above its first pane
starts its plot near the top instead of keeping the title's room free.
Fixed
- PNG output draws semibold text semibold: the bundled semibold faces join the Inter family, so
titles, axis titles, values and emphasized notes no longer fall back to the regular weight.
chartlet 0.5.0
Small panels and their ticks. The specification keeps schemaVersion: 1; every specification
that rendered with 0.4.0 still renders, with the changes in output listed under Fixed.
Added
- Time charts:
timeAxis.step, the distance between time ticks — whole years on a calendar
axis, units on a numeric one. - Small multiples:
noteEmphasissets a panel's note apart, in the text color and semibold. - Charts from 160 pixels tall (mobile variants too), for small panels.
- PNG of the mobile variant:
--variant mobile --format png, with the literal colors of the
print variant.
Fixed
- A time tick label that would run into the one before it is left out; its gridline stays.
chartlet 0.4.0
Compact charts, panel notes and step ends. The specification keeps schemaVersion: 1; every
specification that rendered with 0.3.0 still renders, with the changes in output listed under
Changed.
Added
- Compact charts from 200 pixels wide (mobile variants too): below 320 pixels the value-axis
gutter and the margin are narrower, so a panel rendered at its width keeps its text size. - Small multiples:
panes[].note, a short finding under a panel title. - Step lines:
stepEnd, where the last step ends without an observation of its own.
Changed
- Small-multiples panel titles take two lines before they are shortened.
- A declared
timeAxis.precisionchanges how times are named, no longer the tick spacing.
chartlet 0.3.0
Fixes and additions from moving a large site to 0.2.0. The specification keeps
schemaVersion: 1; every specification that rendered with 0.2.0 still renders, with the changes
in output listed under Changed and Fixed.
Added
- Time charts:
precisionper data layer, and every layer writes its times as finely as its
own observations need — yearly means beside monthly values say only the year, and on a
numeric axis a finely spaced helper line no longer adds decimals to the other layers. A table
row is labelled as finely as the finest layer with a value there. - Time charts:
markers: falseon a line or area layer, such as a fitted line; its tooltips
stay on invisible targets. - A stacked pane takes up to eight area layers.
Changed
- An exact value axis puts its ticks on multiples of the step, with the zero line:
−2.5 to 3.5 with step 1 ticks −2, −1, 0 … 3.
Fixed
- A horizontal value axis labels only the ticks whose labels fit, so the wide labels of a
logarithmic axis no longer run into each other. - A horizontal range bar chart measures its value labels with the fallback reserve, so the
label at the right end is no longer cut off.
chartlet 0.2.0
Adds stacked areas, points and range groups, exact value axes and the stylesheet in parts. The
specification keeps schemaVersion: 1; every specification that rendered with 0.1.0 still
renders, with the changes in output listed under Changed and Fixed.
Added
- Time charts:
"mark": "point"draws a dot per observation and no line, as in a scatter plot. - Time charts:
"stack": "normal"on a pane stacks its area layers; the crosshair of the
interactive module places stacked values on top of the stack. - Time charts:
"tooltips": "markers"keeps tooltips on drawn markers only, so dense lines stay
small. - Time charts: months (
"2026-03") as times, andtimeAxis.precision(year,month,day,
minute) for how tooltips, the table and the description write times. - Range bars:
groupper range, drawn in a palette color with a legend entry per group. - Value axis:
stepsets the tick interval andexactkeepsminandmaxas the ends. - The shared stylesheet in parts:
stylesheet_common()andstylesheet_types(),
stylesheet({ types: [] })andstylesheet({ types, common: false }),chartlet stylesheet --commonand--no-common. The common part comes first; a type's part styles only charts of
that type.
Changed
- More than 16 categories on a horizontal axis whose labels do not fit: every n-th category is
labelled, with the room of n bands, and the warninglabels_thinned. - Charts narrower than 480 pixels draw their title at 18 pixels.
- In the shared stylesheet, each type's rules now come together, type by type.
Fixed
- The markers of the first series in a time chart with several layers take its palette color.
- A horizontal range bar chart keeps room for its last tick label.
chartlet 0.1.0
The first release without the alpha tag. The specification keeps schemaVersion: 1; every
specification that rendered with 0.1.0-alpha.7 still renders, with the changes in output listed
under Changed.
Added
- Bar charts:
stack: "normal"(by value, with the total beyond each stack) andstack: "percent"
(shares of each category's total);patterns: truedraws every other series as an outline;
referencesdraws reference lines such as an average or a target. - Line charts take
categoriesandseries; each series has its own color and line pattern. - Value axis:
minandmax,thousandsSeparator,scale: "log"andreverse. - Time charts:
timeAxis.kind: "number"for profiles and deep time,timeAxis.reverse,
curve: "step",legend: "end"(names at the end of the lines),sparkline: true, zones with
a single edge, and layer colors asvar(--name, #hex)whose fallback the print variant draws. - Small multiples:
independentAxesgives every panel its own value axis;mobile.columns. - Stripes:
stretch: truedraws a band of color that takes any box. - Variants:
--variant print(literal colors for PDF and print renderers) and--variant social
(1200 × 630 for Open Graph images). - PNG output behind the optional cargo feature
png, with Inter bundled (OFL-1.1). styles: "external"with the shared stylesheet@casoon/chartlet/chartlet.css
(chartlet stylesheet [--types …]), so a page with many charts loads their CSS once.alternative: trueandchartlet::text_alternative: the description and the data table as data.allowWarnings/--allow-warning: strict mode lets reviewed warning codes through.hooks: trueand the optional module@casoon/chartlet/interactive: crosshair with values,
series toggles, scroll stations and playback, reading only the static output.- The HTML figure carries
data-viz="chart"and marks its data table as the text layer. @casoon/chartlet-mcp: tools namedchartlet_*,CHARTLET_MCP_ROOTconfiningoutputPath,
and a view that shows the chart in the chat of hosts that support MCP Apps.
Changed
- A line, time series or range bar whose values are all zero or more gets no margin below zero.
- One tooltip rule for lines and candles: a tooltip for every observation while observations
stand at least 4 pixels apart, on an invisible target where no marker is drawn. - Candle colors differ in lightness as well as in hue.
- German output writes dates as
31.08.2026; a range bar chart is a „Spannweitendiagramm“, a
realm of a knowledge landscape a „Bereich“. - Print and social variants write
font-weight: 600, which renderers outside the browser read. - Topic maps and knowledge landscapes are marked experimental.
- The npm package renders with its bundled WebAssembly build; a CLI is used only with
binary
orCHARTLET_BIN.