Rewrite every page in plain language, and add the International Text page
The wiki now says what the library does in short sentences instead of
aphorisms. Every identifier, number, link and code block is preserved; each
page was checked against its previous version.
International Text is new: how Arabic and Hebrew draw with the bundled font,
how SkiaFonts.Register adds a font file for other scripts, and what changed
for Latin text now that it is kerned.
Two pages, Advanced and MatplotlibThemes, ended with literal </content> and
</invoke> lines left behind by an old tool run. Those are gone.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
xkqg
committed
Sep 12, 2026
63cc494
Set the wiki version banner to 1.16.0
Home.md and _Sidebar.md still announced 1.15.1 while every content page had
already been updated for the data table, so the wiki named the wrong current
release. Home now leads with 1.16.0 (ToDataTables across the four hosts, plus
the streaming-snapshot fix) and demotes the MCP server to "1.15 before it".
xkqg
committed
Sep 12, 2026
3fde56f
Ask the window a question, do not ask it for a copy
RingBuffer<T>.Aggregate() joins the key-types table: it walks what is held and folds it into a caller state,
one pass, nothing materialised. A range off a 10 000-point series costs 33 bytes that way and 320 kB as a copy.
xkqg
committed
Sep 12, 2026
2f9b99e
A streaming point is one value
The Streaming page described StreamingSeries as an abstract base with twin ring buffers, which was true and was
the defect: two buffers meant an x could be paired with a y from another sample. It holds one RingBuffer of
whole points now, so a snapshot is a single read.
The key-types table also carries the generic ring: RingBuffer<T> of anything, the Min/Max extensions over
INumber<T>, and DoubleRingBuffer as the forwarder that keeps the name it has had since v1.7.
xkqg
committed
Sep 12, 2026
8666162
A control room tables as a control room
The Accessibility page's data-table section described the general case and stopped there, which left the figure
it matters most for unexplained. It now carries the three rules a dashboard needs: a tile tables its whole
anatomy (label, value, target, caption, trend, with an empty cell for what it has not got), a row of tiles is
ONE table because a tile being its own subplot is layout rather than data, and a position on a date axis reads
as a clock time at the precision the value carries - 2026-09-12 07:58:20, never 46277.332 and never rounded to
a minute that two thirty-second samples would collide in. With the markdown a reader actually gets, beside it.
The type table gained the row that makes the third rule possible: a column carries the axis its values are
positions on, because the series knows its start and end are x coordinates and only the axes knows x reads as
dates.
xkqg
committed
Sep 12, 2026
1233df8
A chart can be read, not only seen
The Accessibility page led with ARIA and ended with contrast, and it said the aria-label on each series group
names that series to a screen reader. It does not: the root carries role="img", and WAI-ARIA's
children-presentational rule makes the whole SVG one node, so those labels are never announced. The page now
says so, and leads with what does carry the information — figure.ToDataTables(), the data table beside the
picture, with what is in it, where to put it in each host, and where it stops.
MCP-Server and Package-Map gained the fifth tool, chart_data_table, and Package-Map's GraphQL rows now name
the fields the schema actually has (chartSvg / chartDataTable / chartJson, onChartSvgUpdated) instead of a
shape that never existed.
xkqg
committed
Sep 12, 2026
511664b
1.15.1 is the current release, and the server is in the registry
xkqg
committed
Sep 12, 2026
dc42bf5
1.15.0 is the current release
xkqg
committed
Sep 11, 2026
c4e3dd9
Newest version first: 1.15.0 leads, 1.14.4 follows as the current release
xkqg
committed
Sep 11, 2026
4ca612f
The wiki says what is released and what is coming
xkqg
committed
Sep 11, 2026
ba100bc
The install table, the package count and the publish note learn about the MCP server
xkqg
committed
Sep 11, 2026
092ccbe
MCP server: the wiki gets its page, the map gets its package
xkqg
committed
Sep 11, 2026
dbb3191
The count is 83, and a test now keeps it honest
Every page said 82 series types; the assembly ships 83. SeriesCountContractTests reads the number off the
assembly by reflection and pins it, so a new series turns a test red instead of leaving this line quietly wrong.
The old phrasing also counted Streaming twice -- 82 across 14 categories PLUS 4 streaming, while Streaming IS
one of the 14. It now reads 83 across 14 categories, four of them streaming.
xkqg
committed
Sep 2, 2026
01ead70
Wiki: the gaps the links and the series list actually showed
Measured rather than guessed, on three surfaces. Every [[link]] against the pages that exist: one broken, and it
was broken for a reason worth remembering -- GitHub drops the dot, so "## MatPlotLibNet.Interactive" anchors as
#matplotlibnetinteractive and never as #matplotlibnet-interactive. Every page against the sidebar: MatPlotLibNet
(the core-package overview) was reachable from nowhere, and now sits under Package Map. Every series type the
library ships against the text: exactly one chart had no page at all.
Added: Tree grid. Indented rows with right-aligned numeric columns, and the reason it stands BESIDE the treemap
rather than instead of it -- a treemap answers who is big and stops there, and two lanes of twenty-three carrying
every message is two rectangles and twenty-one slivers as area, but a column of numbers you can compare exactly
as rows. Composition in the map, comparison in the grid. The caller owns the flattening, a row's Url makes
expanding a subtree a URL rather than a script, and Depth becomes aria-level so the grid is navigable and not
merely visible.
Added: the runnable control room. The section described the API and never said how to see it move; it now names
MatPlotLibNet.Samples.ControlRoom and the descent -- fleet to bus to process to lanes, the rail that keeps the
level you left, the two gestures (a block drills DOWN, the strip's max drills THROUGH to the member that produced
it), one fixed block size at every level, lanes as rows because they answer a different question, and the whole
state in the URL.
Version 1.14.3 to 1.14.4 in the sidebar and on Home, with what 1.14.4 brought.
Left alone deliberately: the "82 series types" claim. Counting concrete non-abstract series classes across Src
gives 84, of which 4 are streaming and 1 is Geo -- the two counts use different rules, and I am not going to
publish a number whose definition I would be inventing.
Checks after: every link resolves, every anchor resolves, no orphan pages, no dates.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
xkqg
committed
Sep 2, 2026
6c1228a
Wiki: shorter, current, and the control room gets its place
The pages were walls of text and a release behind. Front page rebuilt around
"where do I find what"; Roadmap collapsed from 903 lines of release archive to
the current cadence plus a pointer to the CHANGELOG; Benchmarks reduced to the
numbers that still hold. Every calendar date removed - the version numbers are
the timeline; dates that are example DATA stay.
Facts corrected against the source: 82 series types, 30 themes, 142 colormaps
(71 base maps, each auto-reversed), 10,025 tests, 659 classes at >=90/90.
The control room is documented for the first time: a rendered screen, the code
that produced it, what each tile property does (Target, Caption, Trend, Hatch,
Format's zero section for "no signal"), thresholds on a chart, and the alarm
palette + operator themes in Styling. The 1.14 line is named for what it is -
work around that screen.
Sidebar now lists every page.
xkqg
committed
Aug 30, 2026
dde5a17
Benchmarks: v1.13.0 re-measured hot paths (PNG export 12.9 ms via typeface cache, SVG 1k-line 33.4 us, JSON round-trip 30.8 us)
xkqg
committed
Jul 4, 2026
3ad4481
v1.13.0 refactor & cleanup: API renames (StreamingSeries/StreamingIndicator), IGeoProjection record structs, IRenderContext style records, ShowAsync-only Interactive, ChartSubscriptionClient lifecycle, FromSeriesDto contributor flow, EqualEarth formula fix, Roadmap backfill 1.11.x/1.12.0/1.13.0
xkqg
committed
Jul 4, 2026
f188f9c
v1.11.2: RRG overlay docs + version bump (encoding fixed)
- Home.md: v1.11.2 banner, 79 series, 53 indicators, pair-selection category
- Chart-Types.md: v1.11.2 header, 79/14 categories, new RRG section
- Fluent-Cheatsheet.md: Pair-selection row
- RelativeRotationSeries.md: AbsorptionRatioPerBar + EnbPerBar overlay docs
- All files: correct UTF-8 encoding (no BOM, no CP1252 corruption)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
xkqg
committed
May 16, 2026
b2f3660
v1.11.2: RRG overlay docs + version bump throughout wiki
- RelativeRotationSeries.md: AbsorptionRatioPerBar + EnbPerBar properties,
overlay mode section with visual encoding table and code example
- Chart-Types.md: new RRG section, version header 1.11.2, 79 series / 14 categories
- Fluent-Cheatsheet.md: Pair-selection row in series family table
- Home.md: v1.11.2 banner, series count 79, indicator count 53
- All pages: 1.11.1 → 1.11.2 throughout
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
xkqg
committed
May 16, 2026
37a07d8
v1.10.0: chart pack phases 1-5 + NetworkGraphSeries (deterministic + ForceDirected layouts)
xkqg
committed
May 4, 2026
2d5b782
v1.9.0 benchmarks: add headline numbers + link to repo BENCHMARKS.md authoritative report
xkqg
committed
Apr 23, 2026
8f034ce
v1.9.0 indicator expansion: 12 new indicators (Volume / Trend+Transform / Advanced), total 52; strict 90/90 per class via [ExcludeFromCodeCoverage] migration
xkqg
committed
Apr 23, 2026
da7abdd
Docs: strict-90 refactor (2026-04-20) — coverage 97.26L/90.50B, 32 extracted SOLID subclasses at 100/100
Updated Home + Contributing + Roadmap with post-refactor figures:
- 7 325 main-project tests (was 7 510 stale from Phase Ω)
- 97.26L/90.50B (was ~96/~88) — branch rate above 90 % aggregate floor for the first time
- Strict-90 refactor bullet added under v1.7.2 Roadmap section: 3 god-classes (AxesRenderer.RenderColorBar, CartesianAxesRenderer.Render, SankeySeriesRenderer) decomposed into 32 extracted SOLID subclasses, each at 100L/100B via direct TDD. No behavioural change — byte-level SVG output identical to shipped v1.7.2 (verified by 10 033-case equivalence fuzz).
Version stays 1.7.2 (non-behavioural refactor).
xkqg
committed
Apr 20, 2026
ae76db1
v1.7.2 Phase \u03a9 stats refresh: 7 345 \u2192 7 510 tests, ~95.7L/87.4B coverage, strict-mode flip blocked pending production refactors
xkqg
committed
Apr 20, 2026
963c2d2
v1.7.2 Phase Z stats refresh: 7 203 → 7 345 tests, 50 → ~40 sub-90, ~95/~86 → ~96/~88 line/branch coverage
xkqg
committed
Apr 19, 2026
360beb4
Phase Y close-out: refresh stats (7 203 tests, ~95L/86B), Roadmap chronological reorg (current \u2192 deferred \u2192 released descending), Chart-Types Geo section added (13 projections + GeoPolygonSeries + NaturalEarth110m + convenience extensions)
xkqg
committed
Apr 19, 2026
d2b9679
Refresh test/coverage stats for v1.7.2 Phase X — 7 072 tests, 94.8%L/84.3%B, 64 sub-90/90 (was 110)
xkqg
committed
Apr 19, 2026
e8b2356
Phase W follow-up: treemap steady-pictures + transitive collapse
Sync with main repo Phase W follow-up: drilldown now defaults to every-depth-
visible (interactive view = static SVG, no jump on first paint); click a parent
collapses its entire subtree transitively (ancestry-walk visibility); click again
restores. Z-order paints children over parents so the deepest visible label wins.
- Chart-Types: treemap-drilldown section rewritten with steady-pictures rationale
- Home: top-level summary updated
- Fluent-Cheatsheet: .WithTreemapDrilldown() row updated
xkqg
committed
Apr 19, 2026
f4afe2e
v1.7.2 docs sync — legend drag (Phase S) added to Interactive-Controls + Keyboard-Shortcuts; Contributing test counts updated to 6203 + behavioural-test-harness section (Phase T capture phase + stopPropagation now real)
xkqg
committed
Apr 19, 2026
fda92c6
docs: Phase P doc sweep — treemap expand/collapse, theme distinctness, test count
xkqg
committed
Apr 18, 2026
f374715