testsAndMisc/docs/superpowers/evidence
Krzysztof kuhy Rudnicki 6836a32b43
Some checks are pending
Pre-commit checks / pre-commit (push) Waiting to run
Shell tests / shell-tests (push) Waiting to run
Shell tests / arch-tests (push) Waiting to run
Let the app set its own home, and lock VPN configuration
Two gaps left from the device owner work.

The geofence had no way to be provisioned. push_home_location.sh stages
the file through `run-as`, which returns "package not debuggable" on the
release build device owner requires, and making the build debuggable to
fix that would hand anyone with adb the ability to edit this app's state
-- the bypass the whole design exists to close. So the app writes its
own filesDir instead, from a button.

Deliberately not an exported intent: anything that can set home from
outside the app can set it somewhere else, and the geofence would then
report AWAY forever with enforcement off. The coordinates are never
logged either, since that is a home address and logcat is readable by
anyone with adb.

DISALLOW_CONFIG_VPN is now applied from the app, after the filter was
confirmed working rather than before -- locking VPN configuration over a
broken setup would pin the broken state in place. The open question was
whether it also freezes RethinkDNS's own settings; it does not. Its
blocklist selection was changed under the restriction without trouble,
which is the answer that matters, because the alternative meant every
domain rule had to be final before locking.

The status page gained a Geofence row. "no home set - enforcing
everywhere" is a large behavioural difference from a working geofence
and was previously visible only by inspecting logcat.

The widget tests caught a real bug rather than a test-only one: the two
new buttons overflowed the column by 4px, and the control that must
never be clipped off the bottom of the screen is "Release device owner".
The body scrolls now.

