Problem
The watchdog (sessionManager.startWatchdog) only flips a live session to idle ("Quiet") after 20s without a heartbeat. If the relay/WebSocket silently drops (no SESSION_END), heartbeats simply stop and the session is shown as "Quiet" rather than "Offline" — misleading, since it's actually disconnected.
Suggested fix
Detect transport disconnects (socket close/error) and reflect a true offline/error status; distinguish "agent idle but connected" from "we lost the connection".
Where
mobile/src/lib/sessionManager.ts (startWatchdog, ~416–431).
Filed from a UI research sweep of the Helm mobile app (landing + live demo session) using Playwright + full source review, cross-referenced against Claude, ChatGPT, GitHub Copilot Chat, and Codex/Claude Code UIs.
Problem
The watchdog (
sessionManager.startWatchdog) only flips a live session toidle("Quiet") after 20s without a heartbeat. If the relay/WebSocket silently drops (noSESSION_END), heartbeats simply stop and the session is shown as "Quiet" rather than "Offline" — misleading, since it's actually disconnected.Suggested fix
Detect transport disconnects (socket close/error) and reflect a true offline/error status; distinguish "agent idle but connected" from "we lost the connection".
Where
mobile/src/lib/sessionManager.ts(startWatchdog, ~416–431).Filed from a UI research sweep of the Helm mobile app (landing + live demo session) using Playwright + full source review, cross-referenced against Claude, ChatGPT, GitHub Copilot Chat, and Codex/Claude Code UIs.