Go to file
Billie Ponder ac76257210
feat(website): smooth continuous replay camera follow and mobile tile loading (#42)
* feat(website): smooth continuous replay camera follow and mobile tile loading

- Smooth camera following: compute frame-rate-independent camera translation with 32px dead-zone and velocity clamping to keep motorcycle centered without camera oscillation or outrunning tile loading.
- Mobile tile rasterization: configure tile layers with updateWhenIdle: false, keepBuffer: 8, and updateInterval: 100 to eliminate Leaflet mobile pan tile freezing and black voids.
- Interactive follow controls: gracefully suspend auto-follow on user drag/zoom; add 'Following'/'Re-center' toggle and 'Fit Route' controls.
- Tile error recovery: single retry with backoff for transient tile errors before reporting fallback status.
- Add comprehensive unit tests in telemetry-camera-follow.test.ts and component behavioral tests in replay-map-camera-follow.test.tsx.

* fix(website): isolate tab recentering from sample advancement and suspend follow on manual zoom

- P1: Stop camera recentering at every telemetry sample boundary. In web-telemetry-replay-modal.tsx, isolate the map recentering and size invalidation effect to run solely on activeTab changes rather than on currentPoint index advancements. Track latest interpolated position via latestPositionRef, allowing the smooth camera follow engine to exclusively drive camera updates during playback without raw snapping.
- P2: Suspend follow mode upon user-initiated zoom gestures (pinch, wheel, double click via zoomstart) alongside dragstart. Guard programmatic zoom operations (initial fitBounds and fitRoute) using isProgrammaticZoomRef so initial map setup does not inadvertently disable follow mode.
- Add regression coverage in replay-map-camera-follow.test.tsx verifying sample boundary crossings within the dead-zone do not trigger raw panTo snapping, and verifying manual zoom suspends following until explicit Re-center.

---------

Co-authored-by: Developer <dev@example.com>
2026-10-15 01:56:09 -04:00
.agents/skills Pre-Motorcycle-Garage-Feature 2026-08-27 03:07:33 -04:00
.continue/mcpServers chore: establish clean-build repair baseline 2026-09-02 19:27:23 -04:00
.github fix(mobile): October 11 Pixel 8a field-test stabilization (navigation, sensors, sync, UI) (#33) 2026-10-12 06:34:32 -04:00
.token-optimizer/wiki Restore clean build state 2026-09-07 16:38:02 -04:00
.wrangler/cache CHECKPOINT: Phase 2 cloud sync production baseline 2026-08-31 02:57:50 -04:00
android fix(mobile): October 11 Pixel 8a field-test stabilization (navigation, sensors, sync, UI) (#33) 2026-10-12 06:34:32 -04:00
assets feat(mobile): add community social feed, tactical layers, club wall, launch curves, and curvy routes (v1.0.2+102) 2026-09-29 11:50:48 -04:00
backend/motorsignal_api fix: master consolidation fixes for Schema 8, legacy ride sync, performance timer isolation, and sync inspector 2026-10-13 10:24:24 -04:00
cloudflare/motorsignal-r2-worker feat(r2-worker): add authenticated /r2/verify endpoint and HEAD metadata support 2026-10-14 12:43:35 -04:00
docs feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
field_test_export_ride3_unzipped fix(ui): center lean angle gauge & needle alignment across portrait & landscape dashboard layouts 2026-08-29 17:54:35 -04:00
field_test_export_ride4_unzipped fix(ui): center lean angle gauge & needle alignment across portrait & landscape dashboard layouts 2026-08-29 17:54:35 -04:00
field_test_export_unzipped/field_test_session fix(telemetry): stabilize 20Hz clock driver, fix moving time accumulator & prevent derivative spikes 2026-08-28 17:14:31 -04:00
firebase/emulator-tests fix: master consolidation fixes for Schema 8, legacy ride sync, performance timer isolation, and sync inspector 2026-10-13 10:24:24 -04:00
integration_test feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
ios Pre-Motorcycle-Garage-Feature 2026-08-27 03:07:33 -04:00
lib fix(sync): harden worker metadata headers, token refresh on confirmation, and reconciliation ownership isolation 2026-10-14 11:27:46 -04:00
linux Restore clean build state 2026-09-07 16:38:02 -04:00
macos feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
patrol_test feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
qa_screenshots docs: update comprehensive platform feature report and qa audit record 2026-10-02 12:40:42 -04:00
ride_logs ride logs 2026-08-29 16:26:51 -04:00
scripts feat(ops): add speedtest, cms persistence, support ticket db storage, and action resiliency (#18) 2026-09-21 10:46:09 -04:00
server/waze_relay Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00
test fix(sync): harden worker metadata headers, token refresh on confirmation, and reconciliation ownership isolation 2026-10-14 11:27:46 -04:00
tool fix: use stdout instead of print in image generator 2026-08-31 22:03:42 -04:00
tools fix: master consolidation fixes for Schema 8, legacy ride sync, performance timer isolation, and sync inspector 2026-10-13 10:24:24 -04:00
web Pre-Motorcycle-Garage-Feature 2026-08-27 03:07:33 -04:00
website feat(website): smooth continuous replay camera follow and mobile tile loading (#42) 2026-10-15 01:56:09 -04:00
windows Restore clean build state 2026-09-07 16:38:02 -04:00
.firebaserc fix(website): isolate Firebase configuration for staging and enforce safety guards 2026-10-08 10:50:28 -04:00
.gitattributes feat(ops): add live execution progress tracker, stepper, docked hud, and completion modal (#19) 2026-09-21 11:04:49 -04:00
.gitignore feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
.metadata Pre-Phase-2-Feature-Expansion Backup 2026-08-27 01:26:53 -04:00
AGENTS.md fix: close regression audit findings 2026-09-07 17:57:23 -04:00
CHANGELOG.md release(v1.0.2): maintenance fixes, responsive handling, interactive events, multi-layer map & github sync 2026-08-30 08:17:04 -04:00
GEMINI.md feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
PRODUCT.md docs: update comprehensive platform feature report and qa audit record 2026-10-02 12:40:42 -04:00
README.md feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
analysis_options.yaml Keep tool scripts from failing application analysis 2026-09-01 05:50:50 -04:00
field_test_export.zip fix(telemetry): stabilize 20Hz clock driver, fix moving time accumulator & prevent derivative spikes 2026-08-28 17:14:31 -04:00
field_test_export_ride3.zip fix(ui): center lean angle gauge & needle alignment across portrait & landscape dashboard layouts 2026-08-29 17:54:35 -04:00
field_test_export_ride4.zip fix(ui): center lean angle gauge & needle alignment across portrait & landscape dashboard layouts 2026-08-29 17:54:35 -04:00
firebase.emulator.json fix: harden account deletion lifecycle and cloud cleanup 2026-09-03 16:49:36 -04:00
firebase.json feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
firestore.indexes.json feat(website): add club moderation, stats, and group rides management 2026-10-02 11:07:44 -04:00
firestore.rules fix: master consolidation fixes for Schema 8, legacy ride sync, performance timer isolation, and sync inspector 2026-10-13 10:24:24 -04:00
fix_exceptions.dart Restore clean build state 2026-09-07 16:38:02 -04:00
generate_icon.dart CHECKPOINT: Pre-audit baseline snapshot before field readiness review 2026-08-27 09:28:23 -04:00
pubspec.lock feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
pubspec.yaml feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
release_manifest.json release(v1.0.2): maintenance fixes, responsive handling, interactive events, multi-layer map & github sync 2026-08-30 08:17:04 -04:00
serve_apk.js feat: Evolution UI theme, zero-lag 20Hz speedometer, interactive route preview, and Waze alert relay server 2026-08-28 03:23:23 -04:00
skills-lock.json feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00

README.md

Motorcycle Digital Dashboard 🏍️

A high-performance, dark-themed telemetry and analytics dashboard for motorcycles, built with Flutter.

Features

  • Real-time Telemetry: Uses GPS and IMU sensors to calculate speed, lean angle (bank), and acceleration/braking G-forces.
  • Automatic Ride Recording: Automatically starts tracking when movement is detected and logs your trip.
  • Performance Analysis: Automatically measures 0-60 MPH and 0-100 MPH acceleration times.
  • Ride History & Replay: View past rides, replay telemetry synchronized with a Google Map.
  • Audio Alerts: Text-to-speech alerts for milestones and ride states to keep your eyes on the road.
  • Data Export: Export your ride telemetry to .csv or .gpx for external analysis.

Setup & Building

  1. Ensure you have the Flutter SDK installed.
  2. Clone this repository.
  3. Run flutter pub get to fetch dependencies.
  4. Add your Google Maps API key in android/app/src/main/AndroidManifest.xml (replace YOUR_API_KEY_HERE).
  5. Run flutter run or flutter build apk.

Architecture

  • Framework: Flutter (Material 3).
  • State Management: Riverpod for reactive UI state.
  • Database: Drift (SQLite) for robust, local storage.
  • Sensor Fusion: Complementary filter combining accelerometer and gyroscope for precise lean angles.

Documentation

The active documentation map and dated evidence archive are indexed in docs/README.md.

Disclaimer

This application relies on the accuracy of your smartphone's internal sensors. It should be securely mounted to the motorcycle using a rigid mount. Do not interact with the screen while riding. Ride safely!