UAT: TUI preset cycling bound to ctrl+t instead of spec-required ctrl+tab — wrong keyboard shortcut in app.py BINDINGS #4773

Open
opened 2026-04-08 18:55:55 +00:00 by HAL9000 · 1 comment
Owner

Bug Report

Feature Area: TUI Persona Preset Cycling
Severity: Medium (backlog)
Found by: UAT tester instance uat-tui-worker-1
Spec reference: docs/specification.md §Persona Cycling (lines ~29260–29269) and §MainScreen Layout (line ~29077)


What Was Tested

The src/cleveragents/tui/app.py BINDINGS were inspected against the spec's keyboard shortcut requirements.

Expected Behavior (from spec)

The spec explicitly states that ctrl+tab cycles through the current persona's argument presets:

ctrl+tab: default → think: high → think: max → quick → default → ...

The footer mockup shows:

F1 Help │ shift+tab Sidebar │ tab Persona │ ctrl+tab Preset │ ctrl+s Sessions │ ctrl+q Quit

The spec also states in the PersonaBar section:

| Preset label | $text-warning (non-default) / $text-muted (default) | ctrl+tab cycle |

Actual Behavior

The _TextualCleverAgentsTuiApp in app.py defines:

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

The binding uses ctrl+t instead of ctrl+tab. This means:

  1. Users pressing ctrl+tab (as documented in the spec and footer) will not cycle presets
  2. Users pressing ctrl+t will cycle presets (undocumented behavior)
  3. The footer will show ctrl+t instead of ctrl+tab in the hotkey reference

Code Location

  • App: src/cleveragents/tui/app.pyBINDINGS class variable (line ~92-96)
  • Fix: Change "ctrl+t" to "ctrl+tab" in the BINDINGS tuple

Steps to Reproduce

from cleveragents.tui.app import _TEXTUAL_AVAILABLE
if _TEXTUAL_AVAILABLE:
    from cleveragents.tui.app import _TextualCleverAgentsTuiApp
    bindings = _TextualCleverAgentsTuiApp.BINDINGS
    preset_binding = next(b for b in bindings if b[1] == "cycle_preset")
    print(preset_binding[0])  # Prints "ctrl+t" — should be "ctrl+tab"

Impact

  • Users following the spec/documentation will press ctrl+tab and nothing happens
  • The footer hotkey reference will show the wrong key
  • Inconsistency with the spec's documented keyboard shortcuts

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

## Bug Report **Feature Area:** TUI Persona Preset Cycling **Severity:** Medium (backlog) **Found by:** UAT tester instance `uat-tui-worker-1` **Spec reference:** docs/specification.md §Persona Cycling (lines ~29260–29269) and §MainScreen Layout (line ~29077) --- ### What Was Tested The `src/cleveragents/tui/app.py` BINDINGS were inspected against the spec's keyboard shortcut requirements. ### Expected Behavior (from spec) The spec explicitly states that `ctrl+tab` cycles through the current persona's argument presets: > `ctrl+tab: default → think: high → think: max → quick → default → ...` The footer mockup shows: ``` F1 Help │ shift+tab Sidebar │ tab Persona │ ctrl+tab Preset │ ctrl+s Sessions │ ctrl+q Quit ``` The spec also states in the PersonaBar section: > | Preset label | `$text-warning` (non-default) / `$text-muted` (default) | `ctrl+tab` cycle | ### Actual Behavior The `_TextualCleverAgentsTuiApp` in `app.py` defines: ```python BINDINGS: ClassVar[list[tuple[str, str, str]]] = [ ("ctrl+q", "quit", "Quit"), ("f1", "help", "Help"), ("ctrl+t", "cycle_preset", "Cycle Preset"), # ← WRONG: should be ctrl+tab ] ``` The binding uses `ctrl+t` instead of `ctrl+tab`. This means: 1. Users pressing `ctrl+tab` (as documented in the spec and footer) will not cycle presets 2. Users pressing `ctrl+t` will cycle presets (undocumented behavior) 3. The footer will show `ctrl+t` instead of `ctrl+tab` in the hotkey reference ### Code Location - **App:** `src/cleveragents/tui/app.py` — `BINDINGS` class variable (line ~92-96) - **Fix:** Change `"ctrl+t"` to `"ctrl+tab"` in the BINDINGS tuple ### Steps to Reproduce ```python from cleveragents.tui.app import _TEXTUAL_AVAILABLE if _TEXTUAL_AVAILABLE: from cleveragents.tui.app import _TextualCleverAgentsTuiApp bindings = _TextualCleverAgentsTuiApp.BINDINGS preset_binding = next(b for b in bindings if b[1] == "cycle_preset") print(preset_binding[0]) # Prints "ctrl+t" — should be "ctrl+tab" ``` ### Impact - Users following the spec/documentation will press `ctrl+tab` and nothing happens - The footer hotkey reference will show the wrong key - Inconsistency with the spec's documented keyboard shortcuts --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Medium — spec compliance bug identified by UAT testing
  • Story Points: 3 (M) — targeted fix to align implementation with spec
  • MoSCoW: Must Have — spec compliance is required for correct system behavior

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

Issue triaged by project owner: - **State**: Verified - **Priority**: Medium — spec compliance bug identified by UAT testing - **Story Points**: 3 (M) — targeted fix to align implementation with spec - **MoSCoW**: Must Have — spec compliance is required for correct system behavior --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
HAL9000 added this to the v3.7.0 milestone 2026-04-09 03:04:18 +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#4773
No description provided.