Version history ยท Android ยท Personal health project
Session stability fix + editable insulin & food log entries.
The app was re-authenticating with Dexcom on every single data refresh. Transient Dexcom server errors were being misread as genuine password failures, triggering a scary red error card even for valid credentials. The app now caches your session and only re-authenticates when it genuinely expires.
When Dexcom explicitly rejects a password, the app now stops retrying immediately. Gmail/Google accounts get a specific explanation about needing a native Dexcom password, with step-by-step instructions. The Diagnostics tool also now flags this inline with a โ ๏ธ warning.
Insulin doses can now be edited after saving. Tap the new cyan โ button on any entry to reopen the log dialog pre-filled with the original units, type, time, and note. Saving updates the entry in place and preserves its position on the glucose chart.
Meals can now be edited after saving. Tap โ on any food entry to reopen the dialog with food name, carbs, calories, meal type, time, and note pre-filled. Changes reflect immediately on the chart and in the 24-hour totals.
All locally stored health data is now encrypted at rest with AES-256-GCM.
All three health data logs now route through a new encryption layer using AES-256-GCM-HKDF-4KB via AndroidX EncryptedFile. Encryption keys are stored in the Android Keystore hardware-backed secure enclave and can never be extracted. Old plain-text files are zeroed out during migration.
Previously stored as plain JSON โ glucose_log.json, insulin_log.json, and food_log.json are now encrypted at rest. Existing users are migrated automatically and silently on first launch. No data is lost.
When you export and share a report, a temporary HTML file is written in plain text so the receiving app can read it. Treat exported reports as sensitive โ delete them from Downloads or your sharing destination once used.
| Data | Storage method | Encryption |
|---|---|---|
| Dexcom credentials | EncryptedSharedPreferences | AES-256-GCM โ |
| OAuth tokens | EncryptedSharedPreferences | AES-256-GCM โ |
| API keys (Claude, etc.) | EncryptedSharedPreferences | AES-256-GCM โ |
| Personal info | EncryptedSharedPreferences | AES-256-GCM โ |
| App settings & thresholds | EncryptedSharedPreferences | AES-256-GCM โ |
| Glucose readings log | EncryptedFile (SecureFileStore) | AES-256-GCM โ |
| Insulin dose log | EncryptedFile (SecureFileStore) | AES-256-GCM โ |
| Food / meal log | EncryptedFile (SecureFileStore) | AES-256-GCM โ |
| Exported HTML reports | Temporary plain file (shared) | โ ๏ธ Unencrypted |
Three new Settings cards plus a live alert engine.
Height (in), weight (lbs), age, and sex fields โ saved with a single button. All fields are passed to the AI Insights prompt so suggestions are personalized to you.
High threshold slider (120โ300 mg/dL, default 180) and low threshold slider (50โ100 mg/dL, default 70). Changes apply live across the entire app โ chart reference lines, HIGH/IN RANGE/LOW labels, time-in-range stats, and notification triggers all update instantly.
Master toggle (requests Android 13+ permission), sub-toggles for projected highs (orange) and lows (red), and a projection window slider (10โ40 min, default 20). Alert engine runs after every refresh using a weighted rate-of-change across the last 3โ4 readings with a 30-minute per-alert cooldown. Tapping a notification opens the app.
Precision insulin tracking and overhauled response charts.
Units input now accepts values like 12.95. Dose display in the log list, 24-hour totals, and save confirmation toast all updated to show 2 decimal places.
Critical bug fixed: green target zone was rendering on top of all curve lines โ now drawn first. Zone is now semi-transparent (50% alpha). Chart height increased 120โ160dp. Y-axis labels (+0, +40, +80 mg/dL), horizontal grid lines, thicker individual meal lines, 3dp average line, and "โ avg rise" legend label all added.
Same zone-ordering fix. Zone color changed to semi-transparent cyan. Chart height increased 120โ160dp. Y-axis labels (-0, -30, -60 mg/dL), horizontal grid lines, thicker individual dose lines, 3dp average line, and "โ avg drop" legend label all added.