trainlog/docs/reviews/tui_v0_2_checkpoint.md

2 KiB

TUI v0.2 Checkpoint

Status

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:

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

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:

meson compile -C build-asan
meson test -C build-asan --print-errorlogs

Next checkpoint

TUI_DURATION_HUMAN_INPUT
TUI_BODY_METRIC_GRAPHS