signal-bot/scripts
Krzysztof kuhy Rudnicki a24d0d5905
Some checks are pending
CI / check (push) Waiting to run
CI / web (push) Waiting to run
feat: one page to manage the bot, and the tagger folded into it
./web.sh serves health, the configuration and the photo album on
127.0.0.1:8140 -- the port tool/tagger.py vacates. React 19, Vite 8,
TypeScript 6.0.3, ESLint 10 with strictTypeChecked + stylisticTypeChecked +
unicorn + sonarjs + perfectionist, Vitest 4 at 100% on all four metrics.

No coverage exclude list, including for main.tsx. This repository treats a
coverage omit as a suppression, and "the DOM bootstrap is awkward to assert"
is the same sentence as "this code is untested" -- so the bootstrap is a shim
thin enough to test in jsdom, and the album view holds its file list apart
from the album so the update path stopped carrying a "what if it is null"
branch that cannot happen. An untestable branch is an untested one.

TypeScript stays at 6.0.3: typescript-eslint 8.68.0 declares
typescript >=4.8.4 <6.1.0, and the fleet-wide allowlist entry says the
compiler waits for the linter. The freshness gate then caught two pins the
reference repo was carrying stale -- eslint-plugin-unicorn 73 -> 74 and a
floating node-version: "24" in CI -- both bumped rather than allowlisted.

Traps the gates found, all of them real:
- .gitignore has a bare lib/, which matches at any depth, so web/src/lib/
  would have been silently untracked. The source lives in src/api/.
- CI's shellcheck glob was `run.sh scripts/*.sh`, so tag.sh was unlinted in
  CI for its whole life and web.sh would have inherited that. Now ./*.sh.
- tsconfig.json is strict JSON, not JSONC: check-json is generic and
  tsconfig being commentable is a convention, not a requirement.
- The personal-data gate refused an invented phone number in a test, which
  is exactly what it is for.

The album's warning that names a command moved with the command, and every
path that pointed at tool/tagger.py now points at ./web.sh. The historical
mentions stay: they explain why the code is shaped as it is.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01416TegJ3sa8xL5qGGgrygP
2026-08-31 14:54:49 +02:00
..
check_coverage.sh feat: rewrite the bot so it runs, and gate it like the other repos 2026-08-29 13:05:42 +02:00
check_dependency_freshness.sh feat: rewrite the bot so it runs, and gate it like the other repos 2026-08-29 13:05:42 +02:00
check_file_length.sh feat: rewrite the bot so it runs, and gate it like the other repos 2026-08-29 13:05:42 +02:00
check_md_naming.sh feat: rewrite the bot so it runs, and gate it like the other repos 2026-08-29 13:05:42 +02:00
check_no_binaries.sh feat: block binaries from a public repo, and write down the real attachment frame 2026-08-30 19:32:41 +02:00
check_personal_data.py feat: refuse to commit personal data, learned from outside the repository 2026-08-30 23:28:29 +02:00
check_personal_data.sh feat: refuse to commit personal data, learned from outside the repository 2026-08-30 23:28:29 +02:00
cold_start.sh fix: a signal-api that is not up yet no longer kills the bot at boot 2026-08-30 15:23:42 +02:00
e2e.sh feat: add a photo to the album from the chat, tagged, stripped and verified 2026-08-31 11:20:00 +02:00
ensure_venv.sh fix: the tagger sets up its own venv instead of failing on a missing one 2026-08-31 13:28:49 +02:00
install_service.sh feat: one page to manage the bot, and the tagger folded into it 2026-08-31 14:54:49 +02:00
lib_signal.sh feat: discover groups from the account, so adding the bot is the whole setup 2026-08-29 15:30:08 +02:00
live_smoke.sh feat: discover groups from the account, so adding the bot is the whole setup 2026-08-29 15:30:08 +02:00
personal_data_sources.py feat: add a photo to the album from the chat, tagged, stripped and verified 2026-08-31 11:20:00 +02:00
prime_profile.sh fix: make prime_profile.sh fail loudly instead of exiting 0 or dying silently 2026-08-29 15:09:21 +02:00
register_bot.sh feat: discover groups from the account, so adding the bot is the whole setup 2026-08-29 15:30:08 +02:00
selftest.sh release: 0.0.7 «Telesfor» — !papież, and the bot can test itself 2026-08-30 17:06:25 +02:00
signal_api_watchdog.sh fix: the watchdog stops burying the desktop in popups nobody asked for 2026-08-31 14:27:03 +02:00
signal-api-watchdog.service feat: refuse to look healthy while deaf, and heal the container by itself 2026-08-29 19:01:55 +02:00
signal-api-watchdog.timer feat: refuse to look healthy while deaf, and heal the container by itself 2026-08-29 19:01:55 +02:00
signal-bot.service feat: add a photo to the album from the chat, tagged, stripped and verified 2026-08-31 11:20:00 +02:00
test_watchdog_harness.sh fix: the watchdog stops burying the desktop in popups nobody asked for 2026-08-31 14:27:03 +02:00
test_watchdog.sh fix: the watchdog stops burying the desktop in popups nobody asked for 2026-08-31 14:27:03 +02:00