Skip to content

History

Revisions

  • 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 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 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 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 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 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 xkqg committed Sep 12, 2026
    511664b
  • 1.15.1 is the current release, and the server is in the registry

    @xkqg xkqg committed Sep 12, 2026
    dc42bf5
  • 1.15.0 is the current release

    @xkqg xkqg committed Sep 11, 2026
    c4e3dd9
  • Newest version first: 1.15.0 leads, 1.14.4 follows as the current release

    @xkqg xkqg committed Sep 11, 2026
    4ca612f
  • The wiki says what is released and what is coming

    @xkqg xkqg committed Sep 11, 2026
    ba100bc
  • The install table, the package count and the publish note learn about the MCP server

    @xkqg xkqg committed Sep 11, 2026
    092ccbe
  • MCP server: the wiki gets its page, the map gets its package

    @xkqg 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 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 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 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 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 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 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 xkqg committed May 16, 2026
    37a07d8
  • v1.10.0: chart pack phases 1-5 + NetworkGraphSeries (deterministic + ForceDirected layouts)

    @xkqg xkqg committed May 4, 2026
    2d5b782
  • v1.9.0 benchmarks: add headline numbers + link to repo BENCHMARKS.md authoritative report

    @xkqg 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 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 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 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 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 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 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 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 xkqg committed Apr 19, 2026
    fda92c6
  • docs: Phase P doc sweep — treemap expand/collapse, theme distinctness, test count

    @xkqg xkqg committed Apr 18, 2026
    f374715