fix(web): use a circle alert glyph for failed tool calls - #216
Conversation
A failed tool call in a live activity row rendered an x glyph, which reads as "cancelled" rather than "failed" and sits oddly next to the circle-alert glyph Pylon already uses for runtime warnings. Manual port of pingdotgg/t3code#8840 (8b817cbca). Upstream also added the failed indicator to PlainWorkEntryRow's icon; that hunk is deliberately not taken. Pylon decoupled ordinary tool failures from failure glyphs in 4ae5166, which reserves alert treatment for severe failures, so applying upstream's second hunk would regress that decision. Only the live activity row changes here.
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
|
Closing this — adversarial review showed the change is wrong on its own terms, and the right outcome is to skip The glyph is gated on And
Branch deleted; nothing else depends on it. |
A failed tool call in a live activity row rendered an
xglyph. That reads as"cancelled" rather than "failed", and it sits oddly beside the
circle-alertglyph Pylon already uses for runtime warnings a few rows away.
Swaps the live activity row's failure glyph to
circle-alert.Manual port of upstream
pingdotgg/t3code#8840(8b817cbca) — the commitconflicts against Pylon's diverged
MessagesTimeline.tsx.One upstream hunk is deliberately not taken. Upstream also added
showFailedIndicatortoPlainWorkEntryRow's icon selection. Pylon decoupledordinary tool failures from failure glyphs in
4ae51664a("stop showing red xsummaries for ordinary tool failures"), which reserves alert treatment for severe
failures so a routine lint failure does not look like a broken turn. Applying that
hunk would regress the decision, so only the live activity row changes.
The scoping is confirmed by the tests: only the live-activity assertion needed
updating; the
lucide-xassertion covering Pylon's severe-failure path stillpasses untouched.
Verified:
vp test run --dir apps/web apps/web/src/components/chat/MessagesTimeline.test.tsx(44 passed),
vp run -F @t3tools/web typecheck(exit 0, no errors),vp fmt --checkclean.Reviewed and integrated with Claude Opus 5 in Claude Code.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.