* 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> |
||
|---|---|---|
| .agents/skills | ||
| .continue/mcpServers | ||
| .github | ||
| .token-optimizer/wiki | ||
| .wrangler/cache | ||
| android | ||
| assets | ||
| backend/motorsignal_api | ||
| cloudflare/motorsignal-r2-worker | ||
| docs | ||
| field_test_export_ride3_unzipped | ||
| field_test_export_ride4_unzipped | ||
| field_test_export_unzipped/field_test_session | ||
| firebase/emulator-tests | ||
| integration_test | ||
| ios | ||
| lib | ||
| linux | ||
| macos | ||
| patrol_test | ||
| qa_screenshots | ||
| ride_logs | ||
| scripts | ||
| server/waze_relay | ||
| test | ||
| tool | ||
| tools | ||
| web | ||
| website | ||
| windows | ||
| .firebaserc | ||
| .gitattributes | ||
| .gitignore | ||
| .metadata | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| GEMINI.md | ||
| PRODUCT.md | ||
| README.md | ||
| analysis_options.yaml | ||
| field_test_export.zip | ||
| field_test_export_ride3.zip | ||
| field_test_export_ride4.zip | ||
| firebase.emulator.json | ||
| firebase.json | ||
| firestore.indexes.json | ||
| firestore.rules | ||
| fix_exceptions.dart | ||
| generate_icon.dart | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| release_manifest.json | ||
| serve_apk.js | ||
| skills-lock.json | ||
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
.csvor.gpxfor external analysis.
Setup & Building
- Ensure you have the Flutter SDK installed.
- Clone this repository.
- Run
flutter pub getto fetch dependencies. - Add your Google Maps API key in
android/app/src/main/AndroidManifest.xml(replaceYOUR_API_KEY_HERE). - Run
flutter runorflutter 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!