screen-locker/stronglift_replacement/workout_app/lib
Krzysztof kuhy Rudnicki 77151c0013 Manual-workout phone sync P5: phone form + budget + push
The phone can now log an off-app workout that syncs to the PC and counts toward
the unlock.

- lib/screens/manual_workout_screen.dart: the form, mirroring the PC manual
  form (sport TT/other + sport-specific fields, times, location/transport/cost/
  reservation phone, RPE slider, techniques/warm-up/pain, reflections). Shows
  the shared 2/week + 5/month budget (pull-only, computed over the merged
  cross-device record set) and refuses to submit when exhausted. On submit it
  validates with validateManualWorkout, builds the shared sync record, and
  pushes it to devices/phone/log.json.
- workout_sync_service.dart: pushManual(record) and readMergedManualPayloads()
  (pull-only budget read — never writes).
- models/manual_workout.dart: ManualBudget + countManualBudget over the merged
  payloads, windowed by each payload's own date.
- home_screen.dart: a "Log manual workout" app-bar action.

All new lib code is 100% covered (screen widget tests via an injected fake sync
service; sync-service MockClient tests; model unit tests).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PM3auNTifaVgcXWDizZrjH
2026-07-13 13:14:42 +02:00
..
models Manual-workout phone sync P5: phone form + budget + push 2026-07-13 13:14:42 +02:00
screens Manual-workout phone sync P5: phone form + budget + push 2026-07-13 13:14:42 +02:00
services Manual-workout phone sync P5: phone form + budget + push 2026-07-13 13:14:42 +02:00
widgets Add comprehensive test suite, backup service, and linting to workout app 2026-06-28 08:11:43 +02:00
main.dart Add manual (unverified) workout logging with evidence form 2026-07-05 20:08:52 +02:00