UAT: TUI multi-session tabs are completely absent — spec requires independent session tabs with state icons #4070

Open
opened 2026-04-06 09:55:24 +00:00 by freemo · 0 comments
Owner

Metadata

  • Branch: feat/tui-multi-session-tabs
  • Commit Message: feat(tui): implement multi-session tab bar with state icons and independent session management
  • Milestone: (none — routed to backlog per Milestone Scope Guard)
  • Parent Epic: #868 (Epic: TUI Interface, Modals and Persona System)

Bug Report

What was tested: TUI multi-session tab implementation against the specification

Expected behavior (from spec, section "TUI Architecture Overview" and "MainScreen Layout"):

The spec defines a multi-session tab bar as a core TUI feature:

  • Tab bar appears below the throbber (rainbow gradient bar at top)
  • Shows all active sessions with underline indicator on the active session
  • Session labels show state icons: (actor working), (awaiting input), plain (idle)
  • Hidden when only one session exists
  • ctrl+s opens session management
  • ctrl+n creates a new session tab
  • ctrl+w closes the current session tab
  • Each session maintains independent persona, conversation history, and A2A binding
  • Sessions are identified as "Session 1", "Session 2", "Session 3", etc.

The spec states: "Multi-session tabs — independent sessions with separate personas, conversations, and A2A bindings"

Actual behavior (from code analysis):

The TUI app (src/cleveragents/tui/app.py) has a single hardcoded SessionView with session_id="default". There is:

  • No tab bar widget
  • No session switching mechanism
  • No ctrl+n (new session) or ctrl+w (close session) bindings
  • No session state icons
  • No independent session management

The BINDINGS list only contains ctrl+q, f1, and ctrl+t (which is already wrong per another UAT issue). The SessionView dataclass is a minimal stub with only session_id and transcript fields.

Code location:

  • src/cleveragents/tui/app.pySessionView dataclass (lines 56-60), BINDINGS (lines 92-96), __init__ (line 107: self._session = SessionView(session_id="default", transcript=[]))

Steps to reproduce:

  1. Run agents tui
  2. Press ctrl+n to create a new session
  3. Observe: no new session tab appears; the key binding has no effect
  4. Observe: no tab bar is visible at all

Severity: Critical — multi-session support is a core differentiator of the TUI over the CLI. Without it, users cannot manage multiple concurrent agent sessions from the TUI.

Subtasks

  • Implement SessionTabBar widget with underline indicator and state icons
  • Implement session state tracking (working , awaiting , idle)
  • Add ctrl+n binding to create new session
  • Add ctrl+w binding to close current session
  • Add ctrl+s binding for session management
  • Implement independent session state (persona, conversation, A2A binding) per tab
  • Hide tab bar when only one session exists
  • Add unit tests (Behave scenarios) for session tab creation and switching
  • Add integration tests (Robot Framework) for multi-session workflows

Definition of Done

  • Tab bar appears when 2+ sessions exist, hidden with 1 session
  • ctrl+n creates a new session tab
  • ctrl+w closes the current session tab
  • Session state icons update in real-time (/❯/plain)
  • Each session maintains independent conversation history
  • Each session maintains independent persona binding
  • All existing TUI tests continue to pass
  • New Behave scenarios cover session tab lifecycle
  • Pyright type checking passes with no suppressions
  • All nox stages pass
  • Coverage >= 97%

Backlog note: This issue was discovered during autonomous operation
on milestone v3.7.0. It does not block milestone completion and has been
placed in the backlog for human review and future milestone assignment.


Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: ca-new-issue-creator

## Metadata - **Branch**: `feat/tui-multi-session-tabs` - **Commit Message**: `feat(tui): implement multi-session tab bar with state icons and independent session management` - **Milestone**: *(none — routed to backlog per Milestone Scope Guard)* - **Parent Epic**: #868 (Epic: TUI Interface, Modals and Persona System) ## Bug Report **What was tested:** TUI multi-session tab implementation against the specification **Expected behavior (from spec, section "TUI Architecture Overview" and "MainScreen Layout"):** The spec defines a **multi-session tab bar** as a core TUI feature: - Tab bar appears below the throbber (rainbow gradient bar at top) - Shows all active sessions with underline indicator on the active session - Session labels show state icons: `⌛` (actor working), `❯` (awaiting input), plain (idle) - Hidden when only one session exists - `ctrl+s` opens session management - `ctrl+n` creates a new session tab - `ctrl+w` closes the current session tab - Each session maintains independent persona, conversation history, and A2A binding - Sessions are identified as "Session 1", "Session 2", "Session 3", etc. The spec states: "Multi-session tabs — independent sessions with separate personas, conversations, and A2A bindings" **Actual behavior (from code analysis):** The TUI app (`src/cleveragents/tui/app.py`) has a single hardcoded `SessionView` with `session_id="default"`. There is: - No tab bar widget - No session switching mechanism - No `ctrl+n` (new session) or `ctrl+w` (close session) bindings - No session state icons - No independent session management The `BINDINGS` list only contains `ctrl+q`, `f1`, and `ctrl+t` (which is already wrong per another UAT issue). The `SessionView` dataclass is a minimal stub with only `session_id` and `transcript` fields. **Code location:** - `src/cleveragents/tui/app.py` — `SessionView` dataclass (lines 56-60), `BINDINGS` (lines 92-96), `__init__` (line 107: `self._session = SessionView(session_id="default", transcript=[])`) **Steps to reproduce:** 1. Run `agents tui` 2. Press `ctrl+n` to create a new session 3. Observe: no new session tab appears; the key binding has no effect 4. Observe: no tab bar is visible at all **Severity:** Critical — multi-session support is a core differentiator of the TUI over the CLI. Without it, users cannot manage multiple concurrent agent sessions from the TUI. ## Subtasks - [ ] Implement `SessionTabBar` widget with underline indicator and state icons - [ ] Implement session state tracking (working `⌛`, awaiting `❯`, idle) - [ ] Add `ctrl+n` binding to create new session - [ ] Add `ctrl+w` binding to close current session - [ ] Add `ctrl+s` binding for session management - [ ] Implement independent session state (persona, conversation, A2A binding) per tab - [ ] Hide tab bar when only one session exists - [ ] Add unit tests (Behave scenarios) for session tab creation and switching - [ ] Add integration tests (Robot Framework) for multi-session workflows ## Definition of Done - [ ] Tab bar appears when 2+ sessions exist, hidden with 1 session - [ ] `ctrl+n` creates a new session tab - [ ] `ctrl+w` closes the current session tab - [ ] Session state icons update in real-time (⌛/❯/plain) - [ ] Each session maintains independent conversation history - [ ] Each session maintains independent persona binding - [ ] All existing TUI tests continue to pass - [ ] New Behave scenarios cover session tab lifecycle - [ ] Pyright type checking passes with no suppressions - [ ] All nox stages pass - [ ] Coverage >= 97% > **Backlog note:** This issue was discovered during autonomous operation > on milestone v3.7.0. It does not block milestone completion and has been > placed in the backlog for human review and future milestone assignment. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-new-issue-creator
HAL9000 added this to the v3.5.0 milestone 2026-04-09 03:11:20 +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.

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