From c6663da06a09f5ba9c6e0857c686bbaf26b3938b Mon Sep 17 00:00:00 2001 From: Krzysztof kuhy Rudnicki Date: Sun, 26 Jul 2026 15:21:19 +0200 Subject: [PATCH] Pin gatelock 0.2.1 for the recovery-loop fail-open fix 0.2.0's recovery loop scheduled the next tick after running it, so any exception out of a tick permanently ended all re-assertion of coverage, grab and VT for the rest of the lock -- silently, since Tk logs and swallows exceptions from `after` callbacks. 0.2.1 moves the reschedule into a `finally`. Also in 0.2.1: `holds_grab` no longer reads a grab held by one of our own transient children (a posted menu) as "the grab was lost" and takes it back. That one was a real, user-visible bug on screen-locker's gate windows; the same class of widget on a diet_guard gate would have behaved the same way. Co-Authored-By: Claude Opus 5 (1M context) --- pyproject.toml | 2 +- requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7866542..b56ea72 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ version = "1.0.0" description = "Tkinter/systemd log-to-unlock meal gate with calorie/macro budget tracking" requires-python = ">=3.10" dependencies = [ - "gatelock @ git+https://github.com/kuhyx/utils@gatelock-v0.2.0#subdirectory=gatelock", + "gatelock @ git+https://github.com/kuhyx/utils@gatelock-v0.2.1#subdirectory=gatelock", "crdt-sync @ git+https://github.com/kuhyx/utils@crdt-sync-v0.1.0#subdirectory=crdt-sync", "requests>=2.31.0", ] diff --git a/requirements.txt b/requirements.txt index e28a043..86eb35e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ bandit>=1.7.0 codespell>=2.2.0 coverage>=7.4.0 crdt-sync @ git+https://github.com/kuhyx/utils@crdt-sync-v0.1.0#subdirectory=crdt-sync -gatelock @ git+https://github.com/kuhyx/utils@gatelock-v0.2.0#subdirectory=gatelock +gatelock @ git+https://github.com/kuhyx/utils@gatelock-v0.2.1#subdirectory=gatelock mcp>=1.9 mypy>=1.8.0 pre-commit>=3.6.0