Go to file
Krzysztof kuhy Rudnicki a82047502f Add Flutter half of cross-device sync (Milestone 3)
Ports github_client.dart and sync_settings.dart from ~/todo (PAT-paste
instead of OAuth device flow), and writes a new (non-CRDT) sync_merge.dart
and sync_service.dart matching diet_guard's Python _sync_merge.py/_sync.py
algorithm exactly. Adds a settings screen for the PAT plus manual "Sync
now", and wires lifecycle-triggered auto-sync (launch + resumed/paused)
into the main logging screen, silent on failure per plan decision 4.

Also adds Linux desktop platform scaffolding so this and future UI changes
can be visually verified without a connected phone.

Verified end-to-end against the real kuhyx/diet-guard-sync GitHub API on a
Linux desktop build: Test connection and Sync now both round-trip to GitHub
and surface real auth errors correctly via SnackBar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RH2BHCKbDTiYJUMG3rb9nq
2026-06-22 22:42:27 +02:00
.github/workflows Extract diet_guard from testsAndMisc as a standalone repo 2026-06-22 12:18:39 +02:00
app Add Flutter half of cross-device sync (Milestone 3) 2026-06-22 22:42:27 +02:00
diet_guard Add cross-device log sync (Python half of Milestone 3) 2026-06-22 19:36:27 +02:00
docs Extract diet_guard from testsAndMisc as a standalone repo 2026-06-22 12:18:39 +02:00
scripts Extract diet_guard from testsAndMisc as a standalone repo 2026-06-22 12:18:39 +02:00
.gitignore Extract diet_guard from testsAndMisc as a standalone repo 2026-06-22 12:18:39 +02:00
.pre-commit-config.yaml Extract diet_guard from testsAndMisc as a standalone repo 2026-06-22 12:18:39 +02:00
CLAUDE.md Add cross-device log sync (Python half of Milestone 3) 2026-06-22 19:36:27 +02:00
diet-guard-gate.service Extract diet_guard from testsAndMisc as a standalone repo 2026-06-22 12:18:39 +02:00
diet-guard-gate.timer Extract diet_guard from testsAndMisc as a standalone repo 2026-06-22 12:18:39 +02:00
diet-guard-sync.service Add cross-device log sync (Python half of Milestone 3) 2026-06-22 19:36:27 +02:00
diet-guard-sync.timer Add cross-device log sync (Python half of Milestone 3) 2026-06-22 19:36:27 +02:00
install.sh Add cross-device log sync (Python half of Milestone 3) 2026-06-22 19:36:27 +02:00
pyproject.toml Extract diet_guard from testsAndMisc as a standalone repo 2026-06-22 12:18:39 +02:00
README.md Extract diet_guard from testsAndMisc as a standalone repo 2026-06-22 12:18:39 +02:00
requirements.txt Extract diet_guard from testsAndMisc as a standalone repo 2026-06-22 12:18:39 +02:00

diet_guard

A log-to-unlock gate: locks the desktop until a meal is logged once a meal slot (08:00 / 12:00 / 16:00 / 20:00) has elapsed without one, and tracks a sealed daily calorie/macro budget.

Install

bash install.sh

This installs the package + dependencies into system Python's user site-packages (the systemd service runs /usr/bin/python directly, not a venv — see CLAUDE.md), installs the systemd user timer, seals your daily budget, and locks the budget file immutable.

Usage

python -m diet_guard init          # one-time: compute and seal today's budget
python -m diet_guard gate --demo   # test the lock window (safe, closeable)

The timer runs the gate automatically every ~30 minutes; no manual invocation is needed once installed.

Development

python -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/pre-commit install && .venv/bin/pre-commit install --hook-type pre-push
.venv/bin/python -m pytest diet_guard/tests/ --cov=diet_guard --cov-branch --cov-fail-under=100

See CLAUDE.md for scheduling details and production deployment gotchas, and docs/design.md for the original feature spec.