Skip to main content

Problem

AI generation is not a download. No product in the audit differentiates thinking, streaming, complete, and hung as distinct states. A user watching a pulsing indicator has no information about whether to wait or intervene.

Prescription

Four states minimum, each with a distinct visual treatment: Thinking (processing before first token), Streaming (output actively writing), Complete (explicit signal, not inferred), Hung (escalated after watchdog threshold with recovery affordance).

Design decisions

Watchdog timeout threshold must be calibrated to product latency profile. Thinking-state copy specificity depends on backend state visibility. Completion signal must be explicit without being disruptive.

Tradeoffs

Hung-state escalation risks false positives on slow but functional responses. Specific thinking-state copy requires backend integration that generic indicators do not. Explicit completion signals add visual events to a reading experience.

Pattern definition

Problem

AI generation is not a download. No product in the audit differentiates thinking, streaming, complete, and hung as distinct states. A user watching a pulsing indicator has no information about whether to wait or intervene.

Prescription

Four states minimum, each with a distinct visual treatment: Thinking (processing before first token), Streaming (output actively writing), Complete (explicit signal, not inferred), Hung (escalated after watchdog threshold with recovery affordance).

Design decisions

Watchdog timeout threshold must be calibrated to product latency profile. Thinking-state copy specificity depends on backend state visibility. Completion signal must be explicit without being disruptive.

Tradeoffs

Hung-state escalation risks false positives on slow but functional responses. Specific thinking-state copy requires backend integration that generic indicators do not. Explicit completion signals add visual events to a reading experience.

Interactive demo

Audit finding

Observed across Claude, ChatGPT, Gemini, and Perplexity. In every product, the visual state during active generation is identical to the visual state during a hung or stalled generation. No product communicates completion as an explicit state — users infer it from the appearance of feedback UI. GitHub Copilot is the only product that marks an interrupted response as incomplete.

AI response

Press a button above to simulate a generation state.

All states

Thinking

Thinking

Model has received the request. Processing before first token arrives.

Generating

Generating

Output is actively streaming to the interface. Cursor visible.

Complete

Complete

Generation finished. Explicit signal — not inferred from other UI elements.

Response stalled

Response stalled

Watchdog threshold exceeded. No new tokens for 5–8s. Recovery affordance shown.

Error

Error

Network failure, context limit, or policy refusal. Distinct from hung.