Skip to content

v0.0.0

Choose a tag to compare

@github-actions github-actions released this 11 Nov 13:17
· 88 commits to master since this release
v0.0.0
fbe4c37

[0.0.0] - 2026-11-10

Added

  • One tool registry (src/registry.ts): each tool is defined once, and the plugin's tool registration, the Jelly
    declaration, the tools RPC, charts_capabilities and docs/tool-parity.md are projections of it.
    test/registry.test.ts fails when they drift.
  • charts_capabilities: exactly what this build can do, computed rather than promised — working output formats,
    engines and the families each draws, themes and their palette sizes, bundled fonts and the scripts they cover, data
    formats, locales, atlases, limits, every tool with its class, and what is known not to work.
  • charts_recommend: which chart fits a question, its data and its medium. A deterministic local ranking over the
    53-type catalogue with a reason for each pick, the encoding to use, and a ready charts_render call on the caller's
    own columns. It abstains with a reason rather than guessing, and it never renders.
  • The figure tree: charts_render and charts_validate return the drawing as text — every label with a stable id,
    its box, and which labels collide or run past the edge — and the preview PNG numbers the same ids (marks).
  • The tools RPC v2 at charts.tools: every tool is a method with its class, so a script draws or checks a chart
    with no model. docs/scripting.md has the classes, the rule that decides a call and the saved-approval note.
  • FONT_GLYPH_MISSING: a label using a code point no bundled face draws is named, with the characters and the fix,
    instead of silently becoming a blank box.
  • docs/tool-parity.md, docs/status.md.
  • One typed code table: ChartsCode in src/errors.ts is every failure and every issue code the plugin can
    return, and the README's and docs/configuration.md's error tables now list them all — the validation and lint
    issue codes included. test/codes.test.ts fails when a code is raised that is not in the table, or either table
    differs from it.
  • The tools charts_render, charts_quick, charts_validate, charts_catalogue, charts_themes and charts_theme_save.
  • Engines: Vega-Lite and Vega (rendered in a worker with time and memory limits) and ECharts server-side SVG. PNG through resvg (wasm). Offline interactive HTML.
  • Validation with did-you-mean and JSON paths; lint; layout checks (label collisions, clipping, duplicate ticks); PNG previews for the model.
  • A cookbook skill generated from the 53-type catalogue.
  • Bundled fonts: Inter and JetBrains Mono.

Fixed

  • Every tool declares its output schema, and it is a real one: the registry's, projected to the model path and to the
    tools RPC, which validates each script's result against it. This keeps 0.0.3's fix — OpenCode 2.2.5 fails a result
    from a tool that declares no output — and makes the declaration checkable, with no pattern (the shared module's
    rule for an owned output schema). A host case on 2.2.3, 2.2.4, 2.2.5 and 2.2.6 calls all eight tools and asserts every
    result is accepted.

  • The TUI part (dist/tui.js) loads from a local-path install again. It is built unminified: OpenCode could not resolve the minified form of its solid-js import, so the status dialog never started. The build fails if the file is minified.

Changed

  • The Code Mode catalogue no longer pins charts_quick or charts_render. Their signatures are large; the charts skill holds the workflow, and search({ namespace: "charts", query }) finds a tool.

  • Every tool is allowed by default. The plugin inserts one allow rule for charts_* and one for each of the
    eight tools after every agent's base rule, so a render writes chart files into the workspace and a theme is saved
    with no prompt, and a tool a later release adds runs at once. An agent's own rules, your permissions and a saved
    approval still win.

  • The access option restricts that in one line: "all" (the default), "ask-changes" (the five reads run, the
    three writers ask) and "read-only" (the five reads run, the three writers are denied). The README prints the block
    for each value, and /charts-status shows the one in force.

  • A categorical palette that never runs out. A theme's published colours stay first; past them, hues are generated
    in OKLCH at the theme's own lightness and chroma, held to a minimum perceptual distance, so 12 series in light no
    longer repeat a colour. print and high-contrast are not extended: their constraint is what they are for.

  • The word cloud's golden changed: its thirteenth colour is no longer a repeat of its second.

  • The built-in themes are neutral: light (the default), dark, high-contrast, print and presentation. The two brand themes and their font are no longer in the plugin. Save a brand theme with charts_theme_save, or set it in the plugin's options, and use it by name.

Notes

  • The design borrows from MCP Clearsight (cesar-alves/mcp-clearsight, MIT OR Apache-2.0) and Rune
    (anomalyco/rune, MIT). No source file was copied; NOTICE records what was adapted, from which commit, and under
    which licence.
  • The shared tools RPC module is v2.1 (57377eb3…), and scripts/check-copies.mjs pins that hash.

Known limits

  • No PDF output, and no Plotly or Mermaid input. docs/status.md says what does not work and why, and charts_capabilities reports what this build supports.
  • Bundled fonts cover Latin, Greek and Cyrillic. A label beyond them gets FONT_GLYPH_MISSING; the fix is a font file with theme.font.files.
  • Built-in themes are neutral. Brand themes are not in the plugin. Save one with charts_theme_save, or set it in the plugin's options, and use it by name.
  • Nothing is loaded from the network. A remote data file or image is not fetched.
  • PNG and HTML need the packaged runtime. A missing runtime is reported as PNG_UNAVAILABLE or HTML_UNAVAILABLE; reinstalling the plugin restores it.
  • Package size. The package is about 8 MB unpacked, and dist/index.js is 2.3 MB: Vega, ECharts and the PNG rasteriser are bundled, so a render needs no network.
  • Host range. OpenCode >=2.2.3 <2.3.0, tested on 2.2.3, 2.2.4, 2.2.5 and 2.2.6.
  • Updates are not automatic for a Git install, and opencode plugin update and opencode plugin check do not work on one: to move to a newer release, remove the old entry and add the new tag.