mirror of
https://github.com/kuhyx/screen-locker.git
synced 2026-11-10 22:47:13 +01:00
|
Some checks are pending
pre-commit / pre-commit (push) Waiting to run
Tests / test (3.10) (push) Waiting to run
Tests / test (3.11) (push) Waiting to run
Tests / test (3.12) (push) Waiting to run
Tests / lock-popup-safety (push) Waiting to run
release-apk / release (APK) (push) Waiting to run
Both surfaces of this repo move together, because they share one prefix: screen_locker (the PC, which reads what the phone logged) and workout_app (the phone, which writes). Firebase becomes the primary backend when it is set up, with GitHub kept as a mirror so a device that has not moved yet is still seen. MirrorSyncClient reads the union of both, so a workout logged against either backend still counts -- which is what lets the PC and the phone cut over on different days. The PC's two pulls are read-only, so they need only the client swapped. _manual_push does a real sync_log and now carries a revision cache, as does every push in workout_app: without it each push re-uploads the whole log and each pull re-downloads every peer's, regardless of change. remote_client is public rather than _private because _manual_push imports it; one decision point beats two copies that can drift. The config file is checked before constructing anything, so an unconfigured machine never reaches the network -- without that guard the PC's sync tests asserted against live Firebase data instead of their own fakes, which is how this was caught. screen_locker: 904 tests at 100% branch coverage. workout_app: 299 tests at 100% line coverage; pinned v0.1.0 -> v0.6.0 across three minor versions with no API drift. Four assertions moved off `.single`, which now finds two writes: the log, then the revision published after it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJ9sxEw3ymzXNjL7SHNpJc |
||
|---|---|---|
| .. | ||
| tests | ||
| __init__.py | ||
| _auto_upgrade.py | ||
| _compliance_state.py | ||
| _constants.py | ||
| _early_bird.py | ||
| _extra_benefits.py | ||
| _heat_skip.py | ||
| _log_io.py | ||
| _log_mixin.py | ||
| _manual_push.py | ||
| _manual_sync.py | ||
| _manual_workout_dialog.py | ||
| _manual_workout_widgets.py | ||
| _manual_workout.py | ||
| _mcp.py | ||
| _phone_verification.py | ||
| _runnerup_db.py | ||
| _runnerup_verification.py | ||
| _shutdown_base.py | ||
| _shutdown.py | ||
| _sick_dialog.py | ||
| _sick_tracker.py | ||
| _status_data.py | ||
| _status_view_verify.py | ||
| _status.py | ||
| _surface_group.py | ||
| _sync_retry.py | ||
| _temperature_status_mixin.py | ||
| _temperature.py | ||
| _time_check.py | ||
| _ui_flows_relaxed.py | ||
| _ui_flows.py | ||
| _ui_widgets.py | ||
| _unlock_view.py | ||
| _wake_state.py | ||
| _weekly_check.py | ||
| _window_setup.py | ||
| _workout_credit.py | ||
| _workout_sync.py | ||
| adjust_shutdown_schedule.sh | ||
| screen_lock.py | ||
| status_view.py | ||