MotorSignal-App/CHANGELOG.md

7.0 KiB
Raw Permalink Blame History

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 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.

[1.0.2] - 2026-08-30

Fixed

  • Ride Summary Session Resets: Explicitly zeroed all handling maxima (maxLeanLeft, maxLeanRight, maxAccelG, maxBrakingG, averageSpeedMph) on consecutive startRide() calls without requiring an application restart.
  • Handling Section Responsive Layout: Overhauled EvolutionRideDetailsView Handling section to dynamically scale and wrap metrics across mobile portrait and wide landscape displays without text clipping or card overflow.
  • Precision Millisecond Exporting: Ensured high-resolution sub-second timestamp formatting across SQLite exports and telemetry.csv.

Added

  • Garage Photographic Reference Engine: Extensible MotorcycleImageService delivering photographic reference imagery for registered models (including 2001 Yamaha YZF-R6) with automatic fallback to high-tech vector schematics.
  • Interactive Forensic Events: All event list items in ride details and maps now feature interactive tap-to-inspect dialogs displaying severity badges, timestamps, G-forces, lean angles, coordinates, and "View on Map" navigation.
  • Route Preview Multi-Layer Map: Interactive toggle layers (Route, Speed, Accel, Braking, Cornering) with color-coded speed brackets (0-25, 25-50, 50-75, 75-100, 100+ MPH) and floating legend.
  • Offline-First GitHub Ride Log Sync: Asynchronous background upload service to bponders12-cell/ride_logs (branch main) with token security, upload queue, retry backoff, and manual "Upload Now" controls.

[1.0.1] - 2026-08-29

Fixed

  • Authoritative 20 Hz Clock: Synchronized telemetry emission to a single 20 Hz periodic timer with strictly monotonic timestamps and atomic sequence numbers.
  • Sub-Millisecond Timestamp Persistence: High-resolution SQLite timestamp serialization eliminating whole-second truncation artifacts.
  • Speed-Gated Performance Classification: Enforced speed >= 3.0 MPH gating on lean angle, acceleration, and braking records to prevent stationary kickstand and phone-removal handling from contaminating riding Personal Records.
  • GPS Diagnostic Consolidation: Added a 500 ms debounce to GPS jump rejection logs, preventing duplicate error entries for single satellite multipath anomalies.
  • Dashboard Lean Needle Alignment: Perfectly centered the lean gauge arc and zero-degree reference needle across portrait and landscape layouts.
  • Report & Summary Terminology: Explicitly separated Qualified Moving Performance metrics from Raw Observed Sensor Peaks in all UI screens, README.txt, and ride_summary.json.

Added

  • Production Versioning & Release Management: Standardized pubspec.yaml 1.0.1+101 authoritative versioning, Git commit embedding, release manifest generation, and versioned APK naming (MotorSignal-v1.0.1-build101-release.apk).
  • Forensic Field Test Logger & Exporter: 15-column timeline event logging, zip export packaging, and automated ride quality validation scoring.

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.dart utility for SemVer release and build number synchronization across pubspec.yaml and runtime AppInfo.

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.