Releases: abdenlab/grandscatter
Releases · abdenlab/grandscatter
v0.3.1
Fixes
- Prevent text selection on axis labels during interaction
- Distribute axes over a half-circle to avoid overlapping pairs with even axis counts
- Replace Gram-Schmidt basis completion with odd DFT harmonics for better rotational stability
Full Changelog: v0.3.0...v0.3.1
v0.3.0
Features
- Trackball rotation: Right-click drag on the canvas to smoothly rotate the 3D projection subspace, like spinning a globe. Applies an orthogonal rotation to columns 0–2 of the projection matrix.
- Mousewheel zoom: Scroll to zoom — adjusts FOV in perspective mode, scales the view in orthographic mode. Emits a new zoom event ({ viewAngle, zoomLevel })
- Normalized axis drag sensitivity: Axis handle drag now divides by the scale's half-domain, making sensitivity consistent regardless of data scale.
Examples
- Added MNIST PCA example (9 principal components, 10 digit classes)
- Added marimo notebook examples
Full Changelog: v0.2.1...v0.3.0
v0.2.1
v0.2.0
What's new
- Lasso selection: Shift+drag on the canvas to draw a freeform polygon and select enclosed points. Unselected points are dimmed. Double-click or Escape to clear.
- Selection API:
selectedPoints,setSelectedPoints(),clearLasso(), and"lasso"event with original data indices. - Widget traitlet:
selected_pointssyncs lasso selection bidirectionally between JS and Python. - Python package metadata: Added license, authors, classifiers, keywords, URLs, and fleshed out README for PyPI.
Breaking changes
- Axis flip modifier changed from Shift+click to Alt+click on axis handles.