glp-companion/test/features
Mike Kell 86a7cd9852 fix(android,health): unblock Health Connect grant flow and cloud-backed sync
Field-reported on the alpha APK: the Samsung/Pixel row failed with
'Health permissions were denied' without ever showing a dialog, and the
Google Health connect reported the same error despite a successful OAuth.

- MainActivity now extends FlutterFragmentActivity: package:health v13
  casts the host activity to androidx ComponentActivity to call
  registerForActivityResult, so with plain FlutterActivity the permission
  launcher stayed null and requestAuthorization() silently returned false
  (HealthPlugin.kt:317 'Permission launcher not found')
- add the androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE intent-filter
  required by the health package README on the main activity
- drop STEPS / READ_STEPS from the Android permission set: steps are never
  fetched anywhere and the README ties step access to ACTIVITY_RECOGNITION,
  which this app does not declare (weight, total + active calories, blood
  glucose remain, all declared in the manifest)
- syncFromHealth treats a native permission denial as fatal only when no
  cloud partner holds a grant, so a Google Health-connected sync proceeds
  without the OS permission (native reads degrade to empty)
- tests: biometric controller covers native-denial + cloud-ready sync
  (cloudReady fake override); suite 185/185, analyze clean, debug APK
  builds (also clears the standing flutter build apk --debug gate)
- BUILD_STATE: record both fixes, check off the Android OAuth client and
  connect gates, add the Health Connect on-device verification gate
2026-10-18 11:31:50 -04:00
..
auth feat(medication): complete Phase 2 GLP-1 tracking, reminders, and dev bypass 2026-10-16 06:20:23 -04:00
health_sync/presentation fix(android,health): unblock Health Connect grant flow and cloud-backed sync 2026-10-18 11:31:50 -04:00
meal_planner feat(app,exercise,recipes,settings): complete Phase 7 navigation and domain expansion 2026-10-16 19:19:02 -04:00
medication feat(app,exercise,recipes,settings): complete Phase 7 navigation and domain expansion 2026-10-16 19:19:02 -04:00
nutrition feat(nutrition,pantry): add Phase 3C nutritional search engine, barcode scanning, and dual-source food cache 2026-10-17 19:37:06 -04:00
pantry feat(platform,tests,ci): complete Phase 6 cross-platform hardening, integration tests, and Forgejo CI/CD 2026-10-16 14:59:15 -04:00
recipes feat(recipes,settings): add Phase 4B private recipe sources with Mealie integration 2026-10-17 20:46:36 -04:00
settings feat(platform,settings,nutrition): add Google Health cloud sync for desktop 2026-10-17 18:06:36 -04:00