ChatGPT review findings: - Removed duplicate native_build_changed object property in classifyFiles() return (lines 69-71) - Removed duplicate native_build_changed property in manual dispatch return (lines 150-152) Added explicit behavioral tests for release-job gating: - Dart-only changes on master → release skipped (native_build_changed=false) - Android changes → release runs (native_build_changed=true) - CI-only changes (.github/) → release runs (native_build_changed=true) - Config changes (pubspec.yaml, build.yaml) → release runs (native_build_changed=true) - Mixed changes → release runs (native_build_changed=true) - Manual dispatch → release always runs (native_build_changed=true) - Invalid Git SHA → safe fail to trigger release (native_build_changed=true) - Unrelated changes (docs/, website/) → release skipped (native_build_changed=false) All 52 tests pass. Release job condition verified to depend on: - analyze passing - test shards passing - debug APK passing - native_build_changed==true - master ref Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.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 | ||
| azure-pipelines.yml | ||
| 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!