Mobile activity card: move step meta lines into a Meta tab
Status#
Done. CI green, no review comments. PR: https://github.com/iterate/iterate/pull/2398.
Ask#
In the mobile app's expanded activity card ("ran code" expandable), each round currently renders like:
Round 2
LLM - openai/gpt-5.5-terra | 61.6s | 1061 tok
Script | Approvals | Result
The LLM meta line (and the CODE · 3.2s line above the tab bar) take up
vertical space. Move that info into a new trailing Meta tab:
Round 2
Script | Approvals | Result | Meta
Decisions (assumptions where unspecified)#
Metais the last tab and is always offered — which means the tab bar now always renders (it used to hide when Script was the only tab). That's the point: the tab bar replaces the meta lines as the round's compact header.- The
code · 3.2s · failedlabel above the tab bar moves into Meta too — same category of noise the ask is about. - Meta tab body: one line per step, same faint uppercase style as before:
llm · openai/gpt-5.5-terra · 61.6s · 1061 tok(plus failed/cancelled suffixes as today)code · 3.2s · failed
LlmStepViewkeeps rendering thinking text / streamed response / error — only its meta label line moves. While the llm step is streaming (no code step yet, so no tabs exist), the meta label stays where it is as a fallback; once the round has a code step, the label lives in Meta only.
Checklist#
- Add
metato the tab union + tabs array inCodeStepTabs(apps/mobile/src/components/activity-card.tsx)"meta" as constappended unconditionally; tab bar now renders unconditionally since tabs.length ≥ 2 always - Render Meta tab body with llm + code meta lines; pass the round's llm
step into
CodeStepTabsnewllmprop; label strings extracted tollmMetaLabel/codeMetaLabelshared with the streaming fallback - Drop the
code · …label above the tab bar; drop the llm meta label fromLlmStepViewwhen the round has a code step LlmStepView renders the label only whencode === null(streaming, or code half missing) - typecheck / lint / test for apps/mobile tsc clean, oxlint clean, 83 tests pass, knip clean
Implementation notes#
- Single-file change:
apps/mobile/src/components/activity-card.tsx. - No component render tests exist for this card (mobile tests are lib-level); behavior change is presentational, so no new tests added.