UAT: Dracula theme not set as default, block cursor navigation missing, notification system not implemented #5340

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

Bug Report

Feature Area: TUI — Theme, Block Cursor, Notification System (v3.7.0)
Severity: High — multiple UX features absent
Discovered by: UAT Testing (uat-pool-1, worker: tui-implementation)


What Was Tested

Code analysis of src/cleveragents/tui/cleveragents.tcss, src/cleveragents/tui/app.py, and the full TUI module against the TUI specification (§29845-29858, §29862-29977, §30067-30122).

Expected Behavior (from spec §29845-29858, §29862-29977, §30067-30122)

1. Dracula Theme (Default)

Default theme is Dracula. All 17+ Textual built-in themes are supported and switchable via /theme <name>.

The app should launch with Dracula as the default theme. The TCSS should use Textual's semantic color tokens ($primary, $secondary, $success, $error, $warning, $text, $text-muted).

2. Block Cursor Navigation

The conversation uses a 2-column grid:

  • 1-character cursor column (left) with gutter indicator
  • Content stream (right)
  • alt+up / alt+down navigate between blocks
  • space expands/collapses focused block
  • enter opens context menu for focused block
  • escape clears cursor selection, returns focus to prompt

3. Notification System (3-tier)

  • Flash messages: single-line between conversation and prompt, auto-dismiss after ui.flash_duration (default: 5s)
  • Desktop notifications: via notifypy on Linux/macOS, triggered on task completion, errors, input needed
  • Terminal title blinking: title blinks when input needed (controlled by notifications.blink_title, default: true)
  • Sound effects: on significant events (controlled by notifications.enable_sounds, default: true)

Actual Behavior

1. Dracula Theme

The cleveragents.tcss file (52 lines) does NOT set Dracula as the default theme. There is no THEME = "dracula" or equivalent in app.py. The app uses Textual's default theme.

/* cleveragents.tcss — no theme declaration */
Screen {
  layout: vertical;
}
/* ... only layout styles, no theme setting */

2. Block Cursor Navigation

No block cursor implementation exists. The conversation is a single _Static widget (id="conversation") that displays plain text. There is no:

  • 2-column grid layout
  • Cursor column widget
  • alt+up / alt+down bindings
  • Block expand/collapse functionality
  • Context menu on enter

The ThoughtBlockWidget exists in widgets/thought_block.py but is never used in the main conversation stream.

3. Notification System

No notification system exists. There is no:

  • Flash message widget between conversation and prompt
  • notifypy integration for desktop notifications
  • Terminal title blinking
  • Sound effects
  • Any notification-related code in the TUI module

Steps to Reproduce

  1. Open cleveragents.tcss — no Dracula theme declaration
  2. Open app.py — no THEME class variable
  3. Search: grep -r "alt.up\|alt.down\|block.*cursor" src/cleveragents/tui/ → no results
  4. Search: grep -r "notifypy\|flash.*message\|notification" src/cleveragents/tui/ → no results
  5. Check compose() — conversation is a single _Static, no 2-column grid

Impact

  • Users see Textual's default theme instead of Dracula
  • No keyboard navigation through conversation blocks
  • No notifications when tasks complete or errors occur
  • No flash messages for TUI feedback

Code Location

  • src/cleveragents/tui/app.py — missing THEME = "dracula", missing alt+up/alt+down bindings
  • src/cleveragents/tui/cleveragents.tcss — missing Dracula theme declaration
  • Missing: src/cleveragents/tui/widgets/conversation.py (2-column grid with block cursor)
  • Missing: src/cleveragents/tui/widgets/flash_message.py
  • Missing: src/cleveragents/tui/notifications.py

Definition of Done

  • THEME = "dracula" set in _TextualCleverAgentsTuiApp
  • /theme <name> command switches theme
  • Conversation widget uses 2-column grid (cursor column + content stream)
  • alt+up / alt+down navigate between conversation blocks
  • space expands/collapses focused block
  • enter opens block context menu
  • Flash message widget between conversation and prompt
  • Flash messages auto-dismiss after ui.flash_duration seconds
  • Desktop notifications via notifypy (on-blur mode by default)
  • Terminal title blinks when input needed (configurable)

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

