Skip to content

v0.4.9

Choose a tag to compare

@github-actions github-actions released this 09 Apr 10:36
· 50 commits to main since this release

ruviz v0.4.9

Released: 2026-04-09

Highlights

  • Fixed the Python large-dataset PNG blackout that could turn dense scatter renders into an opaque dark canvas when automatic DataShader rendering kicked in.
  • Large scatter subplots now use the same auto-DataShader composition path as normal plot renders, so dense subplot figures keep working instead of falling back to the slower non-datashaded path.
  • Regression coverage now checks large-dataset behavior across Rust, Python, notebook widget, and interactive surfaces for the main plot families.

Version Alignment

This release keeps the published workspace packages aligned on one version:

  • ruviz 0.4.9
  • ruviz-web 0.4.9
  • ruviz-gpui 0.4.9
  • npm ruviz 0.4.9
  • PyPI ruviz 0.4.9

Large-Dataset Rendering Fixes

  • Python render_png() now goes through the unified plot PNG render path for large auto-DataShader scatter plots.
  • DataShader output now keeps empty bins transparent and maps rows into screen space correctly before the renderer composites the density image.
  • Large histograms are excluded from the scatter-oriented auto-DataShader path, so they stay on the normal renderer.
  • External-renderer flows used by subplots now apply the same auto-DataShader selection as the main render/save paths.

Coverage Expansion

  • Added large-dataset raster sanity checks for line, scatter, histogram, bar, boxplot, violin, KDE, ECDF, heatmap, contour, error-bars, error-bars-xy, and polar-line plots.
  • Added representative notebook widget coverage for large snapshots so dense browser-backed widget renders do not regress into blank or blacked-out canvases.
  • Added regression coverage for large interactive/session renders and DataShader transparency/y-axis behavior.

Quality And Validation

This release was locally validated after the 0.4.9 version bump with:

  • cargo check -q
  • bun run check:web
  • cd python && uv run cargo test
  • cd python && uv run python -m pytest

The large-dataset regression paths were also re-run locally with:

  • cargo test -p ruviz --no-default-features --features pdf,svg test_large_ -- --nocapture
  • cd python && uv run python -m pytest tests/test_api.py -k 'large_plot'
  • bun run --cwd demo/web test:e2e --grep "python widget bundle renders representative large snapshots without blacking out"

References