Repository navigation
v0.4.0
What's Changed
🚀 New Features
- Add
BoxPlotandViolincomponents (raw-data quantiles + Gaussian KDE, tukey/minmax/percentile/std whiskers, split/one-sided violins,violin+boxoverlay) and ad3-sankeyflow diagram #349 - Add zoomable
Sunburst/Iciclehierarchical charts (drill-down breadcrumbs,value_mode,min_fraction"Other" bucketing, metric coloring, SVG/PNG export) plus chem-system and spacegroup data builders #352 - Add
extensions/anywidget: a self-contained ESM bundle published to npm asmatterviz-anywidgetfor notebook/host runtimes (consumed by pymatviz) #351
🛠 Enhancements
- Rewrite fill-between to trace each boundary through its own
monotoneXpoints (edges hug their lines), add fills to the legend with synced hover highlighting, and re-targetstarry-nightsyntax highlighting todata-theme#346 - Auto-detect format for extensionless
blob:URLs via content/magic-byte sniffing, read gzipContent-Encodingresponses binary-safe, and content-detect minified single-line JSON structures #355 - Keep
HeatmapTabletooltips alive across sort/filter/pagination via aMutationObserver, and gzip large Brillouin-zone and XRD test fixtures #348 - Split chart content into z-ordered clip groups so reference lines interleave while annotations overflow, and cap/scroll overflowing legends #356
🐛 Bug Fixes
- Fix correctness bugs across science kernels (XRD scattering prefactor + hkl bounds,
e_above_hullfor arity ≥ 5, gas corrections, moyo-wasm column-major rotations, RDF PBC, marching-cubes) and parsers (POSCAR/CIF/OPTIMADE, NPT XDATCAR, extxyz, composition), each with red→green regression tests #354 - Fix OPTIMADE element resolution, a convex-hull click-to-select page freeze (
effect_update_depth_exceeded), fermi-surface upsampling/NaN crashes, violin KDE on log axes, and PBC-aware structure measurements #355 - Fix plot reactive update loops, clamp both ends of log domains to the positive floor (panning past zero stays recoverable), and gate y2 range write-back on actual y2-series presence #356
- Fix the fill
wherecallback argument order and the reference-lineleft/rightlabel side #346 - Unskip and triage ~75 Playwright tests, removing bit-rotted pixel-based suites and fixing the bugs they surfaced #350
💡 Refactoring
- Adopt the shared
@janosh/vite-configoxlint ruleset, apply the resulting fixes across ~226 files (to_error()normalization, node-protocol imports, etc.), and migrate CI/tooling to pnpm on Node 24 #347 - Extend linting to the
extensions/tree and fix the surfaced issues across the VS Code and Dash extensions #348 - Extract a reusable
ControlPaneand a crash-safeunique_id()helper shared across plot components #349 - Dedup plot interaction helpers: centralize tooltip constraining in
PlotTooltip, extractremove_drag_listeners/create_axis_loader, and adopt screen-uniform pan-zoom #356
Full Changelog: v0.3.6...v0.4.0