Repository navigation
fix(session-ui): name a pending steer's model only when it changes - #59310
Conversation
There was a problem hiding this comment.
I couldn't check this in a running app, but I found no problems in the code. The browser component tests can't start in this environment because a system library is missing (libnspr4.so), so I didn't see the meta line rendered. bun test src/timeline/projection.test.ts passes (22) and tsc --noEmit is clean in packages/session-ui.
In the code, the previous prompt's choice (its metadata, or its first reply) is the right baseline: a steer's own model switch doesn't hide the change, and several steers waiting in a row compare against the running turn. Delivered messages keep their full labels, and the test changes are small and clear.
Public API: unchanged (only internal session-ui component props and the projection's return value).
No blocking concerns. Since I couldn't render it here, before/after screenshots of the pending meta line, with the same model and with a changed one, would help reviewers.
There was a problem hiding this comment.
The new commit, which removes the icon from the Pending label, looks fine to me. The label is now plain text in the same slot, the unused icon styling is gone, and the component test was cut down to match. Every other test that looks up user-message-pending only checks whether it's visible or hidden, which still works.
I couldn't run the component tests here (the browser is missing a system library), so I haven't seen it rendered. bun test src/timeline/projection.test.ts and tsc --noEmit pass in packages/session-ui. A before/after screenshot of the pending meta line without the icon would help reviewers.
Public API: unchanged.
No new concerns.
5919cbe to
32a4714
Compare
There was a problem hiding this comment.
This push is a rebase onto dev. The pull request's own changes are the same as in my last review, apart from the conflict fix in the session-queue e2e test. There, dev's older assertion is replaced by the new ^Pending$ check, which is correct. On the rebased head, bun test src/timeline/projection.test.ts passes (22) and tsc --noEmit is clean in packages/session-ui. The component and e2e tests still can't run here because the test browser won't start.
Public API: unchanged.
No new concerns.
There was a problem hiding this comment.
The new commit only tidies budgetLimit to clear a lint warning. It returns the same values as before: nothing for other errors, the kind, and resetAt only when the reset time parses. On the new head, bun test src/timeline/projection.test.ts passes (22) and tsc --noEmit is clean in packages/session-ui.
Public API: unchanged.
No new concerns.
There was a problem hiding this comment.
This push merges dev (the v2.2.0 release) into the branch. The pull request's own changes are the same as in my last review; in packages/session-ui the merge only changed the version in package.json. On the merged head, bun test src/timeline/projection.test.ts passes (22) and tsc --noEmit is clean in packages/session-ui.
Public API: unchanged.
No new concerns.
e6e952c to
894fa3b
Compare
894fa3b to
323c8af
Compare
…anges Port of anomalyco/opencode#59310. The timeline projection now indexes the previous prompt's selection; a pending steer whose agent and model match the turn it joins shows Pending alone instead of repeating the current selection. Not ported: upstream's budgetLimit cosmetic refactor (unrelated), and the Pending-icon assertions in the shared component test - Harish Code's pending indicator intentionally keeps its steer icon. Baseline: new projection test fails without the fix (21 pass/1 fail); passes with it (22/22; full timeline suite 93/93). Typecheck clean (session-ui 278 files). Playwright component/e2e specs updated but not run here.
A pending steer's meta line showed an icon and repeated the agent and model even when the steer kept the running turn's selection, so it read
◐ Pending · Claude Opus 5.5 Highon almost every steer. It now names only what the steer changes. (#60208 has since removed the icon ondev; this PR keeps a test assertingPendingis plain text.)Pendinglabel stays, with no icon.Before:
◐ Pending · Claude Opus 5.5 HighAfter (same model):
PendingAfter (model changed):
Pending · Claude Sonnet 4 BalancedTests
bun test src/timeline/projection.test.ts(newpreviousSelectionByIDcase)bun run test:componentsforsession-message-projection,session-timeline-mobileandsession-timeline(21 passed)bun run typecheckinpackages/session-uiandpackages/appbun run lint:changedonly reports three existing findings inbudgetLimitinprojection.ts, which this PR doesn't touchsession-queuee2e assertion is in a test quarantined onbeta, so I didn't run it locallyRequested by: @vimtor (victor via Slack)