UAT: TUI /settings slash command is catalogued but not handled — TuiCommandRouter.handle() returns "Unknown command: /settings" #5542

Open
opened 2026-04-09 07:18:46 +00:00 by HAL9000 · 1 comment
Owner

Bug Report

Feature Area: TUI Settings Screen Persistence
Severity: Backlog (SettingsScreen itself is tracked in #5338; this tracks the command routing gap specifically)
Spec Reference: §TUI — Settings Screen, §TUI — Slash Commands


What Was Tested

Code analysis of src/cleveragents/tui/commands.py — the TuiCommandRouter.handle() method — compared against the slash command catalog and spec requirements.

Expected Behavior (from spec)

The spec (§TUI — Settings Screen) states:

The Settings screen (F2 or ctrl+,) is a modal overlay with search-driven navigation through all TUI settings.

The slash command catalog (SLASH_COMMAND_SPECS) includes:

SlashCommandSpec("settings", "Utility", "Open settings")

The reference doc (docs/reference/tui.md) lists /settings in the Utility group with description "Open SettingsScreen". When a user types /settings in the TUI prompt, the SettingsScreen should be pushed onto the screen stack.

Actual Behavior (from code)

TuiCommandRouter.handle() (lines 48–58 of commands.py) only dispatches to _persona_command, _session_command, and _help_command:

def handle(self, raw: str, *, session_id: str) -> str:
    tokens = raw.strip().split()
    if not tokens:
        return "Empty command"
    if tokens[0] == "persona":
        return self._persona_command(tokens[1:], session_id=session_id)
    if tokens[0] == "session":
        return self._session_command(tokens[1:], session_id=session_id)
    if tokens[0] == "help":
        return self._help_command(tokens[1:])
    return f"Unknown command: /{raw}"  # ← settings falls here

Typing /settings returns "Unknown command: /settings".

Additionally, the following catalogued Utility commands are also unhandled:

  • /clear"Unknown command: /clear"
  • /theme"Unknown command: /theme"
  • /about"Unknown command: /about"
  • /debug"Unknown command: /debug"

And all non-persona/session/help command groups (scope, plan, project, actor, resource, config, tool, skill, invariant, profile, context) return "Unknown command: /<cmd>".

Steps to Reproduce

  1. Launch the TUI: agents tui
  2. Type /settings and press Enter
  3. Observe: "Unknown command: /settings" is displayed instead of opening the Settings screen

Code Location

  • File: src/cleveragents/tui/commands.py
  • Method: TuiCommandRouter.handle() (lines 48–58)
  • Catalog: src/cleveragents/tui/slash_catalog.py (line 84)

Impact

The /settings command is prominently listed in the slash command overlay but does nothing useful. Users cannot access TUI settings via the command interface. Settings persistence (~/.config/cleveragents/tui-settings.json) is also not implemented (tracked separately in #5338).


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

## Bug Report **Feature Area**: TUI Settings Screen Persistence **Severity**: Backlog (SettingsScreen itself is tracked in #5338; this tracks the command routing gap specifically) **Spec Reference**: §TUI — Settings Screen, §TUI — Slash Commands --- ## What Was Tested Code analysis of `src/cleveragents/tui/commands.py` — the `TuiCommandRouter.handle()` method — compared against the slash command catalog and spec requirements. ## Expected Behavior (from spec) The spec (§TUI — Settings Screen) states: > The Settings screen (`F2` or `ctrl+,`) is a modal overlay with search-driven navigation through all TUI settings. The slash command catalog (`SLASH_COMMAND_SPECS`) includes: ``` SlashCommandSpec("settings", "Utility", "Open settings") ``` The reference doc (`docs/reference/tui.md`) lists `/settings` in the Utility group with description "Open SettingsScreen". When a user types `/settings` in the TUI prompt, the SettingsScreen should be pushed onto the screen stack. ## Actual Behavior (from code) `TuiCommandRouter.handle()` (lines 48–58 of `commands.py`) only dispatches to `_persona_command`, `_session_command`, and `_help_command`: ```python def handle(self, raw: str, *, session_id: str) -> str: tokens = raw.strip().split() if not tokens: return "Empty command" if tokens[0] == "persona": return self._persona_command(tokens[1:], session_id=session_id) if tokens[0] == "session": return self._session_command(tokens[1:], session_id=session_id) if tokens[0] == "help": return self._help_command(tokens[1:]) return f"Unknown command: /{raw}" # ← settings falls here ``` Typing `/settings` returns `"Unknown command: /settings"`. Additionally, the following catalogued Utility commands are also unhandled: - `/clear` → `"Unknown command: /clear"` - `/theme` → `"Unknown command: /theme"` - `/about` → `"Unknown command: /about"` - `/debug` → `"Unknown command: /debug"` And all non-persona/session/help command groups (scope, plan, project, actor, resource, config, tool, skill, invariant, profile, context) return `"Unknown command: /<cmd>"`. ## Steps to Reproduce 1. Launch the TUI: `agents tui` 2. Type `/settings` and press Enter 3. Observe: `"Unknown command: /settings"` is displayed instead of opening the Settings screen ## Code Location - **File**: `src/cleveragents/tui/commands.py` - **Method**: `TuiCommandRouter.handle()` (lines 48–58) - **Catalog**: `src/cleveragents/tui/slash_catalog.py` (line 84) ## Impact The `/settings` command is prominently listed in the slash command overlay but does nothing useful. Users cannot access TUI settings via the command interface. Settings persistence (`~/.config/cleveragents/tui-settings.json`) is also not implemented (tracked separately in #5338). --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.7.0 milestone 2026-04-09 07:24:10 +00:00
Author
Owner

Label compliance fix applied:

  • Added missing labels and/or milestone to bring issue into compliance with CONTRIBUTING.md

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

Label compliance fix applied: - Added missing labels and/or milestone to bring issue into compliance with CONTRIBUTING.md --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: backlog-groomer
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#5542
No description provided.