2026-06-21 20:23:57 +02:00
|
|
|
# Screen Locker — runtime + development dependencies
|
|
|
|
|
# Runtime: tkinter/subprocess/socket/sqlite3 (stdlib) plus gatelock (below).
|
2026-05-28 07:43:06 +02:00
|
|
|
bandit>=1.7.0
|
|
|
|
|
codespell>=2.2.0
|
|
|
|
|
coverage>=7.4.0
|
Add auto-fill RunnerUp scan, carrot bonuses, and --status interface
- Refactor RunnerUp verification: extract RunnerUpDbMixin (_runnerup_db.py),
split _scan_and_fill_week_runnerup into a helper _try_fill_runnerup_for_date
to keep cyclomatic complexity ≤10
- Generalise TCX lookup to any date in the ISO week (was today-only); all gap
days Mon→today auto-filled on every startup and 08:30 timer firing
- Add _adjust_shutdown_time_by(): +1h per extra workout beyond the 4-workout
minimum, capped at midnight (hour=24)
- Add _shutdown_base.py: daily reset of shutdown config to a stored base so
the bonus doesn't silently accumulate across days
- Add _extra_benefits.py: streak tracking, skip credits (earn (n-4) credits
for 5+ workout weeks), early-bird extension to 09:00 for eligible weeks
- Add --status mode (_status.py): non-locking CLI view showing per-day
breakdown (✓/✗), RunnerUp auto-scan, bonus status, shutdown time, streak,
skip credits, and early-bird status
- Hook carrot into _check_non_verify_exits: bonus applied whenever auto-fill
pushes weekly count above the minimum
- Pass all pre-commit hooks (ruff, mypy, pylint, bandit, shellcheck,
codespell, max-file-length); 508 tests at 100% branch coverage
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017auyHmf2ZwQcDAwXaSo7KX
2026-06-28 08:08:35 +02:00
|
|
|
gatelock @ git+https://github.com/kuhyx/gatelock@v0.1.0
|
2026-05-28 07:43:06 +02:00
|
|
|
mypy>=1.8.0
|
|
|
|
|
pre-commit>=3.6.0
|
|
|
|
|
pylint>=3.0.0
|
|
|
|
|
pytest>=8.0.0
|
|
|
|
|
pytest-cov>=4.1.0
|
|
|
|
|
pytest-randomly>=3.15.0
|
|
|
|
|
pytest-sugar>=1.0.0
|
|
|
|
|
pytest-xdist>=3.5.0
|
|
|
|
|
ruff>=0.8.0
|