Skip to content

Changes in version 0.9.0

New Features

  • Camera views (View2DConfig, ViewPlaneConfig) — rich camera specification replacing the old space_extent-based 2D toggle:
  • View2DConfig defines an orthographic view from a rectangle (extent_x × extent_y) centred at center.
  • ViewPlaneConfig defines a perspective view via a virtual plane (point, normal, extents, optional span_u, FOV). The camera optical axis is the plane normal; horizontal/vertical directions are computed from span_u (or auto-derived).
  • CameraConfig supports view_2d / view_plane alongside the existing manual position / target fields.

  • Runtime camera updates — set_camera() on Visualizer and VizSceneHandle updates a scene's camera without restarting.

  • Axes and grids as scene objects — Axis, Grid, Axes2D, and Axes3D replace the hard-coded frontend GridHelper/AxesHelper:

  • Axis renders a line with major/minor ticks and optional CSS2D value labels plus an axis-name label.
  • Grid renders coordinate lines in a UV plane.
  • Axes2D/Axes3D expand into two/three individual Axis objects.
  • Both work in the live viewer, HTML export, and glTF export (glTF renders lines/ticks without text).

  • Default axes & grid — scenes automatically receive a default Axes3D (or Axes2D for space_dim=2) and a Grid unless the user adds an explicit Axis or Grid.

Breaking Changes

  • Removed space_extent, show_grid, and show_axes from SceneConfig, Visualizer, VisualizerApp, and FigureStyle. Grid/axes are now explicit scene objects, not constructor toggles.
  • Removed the internal _space_extent contract from VizSceneHandle and the Jupyter display mixin.

Bug Fixes

  • Exponential backoff + interactive reconnect wait + thread safety in the WebSocket server startup/reconnect flow.
  • Added missing arguments to the WebSocket ready log message.
  • Fixed animated HTML export.
  • Simplified add() return type to str; fixed test_cache; enabled galgebra in CI.

Doc Changes

  • Added axes-grid.md guide documenting Axis, Grid, Axes2D, Axes3D, and default behaviour.
  • Updated camera.md with View2DConfig / ViewPlaneConfig and set_camera().
  • Added viz-camera-axes-grid-plan.md planning document to dev/todos/.
  • Added demo_axes_custom.py, demo_camera_2d.py, and demo_camera_3d_plane.py examples.