feat(ui): spinner and check glyphs for workflow status chrome - #77
Merged
Conversation
The workflow surfaces still used the old colored-square status language that the subagent UI moved away from. Bring them onto the same glyphs: - transcript card, message renderer, and /workflows dashboard now use the package spinner for running, check for done, cross for failed; - the run header drops the redundant status word while running (the spinner says it) and keeps it only for terminal states; - collapsed agent rows drop the repeated phase suffix already named in the header; - planned phases in the call card read as open circles; - the footer activity line drops the squares and lets the colored words carry state, since a frozen spinner would read as a bug.
- a fresh run no longer shows "0/0 agents · 0s"; metrics join in once agents exist or time has actually passed; - the header drops the duplicate (background) already on the call card; - the collapsed card caps agent rows at eight and summarizes the rest as "… N more" instead of flooding the chat for large swarms; - the expand hint only appears when expanding would reveal more.
A row that reads "name · 4%/1.0M · 45s" carries two stats that mostly duplicate across rows. Collapsed workflow cards now show a single meaningful stat per agent: context occupancy while it runs (proof of life), elapsed once it settles (what it cost). The below-editor strip also hides its "0/0 agents" count before any agent registers.
- the header drops the "running" word and shows the status glyph up front, matching the transcript card; terminal states keep the word; - a flat swarm no longer reports "N nodes · 0 edges" — the graph summary only appears when edges actually exist; - agent rows stop repeating the model when the phase is homogeneous, and show context occupancy only for running agents (a settled row's cost is already the elapsed on the right); - agent errors read as "429: user rate limit exceeded" instead of a raw JSON body dump.
- tool calls render as "→ name {args}" on one line with the JSON
arguments collapsed inline, instead of a shouty "TOOL name" header
over a multi-line pretty-printed block;
- results answer with "← name" and keep their body dimmed below;
- role labels drop the all-caps (user / assistant / thinking).
The collapsed card was a static Text baked at renderResult time, so its spinner frame only advanced when a workflow event happened to arrive, while the below-editor strip kept ticking on its own timer. The card now rebuilds its rows on every repaint, riding the host's render cadence, so the spinner and clocks stay live. While rebuilding, the card switches to a left/right layout that matches the strip and dashboard: identity and current phase on the left, agent counts and elapsed on the right, and each agent row's single stat right-aligned in its own column.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
改动
workflow 的各 UI 表面仍在用旧的彩色方块状态语言(subagent 那套已经在 #53–#59 换成 spinner/✓/✗),这次对齐:
/workflowsdashboard:running 用全包统一的 braille spinner(同 cadence,多个视图同步动画),完成 ✓、失败 ✗;running状态词 —— spinner 已表达运行态,状态词只保留给终态(done/failed/aborted);(phase)后缀 —— header 已显示当前阶段;workflows: 1 running · /workflows to view)去掉方块 —— footer 是事件驱动的静态字符串,spinner 会冻结,彩色文字本身承担状态表达。此改动同时惠及 subagents 的 footer 行(共享formatActivityStatus);activity-status.test.ts和subagents/docs/design-plan.md的描述。验证
bun run check✅(269 files,仅已有 warning)bun run test✅ 797 node:test + 30 vitest 全过/reload跑一个 workflow 即可看到效果(预览脚本输出)
运行中:
完成:
footer:
workflows: 1 running · /workflows to view(running 黄色、done 绿色、failed 红色,无方块)