mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-02 18:17:11 +09:00
A StatusComponent was already a full synthetic check (http/tcp/dns/smtp/ping, target, interval, timeout, HealthCheck history, uptime windows, auto-incidents) — it was just framed as "a component of a status page" and its engine lived inside the serverkit-status extension, so watching a site required publishing a status page. Promote it: - migration 081 makes status_components.page_id and status_incidents.page_id nullable, and adds the columns backing the monitor UI (is_paused, check_method, expected_status, keyword, follow_redirects, verify_tls, retries, consecutive_failures, cert_issuer, cert_expires_at) - new core app/services/monitor_service.py owns the check engine; the extension keeps page publishing and delegates - new /api/v1/monitors (CRUD, check, pause, history, uptime buckets, incidents) - new builtin.monitor_check sweep on a 30s tick — until now checks only ran when someone pressed "Check now", so a configured monitor never noticed an outage Check-engine defects fixed while moving it: - ping ignored the process return code and could only ever report 'up' - ping used Linux-only flags with no guard, breaking the Windows dev server - http ignored its own method/expected_status/follow_redirects/verify_tls - smtp was documented on the column but unimplemented; keyword did not exist - run_check never recomputed uptime and never opened or resolved an incident — only the WordPress health-sync path did, so network monitors never paged - TLS issuer/expiry are now captured (throttled to one read per 6h) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>