# ruviz v0.3.4

Released: 2026-04-03

## Highlights

- Fixed notebook widget loading in Jupyter and VS Code by shipping a notebook-safe, self-contained widget bundle with inline WASM bytes.
- Made static PNG rendering the default notebook display path, so bare `Plot` output and `plot.show()` behave predictably without requiring widget support.
- Kept interactive notebook rendering available explicitly through `plot.widget()`, with reproducible widget builds now enforced in CI and release packaging.

## Version Alignment

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

- `ruviz` `0.3.4`
- `ruviz-web` `0.3.4`
- `ruviz-gpui` `0.3.4`
- npm `ruviz` `0.3.4`
- PyPI `ruviz` `0.3.4`

## Notebook And Python Notes

- `plot.show()` in notebooks now displays once and returns `None`, avoiding the duplicate image render that happens when Jupyter auto-displays a returned `Image`.
- `plot.widget()` remains the explicit interactive path for live-updating observable plots and widget-side PNG/SVG export actions.
- Python release packaging now downloads a canonical Linux-built `widget.js` artifact before building the sdist and wheels, so published Python artifacts share the same notebook frontend bundle.

## Quality And Validation

This release was validated with the standard CI and release lanes:

- Rustfmt
- Clippy
- MSRV (1.92)
- Documentation build
- Test Fast Lane
- Python CI (`uv sync`, `cargo test`, `pytest`, `ruff check`)
- Multi-platform build (Linux, macOS, Windows, FreeBSD)
- WASM + Web build
- Notebook widget reproducibility check on Linux CI
- Browser blob-loading and notebook-widget regression tests
- Release build
- npm tarball validation
- Python sdist and wheel packaging

## References

- Changelog: [`CHANGELOG.md`](../../CHANGELOG.md)
- Previous release notes: [`v0.3.3`](./v0.3.3.md)
- Notebook widget PR: [#39](https://github.com/Ameyanagi/ruviz/pull/39)
- Release workflow: [`.github/workflows/release.yml`](../../.github/workflows/release.yml)
