# ruviz v0.3.1

Released: 2026-04-01

## Highlights

- Added the first CI/CD-backed PyPI release path for the `ruviz` Python package, including trusted publishing from GitHub Actions and multi-platform wheel builds.
- Published the initial Python docs, examples, notebook widget support, and browser-runtime bundle alongside the Rust and npm artifacts.
- Fixed mixed named and unnamed radar series in the browser bridge and cleaned up Python observable listeners so temporary plots no longer leak through long-lived sources.

## Version Alignment

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

- `ruviz` `0.3.1`
- `ruviz-web` `0.3.1`
- `ruviz-gpui` `0.3.1`
- npm `ruviz` `0.3.1`
- PyPI `ruviz` `0.3.1`

## Python Packaging Notes

- PyPI publishing now runs from `.github/workflows/release.yml` using GitHub OIDC trusted publishing.
- Release tags remain `vX.Y.Z`, while Python prereleases map to PEP 440 versions such as `X.Y.Zrc1`.
- Linux wheels intentionally use host-native `linux` compatibility because the current Python package keeps desktop interactive support enabled.

## 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
- `ruviz-gpui` crate compile verification
- `ruviz-gpui` example compile verification
- Release build
- npm tarball validation
- Python sdist and wheel packaging

## References

- Changelog: [`CHANGELOG.md`](../../CHANGELOG.md)
- Python docs/examples PR: [#37](https://github.com/Ameyanagi/ruviz/pull/37)
- Python release pipeline PR: [#38](https://github.com/Ameyanagi/ruviz/pull/38)
- Release workflow: [`.github/workflows/release.yml`](../../.github/workflows/release.yml)
