diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 5e9b8d7..fb0cf1c 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -2,7 +2,7 @@ name: diet_guard_app description: "Companion phone app for diet_guard: log meals on the go." publish_to: 'none' -version: 1.0.148+1 +version: 1.0.149+1 environment: sdk: ^3.12.2 diff --git a/diet_guard/_manual_workout_parse.py b/diet_guard/_manual_workout_parse.py index 97b4c94..3608c3a 100644 --- a/diet_guard/_manual_workout_parse.py +++ b/diet_guard/_manual_workout_parse.py @@ -100,11 +100,16 @@ def _clock_window(day: str, item: dict[str, object]) -> tuple[str | None, str | def manual_session( day: str, item: dict[str, object], minutes: float, label: str ) -> Session: - """The :class:`Session` one manual workout stands for.""" + """The :class:`Session` one manual workout stands for. + + Source is "manual" so the phone's activity sheet can paint the human-typed + label (``source == "manual"`` in Dart). Verified screen-locker workouts keep + source "screen-locker". + """ text = _text(item) kind = _kind(item, text) km = _typed_km(item) if km is None and kind in {"run", "walk"}: km = _text_km(text) start, end = _clock_window(day, item) - return Session(day, kind, minutes, km, label, "screen-locker", start, end) + return Session(day, kind, minutes, km, label, "manual", start, end) diff --git a/diet_guard/tests/test_manual_workout_parse.py b/diet_guard/tests/test_manual_workout_parse.py index 8d89fa3..bf614a0 100644 --- a/diet_guard/tests/test_manual_workout_parse.py +++ b/diet_guard/tests/test_manual_workout_parse.py @@ -47,3 +47,7 @@ class TestManualParse: assert start is not None assert end is not None assert logged_window("never", 60) == (None, None) + + def test_manual_session_source_is_manual(self) -> None: + session = manual_session("2026-09-20", {}, 45.0, "walk to work") + assert session.source == "manual"