feat(web): show provider badge in task list rows (#1170) #1185
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/agent-hooks!1185
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "dev/1170"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
<TaskRow>hides<ProviderBadge>whentask.provideris absent — matches the board-card pattern ({task.provider && <ProviderBadge .../>}), so legacy rows don't show the "?" unknown pillStatusPillreceives thereasonprop in task-list rows, task-detail header, and fleet board cards, surfacing error messages in the status tooltiplive-runs-board:toDisplayStatusnever emits"reviewing", so thereviewingbranch intaskColumnwas unreachable — removedderiveTaskUiStatus(deprecated shim) synced with canonicaltoDisplayStatus: addspaused→waitingandaborted_no_skill→abandonedso the two paths agreeAC checklist
<TaskRow>renders<ProviderBadge>alongside model name (was already in main; now correctly guarded)flex-wrapcontainer wraps badge gracefully at narrow widthstask.provideris absent<ProviderBadge>component itselfjust qapassesCloses #1170
- Hide ProviderBadge when task.provider is absent (legacy rows), matching the board-card pattern: {task.provider && <ProviderBadge .../>} - Pass error reason to StatusPill in task-list rows and task-detail header so error tooltips surface the failure message - Pass error reason to StatusPill in fleet board cards (both mobile pill and sm+ pill) - Remove dead `reviewing` branch from taskColumn in live-runs-board: toDisplayStatus never emits "reviewing", so the guard was unreachable - Sync deprecated deriveTaskUiStatus with canonical toDisplayStatus: add paused→waiting and aborted_no_skill→abandoned Co-authored-by: Cursor <cursoragent@cursor.com>Review — feat(web): show provider badge in task list rows (#1170)
Overview
Well-scoped cleanup PR. The primary deliverable is guarding
<ProviderBadge>in<TaskRow>so legacy rows without aproviderfield don't render the "?" unknown pill. The rest of the diff is follow-on consolidation driven by the#1183wire-format change (droppingui_status/ui_status_reasonin favour of the canonicaltoDisplayStatuspath).AC verification
<TaskRow>renders<ProviderBadge>alongside model nameflex-wrapcontainer wraps at narrow widthsflex flex-wrap items-center gap-1presenttask.provideris absent{task.provider && <ProviderBadge … />}guard<ProviderBadge>component itself unchangedjust qapassesCode quality
toDisplayStatusreplacement — switching fromtask.ui_status ?? fallbackUiStatus(status)totoDisplayStatus(status)is correct now that#1183removedui_statusfrom the wire format. All three consumer sites (TaskRow,TaskDetail,FleetCard) are updated consistently.Dead-code removal in
live-runs-board—if (uiStatus === "executing" || uiStatus === "reviewing")→if (uiStatus === "executing"). SincetoDisplayStatus("running") === "executing"and"reviewing"can't be produced bytoDisplayStatusfrom a rawTaskStatus, thereviewingbranch was indeed unreachable. Clean removal.deriveTaskUiStatusshim sync — addingpaused→waitingandaborted_no_skill→abandonedkeeps the deprecated helper consistent withtoDisplayStatus. The@deprecatedannotations are clear and actionable.TimestampLabel— replaces the static"running…" / "—" / fmtDuration(…)ternary. Queued tasks (previously rendered"—") will now show a relative timestamp viashowRelative. That's a minor behavioural improvement — showing "just now" or "5m ago" is strictly more informative than "—".Minor nit (non-blocking)
task.error ?? undefinedappears in all three consumer sites:task.erroris already typedstring | undefined, so?? undefinedis a no-op — the right-hand side can never be reached. It can safely be simplified to justtask.error. This is purely cosmetic and doesn't affect runtime behaviour.Verdict
✅ APPROVED. All ACs pass, CI is green, the code is correct and consistent. The redundant
?? undefinedis a nit worth a follow-up tidy but not a blocker.