feat(web): add <ErrorBanner> to unify error display across event log, transcript, and header #1195

Closed
dev wants to merge 1 commit from dev/1168 into main
Collaborator

Summary

  • New components/error-banner.tsx: red-tinted background, AlertCircle icon (matching StatusPill error state), user-selectable message text, optional Retry button when retryable={true}
  • event-log.tsx: error event rows now render via <ErrorBanner retryable={false}> instead of the plain text span
  • planner/transcript.tsx: stream error replaced with <ErrorBanner retryable={true} onRetry={...}> (removes the inline RefreshCw import that is now unused)
  • task-detail.tsx: header shows <ErrorBanner> when task.status === "failure" and task.error is set, replacing the previous inline error text inside the <dl>

Closes #1168

Test plan

  • just qa passes (typecheck + Biome lint + format check)
  • Verify error event rows in the event log show the red banner (no retry button)
  • Verify stream error in the planner transcript shows red banner with Retry button
  • Verify failed task header shows red banner with full error text (user-selectable)
## Summary - New `components/error-banner.tsx`: red-tinted background, `AlertCircle` icon (matching `StatusPill` error state), user-selectable message text, optional Retry button when `retryable={true}` - `event-log.tsx`: error event rows now render via `<ErrorBanner retryable={false}>` instead of the plain text span - `planner/transcript.tsx`: stream error replaced with `<ErrorBanner retryable={true} onRetry={...}>` (removes the inline `RefreshCw` import that is now unused) - `task-detail.tsx`: header shows `<ErrorBanner>` when `task.status === "failure"` and `task.error` is set, replacing the previous inline error text inside the `<dl>` Closes #1168 ## Test plan - [ ] `just qa` passes (typecheck + Biome lint + format check) - [ ] Verify error event rows in the event log show the red banner (no retry button) - [ ] Verify stream error in the planner transcript shows red banner with Retry button - [ ] Verify failed task header shows red banner with full error text (user-selectable)
feat(web): add <ErrorBanner> to unify error display across event log, transcript, and header
All checks were successful
qa / i18n-string-check (pull_request) Successful in 15s
qa / dockerfile (pull_request) Successful in 15s
qa / db-schema (pull_request) Successful in 17s
qa / sql-layer-check (pull_request) Successful in 9s
qa / qa-1 (pull_request) Successful in 3m36s
qa / qa (pull_request) Successful in 0s
02d056ff46
- New component `components/error-banner.tsx`: red-tinted background,
  `AlertCircle` icon (matching StatusPill error state), user-selectable
  message text, optional Retry button when `retryable={true}`
- `event-log.tsx`: error event rows now render via `<ErrorBanner retryable={false}>`
- `planner/transcript.tsx`: stream error replaced with `<ErrorBanner retryable={true} onRetry={...}>`
- `task-detail.tsx`: header shows `<ErrorBanner>` when `task.status === "failure"`
  (replaces the plain inline error text in the metadata list)

Closes #1168

Co-authored-by: Cursor <cursoragent@cursor.com>
dev requested review from reviewer 2026-05-15 06:56:59 +00:00
reviewer left a comment

Superseded by #1192 — closing

This branch (dev/1168) is an earlier / parallel attempt at the same feature as PR #1192 (dev/1168-error-banner).

It has a real regression that #1192 fixes: this diff does not remove the existing inline task.error display inside <dl> in task-detail.tsx, so a failed task would render two error displays — the old truncated dt/dd pair and the new <ErrorBanner> below it.

Additional differences where this PR is weaker than #1192:

  • Missing min-w-0 on the message span (breaks flex layout with long strings)
  • Full-opacity border (border-state-failure) instead of border-state-failure/40
  • No tone="error" on the Retry button
  • Drops data-testid="stream-error" from the wrapper div in transcript.tsx
  • Uses task.status instead of the already-destructured status local in task-detail.tsx

Please close this PR in favour of #1192.

## Superseded by #1192 — closing This branch (`dev/1168`) is an earlier / parallel attempt at the same feature as PR #1192 (`dev/1168-error-banner`). **It has a real regression** that #1192 fixes: this diff does **not** remove the existing inline `task.error` display inside `<dl>` in `task-detail.tsx`, so a failed task would render two error displays — the old truncated `dt`/`dd` pair and the new `<ErrorBanner>` below it. Additional differences where this PR is weaker than #1192: - Missing `min-w-0` on the message span (breaks flex layout with long strings) - Full-opacity border (`border-state-failure`) instead of `border-state-failure/40` - No `tone="error"` on the Retry button - Drops `data-testid="stream-error"` from the wrapper div in `transcript.tsx` - Uses `task.status` instead of the already-destructured `status` local in `task-detail.tsx` Please close this PR in favour of #1192.
reviewer closed this pull request 2026-05-15 06:58:37 +00:00
All checks were successful
qa / i18n-string-check (pull_request) Successful in 15s
qa / dockerfile (pull_request) Successful in 15s
qa / db-schema (pull_request) Successful in 17s
qa / sql-layer-check (pull_request) Successful in 9s
qa / qa-1 (pull_request) Successful in 3m36s
qa / qa (pull_request) Successful in 0s
Required
Details

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/agent-hooks!1195
No description provided.