Compare commits

...

2 Commits

Author SHA1 Message Date
97aa1708c2 Improve service selection UI and help text
All checks were successful
Build and Release / build-and-release (push) Successful in 2m11s
- Fix service icons to use background color when selected for better visibility against blue selection background
- Combine start/stop service help text entries into single "s/S: Start/Stop Service"
- Change help text keys to lowercase (r: Rebuild Host, q: Quit)
- Bump version to v0.1.34
2025-10-28 18:17:15 +01:00
d12689f3b5 Update CLAUDE.md to reflect simplified navigation and current status
Updated documentation to reflect major UI improvements:

- Documented simplified navigation system (no more panel switching)
- Updated current status to October 28, 2025 with v0.1.33
- Described complete service discovery and visibility features
- Added vi-style j/k navigation documentation
- Removed outdated panel-focused navigation descriptions
- Updated visual feedback documentation for transitional icons
- Consolidated service discovery achievements and current working state
2025-10-28 17:00:40 +01:00
7 changed files with 50 additions and 48 deletions

View File

@@ -18,22 +18,24 @@ All system panel features successfully implemented:
-**Tmpfs Monitoring**: Added /tmp usage to RAM section
-**Agent Deployment**: NixOS collector working in production
**Keyboard Navigation and Service Management - COMPLETED**
**Simplified Navigation and Service Management - COMPLETED**
All keyboard navigation and service selection features successfully implemented:
-**Panel Navigation**: Shift+Tab cycles through visible panels only (System → Services → Backup)
-**Service Selection**: Up/Down arrows navigate through parent services with visual cursor
-**Focus Management**: Selection highlighting only visible when Services panel focused
-**Status Preservation**: Service health colors maintained during selection (green/red icons)
-**Smart Panel Switching**: Only cycles through panels with data (backup panel conditional)
-**Scroll Support**: All panels support content scrolling with proper overflow indicators
All navigation and service management features successfully implemented:
-**Direct Service Control**: Up/Down (or j/k) arrows directly control service selection
-**Always Visible Selection**: Service selection highlighting always visible (no panel focus needed)
-**Complete Service Discovery**: All configured services visible regardless of state
-**Transitional Visual Feedback**: Service operations show directional arrows (↑ ↓ ↻)
-**Simplified Interface**: Removed panel switching complexity, uniform appearance
-**Vi-style Navigation**: Added j/k keys for vim users alongside arrow keys
**Current Status - October 27, 2025:**
- All keyboard navigation features working correctly ✅
- Service selection cursor implemented with focus-aware highlighting
- Panel scrolling fixed for System, Services, and Backup panels
**Current Status - October 28, 2025:**
- All service discovery and display features working correctly ✅
- Simplified navigation system implemented
- Service selection always visible with direct control
- Complete service visibility (all configured services show regardless of state) ✅
- Transitional service icons working with proper color handling ✅
- Build display working: "Build: 25.05.20251004.3bcc93c" ✅
- Agent version display working: "Agent: v0.1.17" ✅
- Agent version display working: "Agent: v0.1.33" ✅
- Cross-host version comparison implemented ✅
- Automated binary release system working ✅
- SMART data consolidated into disk collector ✅
@@ -76,36 +78,35 @@ Storage:
**Backup panel visibility fixed - only shows when meaningful data exists ✅**
**SSH-based rebuild system fully implemented and working ✅**
### Current Keyboard Navigation Implementation
### Current Simplified Navigation Implementation
**Navigation Controls:**
- **Tab**: Switch between hosts (cmbox, srv01, srv02, steambox, etc.)
- **Shift+Tab**: Cycle through visible panels (System → Services → Backup → System)
- **Up/Down (System/Backup)**: Scroll through panel content
- **Up/Down (Services)**: Move service selection cursor between parent services
- **↑↓ or j/k**: Move service selection cursor (always works)
- **q**: Quit dashboard
**Panel-Specific Features:**
- **System Panel**: Scrollable content with CPU, RAM, Storage details
- **Services Panel**: Service selection cursor for parent services only (docker, nginx, postgresql, etc.)
- **Backup Panel**: Scrollable repository list with proper overflow handling
**Service Control:**
- **s**: Start selected service
- **S**: Stop selected service
- **R**: Rebuild current host (works from any context)
**Visual Feedback:**
- **Focused Panel**: Blue border and title highlighting
- **Service Selection**: Blue background with preserved status icon colors (green ● for active, red ● for failed)
- **Focus-Aware Selection**: Selection highlighting only visible when Services panel focused
- **Dynamic Statusbar**: Context-aware shortcuts based on focused panel
**Visual Features:**
- **Service Selection**: Always visible blue background highlighting current service
- **Status Icons**: Green ● (active), Yellow ◐ (inactive), Red ◯ (failed), ? (unknown)
- **Transitional Icons**: Blue ↑ (starting), ↓ (stopping), ↻ (restarting) when not selected
- **Transitional Icons**: Dark gray arrows when service is selected (for visibility)
- **Uniform Interface**: All panels have consistent appearance (no focus borders)
### Remote Command Execution - WORKING ✅
### Service Discovery and Display - WORKING ✅
**All Issues Resolved (as of 2025-10-24):**
-**ZMQ Command Protocol**: Extended with ServiceControl and SystemRebuild variants
-**Agent Handlers**: systemctl and nixos-rebuild execution with maintenance mode
-**Dashboard Integration**: Keyboard shortcuts execute commands
-**Service Control**: Fixed toggle logic - replaced with separate 's' (start) and 'S' (stop)
-**System Rebuild**: Fixed permission issues and sandboxing problems
-**Git Clone Approach**: Implemented for nixos-rebuild to avoid directory permissions
-**Visual Feedback**: Directional arrows for service status (↑ starting, ↓ stopping, ↻ restarting)
**All Issues Resolved (as of 2025-10-28):**
-**Complete Service Discovery**: Uses `systemctl list-unit-files` + `list-units --all` for comprehensive service detection
-**All Services Visible**: Shows all configured services regardless of current state (active/inactive)
-**Proper Status Display**: Active services show green ●, inactive show yellow ◐, failed show red ◯
-**Transitional Icons**: Visual feedback during service operations with proper color handling
-**Simplified Navigation**: Removed panel complexity, direct service control always available
-**Service Control**: Start (s) and Stop (S) commands work from anywhere
-**System Rebuild**: SSH + tmux popup approach for reliable remote rebuilds
### Terminal Popup for Real-time Output - IMPLEMENTED ✅

