Skip to content

feat(ui): spinner and check glyphs for workflow status chrome - #77

Merged
tt-a1i merged 8 commits into
mainfrom
feat/workflow-status-glyphs
Aug 23, 2026
Merged

feat(ui): spinner and check glyphs for workflow status chrome#77
tt-a1i merged 8 commits into
mainfrom
feat/workflow-status-glyphs

Conversation

@tt-a1i

@tt-a1i tt-a1i commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

改动

workflow 的各 UI 表面仍在用旧的彩色方块状态语言(subagent 那套已经在 #53#59 换成 spinner/✓/✗),这次对齐:

  • transcript 卡片 / message renderer / /workflows dashboard:running 用全包统一的 braille spinner(同 cadence,多个视图同步动画),完成 ✓、失败 ✗;
  • 运行中 header 去掉冗余的 running 状态词 —— spinner 已表达运行态,状态词只保留给终态(done/failed/aborted);
  • 折叠态 agent 行去掉重复的 (phase) 后缀 —— header 已显示当前阶段;
  • renderCall 的计划阶段用空心圆 ○ 表达"未开始";
  • footer 活动行workflows: 1 running · /workflows to view)去掉方块 —— footer 是事件驱动的静态字符串,spinner 会冻结,彩色文字本身承担状态表达。此改动同时惠及 subagents 的 footer 行(共享 formatActivityStatus);
  • 同步更新 activity-status.test.tssubagents/docs/design-plan.md 的描述。

验证

  • bun run check ✅(269 files,仅已有 warning)
  • bun run test ✅ 797 node:test + 30 vitest 全过
  • 本地预览脚本渲染三种状态卡片 + footer 行确认效果(脚本已删)
  • 真实 TUI smoke:未验证 —— 合并后 /reload 跑一个 workflow 即可看到

效果(预览脚本输出)

运行中:

⠸ workflow openpi-project-audit 0/5 agents · 1m01s · Audit
  ⠸ audit:security · 7%/1.0M · 1m01s
  ⠸ audit:correctness · 6%/1.0M · 1m01s

完成:

✓ workflow openpi-project-audit 5/5 agents · 1m01s · done
  ✓ audit:security · 7%/1.0M · 1m01s

footer:workflows: 1 running · /workflows to view(running 黄色、done 绿色、failed 红色,无方块)

tt-a1i added 8 commits August 23, 2026 01:34
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.
@tt-a1i
tt-a1i merged commit d067db6 into main Aug 23, 2026
4 checks passed
@tt-a1i
tt-a1i deleted the feat/workflow-status-glyphs branch August 23, 2026 02:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant