diff --git a/AppImage/components/health-status-modal.tsx b/AppImage/components/health-status-modal.tsx index 3f59f5e4..72d1cc00 100644 --- a/AppImage/components/health-status-modal.tsx +++ b/AppImage/components/health-status-modal.tsx @@ -300,27 +300,45 @@ export function HealthStatusModal({ open, onOpenChange, getApiUrl }: HealthStatu const formatCheckLabel = (key: string): string => { const labels: Record = { + // CPU cpu_usage: "CPU Usage", cpu_temperature: "Temperature", + // Memory ram_usage: "RAM Usage", swap_usage: "Swap Usage", + // Disk I/O root_filesystem: "Root Filesystem", + smart_health: "SMART Health", + io_errors: "I/O Errors", + zfs_pools: "ZFS Pools", + lvm_volumes: "LVM Volumes", lvm_check: "LVM Status", + // Network connectivity: "Connectivity", - all_vms_cts: "VMs & Containers", + // VMs & CTs + qmp_communication: "QMP Communication", + container_startup: "Container Startup", + vm_startup: "VM Startup", + oom_killer: "OOM Killer", + // Services cluster_mode: "Cluster Mode", - error_cascade: "Error Cascade", - error_spike: "Error Spike", - persistent_errors: "Persistent Errors", - critical_errors: "Critical Errors", + // Logs (prefixed with log_) + log_error_cascade: "Error Cascade", + log_error_spike: "Error Spike", + log_persistent_errors: "Persistent Errors", + log_critical_errors: "Critical Errors", + // Updates security_updates: "Security Updates", system_age: "System Age", pending_updates: "Pending Updates", kernel_pve: "Kernel / PVE", + // Security uptime: "Uptime", certificates: "Certificates", login_attempts: "Login Attempts", fail2ban: "Fail2Ban", + // Storage (Proxmox) + proxmox_storages: "Proxmox Storages", } if (labels[key]) return labels[key] // Convert snake_case or camelCase to Title Case @@ -331,7 +349,7 @@ export function HealthStatusModal({ open, onOpenChange, getApiUrl }: HealthStatu } const renderChecks = ( - checks: Record, + checks: Record, categoryKey: string ) => { if (!checks || Object.keys(checks).length === 0) return null @@ -347,18 +365,18 @@ export function HealthStatusModal({ open, onOpenChange, getApiUrl }: HealthStatu key={checkKey} className="flex items-center justify-between gap-2 text-xs py-1.5 px-3 rounded-md hover:bg-muted/40 transition-colors" > -
+
{getStatusIcon(checkData.status, "sm")} {formatCheckLabel(checkKey)} - {checkData.detail} + {checkData.detail} + {checkData.dismissed && ( + + Dismissed + + )}
- {checkData.thresholds && ( - - ({checkData.thresholds}) - - )} - {(checkStatus === "WARNING" || checkStatus === "CRITICAL") && isDismissable && ( + {(checkStatus === "WARNING" || checkStatus === "CRITICAL") && isDismissable && !checkData.dismissed && (