Go to file
Krzysztof kuhy Rudnicki a7bccb34bb
Some checks are pending
crdt-sync pre-commit / pre-commit (push) Waiting to run
crdt-sync tests / test (3.10) (push) Waiting to run
crdt-sync tests / test (3.11) (push) Waiting to run
crdt-sync tests / test (3.12) (push) Waiting to run
file length / file-length (push) Waiting to run
palette drift / palette (push) Waiting to run
web_ui tests / test (push) Waiting to run
Cover tool/google_id_token.py at 100% branch
Second module of the tool/ coverage task. No network and no browser: the
callback server is replaced wholesale so consent resolves instantly, and
requests.post is mocked at the same boundary test_firebase_auth.py uses.

All six TokenError paths are covered, since each names a different
misconfiguration and the module docstring exists because they are easy to
mistake for one another -- notably the fixed-vs-free port distinction, where
a Web client matching redirect URIs exactly fails with redirect_uri_mismatch
before the account picker ever appears. Also asserts the server is closed on
the failure path, since a leaked listener makes the next run fail to bind.

Split across two files because the cap hook rejected the first attempt at 273
lines: the flow tests here, main()'s argument parsing and exit code in
_cli.py, which imports the shared fixture values rather than redeclaring them.
That is the gate doing its job on this session's own output.

Three things the tooling caught, all fixed rather than suppressed:

- S105/S106 match on the binding *name*, not the value, so any constant
  called SECRET/TOKEN/PASSPHRASE trips them however obviously fake it is.
  Renamed around the rule the way test_firebase_auth.py names _ID_1.
- mypy rejected the previous commit's log_message test for asserting on the
  return of a `-> None` function -- a tautology. Rewritten to make a real
  request and assert stderr stays empty, which is the only thing that
  distinguishes the silenced handler from the stock one.
- ruff pruned the imports that moved out during the split; verified it took
  only those, and that the suite is still green afterwards.

crdt_sync 268 -> 286 passed, still 100%. Both modules verified at 100% branch
individually; the config flip stays last.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CFSGeWxHPY5rHUGrPqhcmG
2026-08-22 16:32:08 +02:00
.github/workflows CI: fail the build on any file over 250 lines 2026-08-22 15:43:22 +02:00
aur-publish Split the two shell scripts and the gate's own config 2026-08-22 14:59:27 +02:00
crdt_sync_dart crdt_sync_dart: split four library files — package now under the cap 2026-08-22 15:36:03 +02:00
crdt-sync Cover tool/google_id_token.py at 100% branch 2026-08-22 16:32:08 +02:00
design_system Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
dopamine-ux Distribute dopamine-ux prompts into their target repos 2026-08-16 21:13:19 +02:00
file_length Split the two shell scripts and the gate's own config 2026-08-22 14:59:27 +02:00
firebase crdt_sync: add a Firebase Realtime Database transport behind a RemoteStore seam 2026-08-03 18:14:25 +02:00
gatelock Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
github_device_auth dart: split ten oversized test files by group 2026-08-22 14:54:35 +02:00
guard-lib Split the two shell scripts and the gate's own config 2026-08-22 14:59:27 +02:00
prompts Record tasks 1, 3 and 4 as done; only the coverage task remains 2026-08-22 16:23:08 +02:00
scripts Add shared 250-line file-length gate 2026-08-14 14:24:57 +02:00
sync_settings_ui Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
ts_core ts_core: a framework-free TypeScript utility package 2026-08-15 15:42:41 +02:00
unified-design-system Fix a dangling anchor left by the doc split 2026-08-22 16:03:20 +02:00
web_ui web_ui: commit the real tsc output so dist-fresh can pass 2026-08-22 16:19:09 +02:00
.gitignore Ignore Firebase CLI debug logs 2026-08-22 16:17:39 +02:00
.pre-commit-config.yaml Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
LICENSE Root scaffold: README, LICENSE, per-subdirectory CI for utils monorepo 2026-07-10 13:02:20 +02:00
README.md Add sync_settings_ui: shared Firebase-only sync settings screen 2026-08-12 23:10:17 +02:00
refactor_claude_todo.md Mark refactor_claude_todo as done 2026-08-22 15:59:17 +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.10.0
      path: crdt_sync_dart

sync_settings_ui/

Shared Flutter "Sync settings" screen (pub package name: sync_settings_ui, not published to pub.dev). Firebase sync (primary) plus an optional local backup slot — no GitHub mirror UI. Pure UI + a FirebaseSyncController service layer over injected closures (keystore/Google-plugin access stays in each consuming app, exactly as before this package existed). Consumed by todo, diet_guard_app, workout_app, wake_alarm/phone_app, and home_inventory's dedicated "Sync settings" route.

Consume via:

dependencies:
  sync_settings_ui:
    git:
      url: https://github.com/kuhyx/utils
      ref: sync_settings_ui-v0.1.0
      path: sync_settings_ui

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.