4 Commits

Author SHA1 Message Date
b72e984b0c fix: suppress vitest-pool-workers debug noise and hanging process
- Pre-declare Node.js compatibility flags in miniflare config to
  prevent [vpw:debug] messages during test runs
- Use --no-file-parallelism to fix dangling handle causing
  "close timed out" warning on exit
2026-04-09 11:48:59 +07:00
8c993df72b fix: harden webhook reliability, fix bugs, add test suite
- Statuspage webhook always returns 200 to prevent subscriber removal
- Fix parseKvKey returning string chatId instead of number
- Queue consumer retries on Telegram 5xx instead of acking (prevents message loss)
- Fix observability top-level enabled flag (false → true)
- Add defensive null checks for webhook payload body
- Cache Bot instance per isolate to avoid middleware rebuild per request
- Add vitest + @cloudflare/vitest-pool-workers with 31 tests
- Document DLQ and KV sharding as declined features
2026-04-09 10:29:30 +07:00
cb9fd58565 fix: correct license to Apache-2.0 in package.json and README 2026-04-08 23:07:03 +07:00
01320abacd feat: implement Telegram bot for Claude status webhooks
Cloudflare Workers bot that forwards status.claude.com (Atlassian
Statuspage) incident and component updates to subscribed Telegram
users via CF Queues fan-out.

- Hono.js routing with grammY webhook handler
- Bot commands: /start, /stop, /status, /subscribe
- Supergroup topic support (message_thread_id)
- KV store with claude-status: prefix and composite keys
- Queue consumer with batch send, 403 auto-removal, 429 retry
- Timing-safe webhook secret validation
- HTML escaping for Telegram messages
2026-04-08 22:59:37 +07:00