Problem
sendPrompt appends the user bubble optimistically, then await client.send(prompt(text)) with no catch. If the send fails (offline/relay error), the bubble stays as if delivered — no error icon, no retry. The agent never got it.
Suggested fix
Mark the message as failed on send rejection and offer "tap to retry" (à la iMessage/ChatGPT "Not delivered").
Where
mobile/src/lib/sessionManager.ts (sendPrompt, ~372–379).
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
sendPromptappends the user bubble optimistically, thenawait client.send(prompt(text))with nocatch. If the send fails (offline/relay error), the bubble stays as if delivered — no error icon, no retry. The agent never got it.Suggested fix
Mark the message as failed on send rejection and offer "tap to retry" (à la iMessage/ChatGPT "Not delivered").
Where
mobile/src/lib/sessionManager.ts(sendPrompt, ~372–379).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.