4.1 KiB
4.1 KiB
Changelog
All notable changes to Motorcycle Digital Dashboard will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Versioning scheme (Flutter): The
versionfield inpubspec.yamluses the formatMAJOR.MINOR.PATCH+BUILD.
MAJOR.MINOR.PATCH→ the user-facing release (also stored as thevgit tag).+BUILD→ an auto-incrementing integer consumed byversionCode(Android) andCFBundleVersion(iOS). It is bumped independently of the user-facing version.
Unreleased
[1.1.0] - 2026-08-27
Added & Fixed
- Landscape IMU Coordinate Transformation: Dynamic sensor coordinate frame rotation adapting automatically to portrait and landscape mounting orientations.
- Zero-G Deadband & Gating: Clean 0.00G readouts when device is resting on table or stationary mount.
- Stationary GPS Multipath Hysteresis: Hardened anchor locking that rejects indoor GPS Doppler drift, eliminating false 3–4 MPH stationary speed readings.
- Clean Map Tile Engine: Switched default tile layer to high-resolution OpenStreetMap raster endpoints, removing all third-party watermark requirements.
- Live Police & Traffic Hazard Alerts: Waze & TomTom community alerts integration with speed trap and hazard warnings.
- Version Bump Tooling: Automated
tool/bump_version.dartutility for SemVer release and build number synchronization acrosspubspec.yamland runtimeAppInfo.
1.0.0 - 2026-08-27
First production-ready release of the Motorcycle Digital Dashboard.
Added
- Real-time telemetry via
geolocator(GPS, 5 Hz) andsensors_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
RidesandPerformanceRunstables, linked by foreign key. - GoRouter navigation with a
StatefulShellRouteand persistentBottomNavigationBar. - 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
.csvand.gpxviashare_plus. - Police alert abstraction (
PoliceAlertServiceinterface) 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_lintsand cleanup. httpadded as a direct dependency for telemetry/network features.- OSM null-safety fix for map fallback.
- Road-alert pipeline integrated into the rider state machine.
- Lint pass with
Known Limitations
- Google Maps support requires the user to supply a real API key in
android/app/src/main/AndroidManifest.xml(replacingYOUR_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.