diff --git a/.storkit/work/5_done/450_bug_web_ui_silently_swallows_chat_errors_including_oauth_login_link.md b/.storkit/work/5_done/450_bug_web_ui_silently_swallows_chat_errors_including_oauth_login_link.md new file mode 100644 index 00000000..50efe07c --- /dev/null +++ b/.storkit/work/5_done/450_bug_web_ui_silently_swallows_chat_errors_including_oauth_login_link.md @@ -0,0 +1,27 @@ +--- +name: "Web UI silently swallows chat errors including OAuth login link" +--- + +# Bug 450: Web UI silently swallows chat errors including OAuth login link + +## Description + +When the WebSocket chat returns an error (e.g. OAuth authentication failed with a login URL), the `onError` handler in `Chat.tsx` only logs to `console.error` and resets loading state. The error message is never displayed to the user. This means the OAuth login link from story #448 works on Matrix/WhatsApp but is invisible in the web UI. + +## How to Reproduce + +Use the web UI with missing or expired OAuth credentials. Send any chat message. The server detects auth failure, attempts token refresh, fails, and returns an error containing a login URL over WebSocket. + +## Actual Result + +Nothing visible happens. The error is logged to browser console only. The user sees no feedback. + +## Expected Result + +The error message (including the clickable OAuth login link) should be displayed in the chat as an assistant message so the user can act on it. + +## Acceptance Criteria + +- [ ] WebSocket error messages are displayed in the chat UI as assistant messages +- [ ] OAuth login URL in the error is rendered as a clickable link +- [ ] Consistent with how Matrix and WhatsApp transports display the same error