Changes since version 1.0.1¶
New Features¶
-
Split views — show multiple scenes (or control groups) in a single browser page via nestable, draggable
SplitViewpanes with horizontal/vertical splits, fixed or user-movable splitters, and per-axis min/max sizes. NewView/SplitView/SceneView/SpacerView/Sizeclasses;viz.show(layout=...)/viz.run(layout=...)open a layout at a single/?view=<name>URL while the existing per-scene URLs keep working unchanged. -
Stacks and control views —
StackView(vertical/horizontal/wrap flow container) and HTML-only control views (SliderView/ButtonView/DropdownView) compose recursively withSplitView;GroupViewis a titled stack usable as a pane or aSceneViewoverlay. Control handlers (on_change/on_click) are registered automatically when a layout is set. -
Server multi-scene subscription — a browser can now subscribe to many scenes over one WebSocket connection, so a layout tab receives
view_layoutplus per-scenescene_config/scene_update/controls, routed to the matching pane. -
Per-pane scene camera —
SceneView(scene, camera=…)gives a single pane a different initial camera (aCameraConfig, orView2DConfig/View3dConfig), so the same scene can appear in multiple panes from different viewpoints while each pane keeps its own orbit/zoom. A pane (identified by an optionalid, auto-assigned when omitted) can also be re-aimed at runtime viaVisualizer.set_view_camera(view, camera). -
Viz-only geometry entities —
CylinderandArc(an arcing cylinder / partial torus with an optional cone arrow tip and a radians angle) that exist purely for visualization and have no multivector representation. Each gets a default style class (CylinderStyle/ArcStyle) and a Three.js renderer wired through the sharedcreateEntityMeshpipeline, so live viewing and static HTML export both work out of the box. -
Coordinate system plotting — a
CoordinateSystemhelper builds a complete 2D/3D plotting coordinate system (grid, axes with value labels, an optional background plane, and plottedPointPaths) inside a singleVizGroup. Supports logarithmic scales for any base (Scale/LinearScale/LogScale), an externalsizeindependent of the data range,align(which point of the plane sits atposition),axis_origin(where the axes cross), 2D manual placement viaposition/upwithout touching the camera, and registered live plots (add_plot/update_plots) with an auto-scaling time axis (min_x_span).Axis/Gridgained explicitticks/line_positions_*placement; thePlanerenderer now honorsspan_u/span_v; andposition/normal/upacceptPoint()/Direction()objects.
Bug Fixes¶
- Standalone HTML export no longer crashes with a duplicate-declaration
syntax error — the
cylinderandarcrenderers reused the private helper namesresolveLength/resolveRadiusfrom theline/arcrenderers. Because the export pipeline concatenates every renderer module into a single module scope, the colliding top-level declarations threwIdentifier 'resolveLength' has already been declared. The helpers are now uniquely named (resolveLineLength,resolveCylinderLength,resolveCylinderRadius,resolveArcRadius), and a regression test guards the bundle against future name collisions.
Refactor¶
ThreeJsViewextraction — pulled the single-scene render/object/message logic out ofviewer.jsinto a reusableThreeJsView(backed by a newViewbase class with aResizeObserverand per-axis constraints);viewer.jsis now a thin bootstrap.