Hydration reminder: ON by default (native defaults on when hydration.json is missing; JS writes the default config at startup; the profile toggle is checked by default) so it works out of the box on a ride instead of needing a hidden toggle. Adds hydration_log.jsonl diagnostics and swaps the ToneGenerator for the real alarm ringtone via MediaPlayer on STREAM_ALARM, with the alarm volume forced to max for the alert, so it is actually audible. Calorie bank: cumulative sum of daily balance over the window (+kg) in the day summary, answering "how much to eat up/under". Balance chart (weight vs balance) y-axis now floats symmetrically about 0 (±500 floor, no fixed ceiling) so one hard day no longer flattens the line. |
||
|---|---|---|
| .. | ||
| libs | ||
| src/main | ||
| build.gradle.kts | ||