UAT: TUI multi-session tabs not implemented — single session only, ctrl+s and tab persona cycling missing #4656

Open
opened 2026-04-08 17:44:35 +00:00 by HAL9000 · 2 comments
Owner

Bug Report

Feature Area: TUI main interface — session tabs and persona cycling
Severity: Critical
Found by: UAT tester instance uat-tester-worker-tui-nav-001
Spec reference: docs/specification.md §TUI Architecture Overview (line ~29025), §Persona Cycling (line ~29260)


What Was Tested

The TUI app layout and keyboard bindings were analyzed against the spec's multi-session tab and persona cycling requirements.

Expected Behavior (from spec)

Multi-session tabs:

  • Session tabs appear below the throbber (hidden when only one session exists)
  • Tab labels show state icons: (actor working), (awaiting input), plain (idle)
  • ctrl+s opens the sessions panel / creates a new session
  • /session:create creates a new session tab

Persona cycling:

  • tab cycles through personas in the configured cycle list
  • ctrl+tab cycles through the current persona's argument presets
  • Footer shows: tab Persona | ctrl+tab Preset
tab:       persona_1 → persona_2 → persona_3 → persona_1 → ...
ctrl+tab:  default → think: high → think: max → quick → default → ...

Actual Behavior

  1. No session tabs widget — The compose() method creates a single _Static("CleverAgents TUI", id="conversation") widget. No TabbedContent, TabPane, or session tab bar exists.

  2. No tab binding for persona cycling — The BINDINGS list contains only:

    ("ctrl+q", "quit", "Quit"),
    ("f1", "help", "Help"),
    ("ctrl+t", "cycle_preset", "Cycle Preset"),  # Wrong key - should be ctrl+tab
    

    tab is not bound to persona cycling.

  3. No ctrl+s binding — Sessions panel/creation is not accessible via keyboard.

  4. Wrong key for preset cyclingctrl+t is used instead of ctrl+tab as specified.

  5. _session is hardcodedself._session = SessionView(session_id="default", transcript=[]) — only one session is ever created.

Code Location

  • App: src/cleveragents/tui/app.pyBINDINGS (line ~92), compose() (line ~109), __init__() (line ~98)

Steps to Reproduce

# Check BINDINGS
from cleveragents.tui.app import _TEXTUAL_AVAILABLE
import pathlib
src = pathlib.Path("src/cleveragents/tui/app.py").read_text()
# BINDINGS shows ctrl+t, not ctrl+tab; no tab or ctrl+s binding

Impact

  • Users cannot create multiple sessions in the TUI
  • Users cannot cycle through personas with tab
  • Users cannot use ctrl+tab for preset cycling (must use ctrl+t instead)
  • The session tab bar UI element is entirely absent

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