## Bug Report **Feature Area:** TUI — Theme, Block Cursor, Notification System (v3.7.0) **Severity:** High — multiple UX features absent **Discovered by:** UAT Testing (uat-pool-1, worker: tui-implementation) --- ## What Was Tested Code analysis of `src/cleveragents/tui/cleveragents.tcss`, `src/cleveragents/tui/app.py`, and the full TUI module against the TUI specification (§29845-29858, §29862-29977, §30067-30122). ## Expected Behavior (from spec §29845-29858, §29862-29977, §30067-30122) ### 1. Dracula Theme (Default) > Default theme is **Dracula**. All 17+ Textual built-in themes are supported and switchable via `/theme <name>`. The app should launch with Dracula as the default theme. The TCSS should use Textual's semantic color tokens (`$primary`, `$secondary`, `$success`, `$error`, `$warning`, `$text`, `$text-muted`). ### 2. Block Cursor Navigation The conversation uses a 2-column grid: - 1-character cursor column (left) with `▌` gutter indicator - Content stream (right) - `alt+up` / `alt+down` navigate between blocks - `space` expands/collapses focused block - `enter` opens context menu for focused block - `escape` clears cursor selection, returns focus to prompt ### 3. Notification System (3-tier) - **Flash messages**: single-line between conversation and prompt, auto-dismiss after `ui.flash_duration` (default: 5s) - **Desktop notifications**: via `notifypy` on Linux/macOS, triggered on task completion, errors, input needed - **Terminal title blinking**: title blinks when input needed (controlled by `notifications.blink_title`, default: `true`) - **Sound effects**: on significant events (controlled by `notifications.enable_sounds`, default: `true`) ## Actual Behavior ### 1. Dracula Theme The `cleveragents.tcss` file (52 lines) does NOT set Dracula as the default theme. There is no `THEME = "dracula"` or equivalent in `app.py`. The app uses Textual's default theme. ```css /* cleveragents.tcss — no theme declaration */ Screen { layout: vertical; } /* ... only layout styles, no theme setting */ ``` ### 2. Block Cursor Navigation **No block cursor implementation exists.** The conversation is a single `_Static` widget (`id="conversation"`) that displays plain text. There is no: - 2-column grid layout - Cursor column widget - `alt+up` / `alt+down` bindings - Block expand/collapse functionality - Context menu on `enter` The `ThoughtBlockWidget` exists in `widgets/thought_block.py` but is never used in the main conversation stream. ### 3. Notification System **No notification system exists.** There is no: - Flash message widget between conversation and prompt - `notifypy` integration for desktop notifications - Terminal title blinking - Sound effects - Any notification-related code in the TUI module ## Steps to Reproduce 1. Open `cleveragents.tcss` — no Dracula theme declaration 2. Open `app.py` — no `THEME` class variable 3. Search: `grep -r "alt.up\|alt.down\|block.*cursor" src/cleveragents/tui/` → no results 4. Search: `grep -r "notifypy\|flash.*message\|notification" src/cleveragents/tui/` → no results 5. Check `compose()` — conversation is a single `_Static`, no 2-column grid ## Impact - Users see Textual's default theme instead of Dracula - No keyboard navigation through conversation blocks - No notifications when tasks complete or errors occur - No flash messages for TUI feedback ## Code Location - `src/cleveragents/tui/app.py` — missing `THEME = "dracula"`, missing `alt+up`/`alt+down` bindings - `src/cleveragents/tui/cleveragents.tcss` — missing Dracula theme declaration - Missing: `src/cleveragents/tui/widgets/conversation.py` (2-column grid with block cursor) - Missing: `src/cleveragents/tui/widgets/flash_message.py` - Missing: `src/cleveragents/tui/notifications.py` ## Definition of Done - [ ] `THEME = "dracula"` set in `_TextualCleverAgentsTuiApp` - [ ] `/theme <name>` command switches theme - [ ] Conversation widget uses 2-column grid (cursor column + content stream) - [ ] `alt+up` / `alt+down` navigate between conversation blocks - [ ] `space` expands/collapses focused block - [ ] `enter` opens block context menu - [ ] Flash message widget between conversation and prompt - [ ] Flash messages auto-dismiss after `ui.flash_duration` seconds - [ ] Desktop notifications via `notifypy` (on-blur mode by default) - [ ] Terminal title blinks when input needed (configurable) --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.7.0 milestone 2026-04-09 06:01:06 +00:00
Author
Owner

Label compliance fix applied:

  • Assigned milestone based on issue scope
  • Reason: Issue was missing a milestone assignment per CONTRIBUTING.md requirements.

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

Label compliance fix applied: - Assigned milestone based on issue scope - Reason: Issue was missing a milestone assignment per CONTRIBUTING.md requirements. --- **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.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core#5340
No description provided.