v1.0.0
Added
- WebGL event display: Add a dedicated WebGL 2 renderer for fast interaction with large renderer-neutral SPINE scenes containing points, marker symbols, line segments, arrow vectors, indexed or wireframe meshes, and filled or wireframe boxes.
- Renderer parity: Retain Plotly as a selectable compatibility renderer and provide common camera, theme, filtering, hover, reset-view, and PNG-export behavior across both rendering paths.
- Object exploration: Add searchable reconstruction and truth object filters, optional one-hop match linkage, click inspection with grouped attributes, direct match highlighting, and reversible matched-object isolation.
- Source handling: Add distinct Path, local Browse, temporary Upload, and public URL source modes with a native file picker, retryable chunked transfers, bounded session-private caching, and progress reporting.
- Flexible inputs: Detect HDF5 data, shared-view JSON, and UTF-8 file manifests by content, including extensionless sources, relative records, comments, globs, and equivalent S3DF host/container paths.
- Event navigation: Separate source opening from entry or run/subrun/event navigation and provide previous/next controls plus keyboard shortcuts.
- Appearance controls: Add point size and opacity controls, continuous color scales and transforms, automatic or manual color domains, scalar visibility ranges, a live draggable value histogram, axis visibility, and adaptive light/dark themes.
- Portable views: Add versioned share links and JSON exports that restore the source, event, display options, attributes, geometry, object filters, renderer, appearance, and camera.
- Media exports: Add optional SPINE/detector branding, WebGL rotating GIF export, Plotly standalone HTML export, and renderer-independent PNG output.
- Detector-aware display: Add automatic geometry selection and restoration, physical detector up-axis handling, selectable truth point sources, and geometry-aware camera fitting.
- Application guidance: Add a searchable keyboard-shortcut reference, contextual loading/error status, a focused authenticated landing page, and task-oriented Read the Docs documentation.
- Quality gates: Enforce complete Python statement coverage, strict documentation builds, pre-commit formatting and linting, and Codecov publication in CI.
Changed
- Production-ready milestone: Establish the accelerated renderer, inspection, sharing, deployment, and documentation contracts as the public baseline for the 1.x release series.
- SPINE integration: Require SPINE v1.0.1 and consume its typed renderer-neutral scenes, field metadata, detector orientation, geometry, and Plotly compatibility backend.
- Client-side presentation: Transport compact binary scenes to the browser and apply camera motion, visibility, recoloring, appearance, hover, and theme updates without rebuilding the event on the server.
- Caching model: Reuse file-aware HDF5 readers, built events, downloaded sources, and serialized scenes across compatible presentation updates while enforcing configurable bounds.
- Camera behavior: Synchronize split reconstruction/truth views when requested, preserve cameras across presentation updates, reset them for new events or files, and fit projected detector bounds without changing the Plotly-matched viewing angle.
- Auxiliary rendering: Match endpoint, direction, and interaction-vertex colors to parent objects and render direction vectors as thick shafts with three-dimensional cone heads.
- Object visibility: Replace Plotly legend-driven and per-object trace splitting with explicit searchable object controls while retaining combined point-cloud traces and color scales.
- Automatic refresh: Refresh loaded scenes from display controls while applying multi-select changes when their menus close to avoid redundant server work.
- Production CLI: Run without the Dash development debugger unless
--debugis explicitly supplied. - Script naming: Rename the local Docker helper from
docker-run.shtodocker_run.shto matchcheck_coverage.shand SPINE's script naming convention.
Fixed
- S3DF path aliases: Accept both
/data/...and/sdf/data/neutrino/...paths for the same data source. - Complete scene rendering: Preserve detector geometry, raw points, optical flashes, CRT hits, endpoints, directions, vertices, hover metadata, color domains, and object filters across WebGL and Plotly.
- State restoration: Apply shared or imported view state exactly once, load referenced Path or URL sources automatically, and reset entry-specific selections safely when the source changes.
- Responsive loading: Prevent duplicate WebGL renders and loading flashes while reporting renderer transitions and long-running source operations consistently.
Full Changelog: v0.4.4...v1.0.0