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>
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>
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>
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>
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>