UAT: TUI multi-session tabs lack independent A2A bindings — new/close session actions are stubs and ctrl+[/ctrl+] navigation missing #3349

Open
opened 2026-04-05 10:26:39 +00:00 by freemo · 1 comment
Owner

Metadata

  • Branch: bugfix/m8-tui-multi-session-a2a-bindings
  • Commit Message: fix(tui): implement multi-session tabs with independent A2A bindings and navigation
  • Milestone: None (Backlog — see note below)
  • Parent Epic: #868

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.

Background and Context

Per ADR-044 (TUI Architecture and Framework), the MainScreen must support multiple concurrent sessions, each with an independent persona, conversation history, and A2A Task binding. This was inspected in PR #1302 (branch: feature/m8-tui-mainscreen) at src/cleveragents/tui/screens/main_screen.py and src/cleveragents/tui/widgets/session_tabs.py.

The multi-session tab feature is entirely non-functional. Users cannot create multiple concurrent sessions, cannot navigate between tabs, and each session does not have an independent A2A binding. This is a core feature of the v3.7.0 milestone scope.

Current Behavior

In PR #1302 (feature/m8-tui-mainscreen):

  1. action_new_session() is a stub that only calls _show_flash("New session created") — no actual session is created, no A2A binding is established
  2. action_close_session() is a stub that only calls _show_flash("Session closed") — no actual session is closed
  3. ctrl+[ and ctrl+] keybindings are NOT in the BINDINGS list — tab navigation is not implemented
  4. No A2A Task binding per session tab exists anywhere in the codebase
  5. No per-session TuiMaterializer instantiation logic exists
  6. Session state indicators (, , plain) are not implemented in SessionTabs widget

Expected Behavior (from spec / ADR-044)

Per ADR-044 (TUI Architecture and Framework), multi-session tabs must:

  • Support multiple concurrent sessions, each with an independent persona, conversation history, and A2A Task binding
  • ctrl+n creates a new session tab with the current persona
  • ctrl+w closes the current session tab (with confirmation if unsaved)
  • ctrl+[ / ctrl+] navigates between session tabs
  • Session tabs show state indicators: (actor working), (awaiting user input), plain (idle)
  • Each session tab gets its own TuiMaterializer instance with an independent widget map
  • Session state is persisted; ctrl+r resumes a previous session from the sessions screen

Steps to Reproduce

  1. Checkout branch feature/m8-tui-mainscreen
  2. Inspect src/cleveragents/tui/screens/main_screen.py
  3. Check BINDINGS list — ctrl+[ and ctrl+] are absent
  4. Check action_new_session() — only shows flash message, no session creation
  5. Check action_close_session() — only shows flash message, no session closure
  6. Confirm no A2A binding code exists in any TUI source file

Code Location

  • src/cleveragents/tui/screens/main_screen.py (branch: feature/m8-tui-mainscreen)
    • action_new_session(): stub (line ~140)
    • action_close_session(): stub (line ~144)
    • BINDINGS: missing ctrl+[ and ctrl+] entries
  • src/cleveragents/tui/widgets/session_tabs.py — no A2A binding or state indicator logic

Subtasks

  • Implement action_new_session() to create a real session tab with its own TuiMaterializer instance and A2A Task binding
  • Implement action_close_session() to close the current session tab with a confirmation dialog if there is unsaved content
  • Add ctrl+[ and ctrl+] keybindings to BINDINGS in MainScreen for session tab navigation
  • Implement session tab navigation logic (previous/next tab) wired to the new keybindings
  • Implement session state indicators ( working, awaiting input, plain idle) in SessionTabs widget
  • Ensure each session tab maintains an independent conversation history and persona
  • Establish A2A Task binding per session tab at creation time
  • Tests (Behave): Add scenarios for multi-session tab creation, navigation, and closure
  • Tests (Behave): Add scenarios for per-session A2A binding and state indicators
  • Tests (Robot): Add integration test for multi-session tab workflow
  • Verify coverage ≥97% via nox -s coverage_report
  • Run nox (all default sessions), fix any errors

Definition of Done

This issue is complete when:

  • All subtasks above are completed and checked off.
  • ctrl+n creates a real new session tab with its own TuiMaterializer instance and A2A binding.
  • ctrl+w closes the current session tab with confirmation dialog if unsaved.
  • ctrl+[ and ctrl+] navigate between session tabs (present in BINDINGS).
  • Session tabs display state indicators: (working), (awaiting input), plain (idle).
  • Each session tab has an independent conversation history and persona.
  • A2A Task binding is established per session tab.
  • A Git commit is created where the first line of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional lines providing relevant details about the implementation.
  • The commit is pushed to the remote on the branch matching the Branch in Metadata exactly.
  • The commit is submitted as a pull request to master, reviewed, and merged before this issue is marked done.
  • All nox stages pass.
  • Coverage ≥ 97%.

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

