UAT: TUI app missing required key bindings — ctrl+s, shift+tab, tab (persona cycle), F2, ctrl+n, ctrl+w, escape #4044

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

Metadata

  • Branch: fix/tui-missing-key-bindings
  • Commit Message: fix(tui): add missing key bindings for sessions, sidebar, persona cycle, settings, and escape
  • Milestone: (none — backlog)

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

Bug Report

What Was Tested

Code-level analysis of src/cleveragents/tui/app.py — specifically the BINDINGS class variable of _TextualCleverAgentsTuiApp.

Expected Behavior (from spec)

The specification defines the following required global key bindings (TUI Key Bindings section):

Key Action
ctrl+q Quit TUI immediately
ctrl+c Interrupt actor / double-tap to quit
F1 Toggle help panel
F2 / ctrl+, Open settings
ctrl+s Open Sessions screen
ctrl+n Create new session tab
ctrl+w Close current session tab
ctrl+[ / ctrl+] Switch to previous / next session tab
shift+tab Cycle sidebar: hidden → visible → fullscreen
escape Close current overlay / modal / sidebar
tab Cycle to next persona (prompt focused)
ctrl+tab Cycle to next argument preset

Actual Behavior

The BINDINGS class variable in _TextualCleverAgentsTuiApp only defines 3 bindings:

BINDINGS: ClassVar[list[tuple[str, str, str]]] = [
    ("ctrl+q", "quit", "Quit"),
    ("f1", "help", "Help"),
    ("ctrl+t", "cycle_preset", "Cycle Preset"),  # also wrong key, see separate bug
]

The following spec-required bindings are entirely absent:

  • ctrl+s → Open Sessions screen
  • shift+tab → Cycle sidebar state (hidden → visible → fullscreen)
  • tab → Cycle to next persona
  • F2 / ctrl+, → Open settings screen
  • ctrl+n → Create new session tab
  • ctrl+w → Close current session tab
  • ctrl+[ / ctrl+] → Switch session tabs
  • escape → Close current overlay / modal / sidebar

Additionally, the corresponding action methods (action_sessions, action_cycle_sidebar, action_cycle_persona, action_settings, action_new_session, action_close_session, action_prev_session, action_next_session) are also absent from the app class.

Code Location

src/cleveragents/tui/app.py, lines 92–96 — the BINDINGS class variable.

Subtasks

  • Add ctrl+s binding → action_sessions (opens Sessions screen overlay)
  • Add shift+tab binding → action_cycle_sidebar (hidden → visible → fullscreen)
  • Add tab binding → action_cycle_persona (cycles through persona cycle list)
  • Add F2 / ctrl+, binding → action_settings (opens Settings screen)
  • Add ctrl+n binding → action_new_session
  • Add ctrl+w binding → action_close_session
  • Add ctrl+[ / ctrl+] bindings → action_prev_session / action_next_session
  • Add escape binding → action_escape (dismiss overlay / sidebar)
  • Implement stub action methods for each new binding
  • Add BDD scenarios covering each new binding
  • Verify with nox -e unit_tests

Definition of Done

  • All spec-required key bindings are present in BINDINGS
  • All corresponding action methods exist (stubs acceptable for non-implemented screens)
  • Unit tests cover each binding
  • nox -e unit_tests passes
  • All nox stages pass
  • Coverage >= 97%

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

## Metadata - **Branch**: `fix/tui-missing-key-bindings` - **Commit Message**: `fix(tui): add missing key bindings for sessions, sidebar, persona cycle, settings, and escape` - **Milestone**: *(none — backlog)* > **Backlog note:** This issue was discovered during autonomous operation > on milestone UAT Testing. It does not block milestone completion and has been > placed in the backlog for human review and future milestone assignment. ## Bug Report ### What Was Tested Code-level analysis of `src/cleveragents/tui/app.py` — specifically the `BINDINGS` class variable of `_TextualCleverAgentsTuiApp`. ### Expected Behavior (from spec) The specification defines the following required global key bindings (TUI Key Bindings section): | Key | Action | |-----|--------| | `ctrl+q` | Quit TUI immediately | | `ctrl+c` | Interrupt actor / double-tap to quit | | `F1` | Toggle help panel | | `F2` / `ctrl+,` | Open settings | | `ctrl+s` | Open Sessions screen | | `ctrl+n` | Create new session tab | | `ctrl+w` | Close current session tab | | `ctrl+[` / `ctrl+]` | Switch to previous / next session tab | | `shift+tab` | Cycle sidebar: hidden → visible → fullscreen | | `escape` | Close current overlay / modal / sidebar | | `tab` | Cycle to next persona (prompt focused) | | `ctrl+tab` | Cycle to next argument preset | ### Actual Behavior The `BINDINGS` class variable in `_TextualCleverAgentsTuiApp` only defines **3 bindings**: ```python BINDINGS: ClassVar[list[tuple[str, str, str]]] = [ ("ctrl+q", "quit", "Quit"), ("f1", "help", "Help"), ("ctrl+t", "cycle_preset", "Cycle Preset"), # also wrong key, see separate bug ] ``` The following spec-required bindings are **entirely absent**: - `ctrl+s` → Open Sessions screen - `shift+tab` → Cycle sidebar state (hidden → visible → fullscreen) - `tab` → Cycle to next persona - `F2` / `ctrl+,` → Open settings screen - `ctrl+n` → Create new session tab - `ctrl+w` → Close current session tab - `ctrl+[` / `ctrl+]` → Switch session tabs - `escape` → Close current overlay / modal / sidebar Additionally, the corresponding action methods (`action_sessions`, `action_cycle_sidebar`, `action_cycle_persona`, `action_settings`, `action_new_session`, `action_close_session`, `action_prev_session`, `action_next_session`) are also absent from the app class. ### Code Location `src/cleveragents/tui/app.py`, lines 92–96 — the `BINDINGS` class variable. ## Subtasks - [ ] Add `ctrl+s` binding → `action_sessions` (opens Sessions screen overlay) - [ ] Add `shift+tab` binding → `action_cycle_sidebar` (hidden → visible → fullscreen) - [ ] Add `tab` binding → `action_cycle_persona` (cycles through persona cycle list) - [ ] Add `F2` / `ctrl+,` binding → `action_settings` (opens Settings screen) - [ ] Add `ctrl+n` binding → `action_new_session` - [ ] Add `ctrl+w` binding → `action_close_session` - [ ] Add `ctrl+[` / `ctrl+]` bindings → `action_prev_session` / `action_next_session` - [ ] Add `escape` binding → `action_escape` (dismiss overlay / sidebar) - [ ] Implement stub action methods for each new binding - [ ] Add BDD scenarios covering each new binding - [ ] Verify with `nox -e unit_tests` ## Definition of Done - [ ] All spec-required key bindings are present in `BINDINGS` - [ ] All corresponding action methods exist (stubs acceptable for non-implemented screens) - [ ] Unit tests cover each binding - [ ] `nox -e unit_tests` passes - All nox stages pass - Coverage >= 97% --- **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:44 +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#4044
No description provided.