Verified after a reboot: youtube hidden, all 14 youtube domains at
127.0.0.1, google/gmail/play resolving normally, no_config_vpn still
enforced, uninstall still refused. The geofence itself stays untested on
hardware until the phone has a GPS fix to record.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014DqEd1uUhyT52KjaNeLanC
2026-08-10 22:17:31 +02:00
..
agent-automation-bootstrap.json style(prettier): apply markdown/json formatting updates 2026-05-07 22:08:00 +02:00
always-blocked-geofence-exempt-2026-08-10.json Take the geofence out of YouTube's reach, and pin infakt on 2026-08-10 21:28:25 +02:00
always-on-vpn-network-block-2026-08-10.json Pin RethinkDNS as always-on VPN, the layer that reaches every app 2026-08-10 21:40:04 +02:00
android-ui-element-driver-2026-08-10.json Add android_ui: drive Android apps by element, never by coordinates 2026-08-10 17:01:28 +02:00
app-icons-anvil-octoforge-2026-08-09.json app_icons: add the anvil glyph and register octoforge 2026-08-09 15:24:09 +02:00
app-icons-generator-2026-07-19.json Add shared launcher-icon generator for the Flutter apps 2026-07-19 16:55:48 +02:00
app-icons-home-inventory-linux-2026-07-27.json app_icons: home_inventory has a Linux desktop target 2026-07-27 11:26:26 +02:00
app-icons-pubspec-background-sync-2026-07-21.json app_icons: auto-sync pubspec.yaml's adaptive_icon_background 2026-07-21 21:38:22 +02:00
app-icons-track-bars-kuhylog-2026-08-09.json app_icons: add the kuhylog app and its track-bars glyph 2026-08-09 15:26:55 +02:00
app-icons-warm-palette-2026-07-21.json app_icons: warm-tint the shared icon family palette 2026-07-21 21:20:41 +02:00
archive-unmaintained-2026-01.json chore: archive 41 unmaintained directories to testsAndMisc-archive 2026-05-14 20:21:05 +02:00
archwiki-rag-corpus-2026-07-19.json archwiki_rag: offline semantic search over the Arch Wiki 2026-08-10 15:33:18 +02:00
billsplit-apk-buildable-2026-08-03.json billsplit: build a real APK by dropping file_picker for file_selector 2026-08-03 14:15:40 +02:00
billsplit-move-2026-08-03.json Move billsplit Flutter app into the monorepo 2026-08-03 12:22:22 +02:00
boot-repair-esp-recovery-20260730.json Add boot-repair: offline recovery for a stale EFI System Partition 2026-07-30 12:48:56 +02:00
brother-printer-file-length-split-2026-07-17.json fix(brother-printer): split oversized files, fix order-dependent entry test 2026-07-17 15:06:25 +02:00
brother-printer-status-accuracy-2026-07-17.json fix(brother-printer): report the truth, not invented status codes 2026-07-17 14:49:23 +02:00
bucket-catch-2026-06-26.json Add evidence artifact for the bucket_catch app 2026-07-11 00:16:35 +02:00
bucket-catch-2026-06-27.json Add bucket_catch: osu!catch browser game with 100% frontend test coverage 2026-06-27 12:21:35 +02:00
bucket-catch-design-tokens-2026-07-22.json bucket_catch: introduce a real design-token system, fix reversed gradients 2026-07-22 19:18:12 +02:00
byox-ladder-2026-07-17.json feat(byox_ladder): add build-your-own-x difficulty ladder generator 2026-07-17 18:31:21 +02:00
checker-false-errors-2026-07-17.json fix(checker): stop reporting healthy services as errors; drop thesis_tracker 2026-07-17 08:32:55 +02:00
ci-mirror-gate-2026-07-11.json Add CI-mirror pre-push gate + requirements-sync check (monorepo variant) 2026-07-11 18:06:17 +02:00
ci-pipeline-and-lint-backlog-fix-2026-06-22.json Fix CI pipeline and clear the lint backlog it had been hiding 2026-06-22 07:52:44 +02:00
cleanup-meta-folder-2026-05.json chore: consolidate root configs into meta/, drop unused C dir + split/pdfCentered/geo_data 2026-05-14 20:40:12 +02:00
cloud-gallery-2026-07-12.json cloud_gallery: React media-gallery SPA served by dufs (Phase 3) 2026-07-12 06:05:52 +02:00
cloud-gallery-coverage-lint-deploy-2026-07-12.json cloud_gallery: fix build, 100% coverage, aggressive lint; whitelist dufs_client 2026-07-12 17:29:39 +02:00
code-tutor-2026-07-10.json Add code_tutor: interactive codebase-learning CLI 2026-07-11 00:15:46 +02:00
code-tutor-test-version-fix-2026-07-11.json Make code_tutor OSError fingerprint test Python-version-robust 2026-07-11 00:22:57 +02:00
device-owner-enforcement-live-2026-08-10.json Make the enforcer real: block YouTube, and refuse to be uninstalled 2026-08-10 21:12:53 +02:00
diet-guard-app-focus-whitelist-2026-06-22.json style: prettier format pre-existing evidence JSON 2026-06-27 12:25:13 +02:00
diet-guard-app-night-whitelist-2026-07-11.json phone_focus_mode: night-whitelist com.kuhy.diet_guard_app 2026-07-11 23:58:22 +02:00
diet-guard-gatelock-migration-2026-06-21.json Migrate diet_guard to the shared gatelock backend 2026-06-21 18:16:45 +02:00
diet-guard-meal-and-trigger-fix-2026-06-10.json feat(diet_guard): add meal-logging screen-lock gate with trigger fix 2026-06-10 22:32:39 +02:00
diet-guard-test-isolation-fix-2026-06-22.json Fix non-hermetic diet_guard gate tests depending on a real X display 2026-06-22 08:12:02 +02:00
digital-wellbeing-bypass-hardening-2026-05.json security: harden digital-wellbeing bypass vectors 2026-05-16 15:41:40 +02:00
dns-filtering-parked-2026-08-05.json Park phone DNS filtering: Private DNS fails closed, so the PC cannot host it 2026-08-05 10:05:16 +02:00
dot-resolver-and-policy-asset-2026-08-05.json Serve the blocklist over DoT and hand the policy to the app as an asset 2026-08-05 09:36:11 +02:00
epopeja-karta-icon-2026-08-03.json app_icons: finish the epopeja_karta entry; whitelist it on the phone 2026-08-03 12:41:13 +02:00
extract-dufs-cloud-repo-2026-07-12.json Extract dufs cloud (web + app + scripts) to github.com/kuhyx/dufs-cloud 2026-07-12 18:38:37 +02:00
extract-inline-python-2026-06-06.json refactor: extract all inline Python from shell scripts into proper .py files 2026-06-06 10:31:48 +02:00
extract-session-autopsy-2026-07-26.json Point the hook test at the extracted session_autopsy, add the artifacts 2026-07-26 20:50:44 +02:00
feedback-appimage-install-2026-08-10.json feedback: local-only pacman package build, and ignore build artifacts 2026-08-10 15:33:18 +02:00
file-length-split-2026-06-14.json style: apply prettier formatting to evidence JSON and dwm/gaming READMEs 2026-06-14 07:22:04 +02:00
file-length-test-venv-blindspot-2026-07-25.json python_pkg: the file-length test was blind to its own CI venv 2026-07-25 16:32:32 +02:00
fix-hosts-guard-silent-aborts-2026-07-17.json fix(hosts-guard): stop setup aborting silently, so the guards actually enable 2026-07-17 08:25:51 +02:00
fix-install-failures.json style: prettier formatting for evidence JSON files 2026-05-16 15:46:33 +02:00
fix-midnight-shutdown-heredoc-2026-06-22.json fix: shutdown timer crashing on every fire due to heredoc escaping bug 2026-06-22 07:09:55 +02:00
fix-remaining-wellbeing-services-2026-07-17.json fix(wellbeing): clear every remaining error/warning; drop thesis_tracker 2026-07-17 08:58:43 +02:00
flag-system-sweep-2026-08-10.json Let the sweep hide preinstalled apps, one named package at a time 2026-08-10 20:24:31 +02:00
flutter-git-env-wrapper-2026-07-26.json Fix: stop the Flutter SDK reading your own repo as itself inside git hooks 2026-07-26 15:39:33 +02:00
focus-mode-daemon-file-length-2026-07-17.json fix(wellbeing): split focus_mode_daemon to satisfy the 500-line limit 2026-07-17 17:36:30 +02:00
focus-mode-installer-symlink-2026-07-17.json fix(wellbeing): symlink focus-mode-daemon so edits actually deploy 2026-07-17 14:02:33 +02:00
focus-mode-zombie-steam-2026-07-17.json fix(wellbeing): stop focus mode reading zombie processes as running Steam 2026-07-17 13:55:24 +02:00
focus-owner-decision-wiring-2026-08-09.json Wire the enforcement decision to the DPM hide call 2026-08-09 22:00:52 +02:00
focus-owner-enforcement-engine-2026-08-09.json Prove DPM app-hiding survives a reboot; build the enforcement decision layer 2026-08-09 21:36:26 +02:00
focus-owner-location-and-workout-2026-08-09.json Provision home coordinates out of git; layer the workout signal; drop the test hook 2026-08-09 21:42:20 +02:00
focus-owner-release-signing-2026-08-10.json Make the enforcer real: block YouTube, and refuse to be uninstalled 2026-08-10 21:12:53 +02:00
focus-owner-restore-path-2026-08-09.json focus_owner: keep the unhide path reachable, never hide the enforcer 2026-08-10 15:33:18 +02:00
focus-owner-service-layer-2026-08-09.json Run enforcement from exact alarms, and re-arm it before first unlock 2026-08-09 21:50:58 +02:00
guard-lib-migration-2026-07-04.json feat: migrate hosts-guard and shutdown-schedule-guard to guard-lib 2026-07-04 11:54:08 +02:00
habit-stack-icon-2026-07-20.json app_icons: register habit_stack with a new chain-link glyph; whitelist it 2026-07-20 11:09:23 +02:00
home-inventory-icon-and-whitelist-2026-07-27.json app_icons: add home_inventory storage-box glyph; whitelist it on the phone 2026-07-27 07:35:55 +02:00
i3-idle-inhibitor-path-2026-07-25.json fix(i3): repair the dead idle-inhibitor autostart and make it a singleton 2026-07-25 19:57:57 +02:00
i3bar-claude-usage-icons-cleanup-2026-08-10.json i3blocks: add Claude usage block, fix icon rendering, drop dead blocks 2026-08-10 15:14:34 +02:00
i3blocks-claude-usage-ci-jq-2026-08-10.json ci: install jq for the shell tests, and probe for it explicitly 2026-08-10 15:40:42 +02:00
idle-inhibit-zero-fork-20260604.json perf(idle-off): replace controller-watch fork storm with a single systemd-inhibit 2026-06-04 18:14:07 +02:00
import-media-archives-2026-07-12.json import_media_archives.sh: fold Downloads media_archive zips into the cloud 2026-07-12 17:43:23 +02:00
infakt-2fa-wipe-safety-2026-08-09.json inFakt is SMS-only 2FA, so the wipe cannot strand the account 2026-08-10 20:04:06 +02:00
install-core-system-cleanup.json Add install_core_system.sh; remove pc_startup and thesis_tracker 2026-05-15 01:13:28 +02:00
kcd2-balatro-joker-face-confirmed-2026-07-25.json kcd2_dice_solver: Balatro's joker replaces the one, confirmed 2026-07-25 16:33:08 +02:00
kcd2-balatro-single-joker-face-2026-07-25.json kcd2_dice_solver: Balatro's die has one joker face, not six 2026-07-25 16:14:04 +02:00
kcd2-dice-inventory-io-2026-07-26.json kcd2 dice solver: serve it at dice.kuhy.duckdns.org, fit all 43 dice, move inventories between devices 2026-07-26 20:01:21 +02:00
kcd2-dice-solver-deploy-responsive-io-2026-07-26.json kcd2 dice solver: lock deploy_build.sh so two runs cannot publish half a bundle 2026-07-26 20:33:38 +02:00
kcd2-dice-solver-run-sh-2026-07-21.json Apply prettier formatting to new kcd2_dice_solver files 2026-07-21 18:17:45 +02:00
kcd2-dice-solver-warm-palette-2026-07-22.json chore: fix prettier formatting on the kcd2 evidence JSON 2026-07-22 18:05:04 +02:00
keepass-multidevice-sync-2026-07-12.json linux_configuration: unified multi-device KeePass sync over dufs 2026-07-12 05:00:27 +02:00
linux-config-cleanup-2026-05.json style: prettier formatting fixes 2026-05-15 01:15:52 +02:00
linux-config-polling-hardening-2026-05-14.json fix(linux_configuration): harden polling/runtime scripts and add tests 2026-05-14 19:55:42 +02:00
linux-config-runtime-hardening-2026-05-08.json Harden runtime script deployment and enforce installer safety 2026-05-08 17:44:22 +02:00
linux-config-scripts-split-2026-05.json refactor(linux_configuration/scripts): split all scripts into single_use/ and periodic_background/ 2026-05-15 00:32:35 +02:00
loud-maintenance-failures-2026-07-17.json fix(maintenance): make repair failures loud instead of silently exiting 0 2026-07-17 08:17:51 +02:00
makepkg-stale-lock-wrapper-2026-07-16.json fix(pacman): wrap makepkg so an orphaned db.lck can't hang makepkg -i 2026-07-17 07:46:31 +02:00
mandatory-hooks-2026-08-03.json fix(hooks): make git hooks and their toolchain mandatory and fail-closed 2026-08-03 11:09:11 +02:00
media-cloud-sync-2026-07-12.json linux_configuration: move Downloads media into the dufs cloud (browsable) 2026-07-12 05:19:31 +02:00
morning-routine-unified-2026-05-25.json morning_routine: unified alarm+lock orchestrator, fix alarm audio/reliability 2026-05-25 18:55:27 +02:00
move-install-core-system.json style: prettier formatting for evidence JSON files 2026-05-16 15:46:33 +02:00
mtk-root-toolkit-2026-08-04.json mtk_root: build the rooting toolkit before the phone lands 2026-08-04 20:38:44 +02:00
network-diagnostics-2026-07-19.json Add network diagnostics: duty-cycle and line-speed probes 2026-07-19 18:46:18 +02:00
night-lockdown-2026-07-17.json feat(shutdown): night lockdown instead of power-off, so servers stay up 2026-07-17 09:09:54 +02:00
night-lockdown-drop-morning-alarm-2026-07-20.json night-lockdown: stop firing the morning alarm on a fixed hour 2026-07-20 08:50:45 +02:00
night-lockdown-dynamic-wake-floor-2026-07-18.json fix(night-lockdown): schedule a dynamic wake-floor trigger for any shutdown time 2026-07-18 06:51:26 +02:00
night-lockdown-power-save-and-dnsmasq-watchdog-2026-07-23.json Add overnight power-save to night-lockdown; harden dnsmasq with a watchdog 2026-07-23 11:58:37 +02:00
night-lockdown-wake-fixes-2026-07-18.json fix(night-lockdown): close console-blank gap, recover DP link, floor wake alarm 2026-07-18 06:44:17 +02:00
pacman-hook-stall-2026-08-03.json Diagnose the pacman first-hook stall; fix the drift that hid a stale wrapper 2026-08-03 15:15:34 +02:00
pc-polling-runtime-validation-2026-05-10.json Optimize polling/runtime scripts, add regressions, and sync verification artifacts 2026-05-10 02:58:11 +02:00
persistent-adb-2026-08-03.json phone_focus_mode: reach the phone over adb without touching it 2026-08-03 13:33:45 +02:00
personal-website-2026-07-13.json Add personal website deploy + move Gitea to a subdomain 2026-07-13 19:10:48 +02:00
phone-backup-and-ublock-2026-08-09.json Back up what adb can actually reach, and block YouTube in Firefox too 2026-08-10 19:43:28 +02:00
phone-blackview-recents-fix-2026-05-31.json fix(phone): restore Blackview launcher for recents gesture 2026-05-31 16:27:08 +02:00
phone-curfew-demo-net-stopgap-2026-06-13.json feat(phone_focus_mode): add on-demand demo curfew + netd-resistant net stopgap 2026-06-13 22:01:32 +02:00
phone-focus-cpu-hardening-2026-07-10.json Harden phone_focus_mode CPU use; whitelist wake_alarm_sync 2026-07-11 00:16:11 +02:00
phone-focus-mode-fresh-install-2026-05-31.json feat(phone): automate BL-9000 fresh-phone recovery after factory reset 2026-05-31 16:22:49 +02:00
phone-focus-mode-netd-cache-fix-2026-05.json phone_focus_mode: fix YouTube DNS blocking via netd cache restart 2026-05-22 15:58:36 +02:00
phone-focus-whitelist-foss-and-run-apps-2026-07-11.json phone_focus_mode: whitelist run-with-music apps + FOSS stock-app replacements 2026-07-11 22:39:36 +02:00
phone-night-curfew-2026-06-13.json feat(phone_focus_mode): enable curfew per-UID network allow-list; build companion button 2026-06-13 16:58:49 +02:00
pin-all-system-tools-2026-08-04.json Pin prettier, shfmt and zsh too, not just shellcheck 2026-08-04 21:07:49 +02:00
pin-shellcheck-version-2026-08-04.json Pin shellcheck in CI so local and CI agree on what a finding is 2026-08-04 21:01:01 +02:00
pre-commit-default-stages-2026-05-14.json perf(pre-commit): default_stages=[pre-commit] so push only runs pytest+prettier 2026-05-14 21:21:40 +02:00
pre-commit-prettier-isolated-scope-2026-05-14.json perf(pre-commit): run prettier in its own systemd-run scope 2026-05-14 21:12:32 +02:00
pre-commit-prettier-scope-fix-2026-05-14.json perf(pre-commit): tighten prettier scope to fit in pre-push cgroup 2026-05-14 21:09:14 +02:00
pre-commit-pytest-batch-2026-05-14.json perf(pre-commit): batch+parallelize pytest on commit; kill 15s sleeps in steam_backlog_enforcer tests 2026-05-14 21:52:52 +02:00
pre-commit-pytest-scope-fix-2026-05-14.json fix(pre-commit): skip deleted/missing python_pkg subpackages 2026-05-14 21:05:49 +02:00
pre-commit-stage-rebalance-2026-05-14.json perf(pre-commit): move mypy/pylint/bandit from pre-push to pre-commit 2026-05-14 21:20:21 +02:00
prettier-and-gradle-caps-2026-08-03.json Format last three markdown files; cap billsplit's Android build memory 2026-08-03 13:25:48 +02:00
protondb-coverage-fix.json fix: remove dead code in unplayable_reason; add coverage for playable path 2026-05-08 20:35:55 +02:00
protondb-gold-silver-fix.json fix: accept ProtonDB gold+silver combinations; add explicit skip reasons 2026-05-08 20:31:16 +02:00
pylint10-r0801-schema-validation-2026-06.json feat: split oversized modules for 500-line limit, fix kasa coverage gap 2026-06-14 07:19:37 +02:00
pytest-xdist-coverage-flake-fix-2026-06-22.json Drop -n 4 xdist parallelism from the pytest-coverage pre-commit hook 2026-06-22 08:29:54 +02:00
remove-build-your-x-2026-07-17.json chore: remove byox_ladder — extracted to its own repo 2026-07-17 20:06:14 +02:00
remove-diet-guard-2026-06-22.json Remove diet_guard: extracted to its own repo (kuhyx/diet-guard) 2026-06-22 12:22:41 +02:00
remove-focus-mode-daemon-2026-07-19.json remove(digital-wellbeing): delete unusable focus-mode daemon entirely 2026-07-19 13:15:04 +02:00
remove-hosts-script-self-chattr-2026-07-16.json fix(hosts): stop chattr +i'ing install.sh and generate_hosts_file.sh sources 2026-07-17 08:06:46 +02:00
remove-screen-locker-2026-05-28.json chore: remove screen_locker — extracted to own repo 2026-05-28 07:44:14 +02:00
remove-screen-replay-2026-06-06.json remove: uninstall unused ffmpeg screen-replay feature 2026-06-06 10:44:36 +02:00
remove-setup-script-self-chattr-2026-07-16.json fix(shutdown): stop chattr +i'ing this script's own git-tracked source 2026-07-17 07:55:07 +02:00
remove-steam-backlog-enforcer-2026-05-28.json chore: remove steam_backlog_enforcer — extracted to own repo 2026-05-28 07:27:32 +02:00
remove-wake-alarm-2026-06-22.json Remove wake_alarm (extracted to kuhyx/wake-alarm) and fix the orchestrator 2026-06-22 12:47:06 +02:00
requirements-sync-foreign-imports-2026-07-19.json requirements-sync: map bs4 and exempt foreign-runtime imports 2026-07-19 18:58:35 +02:00
restore-apps-after-wipe-2026-08-10.json Make the enforcer real: block YouTube, and refuse to be uninstalled 2026-08-10 21:12:53 +02:00
reverse-survivors-2026-08-03.json feat(reverse_survivors): migrate Reverse Survivors game into the monorepo 2026-08-03 10:45:12 +02:00
reverse-survivors-difficulty-tiers-2026-08-09.json reverse_survivors: difficulty tiers 2026-08-09 23:17:07 +02:00
reverse-survivors-director-powers-2026-08-09.json reverse_survivors: director powers — ambush, frenzy, rift 2026-08-09 23:10:38 +02:00
reverse-survivors-new-enemies-2026-08-09.json reverse_survivors: add splitter, artillery, warden and the leech boss 2026-08-09 23:06:20 +02:00
reverse-survivors-status-effects-2026-08-09.json reverse_survivors: survivor status effects (slow, suppress, bleed) 2026-08-09 23:08:51 +02:00
root-cleanup-2026-05-14.json chore: spring-clean repo root (move docs, relocate batch3 script, drop stale outputs) 2026-05-14 20:01:09 +02:00
run-sh-wrapper-smoke.json style(prettier): apply markdown/json formatting updates 2026-05-07 22:08:00 +02:00
screen-locker-scheduled-skip-2026-05.json screen_locker: add scheduled-skip date mechanism + hibernate on alarm nights 2026-05-22 16:00:15 +02:00
screen-locker-sick-tracker-2026-05-14.json feat(screen-locker): add sick-day tracker and commitment debt flow 2026-05-14 19:52:15 +02:00
screen-locker-weekly-check-2026-05-28.json screen_locker: add weekly check feature with UI integration 2026-05-28 07:04:18 +02:00
security-hardening-guard-lib-units-2026-07-19.json security-hardening: check guard-lib units, not the retired ones 2026-07-19 19:58:32 +02:00
security-hardening-shutdown-guard-2026-07-19.json security-hardening: recognise the guard-lib shutdown guard 2026-07-19 20:09:24 +02:00
self-hosted-gitea-2026-07-04.json Add self-hosted Gitea deployment, mirroring all GitHub repos publicly 2026-07-04 07:45:00 +02:00
session-autopsy-badge-and-aliases-2026-07-25.json session_autopsy: badge counts only significant candidates; zero-token aliases 2026-07-25 18:05:49 +02:00
session-autopsy-drop-explain-diff-2026-07-25.json session_autopsy: handled candidates leave the nudge; drop explain-diff 2026-07-25 18:12:38 +02:00
session-autopsy-hook-mutation-gate-2026-07-25.json Make the hook tests' non-vacuity re-verifiable, and gate it 2026-07-25 17:37:34 +02:00
session-autopsy-hook-tests-2026-07-25.json session_autopsy: test the hooks, the untested half of the analyzer 2026-07-25 17:27:30 +02:00
session-autopsy-package-2026-07-25.json python_pkg: track session_autopsy, finishing its interrupted refactor 2026-07-25 16:56:43 +02:00
session-autopsy-turn-efficiency-2026-07-26.json session-autopsy: measure turn efficiency, the dominant token cost 2026-07-26 19:29:25 +02:00
set-home-and-vpn-lock-2026-08-10.json Let the app set its own home, and lock VPN configuration 2026-08-10 22:17:31 +02:00
setup-dns-blocker-2026-07-10.json feat: add Pi-hole-like LAN DNS blocking served from the PC (dnsmasq) 2026-07-10 19:02:46 +02:00
setup-dufs-cloud-2026-07-12.json linux_configuration: self-hosted dufs cloud storage + KeePass WebDAV auto-sync 2026-07-12 03:40:54 +02:00
setup-local-llm-2026-06-27.json Add local-LLM setup script (ollama-cuda + qwen3 + Open WebUI) 2026-07-11 00:16:24 +02:00
setup-midnight-shutdown-violation-checks-disabled.json fix(digital-wellbeing): disable schedule leniency violation checks 2026-05-07 22:06:34 +02:00
setup-searxng-2026-08-09.json Fix engine pruning: disabled -> inactive (they were still running) 2026-08-09 17:56:59 +02:00
setup-syncyomi-2026-07-13.json Add setup_syncyomi.sh: self-hosted SyncYomi manga sync 2026-07-13 17:20:02 +02:00
setup-wireguard-ssh-2026-06-19.json feat: add self-hosted WireGuard+SSH remote access from Android, across networks 2026-06-21 20:07:13 +02:00
shell-tests-arch-container-2026-07-19.json Run Arch-only shell tests in a container; harden worktree stubbing 2026-07-19 19:27:36 +02:00
shell-tests-ci-2026-07-19.json Run shell tests in CI and repair three broken by a reorg 2026-07-19 19:06:23 +02:00
shell-tests-complete-coverage-2026-07-19.json Run all 14 shell tests in CI 2026-07-19 19:39:28 +02:00
shell-tests-stale-assertions-2026-07-19.json Repair two stale shell tests; CI now runs all six 2026-07-19 19:13:51 +02:00
shellcheck-ci-green-2026-08-04.json Fix the 11 shellcheck findings that kept CI red since b83ce5d 2026-08-04 20:55:02 +02:00
shellcheck-strict-gate-2026-08-03.json Fail the build on any shellcheck finding; fix the 222 the old gate hid 2026-08-03 19:49:11 +02:00
shutdown-override-i3blocks-sync-2026-07-10.json feat(digital-wellbeing): time-boxed shutdown overrides + drift-proof i3blocks deploy 2026-07-10 21:57:05 +02:00
stats-hltb-fixes-2026-05-28.json steam_backlog_enforcer: fix stats command — show real Rush/Leisure/Worst data 2026-05-28 07:02:48 +02:00
steam-backlog-cache-behavior-fix-2026-05-08.json steam_backlog_enforcer: reduce repeated cache refetches 2026-05-08 15:13:25 +02:00
steam-backlog-done-install-retry-2026-05-08.json steam_backlog_enforcer: retry install after library hide restart 2026-05-08 14:56:46 +02:00
steam-backlog-finished-only-next-pick-2026-05.json steam_backlog_enforcer: only prompt next pick after game is finished 2026-05-23 21:19:44 +02:00
steam-backlog-module-split-2026-05.json Split modules, fix tests, fix pre-commit batching 2026-05-22 22:48:28 +02:00
steam-backlog-protected-ids-2026-05-14.json feat(steam-backlog): protect four additional Steam app IDs 2026-05-14 19:58:40 +02:00
steam-backlog-whitelist-hardening-2026-05.json feat(steam_backlog_enforcer): harden whitelist against circumvention 2026-05-17 20:44:05 +02:00
steam-library-hide-fix-2026-05-17.json steam_backlog_enforcer: fix library_hider crash on invalid AppIDs + improve HLTB hour extraction 2026-05-22 15:59:18 +02:00
sync-tests-fix-coverage-2026-05.json fix: sync test paths, drop stale assertions, fix coverage gap 2026-05-16 15:46:02 +02:00
syncyomi-library-recovery-2026-08-09.json syncyomi_guard: refuse a collapsed payload as the new good copy 2026-08-10 15:33:18 +02:00
template.json style(prettier): apply markdown/json formatting updates 2026-05-07 22:08:00 +02:00
tether-enforcer-hotspot-bypass-2026-07-13.json phone_focus_mode: block hotspot/tethering to close the second-phone bypass 2026-07-13 10:48:59 +02:00
thorium-crash-logging-2026-08-09.json Log why Chromium browsers die; whitelist librewolf 2026-08-09 22:27:16 +02:00
todo-night-whitelist-2026-07-11.json phone_focus_mode: night-whitelist dev.kuhy.todo 2026-07-11 23:32:57 +02:00
unrooted-focus-mode-policy-and-owner-app-2026-08-05.json Make focus policy and blocklist usable without root; fix workout CDN unblock 2026-08-05 09:15:02 +02:00
untools-app-icon-2026-08-09.json app_icons: add a decision-tree glyph and register untools 2026-08-09 17:23:35 +02:00
usage-report-hz-cpu-fix-20260604.json fix(usage_report): stop charging atop's HZ field as CPU; bundle since-last-report mode 2026-06-04 18:13:47 +02:00
vendor-agent-skills-import.json chore(third_party): vendor agent-skills snapshot 2026-05-07 22:06:00 +02:00
wake-alarm-gatelock-migration-2026-06-22.json Migrate wake_alarm to the shared gatelock backend 2026-06-22 07:33:49 +02:00
wake-alarm-hibernate-2026-05.json wake_alarm + midnight_shutdown: hibernate on alarm nights instead of poweroff 2026-05-22 16:01:04 +02:00
wake-alarm-loudness-typeable-2026-05.json wake_alarm: louder + typeable + multi-fan 2026-05-24 16:20:34 +02:00
wake-alarm-plug-fans-warnings-2026-05.json wake_alarm: Tapo P110 plug control, fan ramp via sudo, loud warnings 2026-05-23 19:51:26 +02:00
wake-alarm-refactor-2026-05-30.json style: prettier format CLAUDE.md and evidence JSON 2026-05-30 22:13:54 +02:00
wake-alarm-restore-display-test-gap-2026-06-22.json Fix the real cause of the wake_alarm CI coverage gap 2026-06-22 09:14:29 +02:00
wsg-grabber-2026-07-27.json wsg_grabber: scrape /wsg/, download every new video, triage with keep/pass 2026-07-27 14:55:30 +02:00
youtube-block-unrooted-2026-08-09.json Block YouTube on the unrooted Pixel, and trust more than one phone 2026-08-10 19:16:01 +02:00