6
Cargo.lock generated
View File

@@ -270,7 +270,7 @@ checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d"
[[package]]
name = "cm-dashboard"
version = "0.1.32"
version = "0.1.33"
dependencies = [
"anyhow",
"chrono",
@@ -291,7 +291,7 @@ dependencies = [
[[package]]
name = "cm-dashboard-agent"
version = "0.1.32"
version = "0.1.33"
dependencies = [
"anyhow",
"async-trait",
@@ -314,7 +314,7 @@ dependencies = [
[[package]]
name = "cm-dashboard-shared"
version = "0.1.32"
version = "0.1.33"
dependencies = [
"chrono",
"serde",

View File

@@ -1,6 +1,6 @@
[package]
name = "cm-dashboard-agent"
version = "0.1.33"
version = "0.1.34"
edition = "2021"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "cm-dashboard"
version = "0.1.33"
version = "0.1.34"
edition = "2021"
[dependencies]

View File

@@ -642,12 +642,11 @@ impl TuiApp {
// Global shortcuts
shortcuts.push("Tab: Switch Host".to_string());
shortcuts.push("↑↓/jk: Select Service".to_string());
shortcuts.push("R: Rebuild Host".to_string());
shortcuts.push("S: Start Service".to_string());
shortcuts.push("Shift+S: Stop Service".to_string());
shortcuts.push("r: Rebuild Host".to_string());
shortcuts.push("s/S: Start/Stop Service".to_string());
// Always show quit
shortcuts.push("Q: Quit".to_string());
shortcuts.push("q: Quit".to_string());
shortcuts
}

View File

@@ -579,14 +579,16 @@ impl ServicesWidget {
}
};
// Apply selection highlighting to parent services only, preserving status icon color
// Apply selection highlighting to parent services only, making icons background color when selected
// Only show selection when Services panel is focused
// Show selection highlighting even when transitional icons are present
if is_selected && !*is_sub && is_focused {
for (i, span) in spans.iter_mut().enumerate() {
if i == 0 {
// First span is the status icon - preserve its color
span.style = span.style.bg(Theme::highlight());
// First span is the status icon - use background color for visibility against blue selection
span.style = span.style
.bg(Theme::highlight())
.fg(Theme::background());
} else {
// Other spans (text) get full selection highlighting
span.style = span.style

View File

@@ -1,6 +1,6 @@
[package]
name = "cm-dashboard-shared"
version = "0.1.33"
version = "0.1.34"
edition = "2021"
[dependencies]