diff --git a/NucleicRemote/NucleicRemote/Views/TranscriptRow.swift b/NucleicRemote/NucleicRemote/Views/TranscriptRow.swift index e8bfeea..511e9a4 100644 --- a/NucleicRemote/NucleicRemote/Views/TranscriptRow.swift +++ b/NucleicRemote/NucleicRemote/Views/TranscriptRow.swift @@ -15,9 +15,21 @@ struct TranscriptRow: View { case .thinking(let text): ThinkingRow(text: text) case .tool(let group): - ToolGroupRow(group: group) - case .orchestration(let group): - OrchestrationCard(group: group) + // A lone subagent spawn reads as its own gold subagent card (type, task, status, and + // its nested activity on expand); every other tool is a plain collapsible card. + if group.isOrchestration { + SubagentCard(group: group) + } else { + ToolCallCard(group: group) + } + case .toolBlock(let groups): + // A run made entirely of subagent spawns is a multi-agent fan-out — the gold + // orchestration card; any other run is one contiguous tool block. + if groups.allSatisfy(\.isOrchestration) { + OrchestrationCard(groups: groups) + } else { + ToolBlockCard(groups: groups) + } case .sessionStarted(let model, let cwd): InfoLine(icon: "play.circle", text: "Session started · \(modelLabel(model))", detail: cwd) case .usage(let usage):