UAT: TUI sidebar Plans and Projects panels use plain Static widgets instead of spec-required Collapsible containers #5556

Open
opened 2026-04-09 07:29:01 +00:00 by HAL9000 · 2 comments
Owner

Bug Report

Feature Area: TUI — Sidebar Content Rendering (v3.7.0)
Severity: Medium — sidebar content structure deviates from spec
Discovered by: UAT Testing (uat-pool-1, worker: tui-sidebar-layout)


What Was Tested

Code analysis of src/cleveragents/tui/widgets/sidebar.py on the feature/m8-tui-mainscreen branch against the TUI specification (§29143, §29210, §30451-30452).


Expected Behavior (from spec §29143, §29210)

Sidebar (right, 32-40 chars wide): Plans panel and Projects panel in collapsible containers.

The spec explicitly requires Plans and Projects panels to be in collapsible containers (Textual Collapsible widgets), which:

  • Allow the user to expand/collapse each panel independently
  • Support keyboard navigation: tab/shift+tab to navigate between panels
  • Support enter to expand/collapse the highlighted collapsible section (spec §30452)

Actual Behavior

The Sidebar.compose() method on the feature/m8-tui-mainscreen branch uses plain Static widgets:

def compose(self) -> ComposeResult:
    yield Static(
        "[bold]▼ PLANS[/bold]",
        id="plans-header",
        classes="panel-header",
    )
    yield Static(
        "[dim]No active plans[/dim]",
        id="plans-content",
        classes="panel-content",
    )
    yield Static(
        "[bold]▼ PROJECTS[/bold]",
        id="projects-header",
        classes="panel-header",
    )
    yield Static(
        "[dim]No projects loaded[/dim]",
        id="projects-content",
        classes="panel-content",
    )

These are non-interactive Static widgets — they cannot be collapsed/expanded by the user. The indicator is purely decorative and does not respond to keyboard input.


Impact

  • Users cannot collapse the Plans panel to see more Projects content (and vice versa)
  • tab/shift+tab within sidebar does not navigate between Plans and Projects panels (spec §30451)
  • enter does not expand/collapse the highlighted collapsible section (spec §30452)

Replace the plain Static header/content pairs with Textual Collapsible widgets:

from textual.widgets import Collapsible

def compose(self) -> ComposeResult:
    with Collapsible(title="PLANS", id="plans-panel", collapsed=False):
        yield Static("[dim]No active plans[/dim]", id="plans-content")
    with Collapsible(title="PROJECTS", id="projects-panel", collapsed=False):
        yield Static("[dim]No projects loaded[/dim]", id="projects-content")

This enables keyboard-driven expand/collapse per the spec.


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

## Bug Report **Feature Area:** TUI — Sidebar Content Rendering (v3.7.0) **Severity:** Medium — sidebar content structure deviates from spec **Discovered by:** UAT Testing (uat-pool-1, worker: tui-sidebar-layout) --- ## What Was Tested Code analysis of `src/cleveragents/tui/widgets/sidebar.py` on the `feature/m8-tui-mainscreen` branch against the TUI specification (§29143, §29210, §30451-30452). --- ## Expected Behavior (from spec §29143, §29210) > **Sidebar** (right, 32-40 chars wide): Plans panel and Projects panel in **collapsible containers**. The spec explicitly requires Plans and Projects panels to be in **collapsible containers** (Textual `Collapsible` widgets), which: - Allow the user to expand/collapse each panel independently - Support keyboard navigation: `tab`/`shift+tab` to navigate between panels - Support `enter` to expand/collapse the highlighted collapsible section (spec §30452) --- ## Actual Behavior The `Sidebar.compose()` method on the `feature/m8-tui-mainscreen` branch uses plain `Static` widgets: ```python def compose(self) -> ComposeResult: yield Static( "[bold]▼ PLANS[/bold]", id="plans-header", classes="panel-header", ) yield Static( "[dim]No active plans[/dim]", id="plans-content", classes="panel-content", ) yield Static( "[bold]▼ PROJECTS[/bold]", id="projects-header", classes="panel-header", ) yield Static( "[dim]No projects loaded[/dim]", id="projects-content", classes="panel-content", ) ``` These are non-interactive `Static` widgets — they cannot be collapsed/expanded by the user. The `▼` indicator is purely decorative and does not respond to keyboard input. --- ## Impact - Users cannot collapse the Plans panel to see more Projects content (and vice versa) - `tab`/`shift+tab` within sidebar does not navigate between Plans and Projects panels (spec §30451) - `enter` does not expand/collapse the highlighted collapsible section (spec §30452) --- ## Recommended Fix Replace the plain `Static` header/content pairs with Textual `Collapsible` widgets: ```python from textual.widgets import Collapsible def compose(self) -> ComposeResult: with Collapsible(title="PLANS", id="plans-panel", collapsed=False): yield Static("[dim]No active plans[/dim]", id="plans-content") with Collapsible(title="PROJECTS", id="projects-panel", collapsed=False): yield Static("[dim]No projects loaded[/dim]", id="projects-content") ``` This enables keyboard-driven expand/collapse per the spec. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.7.0 milestone 2026-04-09 07:35:12 +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
Author
Owner

Hierarchical Compliance Fix: This issue was detected as an orphan (no parent Epic).

Solution: Linked to Epic #4963 (TUI Core Layout & Navigation — MainScreen, Sidebar, Hotkeys) as sidebar Collapsible widget implementation is part of the TUI core layout scope.

Hierarchy: Issue #5556 → Epic #4963 → Legendary #4946


Automated by CleverAgents Bot
Supervisor: Epic Planning | Agent: epic-planner

**Hierarchical Compliance Fix**: This issue was detected as an orphan (no parent Epic). **Solution**: Linked to Epic #4963 (TUI Core Layout & Navigation — MainScreen, Sidebar, Hotkeys) as sidebar Collapsible widget implementation is part of the TUI core layout scope. **Hierarchy**: Issue #5556 → Epic #4963 → Legendary #4946 --- **Automated by CleverAgents Bot** Supervisor: Epic Planning | Agent: epic-planner
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#5556
No description provided.