UAT: TUI app uses generic Textual Header/Footer instead of spec-required custom layout — Throbber, SessionTabs, Flash bar, and sidebar all absent from compose() #4856

Open
opened 2026-04-08 20:09:36 +00:00 by HAL9000 · 0 comments
Owner

Bug Report

Feature Area: TUI Interface — TUI Architecture (ADR-044)

What Was Tested

_TextualCleverAgentsTuiApp.compose() in src/cleveragents/tui/app.py

Expected Behavior (from spec ADR-044)

The spec defines a precise MainScreen layout:

┌─────────────────────────────────────────────────────────────────────────┐
│ Throbber (height: 1, full width, visible when busy)                     │
│ SessionTabs (height: auto, visible when ≥2 sessions)                    │
├──────────────────────────────────────────────────────────┬──────────────┤
│  Conversation (flex: 1fr)                                │  SideBar     │
│  ┌─ ContentsGrid ──────────────────────────────────────┐ │  (dock:right)│
│  │ Cursor │ Contents stream                            │ │              │
│  └────────────────────────────────────────────────────┘ │              │
│  Flash (notification bar, height: 1)                     │              │
│  ┌─ Prompt ──────────────────────────────────────────┐   │              │
│  │ [◯] PromptTextArea                               │   │              │
│  │ PersonaBar: name │ actor │ preset │ cost          │   │              │
│  └───────────────────────────────────────────────────┘   │              │
└──────────────────────────────────────────────────────────┴──────────────┘
│ Footer: F1 Help │ shift+tab Sidebar │ tab Persona │ ctrl+q Quit         │
└─────────────────────────────────────────────────────────────────────────┘

Actual Behavior

compose() yields:

yield _Header(show_clock=True)   # Generic Textual Header — not in spec
with _Vertical(id="main-column"):
    yield _Static("CleverAgents TUI", id="conversation")  # Plain Static, not ConversationStream
    yield HelpPanelOverlay(...)
    yield ReferencePickerOverlay(...)
    yield SlashCommandOverlay(...)
    yield ActorSelectionOverlay(...)
    yield PromptInput(...)
    yield PersonaBar(...)
yield _Footer()  # Generic Textual Footer

Missing from compose():

  1. Throbber — rainbow gradient animated bar (spec: visible when actor is processing)
  2. SessionTabs — multi-session tab bar (spec: visible when ≥2 sessions)
  3. SideBar — right-side collapsible sidebar with Plans/Projects panels
  4. Flash bar — notification bar (height: 1) for plan completion/failure alerts
  5. ConversationStream — typed block system; currently a plain Static widget
  6. ContentsGrid — 2-column grid with block cursor column

The generic _Header(show_clock=True) is not part of the spec layout. The spec footer should show specific hotkeys (F1 Help, shift+tab Sidebar, tab Persona, ctrl+q Quit), not the generic Textual Footer.

Code Location

src/cleveragents/tui/app.py_TextualCleverAgentsTuiApp.compose() method

Impact

The TUI's visual layout does not match the spec. Core features (real-time plan monitoring via sidebar, session management via tabs, loading indicator via throbber, notifications via flash bar) are all absent from the rendered UI.


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

## Bug Report **Feature Area:** TUI Interface — TUI Architecture (ADR-044) ### What Was Tested `_TextualCleverAgentsTuiApp.compose()` in `src/cleveragents/tui/app.py` ### Expected Behavior (from spec ADR-044) The spec defines a precise MainScreen layout: ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ Throbber (height: 1, full width, visible when busy) │ │ SessionTabs (height: auto, visible when ≥2 sessions) │ ├──────────────────────────────────────────────────────────┬──────────────┤ │ Conversation (flex: 1fr) │ SideBar │ │ ┌─ ContentsGrid ──────────────────────────────────────┐ │ (dock:right)│ │ │ Cursor │ Contents stream │ │ │ │ └────────────────────────────────────────────────────┘ │ │ │ Flash (notification bar, height: 1) │ │ │ ┌─ Prompt ──────────────────────────────────────────┐ │ │ │ │ [◯] PromptTextArea │ │ │ │ │ PersonaBar: name │ actor │ preset │ cost │ │ │ │ └───────────────────────────────────────────────────┘ │ │ └──────────────────────────────────────────────────────────┴──────────────┘ │ Footer: F1 Help │ shift+tab Sidebar │ tab Persona │ ctrl+q Quit │ └─────────────────────────────────────────────────────────────────────────┘ ``` ### Actual Behavior `compose()` yields: ```python yield _Header(show_clock=True) # Generic Textual Header — not in spec with _Vertical(id="main-column"): yield _Static("CleverAgents TUI", id="conversation") # Plain Static, not ConversationStream yield HelpPanelOverlay(...) yield ReferencePickerOverlay(...) yield SlashCommandOverlay(...) yield ActorSelectionOverlay(...) yield PromptInput(...) yield PersonaBar(...) yield _Footer() # Generic Textual Footer ``` Missing from `compose()`: 1. **Throbber** — rainbow gradient animated bar (spec: visible when actor is processing) 2. **SessionTabs** — multi-session tab bar (spec: visible when ≥2 sessions) 3. **SideBar** — right-side collapsible sidebar with Plans/Projects panels 4. **Flash bar** — notification bar (height: 1) for plan completion/failure alerts 5. **ConversationStream** — typed block system; currently a plain `Static` widget 6. **ContentsGrid** — 2-column grid with block cursor column The generic `_Header(show_clock=True)` is not part of the spec layout. The spec footer should show specific hotkeys (F1 Help, shift+tab Sidebar, tab Persona, ctrl+q Quit), not the generic Textual Footer. ### Code Location `src/cleveragents/tui/app.py` — `_TextualCleverAgentsTuiApp.compose()` method ### Impact The TUI's visual layout does not match the spec. Core features (real-time plan monitoring via sidebar, session management via tabs, loading indicator via throbber, notifications via flash bar) are all absent from the rendered UI. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.7.0 milestone 2026-04-08 20:15:03 +00:00
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.

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