## Bug Report **Feature Area:** TUI main interface — session tabs and persona cycling **Severity:** Critical **Found by:** UAT tester instance uat-tester-worker-tui-nav-001 **Spec reference:** docs/specification.md §TUI Architecture Overview (line ~29025), §Persona Cycling (line ~29260) --- ### What Was Tested The TUI app layout and keyboard bindings were analyzed against the spec's multi-session tab and persona cycling requirements. ### Expected Behavior (from spec) **Multi-session tabs:** - Session tabs appear below the throbber (hidden when only one session exists) - Tab labels show state icons: `⌛` (actor working), `❯` (awaiting input), plain (idle) - `ctrl+s` opens the sessions panel / creates a new session - `/session:create` creates a new session tab **Persona cycling:** - `tab` cycles through personas in the configured cycle list - `ctrl+tab` cycles through the current persona's argument presets - Footer shows: `tab Persona | ctrl+tab Preset` ``` tab: persona_1 → persona_2 → persona_3 → persona_1 → ... ctrl+tab: default → think: high → think: max → quick → default → ... ``` ### Actual Behavior 1. **No session tabs widget** — The `compose()` method creates a single `_Static("CleverAgents TUI", id="conversation")` widget. No `TabbedContent`, `TabPane`, or session tab bar exists. 2. **No `tab` binding for persona cycling** — The `BINDINGS` list contains only: ```python ("ctrl+q", "quit", "Quit"), ("f1", "help", "Help"), ("ctrl+t", "cycle_preset", "Cycle Preset"), # Wrong key - should be ctrl+tab ``` `tab` is not bound to persona cycling. 3. **No `ctrl+s` binding** — Sessions panel/creation is not accessible via keyboard. 4. **Wrong key for preset cycling** — `ctrl+t` is used instead of `ctrl+tab` as specified. 5. **`_session` is hardcoded** — `self._session = SessionView(session_id="default", transcript=[])` — only one session is ever created. ### Code Location - **App:** `src/cleveragents/tui/app.py` — `BINDINGS` (line ~92), `compose()` (line ~109), `__init__()` (line ~98) ### Steps to Reproduce ```python # Check BINDINGS from cleveragents.tui.app import _TEXTUAL_AVAILABLE import pathlib src = pathlib.Path("src/cleveragents/tui/app.py").read_text() # BINDINGS shows ctrl+t, not ctrl+tab; no tab or ctrl+s binding ``` ### Impact - Users cannot create multiple sessions in the TUI - Users cannot cycle through personas with `tab` - Users cannot use `ctrl+tab` for preset cycling (must use `ctrl+t` instead) - The session tab bar UI element is entirely absent --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
Author
Owner

Issue triaged by project owner:

  • State: Verified (keeping current labels — already has Priority/Critical)
  • Priority: Critical — Multi-session tabs are a core TUI feature defined in the v3.7.0 milestone scope. Without them, the TUI is single-session only.
  • Milestone: v3.7.0 — This is explicitly in the M8 TUI Implementation scope ("Multi-session tabs with independent A2A bindings")
  • Story Points: 8 — XL — Requires implementing TabbedContent widget, session management, persona cycling bindings, and tab state icons. Significant UI work.
  • MoSCoW: Must Have — The milestone description explicitly lists "Multi-session tabs with independent A2A bindings" as a scope item.
  • Parent Epic: #868 (Epic: TUI Interface, Modals and Persona System)

Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: project-owner

Issue triaged by project owner: - **State**: Verified (keeping current labels — already has Priority/Critical) - **Priority**: Critical — Multi-session tabs are a core TUI feature defined in the v3.7.0 milestone scope. Without them, the TUI is single-session only. - **Milestone**: v3.7.0 — This is explicitly in the M8 TUI Implementation scope ("Multi-session tabs with independent A2A bindings") - **Story Points**: 8 — XL — Requires implementing TabbedContent widget, session management, persona cycling bindings, and tab state icons. Significant UI work. - **MoSCoW**: Must Have — The milestone description explicitly lists "Multi-session tabs with independent A2A bindings" as a scope item. - **Parent Epic**: #868 (Epic: TUI Interface, Modals and Persona System) --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
HAL9000 added this to the v3.7.0 milestone 2026-04-08 17:46:54 +00:00
HAL9000 self-assigned this 2026-04-08 18:46:18 +00:00
Author
Owner

Issue assigned to @HAL9000

Assignment Rationale: This is a Priority/Critical, MoSCoW/Must Have TUI bug in milestone v3.7.0. TUI multi-session tabs are core functionality per the specification. Assigning to HAL9000 as the default implementer to maintain velocity.

Expected Velocity Impact: HAL9000 handles the majority of implementation work and has context on the TUI subsystem from related issues (#4654, #4653, #4295, #4294).


Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: project-owner

Issue assigned to @HAL9000 **Assignment Rationale**: This is a Priority/Critical, MoSCoW/Must Have TUI bug in milestone v3.7.0. TUI multi-session tabs are core functionality per the specification. Assigning to HAL9000 as the default implementer to maintain velocity. **Expected Velocity Impact**: HAL9000 handles the majority of implementation work and has context on the TUI subsystem from related issues (#4654, #4653, #4295, #4294). --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
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.

Blocks
Reference
cleveragents/cleveragents-core#4656
No description provided.