fix(ui): show one spinner throughout live turns - #3350
Conversation
jackwener
left a comment
There was a problem hiding this comment.
Automated Codex review on exact head e0c7eeadaefb5f2a243a0381663041b33ff3d2c2.
The product fix is first-principles and appropriately small: current main removed the turn-status spinner to avoid duplication during an active tool, which also left the before/between-tool phases with no spinner. Computing ownership from the existing isInFlightToolStatus contract restores exactly one spinner, and the focused test protects the running-tool → status-off / completed-tool → status-on transition.
There is one deterministic merge blocker: the required test check fails because adding Astryx Spinner to packages/ui/src/chat-turn.tsx changes the generated surface inventory, but docs/astryx-surface-file-inventory.md was not refreshed. This is not fixed merely by rebasing: run npm run astryx:surface-inventory:write, commit the generated inventory update, and let required CI rerun.
Required conclusions:
- Optimal for the actual problem: yes.
- Production code to delete: none identified.
- Tests to delete/replace: none identified.
- Deeper refactor: no; the existing tool-status source of truth is the right boundary.
- Ready to merge: no; required
testis red and independent human review is missing. - Residual risk/gaps: refresh the generated inventory; the UI behavior is material enough that the supplied before/after evidence and independent human judgment remain the acceptance boundary.
No security, licensing, release, governance, or public-contract effect was identified; this is a user-visible UI behavior change and therefore still requires independent human review under CONTRIBUTING.md.
e0c7eea to
cccfa9b
Compare
|
@jackwener Thanks for the review. I’ve refreshed and committed the Astryx surface inventory. The inventory check and all 184 UI tests now pass locally. |
hqhq1025
left a comment
There was a problem hiding this comment.
The current revision was reviewed completely and the focused local verification passed, but the current CI run concluded action_required with no jobs, so the required test check has not passed and this revision cannot be approved yet.
Codex-assisted review performed under the maintainer-approved review workflow.
hqhq1025
left a comment
There was a problem hiding this comment.
Re-review of the current head found no remaining actionable defect; the prior collapsed parallel-tool spinner finding is resolved. Exact-head root build, 185 UI tests, repository lint and format checks, Astryx inventory validation, and the current-main merge tree all passed. GitHub Actions run 32439079216 concluded action_required with zero jobs, so CI has not executed on this revision and I cannot approve it yet.
Codex-assisted review performed under the maintainer-approved review workflow.
9fc27ba to
04f917b
Compare
Hand spinner ownership between visible running tools and the turn status so live output keeps an activity indicator. Generated-by: Codex
04f917b to
a74a272
Compare
Summary
During a live turn, a completed tool row could appear above the working status while no animated indicator showed that output was still in progress.
The expected behavior is one active spinner—not zero or two—throughout a live turn.
When the turn reaches a terminal state, the running status disappears and no spinner remains.
The previous implementation removed the spinner from
TurnRunningStatusto prevent duplicate animation during tool calls. This also removed the only animated indicator between tool calls.This change detects in-flight tools with the shared
isInFlightToolStatushelper. The turn status renders the existing AstryxSpinneronly when no tool owns the active spinner.The working copy, elapsed timer, timeline folding, and tool-row behavior remain unchanged. The spinner is decorative for assistive technology, while the status row keeps its accessible name.
Verification
npm --workspace @maka/ui test— 184 tests passedgit diff --cached --check— passedAI use
Select exactly one:
Tool(s) and scope: Codex diagnosed the missing activity state, implemented conditional spinner ownership, added regression coverage, and drafted this pull request.
Checklist
Does this PR entail a change in behavior?