Go to file
Krzysztof kuhy Rudnicki 52186aa5a4 aur-publish: make the launch check actually exercise a cold start
verify_installed() treated "already running" as a pass, so on any run where an
app was already open the strongest gate in the script silently became the
weakest: it proved only that the binary printed something. It now stops a
leftover instance first, so the check always tests a real cold start.

Killing that instance is fiddlier than it looks, and both naive forms are
broken here:

  * `pkill -x <name>` matches the kernel's 15-character comm field, and two of
    the three wrappers are longer (habit_stack_desktop is 19). It would have
    silently never fired -- confirmed by watching an instance survive it.
  * `pkill -f <path>` matches this script's own command line and the shell
    wrapping it, so it kills the run instead of the app. Observed as an exit
    144 with no output, twice.

So the pids come from ps, filtered on the installed /opt path, with our own
process and parent skipped.

Also threads the wrapper process name through the package table rather than
deriving it: diet-guard-app runs diet_guard_desktop, so name mangling produces
the wrong process.

Verified: with an instance deliberately running, the guard reports stopping it
and the launch check then passes on a genuine cold start; all three packages
still pass the full dry run.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Aoa1nKWRrAbowz7Hfd3tgL
2026-08-10 07:18:35 +02:00
.github/workflows Let the gatelock workflows trigger on their own files 2026-08-03 18:36:47 +02:00
aur-publish aur-publish: make the launch check actually exercise a cold start 2026-08-10 07:18:35 +02:00
crdt_sync_dart Let a desktop wrapper provision the sync account, no UI required 2026-08-09 21:33:22 +02:00
crdt-sync Use dt.timezone.utc so the declared >=3.10 support is real 2026-08-09 19:04:14 +02:00
firebase crdt_sync: add a Firebase Realtime Database transport behind a RemoteStore seam 2026-08-03 18:14:25 +02:00
gatelock Cover the last branches of the viewport, the density scale and the keys 2026-08-03 16:20:11 +02:00
guard-lib feat: initial guard-lib - shared tamper-resistance primitives 2026-07-04 11:47:59 +02:00
scripts Stop the recovery tick stealing our own grab, and fix pre-commit for the monorepo 2026-07-26 15:08:41 +02:00
unified-design-system Make lock surfaces keyboard-operable and safe on a 768px screen 2026-07-30 16:01:15 +02:00
.gitignore Stop the recovery tick stealing our own grab, and fix pre-commit for the monorepo 2026-07-26 15:08:41 +02:00
LICENSE Root scaffold: README, LICENSE, per-subdirectory CI for utils monorepo 2026-07-10 13:02:20 +02:00
README.md Consolidate unified-design-system docs into this monorepo 2026-07-22 21:23:47 +02:00

utils

Shared libraries used across kuhyx's other projects. Each subdirectory is a formerly-standalone repo, folded in here with full commit history preserved (see each subdirectory's own git log for its pre-merge history).

crdt_sync_dart/

Dart/Flutter CRDT sync library (pub package name: crdt_sync, not published to pub.dev — consumed via a git dependency). Mirrors crdt-sync (below) module-for-module and test-for-test. Consumed by diet_guard's app, screen-locker's workout_app, wake_alarm's phone_app, and todo (whose notes are stored in the v0.2.0 LogStore).

Consume via:

dependencies:
  crdt_sync:
    git:
      url: https://github.com/kuhyx/utils
      ref: crdt_sync_dart-v0.2.0
      path: crdt_sync_dart

crdt-sync/

Python CRDT sync library (package: crdt_sync, not published to PyPI). Same design as crdt_sync_dart (HLC clocks, per-field LWW, sticky-delete tombstones). Consumed by diet-guard and screen-locker.

Consume via:

crdt-sync @ git+https://github.com/kuhyx/utils@crdt-sync-v0.2.0#subdirectory=crdt-sync

guard-lib/

Bash tamper-resistance primitives (guardctl: chattr + bind-mount + systemd watcher + pacman hooks). Not a package — installed by running guard-lib/install.sh as root, which copies files onto the system (/usr/local/bin, /usr/local/lib/guard-lib, systemd units, pacman hooks). Consumed by steam-backlog-enforcer (expects a guard-lib/install.sh sibling clone) and referenced by screen-locker.

gatelock/

Python lock-window + HMAC log-integrity backend (package: gatelock, not published to PyPI). Consumed via pip by screen-locker, diet-guard, and wake-alarm:

gatelock @ git+https://github.com/kuhyx/utils@gatelock-v0.1.0#subdirectory=gatelock

unified-design-system/

Not a package — the frozen design tokens (colors, spacing, type, radius, shadow policy) and per-stack (Flutter/web/Tkinter) implementation patterns that keep every one of kuhy's repos visually identical, plus annotated component references (components.html, button.html). Read unified-design-system/README.md and tokens.md before touching any theme/CSS/style file in any repo. The unified-design-system Claude Code skill is a thin pointer here, not a duplicate.