apps/web/src/core/connections/heartbeat.ts:27-28,40-41 — heartbeat send/timeout errors are logged but never counted, retried with backoff, or surfaced to the user. A device that has silently stopped responding to keep-alives looks connected in the UI indefinitely.
Track consecutive failures, retry with backoff, and flip the connection status to a warning state after N misses.
apps/web/src/core/connections/heartbeat.ts:27-28,40-41— heartbeat send/timeout errors are logged but never counted, retried with backoff, or surfaced to the user. A device that has silently stopped responding to keep-alives looks connected in the UI indefinitely.Track consecutive failures, retry with backoff, and flip the connection status to a warning state after N misses.