## Metadata - **Branch**: `bugfix/m8-tui-multi-session-a2a-bindings` - **Commit Message**: `fix(tui): implement multi-session tabs with independent A2A bindings and navigation` - **Milestone**: None (Backlog — see note below) - **Parent Epic**: #868 > **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. ## Background and Context Per ADR-044 (TUI Architecture and Framework), the `MainScreen` must support multiple concurrent sessions, each with an independent persona, conversation history, and A2A Task binding. This was inspected in PR #1302 (branch: `feature/m8-tui-mainscreen`) at `src/cleveragents/tui/screens/main_screen.py` and `src/cleveragents/tui/widgets/session_tabs.py`. The multi-session tab feature is entirely non-functional. Users cannot create multiple concurrent sessions, cannot navigate between tabs, and each session does not have an independent A2A binding. This is a core feature of the v3.7.0 milestone scope. ## Current Behavior In PR #1302 (`feature/m8-tui-mainscreen`): 1. `action_new_session()` is a stub that only calls `_show_flash("New session created")` — no actual session is created, no A2A binding is established 2. `action_close_session()` is a stub that only calls `_show_flash("Session closed")` — no actual session is closed 3. `ctrl+[` and `ctrl+]` keybindings are **NOT** in the `BINDINGS` list — tab navigation is not implemented 4. No A2A Task binding per session tab exists anywhere in the codebase 5. No per-session `TuiMaterializer` instantiation logic exists 6. Session state indicators (`⚙`, `⬯`, plain) are not implemented in `SessionTabs` widget ## Expected Behavior (from spec / ADR-044) Per ADR-044 (TUI Architecture and Framework), multi-session tabs must: - Support multiple concurrent sessions, each with an independent persona, conversation history, and A2A Task binding - `ctrl+n` creates a new session tab with the current persona - `ctrl+w` closes the current session tab (with confirmation if unsaved) - `ctrl+[` / `ctrl+]` navigates between session tabs - Session tabs show state indicators: `⚙` (actor working), `⬯` (awaiting user input), plain (idle) - Each session tab gets its own `TuiMaterializer` instance with an independent widget map - Session state is persisted; `ctrl+r` resumes a previous session from the sessions screen ## Steps to Reproduce 1. Checkout branch `feature/m8-tui-mainscreen` 2. Inspect `src/cleveragents/tui/screens/main_screen.py` 3. Check `BINDINGS` list — `ctrl+[` and `ctrl+]` are absent 4. Check `action_new_session()` — only shows flash message, no session creation 5. Check `action_close_session()` — only shows flash message, no session closure 6. Confirm no A2A binding code exists in any TUI source file ## Code Location - `src/cleveragents/tui/screens/main_screen.py` (branch: `feature/m8-tui-mainscreen`) - `action_new_session()`: stub (line ~140) - `action_close_session()`: stub (line ~144) - `BINDINGS`: missing `ctrl+[` and `ctrl+]` entries - `src/cleveragents/tui/widgets/session_tabs.py` — no A2A binding or state indicator logic ## Subtasks - [ ] Implement `action_new_session()` to create a real session tab with its own `TuiMaterializer` instance and A2A Task binding - [ ] Implement `action_close_session()` to close the current session tab with a confirmation dialog if there is unsaved content - [ ] Add `ctrl+[` and `ctrl+]` keybindings to `BINDINGS` in `MainScreen` for session tab navigation - [ ] Implement session tab navigation logic (previous/next tab) wired to the new keybindings - [ ] Implement session state indicators (`⚙` working, `⬯` awaiting input, plain idle) in `SessionTabs` widget - [ ] Ensure each session tab maintains an independent conversation history and persona - [ ] Establish A2A Task binding per session tab at creation time - [ ] Tests (Behave): Add scenarios for multi-session tab creation, navigation, and closure - [ ] Tests (Behave): Add scenarios for per-session A2A binding and state indicators - [ ] Tests (Robot): Add integration test for multi-session tab workflow - [ ] Verify coverage ≥97% via `nox -s coverage_report` - [ ] Run `nox` (all default sessions), fix any errors ## Definition of Done This issue is complete when: - All subtasks above are completed and checked off. - `ctrl+n` creates a real new session tab with its own `TuiMaterializer` instance and A2A binding. - `ctrl+w` closes the current session tab with confirmation dialog if unsaved. - `ctrl+[` and `ctrl+]` navigate between session tabs (present in `BINDINGS`). - Session tabs display state indicators: `⚙` (working), `⬯` (awaiting input), plain (idle). - Each session tab has an independent conversation history and persona. - A2A Task binding is established per session tab. - A Git commit is created where the **first line** of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional lines providing relevant details about the implementation. - The commit is pushed to the remote on the branch matching the **Branch** in Metadata exactly. - The commit is submitted as a **pull request** to `master`, reviewed, and **merged** before this issue is marked done. - All nox stages pass. - Coverage ≥ 97%. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-uat-tester
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Backlog (unchanged) — TUI multi-session tabs are a v3.7.0 feature. The milestone has no deadline and development should focus on M1-M6 first.
  • Milestone: Assigning to v3.7.0 — this is a core TUI feature per ADR-044.
  • Story Points: 13 — XXL — This is a major feature requiring multi-session tab creation, A2A binding per session, navigation keybindings, state indicators, and comprehensive tests. Estimated 1+ week.
  • MoSCoW: Should Have — Multi-session tabs are a core TUI feature per ADR-044, but v3.7.0 has no deadline and lower priority than M1-M6 milestones.
  • Parent Epic: #868 (TUI Interface, Modals and Persona System)

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

Issue triaged by project owner: - **State**: Verified - **Priority**: Backlog (unchanged) — TUI multi-session tabs are a v3.7.0 feature. The milestone has no deadline and development should focus on M1-M6 first. - **Milestone**: Assigning to v3.7.0 — this is a core TUI feature per ADR-044. - **Story Points**: 13 — XXL — This is a major feature requiring multi-session tab creation, A2A binding per session, navigation keybindings, state indicators, and comprehensive tests. Estimated 1+ week. - **MoSCoW**: Should Have — Multi-session tabs are a core TUI feature per ADR-044, but v3.7.0 has no deadline and lower priority than M1-M6 milestones. - **Parent Epic**: #868 (TUI Interface, Modals and Persona System) --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
freemo added this to the v3.7.0 milestone 2026-04-05 16:29:05 +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.

Dependencies

No dependencies set.

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