baldav/docs/session-logs
4aiman dd1642b6e9 BLE HR: connect manually only, no auto-scan on every ride (battery)
Recording auto-called ble_connect each ride, and the Kotlin service held a
GATT connect to an absent band (radio busy) plus START_STICKY churn -
draining the battery when the band was away or Bluetooth off.

- gps.js _startHrMonitor: drop the auto ble_connect; keep only the cheap HR
  poll so a manual connect (now or mid-ride) lands HR in the track.
- Settings: a 'Подключить' button for the paired band, usable any time incl.
  during a ride. BT off -> ble_request_enable (system enable dialog); on ->
  ble_connect, start the poll if recording, report connected / not found.
- ble.rs: ble_request_enable command (+ handler registration).
- MainActivity: ble_request_enable -> ACTION_REQUEST_ENABLE (BLUETOOTH_CONNECT
  already in manifest).
- BleHrService: START_NOT_STICKY; if the 5s scan doesn't find the address,
  stopSelf instead of directConnect to an absent device.
2026-10-02 14:03:16 +03:00
..
2026-09-07_brouter-findings.md Scrub location/identity: home city name and external mirror IP → placeholders 2026-09-10 00:55:45 +03:00
2026-09-07_gps-model-findings-impl.md Wind: "headwind in the face" label button on the recording screen 2026-09-07 17:10:16 +03:00
2026-09-07_manual-pauses-altitude-glitches.md GPS stats: exclude manual pauses; reject unrealistic altitude steps 2026-09-07 13:53:40 +03:00
2026-09-07_rec-statusbar-backdrop.md rec screen: status-bar backdrop so the system bar stays visible over the map 2026-09-07 17:15:19 +03:00
2026-09-10_brouter-ux-gapfill-planner.md gap-fill: reload detail via reopenDetail (in-place), not a stacked screen 2026-09-10 15:51:34 +03:00
2026-09-11_route-editor-gapfill-fixes.md routes: return a reliable id from addRoute (re-read, not lastInsertId) 2026-09-11 01:25:28 +03:00
2026-09-12_nogo-reroute.md Reroute: rejoin the active route past a blockage from the current position 2026-09-12 23:05:58 +03:00
2026-09-14_ridden-roads-walk.md Track detail: fold the segment list into an accordion so action buttons stay reachable 2026-09-14 13:27:29 +03:00
2026-09-14_share-image.md Share image Stage 2: native save/share + settings background picker 2026-09-14 10:38:29 +03:00
2026-09-17_repeat-intervals.md Repeat analysis: detect a segment ridden twice (minPasses 3 -> 2); count no longer blocks 2-rep sessions 2026-09-21 11:27:24 +03:00
2026-09-18_merge-rides.md Merge rides: long-press to multi-select tracks and combine them into one (reversible via orig_session_id) 2026-09-18 00:08:25 +03:00
2026-09-21_db-backup.md DB restore: restart via AlarmManager (startActivity+exit raced, app just closed) 2026-09-21 13:44:54 +03:00
2026-09-21_split-and-bike-guard.md Docs: current versions table in README; note router deploy of build 464 2026-09-21 12:43:49 +03:00
2026-09-21_ui-fixes.md Repeat analysis: sweep the hot-cell threshold and keep the most passes (out-and-back reps were lost when a twice-ridden approach inflated the reference) 2026-09-21 20:30:38 +03:00
2026-09-22_balance-selected-day-and-weight.md Balance/trend/charts follow the selected day; kcal weight is per-ride (stored) and settings weight auto-syncs to the latest weigh-in 2026-09-22 11:12:24 +03:00
2026-09-22_gapfill-order-fix.md Gap-fill: re-sequence the session by ts on save (filled points landed at the front on merged/split tracks with NULL seq) 2026-09-22 20:58:06 +03:00
2026-09-26_map-follow-toggle.md Build: auto-clean stale Android bundles per build + clean target 2026-09-27 00:04:52 +03:00
2026-09-29_progress-and-zoom.md Progress on recompute/refine/roads-rebuild + remember map zoom 2026-09-29 23:19:37 +03:00
2026-09-29_startup-slowness.md Track detail: await history.go popstates before re-render after gap-fill revert/save 2026-09-29 16:03:52 +03:00
2026-09-30_gapfill-ridden-router.md Gap-fill: bridge dropouts over your own ridden roads first, public BRouter only as fallback 2026-09-30 00:23:28 +03:00
2026-10-02_ble-manual-connect.md BLE HR: connect manually only, no auto-scan on every ride (battery) 2026-10-02 14:03:16 +03:00