UAT: First-run experience (actor selection overlay) not implemented #1350

Open
opened 2026-04-02 16:57:11 +00:00 by freemo · 0 comments
Owner

Bug Report: [tui/persona] — First-run actor selection overlay is missing

Severity Assessment

  • Impact: High. New users launching the TUI for the first time with no personas configured will not see the guided actor selection overlay. Instead, the system silently creates a "default" persona with actor="local/mock-default" — a non-functional mock actor — without any user interaction.
  • Likelihood: 100% reproducible on first launch.
  • Priority: High

Location

  • File: src/cleveragents/tui/app.pyon_mount() method (lines 120–127)
  • File: src/cleveragents/tui/persona/registry.pyensure_default() (lines 205–212)

Description

The specification (§First-Run Experience) defines a centered overlay that appears on first launch when no personas are configured:

┌──────────────────────────────────────────────────────────────────────┐
│ Welcome to CleverAgents                                              │
│                                                                      │
│ Select an actor to get started:                                      │
│                                                                      │
│   ❯ anthropic/claude-4-sonnet   (recommended)                        │
│     anthropic/claude-4-opus                                          │
│     openai/gpt-4o                                                    │
│     openai/o3                                                        │
│     google/gemini-2                                                  │
│     / to search...                                                   │
│                                                                      │
│ A default persona will be created with this actor.                   │
│ You can add more actors and personas later.                          │
│                                                                      │
│──────────────────────────────────────────────────────────────────────│
│ enter Select │ j/k Navigate │ / Search                               │
└──────────────────────────────────────────────────────────────────────┘

From the spec:

Selection creates a "default" persona with the chosen actor and auto-generated argument presets (thinking effort levels are auto-detected from the actor's argument schema). Subsequent launches restore the last active persona.

Actual Behavior

The on_mount() method does not check for first-run conditions:

def on_mount(self) -> None:
    self._refresh_persona_bar()
    help_panel = self.query_one("#help-panel", HelpPanelOverlay)
    help_panel.hide()
    ref_picker = self.query_one("#reference-picker", ReferencePickerOverlay)
    ref_picker.set_suggestions("", [])
    slash = self.query_one("#slash-overlay", SlashCommandOverlay)
    slash.set_commands("", slash_command_names())

The ensure_default() method in PersonaRegistry silently creates a default persona with actor="local/mock-default" without user interaction:

def ensure_default(self, actor: str = "local/mock-default") -> Persona:
    existing = self.get("default")
    if existing is not None:
        return existing
    persona = Persona(name="default", actor=actor, description="Default persona")
    ...

There is no first-run overlay widget anywhere in src/cleveragents/tui/.

Expected Behavior (from spec)

On first launch (no personas configured):

  1. A centered overlay should appear showing available actors
  2. User selects an actor
  3. A "default" persona is created with the selected actor and auto-generated presets
  4. The overlay closes and the main TUI is ready to use

Steps to Reproduce

  1. Ensure ~/.config/cleveragents/personas/ is empty (or set CLEVERAGENTS_CONFIG_DIR to a temp dir)
  2. Launch the TUI
  3. No actor selection overlay appears — the TUI starts with a "default" persona using local/mock-default
  • #1315 (Refactor TUI to Align with ADR-44 and ADR-45)
  • #1339 (UAT: TuiCommandRouter missing persona sub-commands)

References

  • Spec §First-Run Experience (line ~29100)
  • ADR-045 §Persona Lifecycle (step 1: First run)
  • src/cleveragents/tui/app.py lines 120–127
  • src/cleveragents/tui/persona/registry.py lines 205–212
## Bug Report: [tui/persona] — First-run actor selection overlay is missing ### Severity Assessment - **Impact**: High. New users launching the TUI for the first time with no personas configured will not see the guided actor selection overlay. Instead, the system silently creates a `"default"` persona with `actor="local/mock-default"` — a non-functional mock actor — without any user interaction. - **Likelihood**: 100% reproducible on first launch. - **Priority**: High ### Location - **File**: `src/cleveragents/tui/app.py` — `on_mount()` method (lines 120–127) - **File**: `src/cleveragents/tui/persona/registry.py` — `ensure_default()` (lines 205–212) ### Description The specification (§First-Run Experience) defines a centered overlay that appears on first launch when no personas are configured: ``` ┌──────────────────────────────────────────────────────────────────────┐ │ Welcome to CleverAgents │ │ │ │ Select an actor to get started: │ │ │ │ ❯ anthropic/claude-4-sonnet (recommended) │ │ anthropic/claude-4-opus │ │ openai/gpt-4o │ │ openai/o3 │ │ google/gemini-2 │ │ / to search... │ │ │ │ A default persona will be created with this actor. │ │ You can add more actors and personas later. │ │ │ │──────────────────────────────────────────────────────────────────────│ │ enter Select │ j/k Navigate │ / Search │ └──────────────────────────────────────────────────────────────────────┘ ``` From the spec: > Selection creates a `"default"` persona with the chosen actor and auto-generated argument presets (thinking effort levels are auto-detected from the actor's argument schema). Subsequent launches restore the last active persona. ### Actual Behavior The `on_mount()` method does not check for first-run conditions: ```python def on_mount(self) -> None: self._refresh_persona_bar() help_panel = self.query_one("#help-panel", HelpPanelOverlay) help_panel.hide() ref_picker = self.query_one("#reference-picker", ReferencePickerOverlay) ref_picker.set_suggestions("", []) slash = self.query_one("#slash-overlay", SlashCommandOverlay) slash.set_commands("", slash_command_names()) ``` The `ensure_default()` method in `PersonaRegistry` silently creates a default persona with `actor="local/mock-default"` without user interaction: ```python def ensure_default(self, actor: str = "local/mock-default") -> Persona: existing = self.get("default") if existing is not None: return existing persona = Persona(name="default", actor=actor, description="Default persona") ... ``` There is no first-run overlay widget anywhere in `src/cleveragents/tui/`. ### Expected Behavior (from spec) On first launch (no personas configured): 1. A centered overlay should appear showing available actors 2. User selects an actor 3. A `"default"` persona is created with the selected actor and auto-generated presets 4. The overlay closes and the main TUI is ready to use ### Steps to Reproduce 1. Ensure `~/.config/cleveragents/personas/` is empty (or set `CLEVERAGENTS_CONFIG_DIR` to a temp dir) 2. Launch the TUI 3. No actor selection overlay appears — the TUI starts with a `"default"` persona using `local/mock-default` ### Related Issues - #1315 (Refactor TUI to Align with ADR-44 and ADR-45) - #1339 (UAT: TuiCommandRouter missing persona sub-commands) ### References - Spec §First-Run Experience (line ~29100) - ADR-045 §Persona Lifecycle (step 1: First run) - `src/cleveragents/tui/app.py` lines 120–127 - `src/cleveragents/tui/persona/registry.py` lines 205–212
freemo self-assigned this 2026-04-02 18:45:20 +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#1350
No description provided.