UAT: TUI Loading States not implemented — spec requires spinners and progress bars for all async operations; TUI shows no loading feedback #3038

Open
opened 2026-04-05 04:12:22 +00:00 by freemo · 3 comments
Owner

Metadata

  • Branch: feat/tui-loading-states
  • Commit Message: feat(tui): implement loading state indicators (spinners, progress bars) for async operations
  • Milestone: v3.7.0
  • Parent Epic: #868

Background and context

The specification states:

"The TUI provides clear visual feedback for all loading states. When the application is fetching data from the backend or performing a long-running operation, it will display loading indicators (e.g., spinners, progress bars) to inform the user that the system is busy."

The current master branch TUI has no loading state indicators of any kind. When a command is submitted via the input widget, the conversation area is immediately updated with the result (or an "Unknown command" message) with no visual feedback during processing. A search of all files in src/cleveragents/tui/ for spinner, progress_bar, loading, LoadingIndicator, and throbber returns no results.

Note: PR #1302 (feat(tui): implement Textual MainScreen) includes a Throbber widget (rainbow gradient animated bar), but this PR has not been merged to master. The current master branch has no loading state indicators.

Current behavior

  • src/cleveragents/tui/app.py lines 168–209: on_input_submitted processes commands synchronously with no loading feedback whatsoever.
  • No spinner, progress bar, or loading indicator widgets exist anywhere under src/cleveragents/tui/.
  • Users receive no visual signal that the system is busy during async operations (backend fetches, plan execution, session loading).

Expected behavior

Per the specification, all async operations — including fetching data from the backend, executing plans, and loading sessions — must display loading indicators (spinners or progress bars) to inform the user that the system is busy. Loading indicators must be hidden once the operation completes.

Subtasks

  • Create src/cleveragents/tui/widgets/loading_indicator.py with spinner/throbber widget
  • Implement progress bar widget for operations with known duration
  • Integrate loading indicators into command processing in on_input_submitted
  • Show loading indicator while waiting for backend responses
  • Hide loading indicator when operation completes
  • Write BDD scenarios in features/tui_loading_states.feature

Definition of Done

  • Loading indicator (spinner) appears during async operations
  • Progress bar appears for operations with known duration
  • Loading indicators are hidden when operations complete
  • BDD scenarios cover loading state behaviour
  • nox -e typecheck passes
  • nox -e unit_tests passes
  • All nox stages pass
  • Coverage >= 97%

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: ca-new-issue-creator

## Metadata - **Branch**: `feat/tui-loading-states` - **Commit Message**: `feat(tui): implement loading state indicators (spinners, progress bars) for async operations` - **Milestone**: v3.7.0 - **Parent Epic**: #868 ## Background and context The specification states: > "The TUI provides clear visual feedback for all loading states. When the application is fetching data from the backend or performing a long-running operation, it will display loading indicators (e.g., spinners, progress bars) to inform the user that the system is busy." The current master branch TUI has no loading state indicators of any kind. When a command is submitted via the input widget, the conversation area is immediately updated with the result (or an "Unknown command" message) with no visual feedback during processing. A search of all files in `src/cleveragents/tui/` for `spinner`, `progress_bar`, `loading`, `LoadingIndicator`, and `throbber` returns no results. **Note:** PR #1302 (`feat(tui): implement Textual MainScreen`) includes a `Throbber` widget (rainbow gradient animated bar), but this PR has not been merged to master. The current master branch has no loading state indicators. ## Current behavior - `src/cleveragents/tui/app.py` lines 168–209: `on_input_submitted` processes commands synchronously with no loading feedback whatsoever. - No spinner, progress bar, or loading indicator widgets exist anywhere under `src/cleveragents/tui/`. - Users receive no visual signal that the system is busy during async operations (backend fetches, plan execution, session loading). ## Expected behavior Per the specification, all async operations — including fetching data from the backend, executing plans, and loading sessions — must display loading indicators (spinners or progress bars) to inform the user that the system is busy. Loading indicators must be hidden once the operation completes. ## Subtasks - [ ] Create `src/cleveragents/tui/widgets/loading_indicator.py` with spinner/throbber widget - [ ] Implement progress bar widget for operations with known duration - [ ] Integrate loading indicators into command processing in `on_input_submitted` - [ ] Show loading indicator while waiting for backend responses - [ ] Hide loading indicator when operation completes - [ ] Write BDD scenarios in `features/tui_loading_states.feature` ## Definition of Done - [ ] Loading indicator (spinner) appears during async operations - [ ] Progress bar appears for operations with known duration - [ ] Loading indicators are hidden when operations complete - [ ] BDD scenarios cover loading state behaviour - [ ] `nox -e typecheck` passes - [ ] `nox -e unit_tests` passes - [ ] All nox stages pass - [ ] Coverage >= 97% --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-new-issue-creator
freemo added this to the v3.7.0 milestone 2026-04-05 04:12:33 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Confirmed
  • MoSCoW: Should Have

Valid finding verified during batch triage.


Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: ca-project-owner

Issue triaged by project owner: - **State**: Verified - **Priority**: Confirmed - **MoSCoW**: Should Have Valid finding verified during batch triage. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
Author
Owner

Starting implementation on branch feat/tui-loading-states.

Subtask analysis:

  • Wave 1 (parallel): Create loading_indicator.py widget + progress bar widget (independent files)
  • Wave 2: Integrate loading indicators into app.py on_input_submitted (depends on Wave 1)
  • Wave 3: Write BDD scenarios (depends on Wave 2 for full coverage)

Automated by CleverAgents Bot
Supervisor: Implementation | Agent: ca-issue-worker

Starting implementation on branch `feat/tui-loading-states`. Subtask analysis: - **Wave 1 (parallel)**: Create `loading_indicator.py` widget + progress bar widget (independent files) - **Wave 2**: Integrate loading indicators into `app.py` `on_input_submitted` (depends on Wave 1) - **Wave 3**: Write BDD scenarios (depends on Wave 2 for full coverage) --- **Automated by CleverAgents Bot** Supervisor: Implementation | Agent: ca-issue-worker
Author
Owner

Label compliance fix applied:

  • Removed conflicting label: State/In Progress
  • Retained: State/Verified
  • Reason: Issue had two conflicting State/* labels simultaneously. Per CONTRIBUTING.md, only one State/* label is permitted. State/Verified is the more advanced state and has been retained.

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

Label compliance fix applied: - Removed conflicting label: `State/In Progress` - Retained: `State/Verified` - Reason: Issue had two conflicting `State/*` labels simultaneously. Per CONTRIBUTING.md, only one `State/*` label is permitted. `State/Verified` is the more advanced state and has been retained. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: ca-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.

Blocks
Reference
cleveragents/cleveragents-core#3038
No description provided.