UAT: TUI multi-session tab bar not implemented — session tabs, ctrl+[/], ctrl+n, ctrl+w, 1-9 jump shortcuts all absent #4776

Closed
opened 2026-04-08 18:56:20 +00:00 by HAL9000 · 1 comment
Owner

Bug Report

Feature Area: TUI Multi-Session Management
Severity: High (backlog)
Found by: UAT tester instance uat-tui-worker-1
Spec reference: docs/specification.md §Session Tabs (lines ~29761–29773) and §TUI Architecture Overview (line ~29025)


What Was Tested

The src/cleveragents/tui/app.py was inspected for multi-session tab bar implementation.

Expected Behavior (from spec)

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

│ Session 1  ┃ Session 2 ┃  Session 3  ┃  ⌛ Session 4                       │
│              ┗━━━━━━━━━━━┛                                                 │
│                                                                            │
│ ctrl+[ Previous │ ctrl+] Next │ ctrl+n New │ ctrl+w Close                  │
│ ctrl+s Sessions screen │ 1-9 Jump to tab                                   │
│                                                                            │
│ Indicators:  ⌛ actor working  │  ❯ awaiting input  │  (plain) idle        │
│              ━━━ active tab underline                                      │

Key behaviors:

  • Hidden when only one session exists (per spec: "Hidden when only one session exists")
  • ctrl+[ / ctrl+] — Switch to previous/next session tab
  • ctrl+n — Create a new session tab
  • ctrl+w — Close the current session tab
  • 1-9 — Jump directly to session tab by index
  • State indicators: (actor working), (awaiting input), plain (idle)
  • Active tab underline indicator

Actual Behavior

The _TextualCleverAgentsTuiApp in app.py:

  • Has a single SessionView object (self._session = SessionView(session_id="default", transcript=[]))
  • Has no session tab bar widget in compose()
  • Has no ctrl+[, ctrl+], ctrl+n, ctrl+w, or 1-9 bindings
  • Has no multi-session state management

The SessionView dataclass is minimal:

@dataclass(slots=True)
class SessionView:
    session_id: str
    transcript: list[str]

Code Location

  • App: src/cleveragents/tui/app.pyBINDINGS (line ~92) and compose() (line ~109)
  • Missing: Session tab bar widget
  • Missing: ctrl+[ / ctrl+] bindings for tab navigation
  • Missing: ctrl+n binding for new session
  • Missing: ctrl+w binding for close session
  • Missing: 1-9 key bindings for direct tab jump
  • Missing: Multi-session state management (list of SessionView objects)

Impact

  • Users can only have one session at a time
  • No way to switch between concurrent actor conversations
  • No way to create new sessions from the TUI
  • The spec's multi-session workflow (e.g., reviewing auth module in Session 2 while Session 1 runs a plan) is impossible

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

## Bug Report **Feature Area:** TUI Multi-Session Management **Severity:** High (backlog) **Found by:** UAT tester instance `uat-tui-worker-1` **Spec reference:** docs/specification.md §Session Tabs (lines ~29761–29773) and §TUI Architecture Overview (line ~29025) --- ### What Was Tested The `src/cleveragents/tui/app.py` was inspected for multi-session tab bar implementation. ### Expected Behavior (from spec) The spec defines a **multi-session tab bar** as a core TUI feature: ``` │ Session 1 ┃ Session 2 ┃ Session 3 ┃ ⌛ Session 4 │ │ ┗━━━━━━━━━━━┛ │ │ │ │ ctrl+[ Previous │ ctrl+] Next │ ctrl+n New │ ctrl+w Close │ │ ctrl+s Sessions screen │ 1-9 Jump to tab │ │ │ │ Indicators: ⌛ actor working │ ❯ awaiting input │ (plain) idle │ │ ━━━ active tab underline │ ``` Key behaviors: - **Hidden when only one session exists** (per spec: "Hidden when only one session exists") - `ctrl+[` / `ctrl+]` — Switch to previous/next session tab - `ctrl+n` — Create a new session tab - `ctrl+w` — Close the current session tab - `1-9` — Jump directly to session tab by index - State indicators: `⌛` (actor working), `❯` (awaiting input), plain (idle) - Active tab underline indicator ### Actual Behavior The `_TextualCleverAgentsTuiApp` in `app.py`: - Has a single `SessionView` object (`self._session = SessionView(session_id="default", transcript=[])`) - Has no session tab bar widget in `compose()` - Has no `ctrl+[`, `ctrl+]`, `ctrl+n`, `ctrl+w`, or `1-9` bindings - Has no multi-session state management The `SessionView` dataclass is minimal: ```python @dataclass(slots=True) class SessionView: session_id: str transcript: list[str] ``` ### Code Location - **App:** `src/cleveragents/tui/app.py` — `BINDINGS` (line ~92) and `compose()` (line ~109) - **Missing:** Session tab bar widget - **Missing:** `ctrl+[` / `ctrl+]` bindings for tab navigation - **Missing:** `ctrl+n` binding for new session - **Missing:** `ctrl+w` binding for close session - **Missing:** `1-9` key bindings for direct tab jump - **Missing:** Multi-session state management (list of `SessionView` objects) ### Impact - Users can only have one session at a time - No way to switch between concurrent actor conversations - No way to create new sessions from the TUI - The spec's multi-session workflow (e.g., reviewing auth module in Session 2 while Session 1 runs a plan) is impossible --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
Author
Owner

Closing as duplicate of #4656 — both issues report the same problem: TUI multi-session tabs not implemented. Issue #4656 has milestone v3.7.0 and story points (8) assigned.


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

Closing as duplicate of #4656 — both issues report the same problem: TUI multi-session tabs not implemented. Issue #4656 has milestone v3.7.0 and story points (8) 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#4776
No description provided.