Grafik: km/h radbröts i aktivitetslistan, trenddiagrammet startade på tomma framtidsdagar, "1 reps"; tools/waydroid-ui.py
All checks were successful
release / build-release (push) Successful in 4m22s

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
This commit is contained in:
2026-09-10 00:50:21 +02:00
parent 213f635d93
commit 9a7b564e49
5 changed files with 85 additions and 4 deletions

View File

@@ -435,7 +435,9 @@ private fun ActivityRow(a: Activity, onClick: () -> Unit, onShowMap: (() -> Unit
a.distanceMeters?.let {
append(" · ${(it / 1000).compact()} km")
val kmh = (it / 1000) / (a.durationSeconds / 3600.0)
append(" · ${kmh.compact()} km/h")
// U+2060 (word joiner) efter snedstrecket: annars radbryts "km/h"
// till "km/" + "h" när kcal-kolumnen tränger ihop raden.
append(" · ${kmh.compact()} km/\u2060h")
}
a.rpe?.let { append(" · RPE ${it.toInt()}") }
},

View File

@@ -233,7 +233,7 @@ fun LiftStatusSheet(
// ── Topplista ──
if (candidates.isNotEmpty()) {
Text(
"Topplista · ${target.reps} reps — tryck för att välja ett annat lyft",
"Topplista · ${target.reps} ${if (target.reps == 1) "rep" else "reps"} — tryck för att välja ett annat lyft",
style = MaterialTheme.typography.labelLarge,
modifier = Modifier.padding(top = 6.dp),
)

View File

@@ -650,9 +650,19 @@ private fun TrendBars(stats: StatsBundle) {
val max = stats.trend.maxOf { it.volumeKg }.takeIf { it > 0 } ?: 1.0
val listState = androidx.compose.foundation.lazy.rememberLazyListState()
// Börja längst till höger — senaste perioden är den intressanta.
// Börja vid senaste stapeln MED volym: servern skickar hela perioden (t.ex.
// resten av månaden), och står vi längst till höger ser man bara tomma
// framtidsdagar. Ingen volym alls: dagens stapel (etikett "d/M") om den
// finns, annars längst till höger.
androidx.compose.runtime.LaunchedEffect(stats.trend.size) {
if (stats.trend.isNotEmpty()) listState.scrollToItem(stats.trend.size - 1)
if (stats.trend.isNotEmpty()) {
val today = java.time.LocalDate.now().let { "${it.dayOfMonth}/${it.monthValue}" }
val target = stats.trend.indexOfLast { it.volumeKg > 0 }
.takeIf { it >= 0 }
?: stats.trend.indexOfFirst { it.label == today }.takeIf { it >= 0 }
?: (stats.trend.size - 1)
listState.scrollToItem(target)
}
}
androidx.compose.foundation.lazy.LazyRow(