Go to file
Krzysztof kuhy Rudnicki cef72fbab0 syncyomi_guard: refuse a collapsed payload as the new good copy
TachiyomiSY 1.13.2 can report a restore as SUCCESS while writing almost
nothing, then sync that near-empty library up and replace the only good
copy. On 2026-08-09 a 14 MB payload holding 2182 manga became a 267 KB
stub, and the real library survived only as stale pages in the SQLite
write-ahead log.

The upstream bug is Kotlin in an APK and cannot be fixed here, so this
targets the fixable half: decode the payload, count what is actually in
it, and refuse to treat a collapse as normal drift. A pure is-it-zero
check would have caught this incident but not the harder case upstream
describes, where a restore keeps some entries and drops the rest, so the
threshold is proportional. Categories get their own rule because all
2182 manga survived the round trip and all 18 categories did not.

Adds the setup script and a runbook covering the WAL-page salvage used
to recover the library on the day.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YQLwdquDCNmWtvgi3Lk72J
2026-08-10 15:33:18 +02:00
.github Pin prettier, shfmt and zsh too, not just shellcheck 2026-08-04 21:07:49 +02:00
.hippo style: prettier format .hippo memory files 2026-05-28 07:05:24 +02:00
.vscode chore: archive 41 unmaintained directories to testsAndMisc-archive 2026-05-14 20:21:05 +02:00
billsplit billsplit: build a real APK by dropping file_picker for file_selector 2026-08-03 14:15:40 +02:00
bucket_catch bucket_catch: introduce a real design-token system, fix reversed gradients 2026-07-22 19:18:12 +02:00
docs syncyomi_guard: refuse a collapsed payload as the new good copy 2026-08-10 15:33:18 +02:00
focus_owner focus_owner: keep the unhide path reachable, never hide the enforcer 2026-08-10 15:33:18 +02:00
kcd2_dice_solver kcd2 dice solver: lock deploy_build.sh so two runs cannot publish half a bundle 2026-07-26 20:33:38 +02:00
linux_configuration syncyomi_guard: refuse a collapsed payload as the new good copy 2026-08-10 15:33:18 +02:00
meta Fail the build on any shellcheck finding; fix the 222 the old gate hid 2026-08-03 19:49:11 +02:00
phone_focus_mode app_icons: add a decision-tree glyph and register untools 2026-08-09 17:23:35 +02:00
python_pkg syncyomi_guard: refuse a collapsed payload as the new good copy 2026-08-10 15:33:18 +02:00
reverse_survivors reverse_survivors: difficulty tiers 2026-08-09 23:17:07 +02:00
third_party/agent-skills style(prettier): apply markdown/json formatting updates 2026-05-07 22:08:00 +02:00
.binary-allowlist Move billsplit Flutter app into the monorepo 2026-08-03 12:22:22 +02:00
.copilotignore chore: archive 41 unmaintained directories to testsAndMisc-archive 2026-05-14 20:21:05 +02:00
.fvmrc chore: consolidate root configs into meta/, drop unused C dir + split/pdfCentered/geo_data 2026-05-14 20:40:12 +02:00
.gitignore Move billsplit Flutter app into the monorepo 2026-08-03 12:22:22 +02:00
.pre-commit-config.yaml Prune 84 SearXNG engines; images category now sub-1s 2026-08-09 17:42:56 +02:00
.prettierignore Exempt the generated policy asset from prettier 2026-08-05 09:40:44 +02:00
.shellcheckrc Fail the build on any shellcheck finding; fix the 222 the old gate hid 2026-08-03 19:49:11 +02:00
CLAUDE.md Move billsplit Flutter app into the monorepo 2026-08-03 12:22:22 +02:00
DESIGN_AUDIT_TODO.md Format last three markdown files; cap billsplit's Android build memory 2026-08-03 13:25:48 +02:00
lint_python.sh chore: consolidate root configs into meta/, drop unused C dir + split/pdfCentered/geo_data 2026-05-14 20:40:12 +02:00
pyproject.toml chore: consolidate root configs into meta/, drop unused C dir + split/pdfCentered/geo_data 2026-05-14 20:40:12 +02:00
README.md Move billsplit Flutter app into the monorepo 2026-08-03 12:22:22 +02:00
requirements.txt chore: consolidate root configs into meta/, drop unused C dir + split/pdfCentered/geo_data 2026-05-14 20:40:12 +02:00
run.sh chore: consolidate root configs into meta/, drop unused C dir + split/pdfCentered/geo_data 2026-05-14 20:40:12 +02:00

testsAndMisc

A collection of personal projects, scripts, and experiments — from a GPS-based phone focus tool to Linux/Arch automation, with CI, linting, and pre-commit hooks across the board.

Highlights

Phone Focus Mode

Location-based app restriction for rooted Android. Automatically disables non-whitelisted apps within 500 m of home using ADB + Magisk. Features Haversine distance calculation, hysteresis to prevent toggling, fail-safe unlock, and state persistence. Bash, Android ADB.

Linux Configuration

Automated Arch Linux setup: fresh-install scripts, i3 window manager config, LaTeX environment, and system tests. Includes documentation and test result logging.

Scripts

Utility scripts for development workflows — build file validation, secret detection, and custom makepkg helpers.

Repository Layout

Path Description
python_pkg/ Python packages (each maintained subpackage lives here)
billsplit/ Receipt bill-splitting Flutter app — people, groups, per-item assignment, e-paragon import and xlsx export (Dart, 100 % line coverage gate)
linux_configuration/ Arch Linux setup, i3 config, system maintenance scripts
phone_focus_mode/ GPS-based Android focus enforcer
reverse_survivors/ Reverse Survivors — React/Vite game where you play the horde against an AI survivor (TypeScript, 100 % coverage gate)
scripts/ Workspace-level helper scripts and pre-commit hooks
docs/ Reference docs and historical reports
third_party/ Vendored upstream skills/agents
meta/ Repo-wide tooling: pyproject.toml, requirements.txt, .pre-commit-config.yaml, run.sh, lint_python.sh, .fvmrc. Symlinked into the repo root so tools that auto-discover from root keep working.

Archived / unmaintained projects live in the sibling repository testsAndMisc-archive.

Tooling

  • Python linting: Ruff with all rules enabled (see meta/pyproject.toml)
  • Dependencies: pip install -r meta/requirements.txt (combined runtime + dev)
  • CI: GitHub Actions — lint, build, and test on push
  • Testing: pytest (Python), custom shell-based test harness for scripts