wake-alarm/phone_app/lib
Krzysztof kuhy Rudnicki 1c8a40d410 Split _sinks.py and home_screen.dart under the 250-line gate
_sinks.py 341 -> 249: the pactl *parsing* moves to _sink_parsing.py. That half
is pure text handling with no subprocess and no side effects, so it is
testable without touching the host's audio; _sinks.py keeps command execution
and the activate/restore orchestration.

The parsers are re-imported into _sinks under their original names, guarded by
__all__. The suite patches `wake_alarm._sinks._parse_cards` and friends, and a
moved symbol makes patch() stop intercepting *silently* — the test then
asserts nothing and still passes. Ruff proved the point mid-split: shortening
__all__ let it delete two of the re-exports and broke an import outright.
_parse_profile_line is only imported (never patched), so its test now imports
from the new module instead.

home_screen.dart 270 -> 249. This one was mine — the automatic-alarm change
pushed it over and I claimed in TODO-push-and-gate.md that nothing this
session touched was over the limit; that was wrong. Publishing moves to
AlarmPublisher, which returns a status line instead of calling setState, so it
is testable without a widget. _loadSavedTime became _loadSyncState: it no
longer loads a *time*, because the schedule is baked in and owned by
AlarmPolicy, so a stored value could only disagree with it.

465 Python at 100% coverage, 79 Dart, APK builds, and both documented CLIs
still print real output.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EckWmyfetYq3Mi8MAnUudh
2026-08-27 23:30:02 +02:00
..
screens Split _sinks.py and home_screen.dart under the 250-line gate 2026-08-27 23:30:02 +02:00
services Split _sinks.py and home_screen.dart under the 250-line gate 2026-08-27 23:30:02 +02:00
ui phone_app: warm-tint the unified-design-system palette 2026-07-22 20:10:27 +02:00
main_arm_probe.dart Fix three defects the hardware run exposed in the room-proof path 2026-08-27 22:23:23 +02:00
main_ring_probe.dart Remove the flash challenge; revert the MethodChannel split that regressed NFC 2026-08-27 22:45:35 +02:00
main_tag_probe.dart Fix three defects the hardware run exposed in the room-proof path 2026-08-27 22:23:23 +02:00
main.dart Make the alarm fully automatic and un-weakenable (08:00, earlier-only) 2026-08-27 23:03:00 +02:00