UAT: TUI PersonaBar missing session cost display and uses wrong preset cycling binding (ctrl+t vs ctrl+tab) #4646

Open
opened 2026-04-08 17:41:41 +00:00 by HAL9000 · 0 comments
Owner

Bug Report

Feature Area: TUI plan monitoring and live updates (v3.7.0 TUI)
Severity: Medium — PersonaBar spec deviations
Found by: UAT tester instance uat-tester-worker-tui-plan-monitoring


What Was Tested

Code-level analysis of src/cleveragents/tui/widgets/persona_bar.py and src/cleveragents/tui/app.py against the specification section "PersonaBar" (spec lines 29238–29257).


Expected Behavior (from spec)

The PersonaBar (spec lines 29238–29257) shows five segments:

feature-dev │ claude-4-sonnet │ think: high │ 2 projects │ $0.12
─────────── ─ ─────────────── ─ ─────────── ─ ──────────────── ─ ─────
persona       actor             preset        scope              cost
Segment Style Updates When
Persona name $text-primary on $primary 10% bg tab cycle
Actor name $text-secondary tab cycle
Preset label $text-warning (non-default) / $text-muted (default) ctrl+tab cycle
Scope indicator $text-muted Persona change or /scope:add/remove
Session cost $secondary 70%, right-aligned After each actor response

Preset cycling is bound to ctrl+tab (spec line 29262).


Actual Behavior (from code analysis)

Issue 1: Missing cost display

src/cleveragents/tui/widgets/persona_bar.py set_content() (lines 30–38):

def set_content(
    self,
    *,
    persona_name: str,
    actor_name: str,
    preset_name: str,
    scope_text: str,
) -> None:
    self.update(f"{persona_name} | {actor_name} | {preset_name} | {scope_text}")
  • No cost parameter — session cost is never displayed
  • The rendered string is "persona | actor | preset | scope" — missing the $0.12 cost segment

Issue 2: Wrong preset cycling binding

src/cleveragents/tui/app.py line 95:

("ctrl+t", "cycle_preset", "Cycle Preset"),

The spec requires ctrl+tab for preset cycling (spec line 29262, 29095). The implementation uses ctrl+t instead.


Code Locations

  • src/cleveragents/tui/widgets/persona_bar.py lines 30–38 — set_content() missing cost param
  • src/cleveragents/tui/app.py line 95 — wrong binding ctrl+t instead of ctrl+tab
  • src/cleveragents/tui/app.py lines 155–166 — _refresh_persona_bar() never passes cost

Impact

  • Users cannot see session cost in the PersonaBar
  • ctrl+tab (the documented binding) does not cycle presets — ctrl+t does instead
  • This creates a discoverability issue since the footer and help panel show the wrong binding

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

## Bug Report **Feature Area:** TUI plan monitoring and live updates (v3.7.0 TUI) **Severity:** Medium — PersonaBar spec deviations **Found by:** UAT tester instance `uat-tester-worker-tui-plan-monitoring` --- ### What Was Tested Code-level analysis of `src/cleveragents/tui/widgets/persona_bar.py` and `src/cleveragents/tui/app.py` against the specification section **"PersonaBar"** (spec lines 29238–29257). --- ### Expected Behavior (from spec) The PersonaBar (spec lines 29238–29257) shows five segments: ``` feature-dev │ claude-4-sonnet │ think: high │ 2 projects │ $0.12 ─────────── ─ ─────────────── ─ ─────────── ─ ──────────────── ─ ───── persona actor preset scope cost ``` | Segment | Style | Updates When | |---------|-------|--------------| | Persona name | `$text-primary` on `$primary 10%` bg | `tab` cycle | | Actor name | `$text-secondary` | `tab` cycle | | Preset label | `$text-warning` (non-default) / `$text-muted` (default) | `ctrl+tab` cycle | | Scope indicator | `$text-muted` | Persona change or `/scope:add/remove` | | **Session cost** | `$secondary 70%`, right-aligned | After each actor response | Preset cycling is bound to **`ctrl+tab`** (spec line 29262). --- ### Actual Behavior (from code analysis) **Issue 1: Missing cost display** `src/cleveragents/tui/widgets/persona_bar.py` `set_content()` (lines 30–38): ```python def set_content( self, *, persona_name: str, actor_name: str, preset_name: str, scope_text: str, ) -> None: self.update(f"{persona_name} | {actor_name} | {preset_name} | {scope_text}") ``` - **No `cost` parameter** — session cost is never displayed - The rendered string is `"persona | actor | preset | scope"` — missing the `$0.12` cost segment **Issue 2: Wrong preset cycling binding** `src/cleveragents/tui/app.py` line 95: ```python ("ctrl+t", "cycle_preset", "Cycle Preset"), ``` The spec requires **`ctrl+tab`** for preset cycling (spec line 29262, 29095). The implementation uses `ctrl+t` instead. --- ### Code Locations - `src/cleveragents/tui/widgets/persona_bar.py` lines 30–38 — `set_content()` missing `cost` param - `src/cleveragents/tui/app.py` line 95 — wrong binding `ctrl+t` instead of `ctrl+tab` - `src/cleveragents/tui/app.py` lines 155–166 — `_refresh_persona_bar()` never passes cost --- ### Impact - Users cannot see session cost in the PersonaBar - `ctrl+tab` (the documented binding) does not cycle presets — `ctrl+t` does instead - This creates a discoverability issue since the footer and help panel show the wrong binding --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.7.0 milestone 2026-04-08 17:52:58 +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#4646
No description provided.