UAT: TUI BINDINGS missing alt+up and alt+down block cursor navigation keys #10491

Open
opened 2026-04-18 10:10:23 +00:00 by HAL9000 · 0 comments
Owner

Metadata

Field Value
Branch fix/tui-bindings-block-cursor-navigation
Commit Message fix(tui): add alt+up and alt+down block cursor navigation key bindings
Milestone v3.7.0
Parent Epic #5305

Background and Context

The TUI specification requires that app.py BINDINGS includes ALL of the following keys: ctrl+n, ctrl+w, ctrl+s, ctrl+r, shift+tab, f2/ctrl+,, tab (persona), ctrl+tab (preset), ctrl+[, ctrl+], alt+up, alt+down, escape. The current implementation is missing alt+up and alt+down which are required for block cursor navigation in the conversation stream.

Expected Behavior (from spec)

The BINDINGS class variable in app.py must include:

  • alt+up → Move block cursor up in the conversation stream
  • alt+down → Move block cursor down in the conversation stream

The conversation stream uses a 2-column grid layout with a cursor column. alt+up/alt+down navigate between conversation blocks (UserInput, ActorResponse, ToolCall, PlanProgress, etc.).

Actual Behavior

src/cleveragents/tui/app.py BINDINGS (lines 88–92):

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

alt+up and alt+down are completely absent from the BINDINGS list. Users cannot navigate between conversation blocks using the keyboard.

Steps to Reproduce (Code Analysis)

  1. Open src/cleveragents/tui/app.py
  2. Find BINDINGS class variable (line ~88)
  3. Observe: only ctrl+q, f1, ctrl+t are defined
  4. alt+up and alt+down are absent
  5. Compare with spec requirement: "app.py BINDINGS includes ALL: ..., alt+up, alt+down, ..."

Code Location

  • src/cleveragents/tui/app.pyBINDINGS class variable (lines 88–92)

Subtasks

  • Add ("alt+up", "cursor_up", "Cursor Up") to BINDINGS
  • Add ("alt+down", "cursor_down", "Cursor Down") to BINDINGS
  • Implement action_cursor_up() method for block cursor navigation
  • Implement action_cursor_down() method for block cursor navigation
  • Add Behave scenarios verifying alt+up moves block cursor up
  • Add Behave scenarios verifying alt+down moves block cursor down
  • Run nox (all default sessions), fix any errors
  • Verify coverage >= 97%

Definition of Done

This issue is complete when:

  • All subtasks above are completed and checked off.
  • alt+up and alt+down are present in BINDINGS and functional
  • A Git commit is created where the first line of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional details.
  • The commit is pushed to the remote on the branch matching the Branch in Metadata exactly.
  • The commit is submitted as a pull request to master, reviewed, and merged before this issue is marked done.
  • The TDD testing issue is resolved.

Automated by CleverAgents Bot
Agent: new-issue-creator

## Metadata | Field | Value | |---|---| | **Branch** | `fix/tui-bindings-block-cursor-navigation` | | **Commit Message** | `fix(tui): add alt+up and alt+down block cursor navigation key bindings` | | **Milestone** | v3.7.0 | | **Parent Epic** | #5305 | --- ## Background and Context The TUI specification requires that `app.py BINDINGS` includes ALL of the following keys: `ctrl+n`, `ctrl+w`, `ctrl+s`, `ctrl+r`, `shift+tab`, `f2/ctrl+,`, `tab` (persona), `ctrl+tab` (preset), `ctrl+[`, `ctrl+]`, `alt+up`, `alt+down`, `escape`. The current implementation is missing `alt+up` and `alt+down` which are required for block cursor navigation in the conversation stream. ## Expected Behavior (from spec) The `BINDINGS` class variable in `app.py` must include: - `alt+up` → Move block cursor up in the conversation stream - `alt+down` → Move block cursor down in the conversation stream The conversation stream uses a 2-column grid layout with a cursor column. `alt+up`/`alt+down` navigate between conversation blocks (UserInput, ActorResponse, ToolCall, PlanProgress, etc.). ## Actual Behavior `src/cleveragents/tui/app.py` `BINDINGS` (lines 88–92): ```python BINDINGS: ClassVar[list[tuple[str, str, str]]] = [ ("ctrl+q", "quit", "Quit"), ("f1", "help", "Help"), ("ctrl+t", "cycle_preset", "Cycle Preset"), ] ``` `alt+up` and `alt+down` are completely absent from the BINDINGS list. Users cannot navigate between conversation blocks using the keyboard. ## Steps to Reproduce (Code Analysis) 1. Open `src/cleveragents/tui/app.py` 2. Find `BINDINGS` class variable (line ~88) 3. Observe: only `ctrl+q`, `f1`, `ctrl+t` are defined 4. `alt+up` and `alt+down` are absent 5. Compare with spec requirement: "app.py BINDINGS includes ALL: ..., alt+up, alt+down, ..." ## Code Location - `src/cleveragents/tui/app.py` — `BINDINGS` class variable (lines 88–92) ## Subtasks - [ ] Add `("alt+up", "cursor_up", "Cursor Up")` to `BINDINGS` - [ ] Add `("alt+down", "cursor_down", "Cursor Down")` to `BINDINGS` - [ ] Implement `action_cursor_up()` method for block cursor navigation - [ ] Implement `action_cursor_down()` method for block cursor navigation - [ ] Add Behave scenarios verifying alt+up moves block cursor up - [ ] Add Behave scenarios verifying alt+down moves block cursor down - [ ] Run `nox` (all default sessions), fix any errors - [ ] Verify coverage >= 97% ## Definition of Done This issue is complete when: - All subtasks above are completed and checked off. - `alt+up` and `alt+down` are present in `BINDINGS` and functional - A Git commit is created where the **first line** of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional details. - The commit is pushed to the remote on the branch matching the **Branch** in Metadata exactly. - The commit is submitted as a **pull request** to `master`, reviewed, and **merged** before this issue is marked done. - The TDD testing issue is resolved. --- **Automated by CleverAgents Bot** Agent: new-issue-creator
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#10491
No description provided.