UAT: TUI app uses ctrl+t for preset cycling instead of spec-required ctrl+tab #1340

Open
opened 2026-04-02 16:56:01 +00:00 by freemo · 1 comment
Owner

Bug Report: [tui] — Preset cycling bound to ctrl+t instead of ctrl+tab

Severity Assessment

  • Impact: Medium. The preset cycling key binding is wrong — users pressing ctrl+tab (as documented in the spec and help text) will get no response, while ctrl+t works unexpectedly.
  • Likelihood: 100% reproducible — the binding is hardcoded in BINDINGS.
  • Priority: Medium

Location

  • File: src/cleveragents/tui/app.pyBINDINGS class variable (line 93)

Description

The specification consistently defines ctrl+tab as the key to cycle through argument presets:

From §Persona Cycling:

ctrl+tab cycles through the current persona's argument presets

From §MainScreen — Prompt Focused keyboard table:

| ctrl+tab | Cycle to next argument preset |

From the footer mockup:

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

From the PersonaEditorModal keyboard table:

| ctrl+tab | Cycle to next argument preset |

Actual Behavior

The BINDINGS class variable uses ctrl+t instead of ctrl+tab:

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

Expected Behavior (from spec)

The binding should be:

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

Steps to Reproduce

  1. Run the TUI
  2. Press ctrl+tab — no preset cycling occurs
  3. Press ctrl+t — preset cycles (unexpected key)

Additional Note

ctrl+tab may require special handling in Textual since terminals may not distinguish it from tab. However, the spec explicitly requires ctrl+tab, and the implementation should use that binding (or document why a fallback is needed).

  • #1336 (UAT: TUI MainScreen missing tab-based persona cycling)
  • #1315 (Refactor TUI to Align with ADR-44 and ADR-45)

References

  • Spec §Persona Cycling (line ~29090)
  • Spec §MainScreen — Prompt Focused keyboard table (line ~30199)
  • src/cleveragents/tui/app.py line 93
## Bug Report: [tui] — Preset cycling bound to `ctrl+t` instead of `ctrl+tab` ### Severity Assessment - **Impact**: Medium. The preset cycling key binding is wrong — users pressing `ctrl+tab` (as documented in the spec and help text) will get no response, while `ctrl+t` works unexpectedly. - **Likelihood**: 100% reproducible — the binding is hardcoded in `BINDINGS`. - **Priority**: Medium ### Location - **File**: `src/cleveragents/tui/app.py` — `BINDINGS` class variable (line 93) ### Description The specification consistently defines `ctrl+tab` as the key to cycle through argument presets: From §Persona Cycling: > `ctrl+tab` cycles through the current persona's argument presets From §MainScreen — Prompt Focused keyboard table: > | `ctrl+tab` | Cycle to next argument preset | From the footer mockup: ``` F1 Help │ shift+tab Sidebar │ tab Persona │ ctrl+tab Preset │ ctrl+s Sessions │ ctrl+q Quit ``` From the PersonaEditorModal keyboard table: > | `ctrl+tab` | Cycle to next argument preset | ### Actual Behavior The `BINDINGS` class variable uses `ctrl+t` instead of `ctrl+tab`: ```python BINDINGS: ClassVar[list[tuple[str, str, str]]] = [ ("ctrl+q", "quit", "Quit"), ("f1", "help", "Help"), ("ctrl+t", "cycle_preset", "Cycle Preset"), # ← should be "ctrl+tab" ] ``` ### Expected Behavior (from spec) The binding should be: ```python ("ctrl+tab", "cycle_preset", "Cycle Preset"), ``` ### Steps to Reproduce 1. Run the TUI 2. Press `ctrl+tab` — no preset cycling occurs 3. Press `ctrl+t` — preset cycles (unexpected key) ### Additional Note `ctrl+tab` may require special handling in Textual since terminals may not distinguish it from `tab`. However, the spec explicitly requires `ctrl+tab`, and the implementation should use that binding (or document why a fallback is needed). ### Related Issues - #1336 (UAT: TUI MainScreen missing tab-based persona cycling) - #1315 (Refactor TUI to Align with ADR-44 and ADR-45) ### References - Spec §Persona Cycling (line ~29090) - Spec §MainScreen — Prompt Focused keyboard table (line ~30199) - `src/cleveragents/tui/app.py` line 93
Author
Owner

🤖 Backlog Groomer — Potential Duplicate Detected

This issue appears to be a duplicate of #1441 (fix(tui): correct ctrl+tab preset-cycling binding — app uses ctrl+t instead of spec-required ctrl+tab).

Both issues describe the exact same bug:

  • Same root cause: ctrl+t used instead of ctrl+tab in BINDINGS at src/cleveragents/tui/app.py line 93
  • Same expected fix: change "ctrl+t" to "ctrl+tab"

Issue #1441 is more detailed, has a branch (fix/tui-ctrl-tab-preset-binding), milestone (v3.7.0), and parent epic (#868). It is recommended to close this issue (#1340) in favor of #1441.

Please review and close this issue if confirmed as a duplicate.


Automated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: ca-backlog-groomer

🤖 **Backlog Groomer — Potential Duplicate Detected** This issue appears to be a duplicate of #1441 (`fix(tui): correct ctrl+tab preset-cycling binding — app uses ctrl+t instead of spec-required ctrl+tab`). Both issues describe the exact same bug: - Same root cause: `ctrl+t` used instead of `ctrl+tab` in `BINDINGS` at `src/cleveragents/tui/app.py` line 93 - Same expected fix: change `"ctrl+t"` to `"ctrl+tab"` Issue #1441 is more detailed, has a branch (`fix/tui-ctrl-tab-preset-binding`), milestone (v3.7.0), and parent epic (#868). It is recommended to close this issue (#1340) in favor of #1441. Please review and close this issue if confirmed as a duplicate. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: ca-backlog-groomer
freemo self-assigned this 2026-04-02 18:45:21 +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#1340
No description provided.