UAT: TUI app BINDINGS only has 3 of 12+ spec-required global key bindings — ctrl+n, ctrl+w, ctrl+s, ctrl+r, shift+tab, f2, ctrl+, and others are missing #5555

Open
opened 2026-04-09 07:28:57 +00:00 by HAL9000 · 2 comments
Owner

Bug Report

Feature Area: TUI Session Persistence — Global Key Bindings
Severity: Critical (blocks v3.7.0 milestone acceptance — session navigation hotkeys are core TUI features)
Spec Reference: §TUI — Global Key Bindings, §TUI — Multi-Session Management, §TUI — Sessions Screen, §TUI — Settings Screen


What Was Tested

Code analysis of src/cleveragents/tui/app.py — the _TextualCleverAgentsTuiApp.BINDINGS class variable — compared against the spec's global key binding requirements.

Expected Behavior (from spec)

The spec (§TUI — Global Key Bindings and §TUI — MainScreen Layout) requires the following global key bindings:

Key Action Spec Reference
ctrl+q Quit immediately §TUI — Global Key Bindings
f1 Toggle help panel §TUI — Global Key Bindings
ctrl+t Cycle argument preset §TUI — Persona Bar
shift+tab Cycle sidebar state (hidden → visible → fullscreen) §TUI — Sidebar Three-State
ctrl+b Focus sidebar when visible §TUI — Sidebar Three-State
ctrl+n Create new session tab §TUI — Multi-Session Management
ctrl+w Close current session tab §TUI — Multi-Session Management
ctrl+] Navigate to next session tab §TUI — Multi-Session Management
ctrl+[ Navigate to previous session tab §TUI — Multi-Session Management
ctrl+s Open Sessions screen §TUI — Sessions Screen
ctrl+r Resume saved session (from Sessions screen) §TUI — Sessions Screen
f2 Open Settings screen §TUI — Settings Screen
ctrl+, Open Settings screen (alternative) §TUI — Settings Screen
alt+up Block cursor up in conversation §TUI — Conversation Stream
alt+down Block cursor down in conversation §TUI — Conversation Stream
escape Cascade navigation toward main screen §TUI — Escape-Cascading Navigation

Actual Behavior (from code)

_TextualCleverAgentsTuiApp.BINDINGS (lines 92–96 of app.py) only defines 3 bindings:

BINDINGS: ClassVar[list[tuple[str, str, str]]] = [
    ("ctrl+q", "quit", "Quit"),
    ("f1", "help", "Help"),
    ("ctrl+t", "cycle_preset", "Cycle Preset"),
]

The following 13 spec-required bindings are completely absent:

  • shift+tab → cycle sidebar state
  • ctrl+b → focus sidebar
  • ctrl+n → new session tab
  • ctrl+w → close session tab
  • ctrl+] → next session tab
  • ctrl+[ → previous session tab
  • ctrl+s → open Sessions screen
  • ctrl+r → resume saved session
  • f2 → open Settings screen
  • ctrl+, → open Settings screen
  • alt+up → block cursor up
  • alt+down → block cursor down
  • escape → cascade navigation

Code Location

  • File: src/cleveragents/tui/app.py
  • Class: _TextualCleverAgentsTuiApp
  • Lines: 92–96 (BINDINGS class variable)

Impact

Users cannot use any session management hotkeys (ctrl+n, ctrl+w, ctrl+s, ctrl+r), sidebar navigation (shift+tab), settings access (f2, ctrl+,), or conversation cursor navigation (alt+up, alt+down). The TUI is effectively keyboard-crippled for all features beyond basic quit, help, and preset cycling.

Note: The broader implementation gaps (missing MainScreen, SessionsScreen, SettingsScreen, multi-session tabs) are tracked in issues #5334, #5338, and #5547. This issue specifically tracks the BINDINGS gap in the current app.py.


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

## Bug Report **Feature Area**: TUI Session Persistence — Global Key Bindings **Severity**: Critical (blocks v3.7.0 milestone acceptance — session navigation hotkeys are core TUI features) **Spec Reference**: §TUI — Global Key Bindings, §TUI — Multi-Session Management, §TUI — Sessions Screen, §TUI — Settings Screen --- ## What Was Tested Code analysis of `src/cleveragents/tui/app.py` — the `_TextualCleverAgentsTuiApp.BINDINGS` class variable — compared against the spec's global key binding requirements. ## Expected Behavior (from spec) The spec (§TUI — Global Key Bindings and §TUI — MainScreen Layout) requires the following global key bindings: | Key | Action | Spec Reference | |-----|--------|----------------| | `ctrl+q` | Quit immediately | §TUI — Global Key Bindings | | `f1` | Toggle help panel | §TUI — Global Key Bindings | | `ctrl+t` | Cycle argument preset | §TUI — Persona Bar | | `shift+tab` | Cycle sidebar state (hidden → visible → fullscreen) | §TUI — Sidebar Three-State | | `ctrl+b` | Focus sidebar when visible | §TUI — Sidebar Three-State | | `ctrl+n` | Create new session tab | §TUI — Multi-Session Management | | `ctrl+w` | Close current session tab | §TUI — Multi-Session Management | | `ctrl+]` | Navigate to next session tab | §TUI — Multi-Session Management | | `ctrl+[` | Navigate to previous session tab | §TUI — Multi-Session Management | | `ctrl+s` | Open Sessions screen | §TUI — Sessions Screen | | `ctrl+r` | Resume saved session (from Sessions screen) | §TUI — Sessions Screen | | `f2` | Open Settings screen | §TUI — Settings Screen | | `ctrl+,` | Open Settings screen (alternative) | §TUI — Settings Screen | | `alt+up` | Block cursor up in conversation | §TUI — Conversation Stream | | `alt+down` | Block cursor down in conversation | §TUI — Conversation Stream | | `escape` | Cascade navigation toward main screen | §TUI — Escape-Cascading Navigation | ## Actual Behavior (from code) `_TextualCleverAgentsTuiApp.BINDINGS` (lines 92–96 of `app.py`) 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"), ] ``` The following **13 spec-required bindings** are completely absent: - `shift+tab` → cycle sidebar state - `ctrl+b` → focus sidebar - `ctrl+n` → new session tab - `ctrl+w` → close session tab - `ctrl+]` → next session tab - `ctrl+[` → previous session tab - `ctrl+s` → open Sessions screen - `ctrl+r` → resume saved session - `f2` → open Settings screen - `ctrl+,` → open Settings screen - `alt+up` → block cursor up - `alt+down` → block cursor down - `escape` → cascade navigation ## Code Location - **File**: `src/cleveragents/tui/app.py` - **Class**: `_TextualCleverAgentsTuiApp` - **Lines**: 92–96 (BINDINGS class variable) ## Impact Users cannot use any session management hotkeys (`ctrl+n`, `ctrl+w`, `ctrl+s`, `ctrl+r`), sidebar navigation (`shift+tab`), settings access (`f2`, `ctrl+,`), or conversation cursor navigation (`alt+up`, `alt+down`). The TUI is effectively keyboard-crippled for all features beyond basic quit, help, and preset cycling. Note: The broader implementation gaps (missing MainScreen, SessionsScreen, SettingsScreen, multi-session tabs) are tracked in issues #5334, #5338, and #5547. This issue specifically tracks the BINDINGS gap in the current `app.py`. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.7.0 milestone 2026-04-09 07:29:45 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Critical — TUI BINDINGS missing 13 of 16 spec-required global key bindings. The TUI is keyboard-crippled for all session management, sidebar navigation, and settings access.
  • Milestone: v3.7.0 (already assigned — correct)
  • Story Points: 5 — L — Adding 13 key bindings with their corresponding action methods, 1-2 days.
  • MoSCoW: MoSCoW/Must have — Already labeled. Global key bindings are core TUI functionality. Without them, the TUI cannot be used as specified.
  • Parent Epic: Needs linking to appropriate v3.7.0 TUI Epic

Well-documented gap with clear evidence. The BINDINGS class variable only has 3 of 16 required bindings. This blocks v3.7.0 milestone acceptance.


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

Issue triaged by project owner: - **State**: Verified - **Priority**: Critical — TUI BINDINGS missing 13 of 16 spec-required global key bindings. The TUI is keyboard-crippled for all session management, sidebar navigation, and settings access. - **Milestone**: v3.7.0 (already assigned — correct) - **Story Points**: 5 — L — Adding 13 key bindings with their corresponding action methods, 1-2 days. - **MoSCoW**: MoSCoW/Must have — Already labeled. Global key bindings are core TUI functionality. Without them, the TUI cannot be used as specified. - **Parent Epic**: Needs linking to appropriate v3.7.0 TUI Epic Well-documented gap with clear evidence. The BINDINGS class variable only has 3 of 16 required bindings. This blocks v3.7.0 milestone acceptance. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
Author
Owner

Hierarchical Compliance Fix: This issue was detected as an orphan (no parent Epic).

Solution: Linked to Epic #4963 (TUI Core Layout & Navigation — MainScreen, Sidebar, Hotkeys) as global key bindings are part of the TUI core layout and navigation scope.

Hierarchy: Issue #5555 → Epic #4963 → Legendary #4946


Automated by CleverAgents Bot
Supervisor: Epic Planning | Agent: epic-planner

**Hierarchical Compliance Fix**: This issue was detected as an orphan (no parent Epic). **Solution**: Linked to Epic #4963 (TUI Core Layout & Navigation — MainScreen, Sidebar, Hotkeys) as global key bindings are part of the TUI core layout and navigation scope. **Hierarchy**: Issue #5555 → Epic #4963 → Legendary #4946 --- **Automated by CleverAgents Bot** Supervisor: Epic Planning | Agent: epic-planner
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.

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