2.1 KiB
Sync TUI checkpoint
Status
MTP_TRANSPORT_FOUNDATION=PASS
TUI_SYNC_PAGE=IMPLEMENTED
TUI_SYNC_DEVICE_STATUS=IMPLEMENTED
TUI_SYNC_FOCUS_NAVIGATION=IMPLEMENTED
TUI_SYNC_REMOTE_JSON_CANDIDATES=IMPLEMENTED
TUI_SYNC_LOCAL_CATALOG_COUNT=IMPLEMENTED
TRAINLOG_FORMAT_V1=FROZEN
ANDROID_APP_SCAFFOLD=NEXT
The TUI now exposes a dedicated 5 Sync / F5 primary page.
The page uses the same visual identity as the rest of Trainlog:
TRAINLOG ASCII banner
top navigation
framed device status
framed synchronization list
footer shortcuts
Only the focused frame is highlighted with the warning/yellow border role.
Tab / Shift+Tab moves focus between top navigation and synchronization
content. Direct 0-5 / F1-F5 navigation remains available.
Device status
The page scans the direct USB/MTP backend and displays:
- connected MTP device;
- USB bus/device;
- VID:PID;
- serial when available;
- MTP storage readiness;
- free and total space.
Backend stdout/stderr is suppressed during the live MTP scan so libmtp cannot corrupt ncurses rendering.
Synchronization directions
Incoming Android -> PC categories:
sessions
exercise metadata carried by valid sessions
body measurements carried by valid sessions
New exercise metadata in a valid incoming session is intended to reconcile automatically with the canonical local exercise catalog.
Body measurements embedded in the session are imported atomically with that session.
Outgoing PC -> Android:
canonical exercise catalog
Exercises created directly on the PC must be exportable to Android so both sides use the same stable exercise IDs, display names, and tracking modes.
Catalog synchronization will use its own versioned snapshot contract and will not modify or overload the frozen Trainlog session JSON v1 format.
Current boundary
The Sync page currently reports remote JSON candidates and the local exercise count.
It does not yet classify/import session JSON or emit the catalog snapshot.
The next development slice is the Android application scaffold using fictitious development records until the full transfer path is validated.