UAT: TUI PersonaState missing cycle_persona() method — tab key persona cycling not wired to persona list #4852

Open
opened 2026-04-08 20:09:03 +00:00 by HAL9000 · 0 comments
Owner

Bug Report

Feature Area: TUI Interface — Persona System (ADR-045)

What Was Tested

PersonaState in src/cleveragents/tui/persona/state.py and app.py BINDINGS.

Expected Behavior (from spec ADR-045)

The spec requires:

"The tab key in the main chat prompt cycles through personas in the user's configured cycle list"
"tab: persona_1 → persona_2 → persona_3 → persona_1 → ..."

The tab key should cycle through all personas with cycle_order > 0, sorted by cycle_order.

Actual Behavior

PersonaState has cycle_preset() (for ctrl+tab preset cycling) but has no cycle_persona() method for tab persona cycling.

In app.py, the BINDINGS only define:

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

There is no ("tab", "cycle_persona", "Cycle Persona") binding. The tab key is not bound to any persona cycling action.

Additionally, PersonaState has no method to enumerate personas in cycle_order sequence — list_personas() is on the registry but there's no sorted-by-cycle-order iteration in PersonaState.

Code Location

  • src/cleveragents/tui/persona/state.py — missing cycle_persona() method
  • src/cleveragents/tui/app.py — missing ("tab", "action_cycle_persona", "Persona") binding

Steps to Reproduce

  1. Configure two personas with cycle_order: 1 and cycle_order: 2
  2. Launch TUI
  3. Press tab in the prompt
  4. Observe: no persona cycling occurs (tab likely moves focus between widgets)

Impact

Users cannot switch between personas using the keyboard. The core multi-persona workflow described in ADR-045 is non-functional.


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

## Bug Report **Feature Area:** TUI Interface — Persona System (ADR-045) ### What Was Tested `PersonaState` in `src/cleveragents/tui/persona/state.py` and `app.py` BINDINGS. ### Expected Behavior (from spec ADR-045) The spec requires: > "The `tab` key in the main chat prompt cycles through personas in the user's configured cycle list" > "tab: persona_1 → persona_2 → persona_3 → persona_1 → ..." The `tab` key should cycle through all personas with `cycle_order > 0`, sorted by `cycle_order`. ### Actual Behavior `PersonaState` has `cycle_preset()` (for `ctrl+tab` preset cycling) but has **no `cycle_persona()` method** for `tab` persona cycling. In `app.py`, the BINDINGS only define: ```python BINDINGS = [ ("ctrl+q", "quit", "Quit"), ("f1", "help", "Help"), ("ctrl+t", "cycle_preset", "Cycle Preset"), ] ``` There is no `("tab", "cycle_persona", "Cycle Persona")` binding. The `tab` key is not bound to any persona cycling action. Additionally, `PersonaState` has no method to enumerate personas in `cycle_order` sequence — `list_personas()` is on the registry but there's no sorted-by-cycle-order iteration in `PersonaState`. ### Code Location - `src/cleveragents/tui/persona/state.py` — missing `cycle_persona()` method - `src/cleveragents/tui/app.py` — missing `("tab", "action_cycle_persona", "Persona")` binding ### Steps to Reproduce 1. Configure two personas with `cycle_order: 1` and `cycle_order: 2` 2. Launch TUI 3. Press `tab` in the prompt 4. Observe: no persona cycling occurs (tab likely moves focus between widgets) ### Impact Users cannot switch between personas using the keyboard. The core multi-persona workflow described in ADR-045 is non-functional. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.7.0 milestone 2026-04-08 20:14:22 +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.

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