diff --git a/Sources/UI/ContentView.swift b/Sources/UI/ContentView.swift index e52bba5..082392f 100644 --- a/Sources/UI/ContentView.swift +++ b/Sources/UI/ContentView.swift @@ -169,7 +169,7 @@ public struct ContentView: View { } .padding(24) } - .navigationTitle("MacMonitor — \(selectedTab)") + .navigationTitle("MacMonitor — \(selectedTab ?? "Dashboard")") } // MARK: - Dashboard Composite View @@ -1250,8 +1250,9 @@ struct ProcessDetailSheet: View { if selectedDetailTab == "Threads" { List(threads.indices, id: \.self) { idx in let t = threads[idx] + let threadID = "\(t["threadID"] ?? idx)" HStack { - Text("Thread \(t["threadID"] ?? idx)").bold() + Text("Thread \(threadID)").bold() Spacer() Text("CPU: \(String(format: "%.1f%%", (t["cpuPercent"] as? Double) ?? 0.0))").monospacedDigit() Text(t["state"] as? String ?? "").foregroundStyle(.secondary) @@ -1264,10 +1265,15 @@ struct ProcessDetailSheet: View { } else { List(sockets.indices, id: \.self) { idx in let s = sockets[idx] + let proto = s["protocol"] as? String ?? "TCP" + let localAddr = (s["localAddress"] as? String) ?? "" + let localPort = (s["localPort"] as? Int) ?? 0 + let remoteAddr = (s["remoteAddress"] as? String) ?? "" + let remotePort = (s["remotePort"] as? Int) ?? 0 HStack { - Text(s["protocol"] as? String ?? "TCP").bold() + Text(proto).bold() Spacer() - Text("\(s["localAddress"] ?? ""):\(s["localPort"] ?? 0) → \(s["remoteAddress"] ?? ""):\(s["remotePort"] ?? 0)") + Text("\(localAddr):\(localPort) → \(remoteAddr):\(remotePort)") .mmMonospaced() Text(s["tcpState"] as? String ?? "").foregroundStyle(.secondary) }