mirror of
https://github.com/kuhyx/screen-locker.git
synced 2026-07-04 16:43:03 +02:00
The screen locker skipped enforcement on 2026-07-03 without ever showing a lock: a banked skip credit (earned from a prior 5+/week streak) was consumed automatically with no confirmation and no visible log. Reworked the whole reward mechanic instead of just gating it, since banking a "skip a future workout" credit works against maximizing weekly workouts: - Removed skip credits entirely (has_skip_credit/consume_skip_credit and the confirmation dialog built to gate them). The only same-day skip paths left are heat_skip and sick_day, both requiring a genuine reason. - Extra workouts (5+/week) now bank shutdown-time-later hours for the following week instead — comfort, not reduced enforcement. Reuses the existing _adjust_shutdown_time_by and reset_to_base_if_new_day's previously-discarded return value as the once-per-day gate. - early_bird and sick_day no longer pollute workout_log.json. early_bird is a same-day pending marker now stored in its own self-expiring, HMAC-signed file; sick_day is sourced entirely from sick_history.json (already the real source of truth). Fixes an accidental-safety gap where "already took a sick day today" only halted startup by luck. - Cleaned up 3 stale non-workout entries already in workout_log.json. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QdTccgbK7624kfoaV6CtXS |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| conftest.py | ||
| test_adb_and_phone.py | ||
| test_early_bird_part2.py | ||
| test_early_bird.py | ||
| test_extra_benefits.py | ||
| test_init_and_log_part2.py | ||
| test_init_and_log.py | ||
| test_phone_check_unlock_part2.py | ||
| test_phone_check_unlock_part3.py | ||
| test_phone_verification_part2.py | ||
| test_phone_verification_part3.py | ||
| test_phone_verification_part4.py | ||
| test_runnerup_verification_part1.py | ||
| test_runnerup_verification_part2.py | ||
| test_runnerup_verification_part3.py | ||
| test_runnerup_verification_part4.py | ||
| test_runnerup_verification_part5.py | ||
| test_scheduled_skip.py | ||
| test_screen_lock_coverage_part1.py | ||
| test_screen_lock_coverage_part2.py | ||
| test_shutdown_base.py | ||
| test_shutdown_part2.py | ||
| test_shutdown_part3.py | ||
| test_shutdown_part4.py | ||
| test_sick_features_part2.py | ||
| test_sick_features.py | ||
| test_sick_tracker.py | ||
| test_status_part2.py | ||
| test_status.py | ||
| test_time_check.py | ||
| test_ui_and_timers_part2.py | ||
| test_ui_and_timers.py | ||
| test_ui_flows_part2.py | ||
| test_verify_workout.py | ||
| test_vt_switching.py | ||
| test_wake_shutdown.py | ||
| test_wake_skip.py | ||
| test_wake_state.py | ||
| test_weekly_check.py | ||
| test_weekly_logic_part2.py | ||
| test_weekly_logic.py | ||