- New GripAnalysisView with 4 scatter charts:
1. Grip Envelope (peak G vs speed: lateral/accel/brake)
2. Grip Circle (longitudinal vs lateral G scatter)
3. Cornering Grip vs Speed
4. Steering Response (steer angle vs lateral G)
- Summary stats: max lateral/accel/brake/combined G, peak lateral speed
- GripAnalysis types + type guard
- car_grip use case in SessionDetailView (quick stats + view button)
- Route /analysis/grip/:id
- Global .grid-4 CSS utility
- Remove obsolete track_map use case from types, views, and router
- Delete TrackMapView.vue (superseded by persistent TrackDetailView)
- Auto-analyze in handleBuildTrack before building track model
- Add CharacteristicsView: expandable car cards with aggregated shift-point
profiles (gear RPM/speed ranges, recommended shift RPM)
- Add TracksView + TrackDetailView + tracks Pinia store (Canvas 2D geometry)
- Add characteristics API client functions (listCarProfiles)
- Add tracks and characteristics nav items and routes
- Update Game type values to match backend snake_case (project_cars_1/2)
- Update use_case types and labels (remove track_map, keep track_mapping)
Vue 3 + TypeScript + Vite web client for rusty-telemetry.
- Dashboard with system status, live feeds, quick actions
- Live telemetry view with real-time gauges (speed/RPM/gear)
- Session management (create, run, complete, analyze)
- Shift point analysis with Chart.js visualizations
- Track map with Canvas 2D boundary rendering
- Typed API client for all 19 REST endpoints
- Dark theme, network-accessible via Vite 0.0.0.0 bind