Working tree is clean on main — all dashboard refactor changes are committed. The last build is 3 days stale though.
I'll rebuild and restart the service.
Build completed. Service restarted and health endpoint is returning 200.
$ curl -s http://localhost:3004/health
{"status":"ok","uptime":2,"version":"1.4.0"}
$ systemctl --user status dearlarry-monitor
Active: active (running) since Thu 2026-04-10 14:32:18 AEST
Dashboard is live at monitor.dearlarry.co with the updated layout.
WebSocket is live. Got the initial handshake and a heartbeat frame within 500ms — Caddy is forwarding upgrade headers correctly this time.
Checked access logs from the last 2 minutes: no 502s or connection resets. Looks solid.
Committed as deploy: rebuild monitor dashboard v1.4.0. Knowledge note written — flags the WS check as a required post-deploy step since it's broken before.
Spawned a teammate to handle the integration tests.
Teammate finished. 6 tests written covering health endpoint response shape, status codes, WS handshake, heartbeat timing, and reconnect behavior.
All green. I'd add these to the CI pipeline before the next release.