diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentTermPreview.tsx b/frontend/packages/swarm-ui/src/pages/agents/AgentTermPreview.tsx
index 2624bf06..4afc1aa4 100644
--- a/frontend/packages/swarm-ui/src/pages/agents/AgentTermPreview.tsx
+++ b/frontend/packages/swarm-ui/src/pages/agents/AgentTermPreview.tsx
@@ -64,9 +64,20 @@ export function AgentTermPreview({ agentName }: { agentName: string }) {
{rows.length === 0 ? (
- {connection === "open"
- ? "(connected — waiting for events)"
- : CONNECTION_LABEL[connection]}
+ {/* Explicit `.row-content` wrapper, not a bare text child —
+ `.live .row`'s CSS grid (terminal.css) has a narrow
+ first column reserved for a row icon; a row's lone
+ child with no explicit `grid-column` auto-places into
+ that column instead of the content one, wrapping the
+ text one or two characters per line — mara reported
+ exactly this on the live "connecting…" placeholder.
+ `Row.tsx`'s own icon-less flat row already documents
+ and avoids this same trap. */}
+
+ {connection === "open"
+ ? "(connected — waiting for events)"
+ : CONNECTION_LABEL[connection]}
+
) : (
rows.map((row) =>
|
)