The file /Users/neog/Apps/macOS/NEOGHub/NEOGCommand/App/AppState.swift has been updated. Here's the result of running `cat -n` on a snippet of the edited file: 1→import SwiftUI 2→import Combine 3→ 4→@MainActor 5→final class AppState: ObservableObject { 6→ // MARK: - Navigation 7→ @Published var selectedCategory: SidebarCategory = .dashboard 8→ @Published var isSearchPresented: Bool = false 9→ @Published var selectedRunId: String? 10→ 11→ // MARK: - CC ROI Data 12→ @Published var roiSummary: ROISummary? 13→ @Published var allTimeStats: AllTimeStats? 14→ @Published var recentRuns: [CCRun] = [] 15→ @Published var budgetConfig: BudgetConfig? 16→ 17→ // MARK: - Services 18→ @Published var services: [ServiceStatus] = [] 19→ 20→ // MARK: - Connection Status 21→ @Published var isConnected: Bool = false 22→ @Published var lastSyncDate: Date? 23→ @Published var syncError: String? 24→ @Published var connectionState: RealtimeService.ConnectionState = .disconnected 25→ private var previousConnectionState: Bool = false 26→ 27→ // MARK: - Alerts 28→ @Published var currentAlert: BudgetAlert? 29→ @Published var showBudgetAlert: Bool = false 30→ 31→ // MARK: - Services 32→ private let apiClient = APIClient.shared 33→ private let ccService = CCTrackingService() 34→ private let realtimeService = RealtimeService.shared 35→ private let notificationService = NotificationService.shared 36→ private var refreshTask: Task? 37→ private var cancellables = Set() 38→ private var notificationObservers: [NSObjectProtocol] = [] 39→ 40→ init() { 41→ setupRealtimeSubscriptions() 42→ setupNotificationObservers() 43→ realtimeService.start() 44→ 45→ // Request notification authorization on first launch 46→ Task { 47→ await notificationService.checkAuthorizationStatus() 48→ } 49→ } 50→ 51→ deinit { 52→ refreshTask?.cancel() 53→ notificationObservers.forEach { NotificationCenter.default.removeObserver($0) } 54→ } 55→ 56→ // MARK: - Realtime Subscriptions 57→ 58→ private func setupRealtimeSubscriptions() {