anyplot 3.0 doubles the language count: Julia and JavaScript join Python and R, growing the catalog from 10 to 15 libraries — including anyplot's first browser-rendered libraries and its first React library. Every existing implementation was re-colored with the new Imprint palette, the frontend was fully restructured with CI quality gates, and the render pipeline got hard quality gates on a new, sharper canvas. One clean break earns the major version: Highcharts is now native JavaScript — its legacy Python-wrapper implementations were removed.
🟪 Julia / Makie.jl (3rd language)
- Julia 1.11 + Makie.jl (CairoMakie backend) added with full pipeline support — CI runtime via
setup-julia,Project.tomlenvironment, makie arms in every impl workflow, dedicated prompts, Julia syntax highlighting in the code viewer (#7613; fixes #7614, #7835). - 74 Makie.jl implementations at release cut, backfill continuing via bulk-generate.
🟨 JavaScript (4th language): Chart.js, D3.js, Apache ECharts
- First browser-rendered runtime: a Node 22 + Playwright headless-Chromium harness (
automation/js-render/render.mjs) renders each snippet at exact gallery pixels and emits both the PNG and a self-contained interactive HTML (#8244). - Chart.js 4.4.7, D3.js 7.9.0, Apache ECharts 5.5.1 — 30 implementations each at release cut.
- JS implementations show the Interactive toggle on the site, same model as the Python interactive libraries (#8251).
- The library registry gained a
frameworkfield (none/react/vue/svelte/angular) and per-library file-extension overrides, so future framework libraries are registry-only additions (#8244).
⚛️ MUI X Charts — first React library
- Community
@mui/x-charts7.29.1 (MIT) as the firstframework: reactand first.tsxlibrary: the render harness gained an esbuild branch that bundles React components in a theme-aware MUIThemeProvider(#8517).
⚠️ Breaking: Highcharts migrated Python → JavaScript
- Highcharts is now the native
highcharts.js12.6.0 instead of thehighcharts-corePython wrapper 1.10.0 — following the "most-used variant" rule (~1M vs ~5k weekly downloads) (#8516). - Clean break: all 322 legacy Python implementations (plus metadata) were removed; JS implementations are being regenerated via bulk-generate. Old Python deep links fall back to the spec hub.
🎨 Imprint — anyplot's new palette
- New 8-hue colorblind-safe categorical palette + 3 semantic anchors, replacing Okabe-Ito project-wide. Tuned for warm-paper rendering, validated against deuteranopia/protanopia/tritanopia, with a named API in
core/palette.pyandimprint_seq/ theme-adaptiveimprint_divcolormaps (#7692; selection process #7617; closes #5817). - All ~1,300 existing implementations migrated in a one-shot deterministic hex-swap wave across all libraries (#7776–#7798), with semantic red/amber/green restored where color carries meaning (#7777).
/paletterebuilt twice: per-pixel OKLCH color wheel, hue cards with chroma/ΔE/WCAG metrics, compare-with overlays (Okabe-Ito, Tol muted, Set2), unifiedIMPRINTcopy-paste object for Python/R/Julia/JS, and 10×10 pairwise ΔE matrices for normal + CVD vision (#7692, #8125; fixes #7997, #8005, #7713; consistent prompt naming #7892).
🖥️ Frontend modernization
- 11-PR restructure of
app/complete:routes/paths registry,layouts/+sections/split, feature folders, central API client, theme module, typed global config,src/*aliases (#8519–#8581), documented in a newapp/ARCHITECTURE.md(#8596). - Frontend CI gates: Prettier, sorted imports, unused-import lint, and full type-checking (incl. test files) now run on every PR — previously no frontend lint/type-check ran in CI at all (#8519).
- Perf: above-the-fold landing counts no longer stall up to 2 s,
/specsthumbnails lazy-load,/statsuses aggregate COUNT queries, empty-filter fast path for/plots/filter(#7694). - UI fixes: tag chips correctly filter
/plotsagain (#7516), visitors chart includes today (#7610), copy Claude-Code-ready prompts from feedback on/debug(#7611), masthead on xs (#7891), dark-mode overlay buttons (#8021), library-card blurbs for the JS libs (#8254).
📐 Render quality
- Canvas halved to 3200×1800 / 2400×2400 with proportional-sizing review rules, validated by a 540-render style experiment (#7387); typography recalibrated across all libraries (#7389, #7391–#7428).
- Hard canvas-size gate: every PNG must hit the exact target dimensions (±16 px), enforced pre-AI-review with delta-aware repair messages (#7517).
- AR-09 edge-clipping auto-reject: text touching the canvas border scores 0; altair switched to PAD-only normalization (#7528).
- Prompt guards: long titles auto-shrink (#7682), ggplot-family
geom_textmm-vs-pt warning (#7714).
🔧 Pipeline & ops
- Watchdog now rescues stale
ai-approved, attempt-lessai-rejected, and label-less impl PRs by re-dispatching the right workflow (#7687); impl-merge sweeps staleimpl:LIB:failedlabels (#7616). - daily-regen cadence rebalanced to 10× daily, default model Haiku → Sonnet (#7717, #7286).
- impl-generate can overlay
prompts/from the trigger branch — pipeline prompt experiments without merging to main first (#7385). - Fixed the dual alembic heads that had stalled the production Postgres sync (#7285); fixed silent chartjs/d3 version-lookup failures (#8248); unbroke red main from a duplicate ruff key (#7683).
/auditretooled to be goal-directed across 6 graded dimensions; first all-scope run committed: 86 findings, 1 critical (#8023, #8024).- Repo hygiene: rendered artifacts untracked + Julia Manifest committed (#7835), Serena leftovers removed (#8518), Context7 config added (#8084).
⬆️ Dependencies
21 updates: playwright 1.49→1.55, esbuild 0.24→0.25, aiohttp 3.13→3.14, idna 3.11→3.15, uvicorn ≥0.48, sqlalchemy ≥2.0.50, pyjwt ≥2.13, claude-code-action 1.0.133, plus grouped python-minor/npm-minor/MUI/react/actions bumps.
🔁 Regen & catalog
- 885 regenerations + 310 new implementations landed across the 15 libraries; 46 automated spec-polish PRs refined tags and wording.
- Catalog steady at 327 specs; R/ggplot2 coverage grew 30 → 126; the first 8 specs reached full 15/15 library coverage (pp-basic, scatter-connected-temporal, line-yield-curve, acf-pacf, recurrence-basic, funnel-meta-analysis, line-load-duration, area-elevation-profile).
Full Changelog: v2.4.0...v3.0.0