trainlog/android
2026-09-06 21:36:28 +02:00
..
app Flatten Android visual theme 2026-09-06 21:36:28 +02:00
gradle/wrapper Add functional Android local client 2026-09-06 14:29:59 +02:00
.gitignore Add functional Android local client 2026-09-06 14:29:59 +02:00
build.gradle.kts Add functional Android local client 2026-09-06 14:29:59 +02:00
gradle.properties Add functional Android local client 2026-09-06 14:29:59 +02:00
gradlew Add functional Android local client 2026-09-06 14:29:59 +02:00
gradlew.bat Add functional Android local client 2026-09-06 14:29:59 +02:00
README.md Add functional Android local client 2026-09-06 14:29:59 +02:00
settings.gradle.kts Add functional Android local client 2026-09-06 14:29:59 +02:00

Trainlog Android

Current status

ANDROID_SCAFFOLD=IMPLEMENTED
ANDROID_THEME_PARITY=IMPLEMENTED
ANDROID_HOME=IMPLEMENTED
ANDROID_SESSION_SHELL=IMPLEMENTED
ANDROID_INLINE_EXERCISE_ROUTE=IMPLEMENTED
ANDROID_EXERCISE_SHELL=IMPLEMENTED
ANDROID_BODY_SHELL=IMPLEMENTED

LOCAL_PERSISTENCE=NEXT
MTP_SYNC=AFTER_LOCAL_WORKFLOW

Visual contract

The application follows the same Trainlog language as the TUI:

dark background
monospace typography
cyan/teal accent
yellow active frame
green success
red error
blue muted/navigation
magenta graph role

The launcher icon is only a themed T.

Navigation

Accueil
├── Enregistrer une séance
│   └── Créer un nouvel exercice
│       └── retour séance
├── Enregistrer un exercice
└── Enregistrer des mensurations

Exercise contract

Android must consume the same model as the desktop application:

recording_mode
tracking_mode
data_fields

No exercise input form may be inferred from its name.

Toolchain

AGP          9.4.0
Gradle       9.6
Kotlin       2.3.21
Compose BOM  2026.08.00
compileSdk   37
targetSdk    36
minSdk       26
JDK          17

A Gradle wrapper is intentionally not committed by the scaffold script unless it can be generated locally. From this directory:

gradle wrapper --gradle-version 9.6.0
./gradlew assembleDebug