Skip to content

fix(web): name the failed action in the conversation error banner - #1808

Merged
chuks-qua merged 2 commits into
mainfrom
fix/turn-error-banner
Oct 6, 2026
Merged

chuks-qua merged 2 commits into
mainfrom
fix/turn-error-banner

Conversation

@chuks-qua

@chuks-qua chuks-qua commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

What

When a turn failed, its error appeared twice. It appeared inline in the transcript and again in a red banner reading "Could not refresh conversation: …". A rejected send got the same misleading refresh label.

The thread record kept load, send, and turn failures in one error field, and the banner labeled them all as refresh failures. Each writer now records an errorSource:

  • Turn errors stay in the transcript only, with no banner.
  • Send and plan-answer failures read "Could not send message: …".
  • History load failures keep "Could not refresh conversation: …" and the full-stage error state.

The CLI-not-found banner and the legacy timeline still read the same error field, so they don't change.

Verified in a production web build against the worktree runtime by failing a Claude Opus 5.5 turn on SDK 0.3.212. Before, the inline error and the refresh banner both showed. After, only the inline error and "Turn failed" show. New ChatView tests fail before the fix and pass after. 84 store and conversation test files pass, and web typecheck and repo lint pass.

Why

A turn failure presented as a broken conversation, which points users at the wrong problem.

UI Changes

After: the failed turn shows only its inline error.

Review Notes

An error with no recorded source keeps the old refresh wording, which matches every unlabeled writer before this change.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Before: inline error plus a misleading refresh banner

After: inline error only

A thread record kept load, send, and turn failures in one error field,
and the banner labeled all of them "Could not refresh conversation". A
failed turn showed its error twice: inline, and again as a refresh
failure. A rejected send was mislabeled the same way.

Each writer now records an error source. Turn errors stay in the
transcript only, send failures read "Could not send message", and the
full-stage error state is reserved for load failures.
@chuks-qua
chuks-qua merged commit c91eb7f into main Oct 6, 2026
6 checks passed
@chuks-qua
chuks-qua deleted the fix/turn-error-banner branch October 6, 2026 17:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant