Skip to content

Releases: abdenlab/grandscatter

v0.3.1

27 Mar 20:30
b1a52c2

Choose a tag to compare

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

02 Mar 19:06

Choose a tag to compare

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

18 Feb 17:03

Choose a tag to compare

  • Fix infinite recursion in widget lasso event sync
  • Add marimo notebook example

v0.2.0

18 Feb 15:00

Choose a tag to compare

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_points syncs 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.