MotorSignal-App/CHANGELOG.md

71 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Changelog
All notable changes to **Motorcycle Digital Dashboard** will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
> **Versioning scheme (Flutter):** The `version` field in `pubspec.yaml` uses
> the format `MAJOR.MINOR.PATCH+BUILD`.
> - `MAJOR.MINOR.PATCH` → the user-facing release (also stored as the `v` git tag).
> - `+BUILD` → an auto-incrementing integer consumed by `versionCode` (Android) and
> `CFBundleVersion` (iOS). It is bumped independently of the user-facing version.
## [Unreleased]
### Planned
- Google Maps API key configuration hardening.
- iOS port (Location, Motion, Background permissions in `Info.plist`).
- Real third-party police-alert provider behind `PoliceAlertService`.
---
## [1.0.0] - 2026-08-27
First production-ready release of the Motorcycle Digital Dashboard.
### Added
- **Real-time telemetry** via `geolocator` (GPS, 5 Hz) and `sensors_plus` (accel + gyro).
- **Complementary filter sensor fusion** (α = 0.96) for accurate lean/bank, pitch, and
longitudinal/lateral G-force calculation with vibration rejection.
- **Mount calibration** — rider can zero the sensors to compensate for arbitrary
mounting angles.
- **Automatic ride recording** state machine (`Idle` → `Ready` → `Riding`) that
detects motion, tracks session maximums (top speed, max left/right lean, max Gs),
and persists the ride to local storage on stop.
- **Performance metrics** — automatic 0–60 MPH and 0–100 MPH timing using
high-resolution timers triggered on hard acceleration.
- **Drift (SQLite) persistence** with `Rides` and `PerformanceRuns` tables, linked by
foreign key.
- **GoRouter** navigation with a `StatefulShellRoute` and persistent
`BottomNavigationBar`.
- **Riverpod** for reactive UI state and dependency injection across all features.
- **Material 3 dark theme** with portrait- and landscape-aware dashboard layout,
including a large speedometer, heading indicator, lean gauge, and live G-force readout.
- **Map screen** with Google Maps and OpenStreetMap providers, satellite toggle,
and follow-rider mode.
- **Ride history** list with per-ride telemetry cards, and **ride replay** screen
that synchronizes telemetry with the map polyline.
- **Audio (TTS) alerts** for ride states and milestones, configurable via
`flutter_tts`.
- **Data export** to `.csv` and `.gpx` via `share_plus`.
- **Police alert abstraction** (`PoliceAlertService` interface) with a mock
implementation ready to be swapped for a real provider (Waze, RadarBot, etc.).
- **Settings & diagnostics** screens, including calibration and a "clear history"
action.
- **Production hardening**:
- Lint pass with `flutter_lints` and cleanup.
- `http` added as a direct dependency for telemetry/network features.
- OSM null-safety fix for map fallback.
- Road-alert pipeline integrated into the rider state machine.
### Known Limitations
- Google Maps support requires the user to supply a real API key in
`android/app/src/main/AndroidManifest.xml` (replacing `YOUR_API_KEY_HERE`).
- The app is currently Android-first; iOS permissions and build config are not yet
configured.
- Police-alert data is mock-only until a real provider is integrated.
[Unreleased]: https://github.com/your-org/motorcycle-dash/compare/v1.0.0...HEAD
[1.0.0]: https://github.com/your-org/motorcycle-dash/releases/tag/v1.0.0