- Replace 12-item flat menu with 4-item main menu: Health Check, Export support bundle, Settings, Exit - Add Health Check screen (Lenovo-style): per-component checkboxes (GPU/MEM/DISK/CPU), Quick/Standard/Express modes, Run All, letter hotkeys G/M/S/C/R/A/1/2/3 - Add two-column main screen: left = menu, right = hardware panel with colored PASS/FAIL/CANCEL/N/A status per component; Tab/→ switches focus, Enter opens component detail - Add app.LoadHardwarePanel() + ComponentDetailResult() reading audit JSON and SAT summary.txt files - Move Network/Services/audit actions into Settings submenu - Export: support bundle only (remove separate audit JSON export) - Delete screen_acceptance.go; add screen_health_check.go, screen_settings.go, app/panel.go - Add BMC + CPU stress-ng tests to backlog - Update bible submodule - Rewrite tui_test.go for new screen/action structure Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package tui
|
|
|
|
import (
|
|
"bee/audit/internal/platform"
|
|
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
)
|
|
|
|
func (m model) handleServicesMenu() (tea.Model, tea.Cmd) {
|
|
if len(m.services) == 0 {
|
|
return m, resultCmd("Services", "No bee-* services found.", nil, screenSettings)
|
|
}
|
|
m.selectedService = m.services[m.cursor]
|
|
m.screen = screenServiceAction
|
|
m.cursor = 0
|
|
return m, nil
|
|
}
|
|
|
|
func (m model) handleServiceActionMenu() (tea.Model, tea.Cmd) {
|
|
action := m.serviceMenu[m.cursor]
|
|
if action == "back" {
|
|
m.screen = screenServices
|
|
m.cursor = 0
|
|
return m, nil
|
|
}
|
|
|
|
m.busy = true
|
|
m.busyTitle = "service: " + m.selectedService
|
|
return m, func() tea.Msg {
|
|
switch action {
|
|
case "Status":
|
|
result, err := m.app.ServiceStatusResult(m.selectedService)
|
|
return resultMsg{title: result.Title, body: result.Body, err: err, back: screenServiceAction}
|
|
case "Restart":
|
|
result, err := m.app.ServiceActionResult(m.selectedService, platform.ServiceRestart)
|
|
return resultMsg{title: result.Title, body: result.Body, err: err, back: screenServiceAction}
|
|
case "Start":
|
|
result, err := m.app.ServiceActionResult(m.selectedService, platform.ServiceStart)
|
|
return resultMsg{title: result.Title, body: result.Body, err: err, back: screenServiceAction}
|
|
case "Stop":
|
|
result, err := m.app.ServiceActionResult(m.selectedService, platform.ServiceStop)
|
|
return resultMsg{title: result.Title, body: result.Body, err: err, back: screenServiceAction}
|
|
default:
|
|
return resultMsg{title: "Service", body: "Unknown action.", back: screenServiceAction}
|
|
}
|
|
}
|
|
}
|