1
0
mirror of https://github.com/tw93/Mole.git synced 2026-02-04 11:31:46 +00:00

feat: add uptime display to status header (#329)

Show system uptime in the header row with a concise format (e.g., "up 1d 5h").
Simplify title from "Mole Status" to "Status" for better fit.
This commit is contained in:
Tw93
2026-01-18 16:52:44 +08:00
parent 72f42a363e
commit 7a5bdac385
3 changed files with 8 additions and 4 deletions

View File

@@ -159,7 +159,8 @@ func formatUptime(secs uint64) string {
hours := (secs % 86400) / 3600
mins := (secs % 3600) / 60
if days > 0 {
return fmt.Sprintf("%dd %dh %dm", days, hours, mins)
// Only show days and hours when uptime is over 1 day (skip minutes for brevity)
return fmt.Sprintf("%dd %dh", days, hours)
}
if hours > 0 {
return fmt.Sprintf("%dh %dm", hours, mins)

View File

@@ -52,8 +52,8 @@ func TestFormatUptime(t *testing.T) {
if got := formatUptime(3600 + 120); got != "1h 2m" {
t.Fatalf("expected \"1h 2m\", got %s", got)
}
if got := formatUptime(86400*2 + 3600*3 + 60*5); got != "2d 3h 5m" {
t.Fatalf("expected \"2d 3h 5m\", got %s", got)
if got := formatUptime(86400*2 + 3600*3 + 60*5); got != "2d 3h" {
t.Fatalf("expected \"2d 3h\", got %s", got)
}
}

View File

@@ -131,7 +131,7 @@ type cardData struct {
}
func renderHeader(m MetricsSnapshot, errMsg string, animFrame int, termWidth int, catHidden bool) string {
title := titleStyle.Render("Mole Status")
title := titleStyle.Render("Status")
scoreStyle := getScoreStyle(m.HealthScore)
scoreText := subtleStyle.Render("Health ") + scoreStyle.Render(fmt.Sprintf("● %d", m.HealthScore))
@@ -165,6 +165,9 @@ func renderHeader(m MetricsSnapshot, errMsg string, animFrame int, termWidth int
if m.Hardware.OSVersion != "" {
infoParts = append(infoParts, m.Hardware.OSVersion)
}
if m.Uptime != "" {
infoParts = append(infoParts, subtleStyle.Render("up "+m.Uptime))
}
headerLine := title + " " + scoreText + " " + strings.Join(infoParts, " · ")