mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
Google rejected the Health Connect declaration a second time, this time as "use of permission is not a permitted/valid use case". That was correct. The policy admits six use cases; the nearest is "Fitness, wellness and coaching — apps designed to help users track, monitor, analyze, manage, and improve their physical fitness". Amethyst did none of those. Its Workouts section was a feed of other people's kind 1301 events plus a composer, so the honest description of the integration was "read health data in order to publish it", which is not an approved use case and reads as the prohibited "publicly displaying or socially sharing sensitive data". So the app now does the thing the permissions are for. My Fitness (Workouts → chart icon) summarises the user's own training back to them: this week against last week, the four-week weekly average, where the time goes by activity, best efforts, active days and a consecutive-day streak. It is computed on device, requires no account interaction, sends nothing, and never asks the user to post. Publishing becomes one optional per-workout action on a dashboard row. Every permission now earns itself against that screen rather than against the composer: exercise drives counts, time, breakdown, active days and streak; distance, calories, steps and elevation drive weekly totals, trends and bests; heart rate drives the duration-weighted effort average and the max. WorkoutStats holds all the arithmetic as pure Kotlin so it is testable without Health Connect, a device, or Compose — 13 tests cover window trimming, the seven-day split, absent-metric handling, duration weighting, ordering, streak edges (a rest day today does not break a live streak; a missed day does) and the weekly average. The window is 28 days, not 30: Health Connect serves 30 days without READ_HEALTH_DATA_HISTORY, which Amethyst does not request, and four whole weeks keeps the "this week vs last week" comparison inside that limit. The declaration, PRIVACY.md and the store listing are rewritten to lead with tracking and describe sharing as the secondary, per-item, user-confirmed action it now is. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019egdJyBHnrATZHjs86up8f