Roadmap
Full roadmap is maintained in ROADMAP.md in the repository.
Phase Summary
| Phase | Name | Status |
|---|---|---|
| 0 | Core refactoring | ✅ Complete |
| 0.5 | Dependency optimization | Planned |
| 1 | dr2d Python binding (PyO3) | Planned |
| 2 | justviz charts | In progress |
| 3 | justviz scenes + navigation | Planned |
| 4 | justviz storyboard + animation | Planned |
| 5 | justviz streaming | Planned |
| 6 | justviz-jupyter | Planned |
Phase 0 — Complete
Core refactoring of the dr2d Rust crate:
- Workspace restructuring (
dr2dlib +dr2d-clibinary) - SDF rendering pipeline (Circle, RoundedRect, Ring, Diamond, LineCap)
- Tessellation pipeline (Lyon)
- Viewport: pan, zoom, window↔scene coordinate transforms
- Scene: shapes, layers, named viewpoints
- Data: ParquetLoader, CoordinateMapper
- Text rendering (
textfeature) — GlyphAtlas, ASCII - Headless rendering (
headlessfeature) — offscreen RGBA - 14 tests passing, clippy clean,
cargo publish --dry-runsucceeds
Phase 0.5 — Dependency Optimization
Feature-gate heavy dependencies to reduce the minimal build:
datafeature — gatesarrow+parquet(~45 transitive deps)tessellationfeature — gateslyon(~7 deps)- Goal: reduce ~213 transitive deps to ~55 for minimal
default = []builds
Phase 1 — dr2d Python Binding
Create dr2d-python/ crate using PyO3 + maturin:
- Expose
Renderer,Viewport,draw_sdf,draw_instancedto Python - Publish to PyPI as
dr2d(Apache 2.0 → MIT wrapper) - Tag
dr2d-py-v*→ CI builds wheels +maturin publish
Phase 2 — justviz Charts
- Scatter, bar, line charts
- Axes: ticks, labels, grid lines
- Legends and color themes
- Multi-layer support
- Auto-fit data ranges
Phase 3 — justviz Scenes
- Declarative TOML scene format
- Shape composition and layering
- Hot-reload on file change (notify)
- Clickable navigation areas, next/prev, view selection
Phase 4 — justviz Storyboard + Animation
- Sequenced frames with transitions
- Viewport interpolation (pan/zoom easing)
- Opacity fades, data transitions
- Presentation mode
Phase 5 — justviz Streaming
- Append-only data model
- Sliding window view
- WebSocket and polling adapters
- Live update loop
Phase 6 — justviz-jupyter
- ipywidgets integration
- Inline rendering in Jupyter notebooks
- Interactive pan/zoom widget
- PNG export