12 Commits

Author SHA1 Message Date
81632a4275 Fix: Fitbit screen showed no data after a successful sync
All checks were successful
Build & Release APK / build (push) Successful in 2m4s
load() caches by endpoint for the session, so the post-sync refresh
re-served the pre-sync (empty) summary. Sync now invalidates the
fitbit cache keys — the watermark before reading, summary+latest after
uploading — so the refetch actually hits the server.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v1.0.7
2026-08-08 00:03:17 -07:00
c48212bfff Fitbit Air: Health Connect sync + vitals dashboard
All checks were successful
Build & Release APK / build (push) Successful in 2m5s
- react-native-health-connect (config plugin, minSdk 26, 11 read perms)
- sync-on-open + manual sync: incremental via server watermark, chunked
  POST to /api/health/v1/fitbit/sync (HR, resting HR, HRV, SpO2, resp
  rate, steps/distance/kcal/floors dailies, staged sleep sessions)
- Fitbit screen: steps/RHR/HRV/SpO2 tiles + daily charts + sleep list +
  per-stream record counts (answers the which-types-does-Google-Health-
  share question empirically)
- Sleep tab now merges Fitbit Air nights (wins over older sources)
- Today screen Fitbit card

Server side (deployed separately on VPS): hc_samples/hc_daily/hc_sleep
tables + sync/latest/summary endpoints in health-api; Caddy routes POST
/api/health/v1/fitbit/* behind the same basic_auth.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v1.0.6
2026-08-07 22:25:07 -07:00
adb8905ebf App icon: violet heart + ECG pulse on the dashboard's dark palette
All checks were successful
Build & Release APK / build (push) Successful in 3m28s
Replaces the Expo template icons; adaptive foreground/monochrome/splash
generated from assets/icon-src/*.svg (rsvg-convert).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v1.0.5
2026-08-07 19:38:28 -07:00
1a65736fb8 CI: reuse persistent runner caches (npm/gradle/android-sdk volumes)
Some checks failed
Build & Release APK / build (push) Has been cancelled
Node lives in the npm volume, cmdline-tools download is guarded, and
sdkmanager no-ops when packages are present. First run seeds the
volumes; later runs skip all toolchain downloads.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 19:33:54 -07:00
24561bbc88 CI: pin builds to the desktop runner
All checks were successful
Build & Release APK / build (push) Successful in 11m17s
The RN/NDK build exhausted the 8GB VPS (whole docker stack went down
2026-08-08); marcusDesktop (32 threads) now handles these, and jobs
queue while it is offline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v1.0.3
2026-08-07 18:38:10 -07:00
0ed7ec0624 Config plugin: parallel Gradle with all cores + build cache
Clean arm64 release rebuild drops ~2m40s -> ~1m on 32 threads.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 17:57:51 -07:00
08b9579839 README: document CI pipeline
Some checks failed
Build & Release APK / build (push) Failing after 35m18s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 17:47:32 -07:00
21f431441e Gitea Actions: auto-build signed arm64 APK release on push to main
Some checks failed
Build & Release APK / build (push) Has been cancelled
Mirrors the meditation-timer pipeline; VERSION_CODE/VERSION_NAME are
stamped from the run number via app.config.js so Obtainium sees each
release as an upgrade. Keystore comes from repo secrets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 17:47:07 -07:00
0d63a720f6 Config plugin: pin local JDK 17/21 for Gradle when present
RN's CMake tooling fails on JDK 24+ (restricted native access), so
prebuild injects org.gradle.java.home pointing at ~/.jdks/jdk-21* when
one exists.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v1.0.0
2026-08-07 16:54:22 -07:00
d6de6dedf1 Add release-signing config plugin, README, memory of PWA parity
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 16:40:54 -07:00
2a5c956c32 Expo app: native front end for health.rehbock.xyz
Login (HTTP Basic, token in SecureStore) + Today, Blood, Sleep, Train,
Body, Mind, DNA screens ported from the PWA at /app/. All data is
fetched live from health.rehbock.xyz; nothing is stored on device
beyond the auth token.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 16:38:52 -07:00
36bd13ff59 Initial commit
Generated by create-expo-app 4.0.0.
2026-08-07 16:32:22 -07:00