Klickrunda i Waydroid (telefonlayout 411×891 dp) genom alla flikar, inställningar,
mål, aktiviteter, passdetalj, PB-sök, detaljark, våg och om-sidan.
- Aktiviteter: "km/h" bröts till "km/" + "h" när kcal-kolumnen trängde ihop
raden – word joiner (U+2060) efter snedstrecket håller enheten ihop.
- Statistik → Volym per dag/vecka: LazyRow scrollade till sista stapeln, dvs.
månadens tomma framtidsdagar. Nu: senaste stapel med volym, annars dagens
stapel, annars längst till höger.
- LiftStatusSheet: "Topplista · 1 reps" → "1 rep".
- tools/waydroid-ui.py: adb-hjälpare (dump/tap/shot/swipe/text/key) för
klickrundor i Waydroid; README beskriver flödet + wm size/density-tricket.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NGT3xpdm51McmSrJcHnrzq
- StatsViewModel: pbMode/pbs deklarerades efter init { load() } → refreshPbs()
körde på null vid första öppningen (NPE som runCatching svalde). Listan kom
först när man bytte läge/period. Deklarationerna flyttade före init.
- personalBestsDetailed: känner igen schemafel ("does not exist") från ett
äldre API och faller tillbaka på den gamla personalBests-frågan +
favoriteExercises; PbList.legacyApi styr UI:t (lägen/sök/ark avstängda,
notis om att gym-API:t behöver uppdateras).
- Fel vid PB-hämtning visas under rubriken i stället för tom lista;
LiftStatusSheet/PbSearchCard visar serverns fel i stället för "offline?".
- README: API-krav för rekordstatus, fallback, Waydroid-testflöde.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NGT3xpdm51McmSrJcHnrzq
- ui/common/LiftStatusSheet.kt: ModalBottomSheet med vikt, est. 1RM, datum,
pass, anteckning, SegmentedButtons (Träning/Tävling/Räknas ej), kommentar,
Spara och topplista "näst i tur" för samma övning × reps (alla statusar, så
bortplockade lyft kan återställas). Lyft- och set-läge.
- Statistik → Personbästa: chips Alla giltiga · Tävling · Träning, ett
AssistChip per rekord (🎖️ på tävling) som öppnar arket.
- Passhistorik: tryck på ett set öppnar arket i set-läge; statusmärke visas.
- GymRepository: personalBestsDetailed(mode), pbCandidates, liftDetail,
setLiftStatus, setSessionSetStatus; PB-cachen uppdateras efter ändring.
HistorySet/SessionDetailExercise bär id, notes, status, exerciseTypeId.
Kräver gym-api med migration 20260906090000_AddLiftStatus.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AFvSx1pF9pymyEuK7MFkEG
- Statistikfliken: Kondition & aktiviteter-kort för vald period — KPI
(antal/distans/tid/kcal), km per vecka-staplar och per typ-lista
- README: aktiviteter/kcal-mätare/mål-avsnitt
- Version 0.11.0 — hela aktivitetsplanen (etapp 1–6) därmed kodkomplett
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C2GA94E1f3cmrvdQLQhYdg
- Kotlin + Jetpack Compose + Material 3, minSdk 31 (Android 12)
- GraphQL-klient (OkHttp) med login/refresh/validate/logout som webben
- Tokenlagring i DataStore, auto-refresh av JWT
- Signering via gitignorerad signing/ lokalt och Actions-secrets i CI
- VS Code build-task -> build/FitnessDroid.apk
- Gitea Actions: bygger APK på Pi5 (arm64, aapt2-override) och publicerar
rullande latest-release
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kf4MAbZ3c3B4Xy5XfuGsCP