trainlog/docs/reviews/tui_v0_2_checkpoint.md

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