feat(train): other apps' workouts read from Health Connect (ADR 0030, D31)

Read from other apps, off until turned on, asks for reading with the
history; the apps that wrote sessions are listed, each off. One turned
on brings its sessions, earlier ones at once and later ones through the
changes token as the app opens and comes to the front: each a workout
of Train's own store, sealed and synced, its origin in its payload, its
heart rate, pauses and a row's power as series, named by its app in the
list and on its page. A double of a workout Train has brings at most its
heart rate; one deleted in Train stays out; a track comes only when
asked for on the page, Health Connect asking for consent. What came from
Health Connect is never written back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-28 17:17:59 +01:00
commit 8fb2dbf35e
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -531,6 +531,18 @@ Strava. What was found, 27 Oct:
is signed in. Train needs Android 8 (API 26) now, as `connect-client` 1.1.0 does.
Not yet tried on a phone.
Reading built so (28 Oct), with choices of mine for the developer to look at: a
session another app deletes there stays in Train (Train's store is what counts); a
treadmill's run is a run and a stationary bike's ride a ride, any other kind stays out;
a double is the same kind overlapping for at least half the shorter of the two, and a
session doubling one brought in from another app is left out too (two apps writing
the same row); a ride's power isn't kept, having no series of its own yet (only the
rower's has); an app turned off later keeps what it brought; a route location
without its accuracy counts as precise; *Bring in the track* shows on every imported
workout without one but rows, as whether a route is there isn't kept. Reading runs as
the app opens and comes to the front, and an app turned on brings its earlier
sessions at once. Not yet tried on a phone.
## Consequences
- Train's sensors are one pattern: open profiles read by the app itself, on the phone;