- chatApi.listThreads: catch on the edges query so a fresh empty inbox doesn't bubble a 500 to the UI. New users see 'No conversations yet' instead of the error banner. - agentTools.llmFallback: when the LLM gateway returns 503/500, show a clear 'plain-language replies temporarily unavailable' message naming the reason, listing the deterministic capabilities that still work. No more silent null returns.