v1.9
+ Legal gate on first launch (terms must be accepted)
+ Legal tab with permissions, privacy, safety & terms
+ Acceptance stored locally; can be reset from Legal tab
v1.8
+ Heading chevrons on canvas path (relative, ~every 2s)
+ Bearing arrows on GPS/satellite map (absolute north-up)
v1.7
+ Dead reckoning uses e.acceleration (gravity-free linear accel)
+ Position updates on stride detection, not continuous proxy
+ Tighter ZUPT threshold using clean linear accel signal
+ Raw IMU debug shows linear accel magnitude
v1.6
+ GPS movement tracking with satellite map overlay
+ Shot markers pinned to GPS coordinates on map
+ GPS accuracy indicator (green ≤8m, orange >8m)
+ Falls back to IMU canvas when GPS unavailable
v1.5
+ Range mode: mic/IMU + voice commands
+ Dry Fire mode: voice commands only, movement still tracked
v1.4
+ Instructions (HOW TO) tab added
+ "Buzzer" voice command to start run
+ "Bang" voice command to register shot
+ "Stop" voice command to end run
+ Fixed speech restart freeze when switching language
v1.3
+ Movement tab replaces Stage Map
+ Path recorded continuously (no longer step-dependent)
+ Green→red gradient trace, start/end markers
+ Import JSON run files into Movement tab
+ Fixed canvas size initialising at 0×0
v1.2
+ English (UK) language option for speech recognition
+ Voice trigger checks all speech alternatives (accent fix)
+ Fixed "aborted" error on speech restart
v1.1
+ Dual mic + IMU shot detection
+ PDR step-based movement tracking
+ Stage map with wall/target drawing tools
+ Run history saved to local storage
v1.0
+ Initial release
+ Voice-triggered run flow (Shooter Ready → Standby → Buzzer)
+ Mic-level shot detection and split times
+ JSON export