Changelog v3.0

A comprehensive overview of architectural overhauls, performance optimizations, and new features introduced in the latest release.

Major Changes

Hybrid Sync & Playback Engine

The synchronization architecture between video and radar data was completely rewritten to eliminate stutter and ensure 100% solid logic.

  • Moved updateFrame directly into the videoframecallback for display refresh rate synchronization.
  • Implemented a "Resync Drift Cascade Lockdown" (circuit breaker) to prevent infinite loop freezes on low-end hardware or when multiple tabs are open.
  • Added frame-rate independent smoothing for UI and sketches.
  • Centralized timeline slider, manual offset, and play/stop/pause logic into a dedicated sync.js module.

Modular File Loading & Offline Support

Monolithic application files were broken down, and the software was adapted to work entirely offline.

  • Extracted file handling into src/fileLoader.js, supporting incremental loading (replacing individual files without breaking app state).
  • Resolved IndexedDB race conditions and startup crashes by ensuring metadata is extracted before parsing visualization data.
  • Removed Google Fonts dependency and implemented robust fallback logic for local JS libraries, enabling full offline capability.
  • Corrected caching key usage to ensure auto-reloading from IndexedDB works seamlessly.

Performance & Memory Optimizations

Significant improvements to the rendering pipeline to reduce memory allocation and boost framerates.

  • Resolved major heap memory issues by iterating through data and drawing rectangles directly to the canvas, changing ctx.fillStyle only once per column.
  • Improved FPS counter stability with a warmup period to prevent erroneous spikes during new file loads.
  • Removed unnecessary animation loop calls (e.g., drawing axes every frame) and reduced text content updates for a 20%+ performance boost.
  • Throttled the MATLAB-style Data Explorer updates to prevent unnecessary function calls when closed.

Living Documentation & Analytical Tools

Introduced powerful new ways to explore both the application data and the codebase itself.

  • Living Documentation: Added an interactive codebase overview with a visual 3D-styled navigation map and PrismJS syntax highlighting.
  • Data Explorer: Added a draggable, resizable MATLAB-style data explorer with timeline sync and track information (launched via 'i' key).
  • Speed Graph: Implemented drag-to-seek, click-to-seek, and hover tooltips for CAN/Ego speeds.
  • Added an Inter-Frame Timing (IFT) graph with dynamic scaling animations.

Minor Changes & UX Polish

User Interface

  • Added vertical range slider (20m-200m) to adjust RADAR_Y_MAX dynamically.
  • Double-click reset functionality added to range sliders.
  • Implemented an auto-loading Quick Start Guide modal on the first session launch.
  • Refined radar-info-overlay to match plot width and center text.
  • Added theme-aware color logic for raw point clouds in dark mode.
  • Removed redundant 'scale' and 'absolute time' metrics from persistent overlays.

Zoom & God Mode

  • Implemented smooth mouse tracking for the zoom tooltip.
  • Added Inverse Zoom Logic.
  • Constrained God Mode tooltips to remain inside the bounding sketch box.
  • Fixed hover detection bugs during scroll-zoom interactions.
  • Switched to relative distance squares to reduce computational overhead and initial hover jitter.

Visuals & Inputs

  • Added vehicle dimensions visualization and enhanced track risk coloring.
  • Added state identifiers directly beside TTC markers.
  • Fixed visibility toggle for "Confirmed ONLY" tracks.
  • New keyboard shortcuts: Arrow keys (navigation), Shift key (God Mode activation).
  • Isolated keyboard shortcut logic to prevent input conflicts.
  • Video player mute defaults removed; standard controls option added.