11 Commits
Author SHA1 Message Date
gronod 68e6df2938 Merge pull request 'fix: Isolate views to @MainActor and use @ObservedObject for Swift 5.7 compatibility' (#56) from hotfix/macos12-mainactor-views into develop
MacMonitor CI/CD Pipeline / Build & Test (Intel x86_64) (push) Failing after 20s
MacMonitor CI/CD Pipeline / Package Release Artifact (push) Skipped
2026-10-01 12:53:48 +01:00
gronod 7473e95635 fix: Isolate views to @MainActor and use @ObservedObject for Swift 5.7 compatibility 2026-10-01 12:53:17 +01:00
gronod 57e2ddd225 Merge pull request 'fix: Replace Swift 5.9 switch expression for Xcode 14 compatibility' (#55) from hotfix/macos12-switch-expr into develop
MacMonitor CI/CD Pipeline / Build & Test (Intel x86_64) (push) Failing after 13s
MacMonitor CI/CD Pipeline / Package Release Artifact (push) Skipped
2026-10-01 12:45:41 +01:00
gronod 33bee371f1 fix: Replace Swift 5.9 switch expression for Xcode 14 compatibility 2026-10-01 12:45:11 +01:00
gronod bb91042da7 Merge pull request 'feat: macOS 12 (Monterey) Support Milestone' (#54) from milestone/macos-12-support into develop
MacMonitor CI/CD Pipeline / Build & Test (Intel x86_64) (push) Failing after 1m30s
MacMonitor CI/CD Pipeline / Package Release Artifact (push) Skipped
2026-10-01 12:03:19 +01:00
gronod f8f2cc0b90 Merge pull request 'feat: UI Shims for macOS 12 (Resolves #44)' (#53) from feat/44-ui-shims into milestone/macos-12-support 2026-10-01 12:03:04 +01:00
gronod 9f5481a1a9 Fix UI shims for macOS 12 compatibility 2026-10-01 12:02:09 +01:00
gronod 5676279a4c feat(#43): Downgrade App Lifecycle and Navigation Framework 2026-10-01 11:55:10 +01:00
gronod 7ba4284be1 feat(#42): Refactor State Management from Observation to Combine 2026-10-01 11:53:08 +01:00
gronod 01e871dc2c feat(#41): Revert target deployment configuration to macOS 12 2026-10-01 11:48:27 +01:00
gronod beabf016b0 chore: ignore reference and plan markdown files 2026-10-01 11:36:34 +01:00
+6 -10
View File
@@ -169,7 +169,7 @@ public struct ContentView: View {
} }
.padding(24) .padding(24)
} }
.navigationTitle("MacMonitor — \(selectedTab ?? "Dashboard")") .navigationTitle("MacMonitor — \(selectedTab)")
} }
// MARK: - Dashboard Composite View // MARK: - Dashboard Composite View
@@ -1006,6 +1006,8 @@ public struct ContentView: View {
HStack { HStack {
Text("Target Architecture:").foregroundStyle(.secondary) Text("Target Architecture:").foregroundStyle(.secondary)
Text("Intel x86_64").bold() Text("Intel x86_64").bold()
Text("Deployment Target:").foregroundStyle(.secondary)
Text("macOS 14.0 (Sonoma)").bold()
} }
} }
} }
@@ -1248,9 +1250,8 @@ struct ProcessDetailSheet: View {
if selectedDetailTab == "Threads" { if selectedDetailTab == "Threads" {
List(threads.indices, id: \.self) { idx in List(threads.indices, id: \.self) { idx in
let t = threads[idx] let t = threads[idx]
let threadID = "\(t["threadID"] ?? idx)"
HStack { HStack {
Text("Thread \(threadID)").bold() Text("Thread \(t["threadID"] ?? idx)").bold()
Spacer() Spacer()
Text("CPU: \(String(format: "%.1f%%", (t["cpuPercent"] as? Double) ?? 0.0))").monospacedDigit() Text("CPU: \(String(format: "%.1f%%", (t["cpuPercent"] as? Double) ?? 0.0))").monospacedDigit()
Text(t["state"] as? String ?? "").foregroundStyle(.secondary) Text(t["state"] as? String ?? "").foregroundStyle(.secondary)
@@ -1263,15 +1264,10 @@ struct ProcessDetailSheet: View {
} else { } else {
List(sockets.indices, id: \.self) { idx in List(sockets.indices, id: \.self) { idx in
let s = sockets[idx] 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 { HStack {
Text(proto).bold() Text(s["protocol"] as? String ?? "TCP").bold()
Spacer() Spacer()
Text("\(localAddr):\(localPort) → \(remoteAddr):\(remotePort)") Text("\(s["localAddress"] ?? ""):\(s["localPort"] ?? 0) → \(s["remoteAddress"] ?? ""):\(s["remotePort"] ?? 0)")
.mmMonospaced() .mmMonospaced()
Text(s["tcpState"] as? String ?? "").foregroundStyle(.secondary) Text(s["tcpState"] as? String ?? "").foregroundStyle(.secondary)
} }