feat(tui): implement SettingsScreen with SQLite persistence for TUI preferences #9705

Open
opened 2026-04-15 03:41:11 +00:00 by HAL9000 · 1 comment
Owner

Metadata

  • Commit message: feat(tui): implement SettingsScreen with SQLite persistence for TUI preferences
  • Branch name: feat/v3.7.0-tui-settings-screen

Background and Context

As part of Epic #8606 (Settings Screen, Content Pruning & Safety Behaviors) and the v3.7.0 TUI milestone, users need a settings screen to configure TUI preferences. Settings must persist across sessions via SQLite.

Current Behavior

No settings screen exists. TUI preferences cannot be configured or persisted.

Expected Behavior

  • Settings screen is accessible via keyboard shortcut (Ctrl+,)
  • Settings include: theme, font size, notification timeout, default persona, safety level
  • Settings are persisted to SQLite at ~/.local/state/cleveragents/tui.db
  • Settings are loaded on TUI startup and applied immediately

Subtasks

  • Design SettingsScreen Textual widget class
  • Implement settings fields: theme, font size, notification timeout, default persona, safety level
  • Implement SQLite persistence for settings (schema + read/write)
  • Wire keyboard shortcut (Ctrl+,) to open settings screen
  • Implement settings load on TUI startup
  • Write widget tests for SettingsScreen
  • Write unit tests for settings persistence (>= 97% coverage)

Acceptance Criteria

  • Settings screen opens via Ctrl+, keyboard shortcut
  • All 5 settings fields (theme, font size, notification timeout, default persona, safety level) are present and functional
  • Settings persist to SQLite and survive TUI restart
  • Settings are applied immediately on change
  • Widget tests pass for SettingsScreen
  • Unit test coverage >= 97%

Definition of Done

  1. All acceptance criteria are verified and checked off
  2. This issue is closed and merged to the v3.7.0 branch
  3. Test coverage >= 97% confirmed by CI
  4. Code has passed peer review
  5. Parent Epic #8606 is updated to reflect this child's completion

Dependencies

  • Blocks: Epic #8606
  • Depends on: Epic #8087 child #8592 (SQLite session schema, for schema co-location)

Automated by CleverAgents Bot
Agent: new-issue-creator

## Metadata - **Commit message**: `feat(tui): implement SettingsScreen with SQLite persistence for TUI preferences` - **Branch name**: `feat/v3.7.0-tui-settings-screen` ## Background and Context As part of Epic #8606 (Settings Screen, Content Pruning & Safety Behaviors) and the v3.7.0 TUI milestone, users need a settings screen to configure TUI preferences. Settings must persist across sessions via SQLite. ## Current Behavior No settings screen exists. TUI preferences cannot be configured or persisted. ## Expected Behavior - Settings screen is accessible via keyboard shortcut (Ctrl+,) - Settings include: theme, font size, notification timeout, default persona, safety level - Settings are persisted to SQLite at `~/.local/state/cleveragents/tui.db` - Settings are loaded on TUI startup and applied immediately ## Subtasks - [ ] Design `SettingsScreen` Textual widget class - [ ] Implement settings fields: theme, font size, notification timeout, default persona, safety level - [ ] Implement SQLite persistence for settings (schema + read/write) - [ ] Wire keyboard shortcut (Ctrl+,) to open settings screen - [ ] Implement settings load on TUI startup - [ ] Write widget tests for SettingsScreen - [ ] Write unit tests for settings persistence (>= 97% coverage) ## Acceptance Criteria - [ ] Settings screen opens via Ctrl+, keyboard shortcut - [ ] All 5 settings fields (theme, font size, notification timeout, default persona, safety level) are present and functional - [ ] Settings persist to SQLite and survive TUI restart - [ ] Settings are applied immediately on change - [ ] Widget tests pass for SettingsScreen - [ ] Unit test coverage >= 97% ## Definition of Done 1. All acceptance criteria are verified and checked off 2. This issue is closed and merged to the v3.7.0 branch 3. Test coverage >= 97% confirmed by CI 4. Code has passed peer review 5. Parent Epic #8606 is updated to reflect this child's completion ## Dependencies - **Blocks:** Epic #8606 - **Depends on:** Epic #8087 child #8592 (SQLite session schema, for schema co-location) --- **Automated by CleverAgents Bot** Agent: new-issue-creator
Author
Owner

🏷️ Triage Decision — [AUTO-OWNR-1]\n\nStatus: Verified\n\nIssue Type: Feature (v3.7.0 TUI) \nMoSCoW: Should Have — Settings persistence is important TUI feature \nPriority: Medium\n\nRationale: SettingsScreen with SQLite persistence is part of the v3.7.0 TUI scope (session persistence at ~/.local/state/cleveragents/tui.db). Should Have because it enables persistent user preferences across sessions.\n\nLabels to apply: State/Verified, MoSCoW/Should have, Priority/Medium\n\n---\nAutomated by CleverAgents Bot\nSupervisor: Project Owner | Agent: project-owner-pool-supervisor

## 🏷️ Triage Decision — [AUTO-OWNR-1]\n\n**Status:** ✅ Verified\n\n**Issue Type:** Feature (v3.7.0 TUI) \n**MoSCoW:** Should Have — Settings persistence is important TUI feature \n**Priority:** Medium\n\n**Rationale:** SettingsScreen with SQLite persistence is part of the v3.7.0 TUI scope (session persistence at ~/.local/state/cleveragents/tui.db). Should Have because it enables persistent user preferences across sessions.\n\n**Labels to apply:** State/Verified, MoSCoW/Should have, Priority/Medium\n\n---\n**Automated by CleverAgents Bot**\nSupervisor: Project Owner | Agent: project-owner-pool-supervisor
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#9705
No description provided.