Changelog
Generated from CHANGELOG.md in the project repository. Never maintained twice.
0.21.0
24 October 2026
- breakingTopic 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. - addedThemes:
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. - addedThemes: 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/. - addedThemes: 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. - addedCLI:
chartlet stylesheetstarts its output with/* generated by chartlet - do not edit */. Details: Formatters and linters. - addedSchema:
chartlet-theme.schema.jsonfor theme files, andtokensin the specification schema. - addedSite: the Customize page shows five ways to restyle a chart, each rendered.
- addedSite: the showcase gains the sequence diagram
sign-in-sequence, the architecture diagramtenant-architectureand a QR code, the first example ofchartlet::qr. - changedRust: the crate declares
rust-version = "1.88", which README and the installation page already stated; it builds with that version, with and withoutpng. - changedSite: the showcase is grouped by topic with a jump list and shows one example per variant.
0.20.0
24 October 2026
- addedArchitecture diagrams:
viewsshow one model as several diagrams: a view has akey, atitle, adescriptionand thecomponentsit shows, with their connections (or those listed by their newid), boundaries and main path; a dynamic view listssteps, numbered. Details: Views. Exampleshop-views. - addedArchitecture diagrams: one view is rendered —
--view,viewin npm and MCP,RenderOptions::view, elsedefaultView, else the first — never the whole model; description and table show what the view shows and how much of the model that is, and the manifest recordsview. - addedArchitecture diagrams:
--all-views(allViewsin npm, MCP and the AstroChart,RenderOptions::all_views) renders every view on one HTML page without a script, with a navigation and one section per view. Details: All views on one page. Exampleshop-views.all.html. - addedArchitecture diagrams: with
--all-views, the manifest lists the views inviewsand npm returns every view's text alternative inalternativeswithalternative: true; SVG, the other variants and--vieware refused (option_not_supported). Single-view exports are unchanged. - addedArchitecture diagrams: a view may set its own
width,heightandmobilein place of the model's, in ordinary and deployment views; they are checked like the model's, with diagnostics and layout warnings at the view. - addedArchitecture diagrams:
tagson components and connections (never drawn) andinclude/excludeon a view select what the view shows besides its lists; what a view lists by id is always shown. Details: Views. - addedArchitecture diagrams:
perspectiveskeep categorical metadata, such as the owning team, apart from the drawing:categoriesthat listcomponentsand connections byid. Only the one selected withperspectiveis shown, in colors with names and a legend. Details: Perspectives. Exampleservice-perspectives. - addedArchitecture diagrams:
--perspective <key>(perspectivein npm and MCPchartlet_render,RenderOptions::perspective,ChartSpec::with_perspective) picks the perspective at render time in every view, variant and format; the manifest records it,specHashstays that of the model. - addedArchitecture diagrams: a view with an
environmentshows where the model runs, with nestedhosts,instancesof components and theinstanceConnectionsit lists;chartlet inspectcounts a component run there as shown. Details: Environments and instances. Exampleapi-environments. - addedArchitecture diagrams:
"deriveConnections": trueon a deployment view derives the instance connections from the model, to the nearest instances by shared hosts; a listed instance connection now also takes the sides it leaves out from its model connection. Details: Environments and instances. - addedArchitecture diagrams: provided and required interfaces:
provideson a component draws each interface as a ball on a stem, and a connection withtoInterfaceends in a socket around it; description, table, views and hooks follow. Details: Architecture diagrams. Examplepayment-interfaces. - addedArchitecture diagrams:
symboldraws one of 16 generic stroke symbols (browser,api-gateway,message-broker, …) above a component's label; the kind keeps its shape. Details: Architecture diagrams. Exampleshop-symbols. - addedArchitecture diagrams:
connections[].direction—forward(default),both(arrowheads at either end) ornone(no arrowhead); tooltip, description and table say which. Details: Architecture diagrams. - addedClass diagrams:
packagesframe the classes that name them within, nested up to four deep; relations still cross package borders. Details: Class diagrams. Exampleshop-modules. - addedClass diagrams:
orientationon a package lays out its classes that way, as one block;package_orientation_ignoredsays when it cannot. Details: Class diagrams. Exampleinvoice-model. - addedClass diagrams:
relations[].directionon an association —forward,bothornone— says which way it can be navigated; other kinds refuse it (option_not_supported). - addedTrees:
distances(labels and a distance matrix) instead ofnodesbuilds a dendrogram, withlinkageaverage(default),completeorsingle. Details: Dendrograms. Exampleclimate-similarity. - addedNetworks:
"type": "network": nodes as dots joined by edges, on a circle or in rings around acenter, with groups,dash,weightanddirected; no force layout, so the same input gives the same picture. Details: Networks. Examplesco-authors,service-dependencies. - addedDiagrams:
role—critical,plannedordeprecated— on nodes and edges of flow, state, network, tree, class and architecture diagrams: a role color plus a sign that needs no color, named in legend, description and table. Details: Diagram fields. Examplesbilling-migration,payment-redesign. - addedDiagrams:
noteson flow, class and architecture diagrams: a noteona step, class or component stands beside it, one on a package or boundary inside that frame, one withoutonbelow the diagram; none adds an edge. Description and table name them. Examplessubscription-model,payment-notes. - addedDiagrams:
mainPathof flow charts and architecture diagrams also takes{ "from": "a", "to": "b" }, the shortest way between the two (main_path_unreachablewhen there is none). - addedDiagrams:
weighton a flow edge or architecture connection draws its line from 1 px to 5 px for the heaviest; description and table give every weight. Examplerequest-volume. - addedDiagrams:
sameRankin flow charts and architecture diagrams puts sets of steps or components at one position along the flow, such as parallel reviews; a layout hint that adds no edge. Exampledata-tier. - addedDiagrams:
fromSideandtoSideon a flow edge or architecture connection pin the side it leaves and reaches, named after the flow so that they hold in either orientation. Details: Port sides. Examplecontract-review. - addedDiagrams:
"sharedTrunks": truein flow charts and architecture diagrams draws edges that leave or reach one node together on one branching line, where they read the same; each is still listed. Examplesservice-fan-out,order-fulfilment. - addedDiagrams:
spacing—compact,normal(default) orroomy— scales the gaps of flow, state, class and architecture diagrams. Details: Spacing. - addedDiagrams:
valueon a node of a flow chart or tree fills its box from a scale of six blues, with a key named byvalueLabeland text that keeps 4.5:1 contrast. Exampledepartment-budgets. - addedDiagrams:
partson a node of a flow chart or tree draws a stripe of shares at the bottom of its box, with one legend for the diagram. Exampleclaim-handling. - addedInteraction: with
hooks: true, diagrams carry their ids for a page script —data-chartlet-node,data-chartlet-edge,data-chartlet-frameanddata-chartlet-lane. Details: The hooks. - addedCLI:
chartlet inspectchecks architecture, flow and class diagrams for gaps in their documentation without rendering, as text or--format json, with--disableand--strict; in Rustinspect_json. Details: Inspections. - addedCLI:
chartlet render --watchrenders again whenever the file changes, and--previewserves the latest chart on a local page that reloads. Details: Watching and preview. - addednpm:
@casoon/chartlet/builderbuilds architecture and flow specifications in code (component,node,connect,fanOut,chain, …) and throws at the call on a wrong id. Details: Architecture builder.order-flowandrelease-flowrebuild with it byte for byte. - addednpm:
inspectChart(spec, { disable })runs the inspections ofchartlet inspectwithout the CLI and returns{ ok, findings }or{ ok: false, error }. - addedMCP:
chartlet_inspectreturns the findings ofchartlet inspectwith code, severity, path, message and hint. - addedMCP:
chartlet_diagram_startertakestemplatewithtype: "architecture"—context,containersordeployment— each a valid specification with the question it answers. Examplesbooking-context,booking-containers,booking-deployment. - addedDocs: the architecture guide maps system, container, component and deployment node onto chartlet and says where the starters stop short of a complete architecture model. Details: Context, containers and deployment.
- changedDiagrams: the description of flow charts, architecture and class diagrams names the shape of the graph before the steps — the most connected nodes, loops, unconnected parts, bottlenecks — where that says more than the steps. Details: Graph structure.
- changednpm: the WebAssembly module is about 34 KB smaller (700 KB to 666 KB gzip): chartlet finds the JSON Pointer of a specification error itself and no longer depends on
serde_path_to_error. Error codes, paths and messages are unchanged. - changedContributors:
cargo test --test golden visual_report -- --ignoredwrites a local HTML report of every reviewed example against its current rendering, without ever accepting a change. Details: CONTRIBUTING.md. - changedContributors:
tests/generated.rsrenders flow charts, architecture diagrams, trees and networks from fixed seeds and checks that each renders the same twice as well-formed SVG. - fixedArchitecture diagrams: in a deployment view,
text_too_longfor an instance label over 60 characters points to the instance'sid, not to alabelfield instances do not have, and says to shorten the id or the component's label. - fixedTrees: a distance matrix with a short row is refused with
invalid_matrixat that row instead of stopping the render. - fixedDiagrams: in flow charts, architecture and class diagrams, a layer that lists a step between the members of a group no longer keeps that order; the frame took the step in, or pushed frames apart until the canvas grew many times its width.
- fixedLine charts:
lowerandupperon a point without a value are refused withinvalid_boundsinstead of stopping the render. - fixedSchema: line charts with several series, small multiples of bars and fractional values on a numeric time axis validate against
schema/chartlet.schema.json, as the compiler accepted them.
0.19.0
12 October 2026
- addedArchitecture diagrams:
connections[].step(1–99) numbers a connection in a sequence of calls (2. places the order); the description lists the steps in order. Examplecheckout-calls. - addedArchitecture diagrams: the component kinds
node(a machine or cluster node) andartifact(something deployed on it) make deployment diagrams, with boundaries as the hosts. Exampleshop-deployment. - addedTrees:
"layout": "radial"draws a mind map: the root in the middle, every level on a ring, each subtree in a sector by its share of the leaves. Details: Trees. Exampleproduct-strategy. - addedDiagrams:
theme: "blueprint"draws sequence, flow, state, architecture, tree and class diagrams in pale lines on a deep blue ground; other charts refuse it (option_not_supported). - addedScatter plots:
quadrantsdivides the plot at an x and a y value into four named areas, such as an impact and effort matrix; description and table name the area of every point. Details: Scatter plots. Examplefeature-priorities, with a phone variant. - fixedScatter plots: description and table named a regression line even without
regression: true; now only when it is drawn. In German, the count of points above a reference line reads „N Punkt(e) darüber“.
0.18.0
12 October 2026
- addedTrees:
collapsedon a node draws it without what hangs below it, with a+nfor the nodes left out; description and table still list every node (nothing_to_collapsewarns when nothing hangs below). - addedTimelines:
timezonealso takes about 55 common IANA names such asEurope/Berlin, with the daylight saving rules in force today. Details: Timelines. - changedText alternative: small multiples open with “Time chart in 3 panels …” and “Bar chart in 2 panels …” instead of “Small multiples of …” (German: „Zeitreihe in 3 Feldern …“), singular for one; several bands read “Lines have a shaded band from their lower to their upper bound”.
- changedText alternative: English output spells “modelled” (legend, tooltips, description, table); the field
modeledand the CSS classchartlet-line-modeledstay as they are. - changedText alternative: equal ends are named once (“x at 3”, “for 2020”, “on 3 Mar 2026”); a German scatter description says „von … bis …“, and Kaplan-Meier groups say “1 event” / „1 Ereignis“.
0.17.0
11 October 2026
- addedClass diagrams:
"type": "classes"for class and entity-relationship diagrams: classes with stereotype, attributes and methods, joined by six kinds of relations with UML marks and cardinalities. Details: Class and entity diagrams. Examplesorder-model,shop-schema. - addedTimelines: a summary phase takes
rollup, the ids of the phases it sums up, and shows their progress weighted by length. - addedSankey diagrams:
"back": trueon a link marks a flow back to an earlier column, drawn as a loop under the diagram (link_not_backwhen it does not lead back). Examplewater-cycle. - changedTimelines: arrows between rows turn where no bar or diamond of the rows between them stands, instead of running through it.
0.16.0
11 October 2026
- addedBar and line charts: a series of a grouped bar chart or an unstacked line chart takes
lowerandupperarrays for error bars, with tooltips and an interval column per series. Examplesatisfaction-by-quarter, with a phone variant. - addedTimelines:
timezone(UTC or a fixed offset such as+02:00) sets the zone the days and the shaded weekends are read and written in.
0.15.0
11 October 2026
- addedBox plots:
groupon every box colors the boxes of a group alike (up to four), with a legend and a Group column; for boxes, violins and strips. Examplelatency-by-region, with a phone variant. - addedTimelines:
"weekends": trueshades Saturdays and Sundays while the axis spans at most 120 days; a longer axis warns withweekends_hidden.
0.14.0
10 October 2026
- addedBox plots:
"showMean": truemarks the mean of each box with a diamond and adds a Mean column; added to the exampleresponse-distribution. - addedBox plots:
"violinScale": "area"gives every violin the same area and"count"an area by its number of observations, so widths compare between violins. - addedTimelines:
progress(0 to 1) on a phase draws that share of its bar darker, andgroupRowsputs the rows of a group together; progress added to the exampleproduct-roadmap. - addedScatter plots:
xTicksputs named labels on the x axis (chromosomes of a Manhattan plot), andxRange/yRangefix the ends of an axis. Examplegenome-scan, with a phone variant. - addedSurvival curves: with
logRankand two groups, the description adds the hazard ratio of the second group with its 95 % interval, checked against an independent implementation.
0.13.0
10 October 2026
- addedFlow charts: two presets as examples, each with a phone variant:
study-selection(a PRISMA 2020 flow) andcourt-instances(an Instanzenzug in German); neither is a type of its own. - addedLine charts: a line chart of one series takes error bars,
lowerandupperon every point. Examplemonthly-satisfaction, with a phone variant. - addedScatter plots:
"regression": truedraws a least-squares line per group, andxScale/yScaleset logarithmic axes. Exampleallometry, with a phone variant. - addedSurvival curves:
"logRank": trueruns the log-rank test of two to four groups, with the p value in the plot and the statistic in the description; added to the exampleoverall-survival. - addedSankey diagrams:
nodespins a node to acolumnand a palettecolor, and"order": "listed"keeps the listed order (column_too_earlywhen links lead past the column). Examplevoter-movement, with a phone variant. - addedTreemaps: an item may have
childreninstead of a value, nested up to three levels and drawn as frames. Details: Treemaps. Examplebudget-by-sector, with a phone variant.
0.12.2
6 October 2026
- fixedSankey diagrams: nodes take the palette colors in turn instead of all taking the color of the first source, and neighbouring nodes in a column are swapped where that lets fewer bands cross.
- fixedSite: the showcase follows the site's theme: a chart on a dark site uses chartlet's dark palette.
0.12.0
6 October 2026
- addedRange bars: forest plots: a
weighton a span (a square whose area follows it),"summary": true(a diamond) andreferences(the line of no effect); value labels keep off the lines. Details: Forest plots. Exampletrial-effects, with a phone variant. - addedBox plots:
"boxDisplay": "violin"or"strip"draws the observations as a density or as points; every box needsvalues(values_required). Details: Box plots. Exampleresponse-distribution, with a phone variant. - addedTimelines:
"type": "timeline"for Gantt charts, roadmaps and procedures: phases, milestones, marker lines, groups and dependencies (after) drawn as arrows. Details: Timelines. Exampleproduct-roadmap, with a phone variant. - addedScatter plots:
"type": "scatter", up to 5000 points in up to four groups, with reference lines and named points, for volcano and Manhattan plots. Details: Scatter plots. Examplegene-expression, with a phone variant. - addedSurvival curves:
"type": "survival", Kaplan-Meier curves of up to four groups with censoring ticks, an optional 95 % band and the number at risk. Details: Survival curves. Exampleoverall-survival, with a phone variant. - addedSankey diagrams:
"type": "sankey", up to 100 links between up to 40 nodes in columns, ordered to cross little; cycles, self links and duplicates are refused. Details: Sankey diagrams. Exampleenergy-flow, with a phone variant. - addedTreemaps:
"type": "treemap", up to 100 items as rectangles by value, in up to four groups with a legend. Details: Treemaps. Examplebudget-by-department, with a phone variant. - addedParliament charts:
"type": "parliament", the seats of an assembly in a semicircle by party, with the majority line and a ringed coalition. Details: Parliament charts. Exampleelection-result, with a phone variant. - addedWaffle charts:
"type": "waffle", up to four parts as squares by the largest remainder, and the rest of a larger total. Details: Waffle charts. Exampleenergy-sources, with a phone variant. - addedWaterfalls:
"type": "waterfall", a running total with starts, deltas and checked totals, vertical or horizontal. Details: Waterfalls. Examplerevenue-to-profit, with a phone variant. - changedRange bars: the range bar style gains two rules, so range bar charts differ in their style block.
0.11.0
5 October 2026
- addedBar charts:
lowerandupperon every point of a bar chart without groups draw error bars; the value label moves beyond the bar and the table gains an Interval column. Examplesatisfaction-scores. - addedBox plots:
"type": "boxplot", one box per category, computed fromvaluesor drawn from the five numbers andoutliers, vertical or horizontal. Details: Box plots. Exampleresponse-times, with a phone variant. - fixedSequence diagrams: a diagram up to 600 pixels wide takes the compact layout, so that a mobile variant that grows keeps its layout.
- fixedDiagrams: a diagram that asks for a larger canvas (
canvas_too_small) asks for a size at which it raises no further warning; the size for an edge label past the last layer, or a self-message of the last participant, grew with every attempt.
0.10.0
5 October 2026
- addedBar charts:
groupon the points of a single-series bar chart gives every group a palette color and a legend entry (at most 4), and the table a Group column. - addedBar charts: small multiples of bars:
multipleswithcategories, and in every panevaluesand avalueAxisof its own, for measures in different units. Examplesbenefit-and-harm,framework-benchmarks(with a phone variant). - changedValue axis: a logarithmic axis ends at the next 1, 2 or 5 times a power of ten instead of the next power of ten: values up to 13.75 give an axis to 20, not 100. The examples with a logarithmic axis changed.
- changednpm: the WebAssembly renderer is 18 % smaller (1276 KB / 478 KB gzip to 1044 KB / 409 KB gzip) with the same output: the layouts share one sort routine, and the build is optimized for size (
opt-level = "z",wasm-opt -Oz) at about 15 % more render time (1.3 ms instead of 1.15 ms). - changednpm:
npm run build:wasmprints the size of the module. - fixedSequence diagrams: a message of the last participant to itself finds room: its label wraps and the canvas grows on the right (
canvas_too_small) instead oftext_truncated. - fixedDiagrams: in architecture and flow diagrams, an edge label beyond the last layer widens the canvas with
canvas_too_smallinstead of running out of the picture. - fixedDiagrams: in architecture and flow diagrams, the label of an edge that runs back from a diamond stays at its edge, and a frame is as wide as its own name instead of shortening it.
- fixedBar charts: on horizontal bars, a value label that a reference line would run through moves to the far side of the line.
- fixedTime charts: a value label that would run into the previous one of its layer is left out with
value_labels_omitted, as with bars; under--strictsuch a chart now fails. - fixedRange bars: a span with
lowequal tohighis labeled with the one value (3, not3 to 3).
0.9.0
5 October 2026
- addedArchitecture diagrams: example
tenant-architecture, with phone and print variants. - addedSequence diagrams: example
sign-in-sequence, with phone and print variants. - addedTrees:
"type": "tree"for organization charts, ownership structures and family trees: nodes naming theirparent, an optionallinklabel such as a share, nodekindandpartnerfor couples. Details: Trees. Examplesownership-structure,family-tree. - changedFlow charts: lanes leave a little room before their first and after their last step, so diagrams with lanes come out slightly longer.
- changedDiagrams: sequence and architecture diagrams are no longer experimental; flow and state diagrams stay experimental.
- fixedSequence diagrams: a participant's name is no longer shortened when its column has room; boxes are a pixel wider where that happened.
- fixedSequence diagrams: on a narrow canvas, message labels may reach over neighbouring lifelines and wrap, and boxes and gaps are tighter (five participants in about 400 pixels instead of 480); a frame grows to hold its label.
- fixedDiagrams: in architecture and flow diagrams, edges that leave a step side by side no longer cross, a label of a shared port stands under its own stretch, labels keep off group frames in portrait, and a person's head sits inside its box.
- fixedDiagrams: in architecture and flow diagrams, a step's name and an edge's technology are no longer shortened on a narrow canvas.
0.8.0
3 October 2026
- addedArchitecture diagrams:
"type": "architecture": components in eight kinds with their own shapes, connections with a label and a technology, and boundaries nested up to four deep that keep outside components out of their frame. Details: Architecture diagrams. Exampleshop-architecture. - addedArchitecture diagrams: the component kind
security, a shield in a new red role color. - addedFlow charts:
"type": "flow", laid out in layers along the flow: steps in eight kinds, edges, cycles drawn back, lanes, groups and a main path kept in line. Details: Flow charts. Examplesrelease-flow,order-flow. - addedState diagrams:
"type": "state"on the layout of flow charts, with transitions writtenevent [guard] / action, a table row per transition and the warningunreachable_state. Details: State diagrams. Exampleticket-states. - addedState diagrams: composite states (
"kind": "composite", other states lie"in"it), drawn as frames. - addedSequence diagrams:
"type": "sequence": participants in five kinds, calls, replies and asynchronous messages, activation bars, numbering and nested fragments. Details: Sequence diagrams. Examplescache-lookup,async-export. - addedDiagrams:
orientationdraws a diagram in portrait or landscape;autopicks the one that fits the canvas, or the one that grows it less, again for a mobile variant. A canvas too small grows, withcanvas_too_small. - addedDiagrams: edge labels of flow, state and architecture diagrams are drawn above all edges and stack instead of covering each other; a node that only receives from or sends into a frame stands after or before it.
- addedDiagrams: below 480 pixels, as in mobile variants, diagrams are compact: smaller margins and gaps, narrower steps, names on two lines instead of shortened, labels wrapped and kept on the page; a numbered message's label rises above its badge.
- addedDiagrams: one look for all types: a role color per kind (CSS custom properties
--chartlet-role-*), soft shadows, rounded corners, labels on chips and message numbers in badges. - addedInteraction: focus without a script: in the HTML profile, a click on a diagram's node or a choice in the "Focus" radio list keeps the node, its neighbours and the edges between them and fades the rest; the SVG stays an image.
- addedMCP:
chartlet_diagram_starterreturns a valid starting specification per diagram type, andchartlet_explaingives a diagram's element counts and table rows; both need@casoon/chartletwith the diagram types. - fixedRendering: the social variant scales a chart down into its frame when the chart was drawn larger than the size it was laid out for.
0.7.1
2 October 2026
- fixedAll charts: a plot keeps at least 40 pixels of height and reports
dense_chartinstead of turning upside down on a small chart. - fixedBar charts: the value label of a short negative horizontal bar no longer runs into the category labels; its category leaves out its value labels (
value_labels_omitted). - fixedBar charts: stacked bar charts use a declared
valueAxis.step, which they ignored. - fixedBar and line charts:
labels_thinnednames/datafor charts withdata, and its message reads "one category in n". - fixedValue axis: a declared
valueAxis.stepgives at most 50 ticks (an exact axis at least 2), andtimeAxis.step1 to 50; a tiny step could hang the renderer. - fixedTime charts: a time axis counts the ticks a step places and spaces them by the plot's real width, so a narrow chart no longer ends up with a single tick and times of day get their room.
- fixedTime charts: a low pane labels only the value ticks that stand a label's height apart; its gridlines stay.
- fixedTime charts: tooltips and the description write a value axis
unitafter the values, and an unnamed layer's table column carries it. - fixedTime charts: the value-axis gutter grows past 72 pixels where long labels need it (up to 40 % of the chart); small multiples measure their gutter the same way and shorten or drop a unit without room.
- fixedTime charts: zoom windows show their own span:
timeAxis.min,maxandstepapply to the whole axis only, andstepEndonly to a window that holds the last observation. - fixedTime charts:
stepEndafter trailing missing values no longer draws over the gap. - fixedTime charts: a declared coarser
timeAxis.precisionno longer removes ticks within a day. - fixedTime charts: a sparkline refuses
valueAxis.unit,valueAxis.stepandtimeAxis.step, which need axes. - fixedCalendars: a calendar reports cells smaller than 4 pixels.
- fixedRange bars: the legend of range bar groups wraps instead of running off a narrow chart.
- fixedRendering: PNG output warns with
glyph_missingabout characters its fonts have no glyph for. - fixedRendering: a PNG of a chart without a mobile variant fails with
missing_mobile, like the SVG.
0.7.0
2 October 2026
- addedTime charts:
valueAxis.unitwrites the unit after the top tick label and in the table's column names, instead of a title above the plot; also in small multiples. - changedTime charts: the value-axis gutter is as wide as the 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.
0.6.0
2 October 2026
- addedTime charts:
timeAxis.minandtimeAxis.maxextend the time axis, such as to a round year before the first observation. - addedTime charts:
"stroke": "medium", a two-pixel line for small panels. - changedTime charts: a compact time chart (below 320 pixels) makes its value-axis gutter as wide as its widest tick label needs.
- changedTime charts: without a drawn title, legend or value axis title above the first pane, the plot starts near the top instead of keeping the title's room free.
- fixedRendering: PNG output draws semibold text semibold: the bundled semibold faces join the Inter family, so titles, values and emphasized notes no longer fall back to regular.
0.5.0
2 October 2026
- addedAll charts: charts from 160 pixels tall, mobile variants too, for small panels.
- addedTime charts:
timeAxis.step, the distance between time ticks — whole years on a calendar axis, units on a numeric one. - addedSmall multiples:
noteEmphasissets a panel's note apart, in the text color and semibold. - addedRendering: PNG of the mobile variant (
--variant mobile --format png), with the literal colors of the print variant. - fixedTime charts: a time tick label that would run into the one before it is left out; its gridline stays.
0.4.0
2 October 2026
- addedAll charts: compact charts from 200 pixels wide, mobile variants too: below 320 pixels the value-axis gutter and the margin are narrower, so a panel keeps its text size.
- addedTime charts:
stepEndon step lines, where the last step ends without an observation of its own. - addedSmall multiples:
panes[].note, a short finding under a panel title. - changedTime charts: a declared
timeAxis.precisionchanges how times are named, no longer the tick spacing. - changedSmall multiples: panel titles take two lines before they are shortened.
0.3.0
2 October 2026
- addedTime 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 a fine helper line adds no decimals to the others); a table row is as fine as its finest layer with a value. - addedTime charts:
markers: falseon a line or area layer, such as a fitted line; its tooltips stay on invisible targets. - addedTime charts: a stacked pane takes up to eight area layers.
- changedValue axis: 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.
- fixedValue axis: 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.
- fixedRange bars: 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.
0.2.0
2 October 2026
- addedValue axis:
stepsets the tick interval andexactkeepsminandmaxas the ends. - addedTime charts:
"mark": "point"draws a dot per observation and no line. - addedTime charts:
"stack": "normal"on a pane stacks its area layers; the crosshair of the interactive module places stacked values on top of the stack. - addedTime charts:
"tooltips": "markers"keeps tooltips on drawn markers only, so dense lines stay small. - addedTime charts: months (
"2026-03") as times, andtimeAxis.precision(year,month,day,minute) for how tooltips, table and description write times. - addedRange bars:
groupper range, in a palette color with a legend entry per group. - addedRendering: the shared stylesheet in parts:
stylesheet_common()andstylesheet_types(),stylesheet({ types: [] })andstylesheet({ types, common: false }), andchartlet stylesheet --commonand--no-common. - changedAll charts: charts narrower than 480 pixels draw their title at 18 pixels.
- changedBar and line charts: more than 16 categories whose labels do not fit on a horizontal axis label every n-th category, with the room of n bands, and warn
labels_thinned. - changedRendering: the shared stylesheet groups its rules type by type; the common part comes first, and a type's part styles only charts of that type.
- fixedTime charts: the markers of the first series in a chart with several layers take its palette color.
- fixedRange bars: a horizontal range bar chart keeps room for its last tick label.
0.1.0
1 October 2026
- addedBar charts:
stack: "normal"(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. - addedLine charts:
categoriesandseries, each series with its own color and line pattern. - addedValue axis:
minandmax,thousandsSeparator,scale: "log"andreverse. - addedTime charts:
timeAxis.kind: "number"for profiles and deep time,timeAxis.reverse,curve: "step",legend: "end"(names at the end of the lines) andsparkline: true. - addedTime charts: zones with a single edge, and layer colors as
var(--name, #hex)whose fallback the print variant draws. - addedSmall multiples:
independentAxesgives every panel its own value axis;mobile.columns. - addedStripes:
stretch: truedraws a band of color that takes any box. - addedText alternative:
alternative: trueandchartlet::text_alternativereturn the description and the data table as data. - addedInteraction:
hooks: trueand the optional module@casoon/chartlet/interactive: crosshair with values, series toggles, scroll stations and playback, reading only the static output. - addedRendering:
--variant print(literal colors for PDF and print renderers) and--variant social(1200 × 630 for Open Graph images). - addedRendering: PNG output behind the optional cargo feature
png, with Inter bundled (OFL-1.1). - addedRendering:
styles: "external"with the shared stylesheet@casoon/chartlet/chartlet.css(chartlet stylesheet [--types …]), so a page with many charts loads their CSS once. - addedRendering:
allowWarnings/--allow-warninglets reviewed warning codes through strict mode. - addedRendering: the HTML figure carries
data-viz="chart"and marks its data table as the text layer. - addedMCP:
@casoon/chartlet-mcp: tools namedchartlet_*,CHARTLET_MCP_ROOTconfiningoutputPath, and a view that shows the chart in the chat of hosts that support MCP Apps. - changedValue axis: a line, time series or range bar whose values are all zero or more gets no margin below zero.
- changedTime charts: one tooltip rule for lines and candles: a tooltip for every observation while they stand at least 4 pixels apart, on an invisible target where no marker is drawn.
- changedTime charts: candle colors differ in lightness as well as in hue.
- changedTopic maps: topic maps and knowledge landscapes are marked experimental.
- changedRendering: German output writes dates as
31.08.2026; a range bar chart is a „Spannweitendiagramm“, a realm of a knowledge landscape a „Bereich“. - changedRendering: print and social variants write
font-weight: 600, which renderers outside the browser read. - changednpm: the package renders with its bundled WebAssembly build; a CLI is used only with
binaryorCHARTLET_BIN.