From 97cd949dc58a11db3d8f9c9e2d161caf116d1d6e Mon Sep 17 00:00:00 2001 From: LMZ Date: Mon, 20 Apr 2026 17:32:17 +0800 Subject: [PATCH] feat: make ProcessSnapshotProvider a singleton actor to persist metadataCache across view model resets --- Sources/ProcessBarMonitor/MonitorViewModel.swift | 2 +- Sources/ProcessBarMonitor/ProcessSnapshotProvider.swift | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Sources/ProcessBarMonitor/MonitorViewModel.swift b/Sources/ProcessBarMonitor/MonitorViewModel.swift index c23c47f..43d5b11 100644 --- a/Sources/ProcessBarMonitor/MonitorViewModel.swift +++ b/Sources/ProcessBarMonitor/MonitorViewModel.swift @@ -49,7 +49,7 @@ final class MonitorViewModel: ObservableObject { } private let metricsProvider = SystemMetricsProvider() - private let processProvider = ProcessSnapshotProvider() + private let processProvider = ProcessSnapshotProvider.shared private let settings: SettingsStore private let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "ai.openclaw.ProcessBarMonitor", category: "process-snapshot") private var refreshTask: Task? diff --git a/Sources/ProcessBarMonitor/ProcessSnapshotProvider.swift b/Sources/ProcessBarMonitor/ProcessSnapshotProvider.swift index 1e0ea3f..3071a90 100644 --- a/Sources/ProcessBarMonitor/ProcessSnapshotProvider.swift +++ b/Sources/ProcessBarMonitor/ProcessSnapshotProvider.swift @@ -2,6 +2,8 @@ import Foundation import AppKit actor ProcessSnapshotProvider { + static let shared = ProcessSnapshotProvider() + enum SnapshotError: LocalizedError { case launchFailed(Error) case commandFailed(status: Int32, stderr: String)