refactor(web): extract <SteerPill> so steer events render identically in event log and transcript #1194

Closed
dev wants to merge 2 commits from dev/1166 into main
Collaborator

Summary

  • Extracts <SteerPill state="queued|delivered" content={string} ts={number} /> into components/agent/steer-pill.tsx
  • queued state uses muted/secondary styling; delivered state uses accent color
  • Uses <TimestampLabel> for the timestamp field
  • event-log.tsx steer_queued / steer_delivered rows now render via <SteerPill> (removes inline styling)
  • planner/transcript.tsx streaming steer pills now render via <SteerPill> (removes inline pill badge)

Closes #1166

Test plan

  • just qa passes (typecheck + lint + format + tests)
## Summary - Extracts `<SteerPill state="queued|delivered" content={string} ts={number} />` into `components/agent/steer-pill.tsx` - `queued` state uses muted/secondary styling; `delivered` state uses accent color - Uses `<TimestampLabel>` for the timestamp field - `event-log.tsx` `steer_queued` / `steer_delivered` rows now render via `<SteerPill>` (removes inline styling) - `planner/transcript.tsx` streaming steer pills now render via `<SteerPill>` (removes inline pill badge) Closes #1166 ## Test plan - [x] `just qa` passes (typecheck + lint + format + tests)
refactor(web): extract <SteerPill> so steer events render identically in event log and transcript
Some checks failed
qa / dockerfile (pull_request) Successful in 10s
qa / i18n-string-check (pull_request) Successful in 11s
qa / db-schema (pull_request) Successful in 12s
qa / sql-layer-check (pull_request) Successful in 7s
qa / qa-1 (pull_request) Failing after 3m43s
qa / qa (pull_request) Failing after 0s
ee6939574e
Closes #1166

Co-authored-by: Cursor <cursoragent@cursor.com>
dev requested review from reviewer 2026-05-15 06:54:40 +00:00
reviewer approved these changes 2026-05-15 06:57:53 +00:00
reviewer left a comment

Review — refactor(web): extract <SteerPill>

Code is correct and all ACs are met. One blocker before merge: CI is red (aggregate status failure, run #2050). Investigate that before squash-merging.


AC checklist

AC Status
<SteerPill state="queued|delivered" content={string} ts={number} /> in components/agent/steer-pill.tsx
queued state: muted/secondary styling (border-border bg-surface text-text-muted)
delivered state: accent color (border-accent/30 bg-accent/10 text-accent)
Uses <TimestampLabel> for the timestamp field
event-log.tsx steer_queued/steer_delivered rows replaced with <SteerPill> (left-accent-border row removed)
planner/transcript.tsx streaming steer pills replaced with <SteerPill> (inline badge removed)
just qa passes (dev confirms)

Code notes

ev.summary ?? "" — confirmed correct. The server populates summary: msg.text.slice(0, 200) for both steer_queued and steer_delivered in registry.ts. The ?? "" fallback is technically dead code (TaskEvent.summary is typed string, not optional), but it's harmless.

pill.ts — valid. buildSteerPills return type already includes ts: number; the field was captured but unused until this PR.

Clock icon on delivered state — consistent with the old local component's behaviour; the issue AC doesn't prescribe per-state icons. Fine as-is.

Colour change in transcript — intentional. The old local SteerPill used success (green) for delivered; the new shared component uses accent (blue). This matches the issue AC ("delivered state: accent color") and is the point of the unification.

data-event-idx / data-replayed attributes — correctly preserved on the early-return path for steer events. No test-selector regression.


⚠️ CI failure

Aggregate CI for ee6939574e2794de386086ceab393949fadbea85 is failure (run #2050); a separate run (#2046) succeeded on the same SHA. The failing run may be in a workflow unrelated to this change, but it must be green before merge.

## Review — `refactor(web): extract <SteerPill>` ✅ Code is correct and all ACs are met. **One blocker before merge: CI is red** (aggregate status `failure`, run #2050). Investigate that before squash-merging. --- ### AC checklist | AC | Status | |---|---| | `<SteerPill state="queued\|delivered" content={string} ts={number} />` in `components/agent/steer-pill.tsx` | ✅ | | `queued` state: muted/secondary styling (`border-border bg-surface text-text-muted`) | ✅ | | `delivered` state: accent color (`border-accent/30 bg-accent/10 text-accent`) | ✅ | | Uses `<TimestampLabel>` for the timestamp field | ✅ | | `event-log.tsx` `steer_queued`/`steer_delivered` rows replaced with `<SteerPill>` (left-accent-border row removed) | ✅ | | `planner/transcript.tsx` streaming steer pills replaced with `<SteerPill>` (inline badge removed) | ✅ | | `just qa` passes | ✅ (dev confirms) | --- ### Code notes **`ev.summary ?? ""`** — confirmed correct. The server populates `summary: msg.text.slice(0, 200)` for both `steer_queued` and `steer_delivered` in `registry.ts`. The `?? ""` fallback is technically dead code (`TaskEvent.summary` is typed `string`, not optional), but it's harmless. **`pill.ts`** — valid. `buildSteerPills` return type already includes `ts: number`; the field was captured but unused until this PR. **`Clock` icon on `delivered` state** — consistent with the old local component's behaviour; the issue AC doesn't prescribe per-state icons. Fine as-is. **Colour change in transcript** — intentional. The old local `SteerPill` used `success` (green) for `delivered`; the new shared component uses `accent` (blue). This matches the issue AC ("delivered state: accent color") and is the point of the unification. **`data-event-idx` / `data-replayed` attributes** — correctly preserved on the early-return path for steer events. No test-selector regression. --- ### ⚠️ CI failure Aggregate CI for `ee6939574e2794de386086ceab393949fadbea85` is `failure` (run [#2050](https://forge.jacquin.app/charles/claude-hooks/actions/runs/2050)); a separate run ([#2046](https://forge.jacquin.app/charles/claude-hooks/actions/runs/2046)) succeeded on the same SHA. The failing run may be in a workflow unrelated to this change, but it must be green before merge.
fix(ci): re-trigger after flaky runner failure on qa job
All checks were successful
qa / sql-layer-check (pull_request) Successful in 10s
qa / dockerfile (pull_request) Successful in 12s
qa / i18n-string-check (pull_request) Successful in 12s
qa / db-schema (pull_request) Successful in 14s
qa / qa-1 (pull_request) Successful in 2m52s
qa / qa (pull_request) Successful in 0s
2cd526aad6
Co-authored-by: Cursor <cursoragent@cursor.com>
claude-desktop closed this pull request 2026-05-15 08:58:29 +00:00
All checks were successful
qa / sql-layer-check (pull_request) Successful in 10s
qa / dockerfile (pull_request) Successful in 12s
qa / i18n-string-check (pull_request) Successful in 12s
qa / db-schema (pull_request) Successful in 14s
qa / qa-1 (pull_request) Successful in 2m52s
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!1194
No description provided.