112 lines
2 KiB
Markdown
112 lines
2 KiB
Markdown
# TUI v0.2 Checkpoint
|
|
|
|
## Status
|
|
|
|
```text
|
|
FIRST_USABLE_TUI=PASS
|
|
TUI_V0_2_POLISH=IMPLEMENTED
|
|
TUI_SESSION_DETAILS=IMPLEMENTED
|
|
GATE_2=IN_PROGRESS
|
|
TRAINLOG_FORMAT_V1=FROZEN
|
|
```
|
|
|
|
## Purpose
|
|
|
|
This checkpoint records the first Trainlog interface that is already usable as
|
|
a local workout journal while development continues.
|
|
|
|
Android is intentionally not required for this checkpoint.
|
|
|
|
## Implemented user-facing functionality
|
|
|
|
### Dashboard
|
|
|
|
- colored centralized theme;
|
|
- arrow-key navigation;
|
|
- F1/F2/F3/F4 shortcuts;
|
|
- session and exercise counts;
|
|
- latest weight;
|
|
- weight delta;
|
|
- terminal weight graph;
|
|
- sensible flat-series rendering.
|
|
|
|
### Workout entry
|
|
|
|
- exercise selection;
|
|
- repetitions or timed exercises;
|
|
- none/external/assistance load modes;
|
|
- target sets;
|
|
- target repetitions/duration;
|
|
- target load;
|
|
- planned rest;
|
|
- performed sets;
|
|
- actual per-set load;
|
|
- automatic start/end timestamps.
|
|
|
|
### Workout history
|
|
|
|
- navigable session list;
|
|
- complete session detail;
|
|
- exercise-by-exercise browsing;
|
|
- target versus actual work;
|
|
- ordered actual-set summary.
|
|
|
|
### Body
|
|
|
|
- body observation persistence;
|
|
- weight entry;
|
|
- measurement entry;
|
|
- initial weight visualization.
|
|
|
|
## Next frozen implementation contract
|
|
|
|
### Human durations
|
|
|
|
Accepted forms:
|
|
|
|
```text
|
|
90
|
|
90s
|
|
1:30
|
|
1m30
|
|
1m30s
|
|
2m
|
|
```
|
|
|
|
Storage remains seconds.
|
|
|
|
Display becomes human-readable minutes and seconds.
|
|
|
|
### F4 Body graphs
|
|
|
|
Every stored body metric becomes selectable and graphable.
|
|
|
|
Paired measurements additionally display left/right asymmetry.
|
|
|
|
## Validation required before checkpoint push
|
|
|
|
```bash
|
|
meson compile -C build
|
|
meson test -C build --print-errorlogs
|
|
|
|
python tools/validate_json.py
|
|
python tools/validate_import_contract.py
|
|
|
|
git diff --check
|
|
git diff --cached --check
|
|
```
|
|
|
|
The sanitizer build remains required when the current `build-asan` directory
|
|
matches the latest source tree:
|
|
|
|
```bash
|
|
meson compile -C build-asan
|
|
meson test -C build-asan --print-errorlogs
|
|
```
|
|
|
|
## Next checkpoint
|
|
|
|
```text
|
|
TUI_DURATION_HUMAN_INPUT
|
|
TUI_BODY_METRIC_GRAPHS
|
|
```
|