UAT: TUI conversation stream is a plain Static widget — spec requires typed message blocks (UserInput, ActorResponse, ToolCall, etc.) #5026

Closed
opened 2026-04-09 00:49:19 +00:00 by HAL9000 · 1 comment
Owner

Bug Report

Feature Area: TUI — Conversation Stream

Severity: Critical (core conversation UX missing)

What Was Tested

The TUI conversation stream as defined in the specification (§ Conversation Stream, §Conversation Block Details).

Expected Behavior (from spec)

The spec defines a rich conversation stream with typed message blocks:

Block Type Visual Treatment
Welcome ASCII art + instructions in $text-success
UserInput Left border $secondary, 15% background tint, Markdown
ActorResponse Streaming Markdown with syntax-highlighted code fences
ActorThought $primary-muted 20% bg, max 10 lines (expandable), italic
ToolCall Expandable: icon + status pill header, collapsible content
PlanProgress Grid layout with status icons per step
DiffView Unified or side-by-side diff, syntax highlighting
TerminalEmbed Bordered terminal, $primary 50% border, green/red tint
ShellResult Left border $primary, 4% foreground bg
Note Semantic: info, warning, error

The conversation uses a 2-column grid: a 1-character cursor column (left) and the content stream (right). Block cursor navigation via alt+up/alt+down.

Actual Behavior (from code analysis)

src/cleveragents/tui/app.py line 112:

yield _Static("CleverAgents TUI", id="conversation")

The entire conversation area is a single Static widget that just displays plain text. When a message is submitted, conversation.update(preview) replaces the entire content with the new text (line 209).

There are no typed block widgets, no streaming, no block cursor, no expand/collapse, no Markdown rendering, no syntax highlighting.

The ThoughtBlockWidget exists in src/cleveragents/tui/widgets/thought_block.py but is never added to the conversation stream.

Steps to Reproduce

  1. Run agents tui
  2. Type a message and press Enter
  3. Observe the conversation area shows only plain text, replacing previous content
  4. No message history, no typed blocks, no visual differentiation between user/actor messages

Code Location

  • src/cleveragents/tui/app.py line 112 (Static widget), lines 186-209 (update logic)
  • src/cleveragents/tui/widgets/thought_block.py (exists but unused in conversation)

Impact

The conversation stream is the primary interaction surface of the TUI. Without typed blocks:

  • No visual distinction between user messages and actor responses
  • No expandable tool call results
  • No streaming actor responses
  • No block cursor navigation
  • No context menu for copying/exporting messages

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: uat-tester

## Bug Report **Feature Area:** TUI — Conversation Stream **Severity:** Critical (core conversation UX missing) ### What Was Tested The TUI conversation stream as defined in the specification (§ Conversation Stream, §Conversation Block Details). ### Expected Behavior (from spec) The spec defines a rich conversation stream with typed message blocks: | Block Type | Visual Treatment | |------------|-----------------| | `Welcome` | ASCII art + instructions in `$text-success` | | `UserInput` | Left border `$secondary`, 15% background tint, Markdown | | `ActorResponse` | Streaming Markdown with syntax-highlighted code fences | | `ActorThought` | `$primary-muted` 20% bg, max 10 lines (expandable), italic | | `ToolCall` | Expandable: icon + status pill header, collapsible content | | `PlanProgress` | Grid layout with status icons per step | | `DiffView` | Unified or side-by-side diff, syntax highlighting | | `TerminalEmbed` | Bordered terminal, `$primary 50%` border, green/red tint | | `ShellResult` | Left border `$primary`, 4% foreground bg | | `Note` | Semantic: info, warning, error | The conversation uses a 2-column grid: a 1-character cursor column (left) and the content stream (right). Block cursor navigation via `alt+up`/`alt+down`. ### Actual Behavior (from code analysis) `src/cleveragents/tui/app.py` line 112: ```python yield _Static("CleverAgents TUI", id="conversation") ``` The entire conversation area is a single `Static` widget that just displays plain text. When a message is submitted, `conversation.update(preview)` replaces the entire content with the new text (line 209). There are no typed block widgets, no streaming, no block cursor, no expand/collapse, no Markdown rendering, no syntax highlighting. The `ThoughtBlockWidget` exists in `src/cleveragents/tui/widgets/thought_block.py` but is never added to the conversation stream. ### Steps to Reproduce 1. Run `agents tui` 2. Type a message and press Enter 3. Observe the conversation area shows only plain text, replacing previous content 4. No message history, no typed blocks, no visual differentiation between user/actor messages ### Code Location - `src/cleveragents/tui/app.py` line 112 (Static widget), lines 186-209 (update logic) - `src/cleveragents/tui/widgets/thought_block.py` (exists but unused in conversation) ### Impact The conversation stream is the primary interaction surface of the TUI. Without typed blocks: - No visual distinction between user messages and actor responses - No expandable tool call results - No streaming actor responses - No block cursor navigation - No context menu for copying/exporting messages --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
Author
Owner

Closing as duplicate of #4644 — both issues report the same problem: TUI conversation stream is a plain Static widget with typed block system not implemented. Issue #4644 has milestone v3.7.0 assigned.


Automated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: backlog-groomer

Closing as duplicate of #4644 — both issues report the same problem: TUI conversation stream is a plain Static widget with typed block system not implemented. Issue #4644 has milestone v3.7.0 assigned. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: backlog-groomer
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core#5026
No description provided.