UAT: TUI tab persona cycling not implemented — binding missing from app.py BINDINGS #4713

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

Bug Report

Feature Area: TUI persona system — persona cycling
Severity: Medium — core persona navigation feature absent
Source: src/cleveragents/tui/app.py BINDINGS
Spec reference: docs/specification.md §29260–29269 (Persona Cycling)


What Was Tested

Code-level analysis of src/cleveragents/tui/app.py against the spec's Persona Cycling section.

Expected Behavior (from spec §29260–29269)

The spec defines two cycling bindings:

tab:       persona_1 → persona_2 → persona_3 → persona_1 → ...
ctrl+tab:  default → think: high → think: max → quick → default → ...
  • tab cycles through personas in the configured cycle list
  • ctrl+tab cycles through the current persona's argument presets

The footer (spec line 29077) shows:

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

Actual Behavior

src/cleveragents/tui/app.py BINDINGS (lines 93–97):

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

Two problems:

  1. tab persona cycling is completely absent — there is no ("tab", "cycle_persona", "Persona") binding. Pressing tab will not cycle through personas.

  2. Preset cycling uses ctrl+t instead of ctrl+tab — The spec requires ctrl+tab for preset cycling (spec line 29262, 29077). The implementation uses ctrl+t. This was also noted in issue #4646, but the tab persona cycling absence is a separate, distinct gap.

Additionally, there is no action_cycle_persona() method defined anywhere in _TextualCleverAgentsTuiApp. The action_cycle_preset() method exists (line 148), but no equivalent action_cycle_persona() exists.

Code Location

  • src/cleveragents/tui/app.py lines 93–97 — BINDINGS missing tabcycle_persona
  • src/cleveragents/tui/app.py — no action_cycle_persona() method defined
  • src/cleveragents/tui/persona/state.pyPersonaState has no cycle_persona() method

Impact

Users cannot cycle through personas using tab. The primary persona navigation mechanism described in the spec is entirely absent. The footer binding hint tab Persona shown in the spec mockup will not appear.


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

## Bug Report **Feature Area:** TUI persona system — persona cycling **Severity:** Medium — core persona navigation feature absent **Source:** `src/cleveragents/tui/app.py` BINDINGS **Spec reference:** docs/specification.md §29260–29269 (Persona Cycling) --- ## What Was Tested Code-level analysis of `src/cleveragents/tui/app.py` against the spec's Persona Cycling section. ## Expected Behavior (from spec §29260–29269) The spec defines two cycling bindings: ``` tab: persona_1 → persona_2 → persona_3 → persona_1 → ... ctrl+tab: default → think: high → think: max → quick → default → ... ``` - **`tab`** cycles through personas in the configured cycle list - **`ctrl+tab`** cycles through the current persona's argument presets The footer (spec line 29077) shows: ``` │ F1 Help │ shift+tab Sidebar │ tab Persona │ ctrl+tab Preset │ ctrl+s Sessions │ ctrl+q Quit │ ``` ## Actual Behavior `src/cleveragents/tui/app.py` BINDINGS (lines 93–97): ```python BINDINGS: ClassVar[list[tuple[str, str, str]]] = [ ("ctrl+q", "quit", "Quit"), ("f1", "help", "Help"), ("ctrl+t", "cycle_preset", "Cycle Preset"), ] ``` **Two problems:** 1. **`tab` persona cycling is completely absent** — there is no `("tab", "cycle_persona", "Persona")` binding. Pressing `tab` will not cycle through personas. 2. **Preset cycling uses `ctrl+t` instead of `ctrl+tab`** — The spec requires `ctrl+tab` for preset cycling (spec line 29262, 29077). The implementation uses `ctrl+t`. This was also noted in issue #4646, but the `tab` persona cycling absence is a separate, distinct gap. Additionally, there is no `action_cycle_persona()` method defined anywhere in `_TextualCleverAgentsTuiApp`. The `action_cycle_preset()` method exists (line 148), but no equivalent `action_cycle_persona()` exists. ## Code Location - `src/cleveragents/tui/app.py` lines 93–97 — BINDINGS missing `tab` → `cycle_persona` - `src/cleveragents/tui/app.py` — no `action_cycle_persona()` method defined - `src/cleveragents/tui/persona/state.py` — `PersonaState` has no `cycle_persona()` method ## Impact Users cannot cycle through personas using `tab`. The primary persona navigation mechanism described in the spec is entirely absent. The footer binding hint `tab Persona` shown in the spec mockup will not appear. --- **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:06:08 +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#4713
No description provided.