Problem
Remote environment connectivity is flaky and has poor failure modes. On iPhone (2026-10-03) a disconnected environment gave no information about the cause (the VPN was off). After a disconnect there was no reliable reconnect: the circular-arrow control in Connections produced no visible change on most presses.
What the code shows
presentConnectionState/connectionStatusText (packages/client-runtime/src/connection/presentation.ts) collapsed most transport failures into a generic "reconnecting". The mobile reconnect icon (apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx) had no pending state and swallowed a failed retry. The web banner appeared only for offline/error and its Reconnect press had no optimistic state.
Likely trigger
A remote host reachable only over VPN/Tailscale: DNS/transport failures surface as timeout, with no per-category guidance and no visible retry.
Proposed fixes
Landed on feat/remote-reconnect (merged to fork/prod, release 7345a87552): a ConnectionFailureKind with one actionable sentence per category; the mobile reconnect control disables and shows progress and surfaces failures; the web banner stays visible through the grace window with a labeled Reconnect and a named failure toast; the informational status dot no longer renders as a button.
Related
#3, #2. Branch feat/remote-reconnect.
Severity: Medium.
Problem
Remote environment connectivity is flaky and has poor failure modes. On iPhone (2026-10-03) a disconnected environment gave no information about the cause (the VPN was off). After a disconnect there was no reliable reconnect: the circular-arrow control in Connections produced no visible change on most presses.
What the code shows
presentConnectionState/connectionStatusText(packages/client-runtime/src/connection/presentation.ts) collapsed most transport failures into a generic "reconnecting". The mobile reconnect icon (apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx) had no pending state and swallowed a failed retry. The web banner appeared only foroffline/errorand its Reconnect press had no optimistic state.Likely trigger
A remote host reachable only over VPN/Tailscale: DNS/transport failures surface as timeout, with no per-category guidance and no visible retry.
Proposed fixes
Landed on
feat/remote-reconnect(merged tofork/prod, release7345a87552): aConnectionFailureKindwith one actionable sentence per category; the mobile reconnect control disables and shows progress and surfaces failures; the web banner stays visible through the grace window with a labeled Reconnect and a named failure toast; the informational status dot no longer renders as a button.Related
#3, #2. Branch
feat/remote-reconnect.Severity: Medium.