# FightRate RN — Continuous Monitoring + Training Windows ## Objective Change FightRate so BLE heart-rate monitoring is continuous and locally persisted, while a workout/training session is only a marked time window inside that continuous stream. Starting a workout begins a highlighted window; stopping it closes that window and keeps monitoring alive. ## Success Criteria - The native Android foreground service can start monitoring without creating a workout window. - Samples are saved continuously even when no workout window is active. - Start/stop workout only opens/closes a `workout_sessions` window; it does not stop BLE monitoring. - History lists saved windows and each item can be opened to inspect details from samples inside that window. - Insight and history screens use only real timestamped samples. - Capture/History/Insights UI removes generic card-heavy containers and uses Corner Instrument rails, strips, dividers, and instrument surfaces. - Existing bare React Native CLI constraint remains; no Expo. ## Boundaries - No new dependencies unless unavoidable. - Do not delete existing tables destructively; migrate by adding a continuous sample table and deriving session summaries from timestamps. - Android physical BLE validation remains required after APK install. ## Verification - `npm run typecheck` - `npm run lint` - `npm test -- --runInBand` - `npm audit --audit-level=moderate` - `cd FightRateRN/android && ./gradlew assembleRelease -PreactNativeArchitectures=arm64-v8a`