Go to file
Krzysztof kuhy Rudnicki 96701134c6 Fix stale adaptive_icon_background left over from the warm-palette icon regen
pubspec.yaml's adaptive_icon_background is a separate literal from
python_pkg/app_icons' own style.BACKGROUND -- the icon regen updated
every generated PNG but missed this one, so the actual on-device home
screen icon (Android's adaptive icon, not the legacy mipmap) stayed on
the old cool charcoal. Caught on the physical device, not by file checks.

testsAndMisc's generator now syncs this automatically going forward.
2026-07-21 21:42:59 +02:00
.github/workflows Install Flutter in pre-commit CI so flutter-analyze can run 2026-07-11 17:23:42 +02:00
docs Add change explanation: check-phone-week-aware 2026-07-18 07:08:11 +02:00
screen_locker Fix on-fill text contrast on filled buttons, bump gatelock pin 2026-07-21 21:17:14 +02:00
scripts Support multiple workouts per day; fix the dead sync; ban silent failures 2026-07-17 09:22:31 +02:00
stronglift_replacement Fix stale adaptive_icon_background left over from the warm-palette icon regen 2026-07-21 21:42:59 +02:00
.gitignore Add CI-mirror pre-push gate + requirements-sync check 2026-07-11 17:42:45 +02:00
.mcp.json Add read-only MCP server exposing workout/lock status 2026-07-10 21:28:09 +02:00
.pre-commit-config.yaml Fix on-fill text contrast on filled buttons, bump gatelock pin 2026-07-21 21:17:14 +02:00
CLAUDE.md Support multiple workouts per day; fix the dead sync; ban silent failures 2026-07-17 09:22:31 +02:00
DESIGN_AUDIT_TODO.md Add a design-rules audit against the new safe-design-rules checklist 2026-07-21 15:25:20 +02:00
early-bird-workout-check.timer Add heat-skip feature and fix early-bird 9:00 re-check gap 2026-06-29 11:23:19 +02:00
install_autostart.sh chore: set up as standalone repo 2026-05-28 07:43:06 +02:00
install_systemd.sh Add auto-fill RunnerUp scan, carrot bonuses, and --status interface 2026-06-28 08:08:35 +02:00
pyproject.toml Fix on-fill text contrast on filled buttons, bump gatelock pin 2026-07-21 21:17:14 +02:00
README.md Add read-only MCP server exposing workout/lock status 2026-07-10 21:28:09 +02:00
remove_autostart.sh chore: set up as standalone repo 2026-05-28 07:43:06 +02:00
remove_systemd.sh chore: set up as standalone repo 2026-05-28 07:43:06 +02:00
requirements.txt Fix on-fill text contrast on filled buttons, bump gatelock pin 2026-07-21 21:17:14 +02:00
run.sh chore: set up as standalone repo 2026-05-28 07:43:06 +02:00
workout-locker.service Drop WorkingDirectory/PYTHONPATH from workout-locker.service 2026-06-22 12:43:58 +02:00

screen-locker

Tkinter/systemd screen locker with workout tracking, sick-day management, and wake-alarm integration. It enforces a workout cadence by locking the screen until a RunnerUp-verified (or explicitly justified) workout is logged.

MCP server (Claude Code integration)

screen-locker exposes a read-only MCP server (screen_locker._mcp) so Claude Code and its subagents can query workout compliance and the lock-decision state through typed tools — without shelling out to the screen-locker-status CLI or opening the Tk window.

  • Read-only tools: get_status (full status snapshot), get_summary (one-line i3blocks summary + ok/warn/lock state word), explain_lock (why the screen is / isn't locked right now), get_flags (the individual boolean lock-decision predicates for today).
  • There are no write/action tools, by design. Nothing here logs a workout or mutates state — workouts are logged only from RunnerUp-verified TCX data, never from a caller's claim. No tool exposes the sync token or any HMAC key.

The mcp SDK is an optional dependency (pip install -e '.[mcp]'), kept out of the CLI/systemd system-python path. One-time setup of the dedicated venv that Claude Code spawns:

./scripts/setup_mcp.sh

Registration lives in the checked-in .mcp.json (project scope). Restart Claude Code in this repo and approve the project MCP-server prompt for it to load. Verify with claude mcp list.