The file /Users/neog/Apps/macOS/NEOGHub/NEOGCommand/Components/Widgets/LiveConsumptionWidget.swift has been updated. Here's the result of running `cat -n` on a snippet of the edited file: 6→struct LiveConsumptionWidget: View { 7→ @StateObject private var tracker = ConsumptionTracker.shared 8→ @State private var showDetailSheet = false 9→ 10→ var body: some View { 11→ GroupBox { 12→ VStack(spacing: 12) { 13→ // Terminal Status (prominent at top) 14→ if !tracker.activeProcesses.isEmpty { 15→ HStack(spacing: 10) { 16→ // Terminal icon with pulse 17→ ZStack { 18→ Circle() 19→ .fill(Color.orange.opacity(0.2)) 20→ .frame(width: 36, height: 36) 21→ Image(systemName: "terminal.fill") 22→ .font(.body) 23→ .foregroundStyle(.orange) 24→ } 25→ 26→ VStack(alignment: .leading, spacing: 2) { 27→ Text("\(tracker.activeProcesses.count) Terminal\(tracker.activeProcesses.count > 1 ? "s" : "") Running") 28→ .font(.subheadline.bold()) 29→ .foregroundStyle(.orange) 30→ Text("Session: \(tracker.sessionDuration)") 31→ .font(.caption.monospacedDigit()) 32→ .foregroundStyle(.secondary) 33→ } 34→ 35→ Spacer() 36→ 37→ // Live indicator 38→ VStack(spacing: 4) { 39→ PulsingDot(isActive: true) 40→ Text("LIVE") 41→ .font(.caption2.bold()) 42→ .foregroundStyle(.green) 43→ } 44→ } 45→ .padding(10) 46→ .background(Color.orange.opacity(0.1)) 47→ .cornerRadius(10) 48→ } else { 49→ // No terminals - show waiting state 50→ HStack { 51→ HStack(spacing: 6) { 52→ PulsingDot(isActive: !tracker.isPaused) 53→ Text("Live Consumption") 54→ .font(.subheadline.bold()) 55→ } 56→ 57→ Spacer() 58→ 59→ Text("No terminals") 60→ .font(.caption) 61→ .foregroundStyle(.tertiary) 62→ 63→ Button { 64→ showDetailSheet = true 65→ } label: { 66→ Image(systemName: "arrow.up.right.square") 67→ } 68→ .buttonStyle(.plain) 69→ .help("Open detailed view") 70→ } 71→ } 72→ 73→ // Quick metrics 74→ HStack(spacing: 16) { 75→ VStack(alignment: .leading, spacing: 2) { 76→ Text("Session Cost") 77→ .font(.caption) 78→ .foregroundStyle(.secondary) 79→ Text(String(format: "$%.4f", tracker.sessionCost)) 80→ .font(.title3.bold().monospacedDigit()) 81→ .foregroundStyle(.green) 82→ } 83→ 84→ Divider() 85→ .frame(height: 40) 86→ 87→ VStack(alignment: .leading, spacing: 2) { 88→ Text("Rate") 89→ .font(.caption) 90→ .foregroundStyle(.secondary) 91→ Text(String(format: "$%.2f/hr", tracker.costPerHour)) 92→ .font(.title3.bold().monospacedDigit()) 93→ .foregroundStyle(rateColor) 94→ } 95→ 96→ Spacer() 97→ 98→ // Mini chart or expand button 99→ if !tracker.consumptionHistory.isEmpty { 100→ MiniConsumptionChart(dataPoints: tracker.consumptionHistory) 101→ .frame(width: 80, height: 40) 102→ } 103→ 104→ if !tracker.activeProcesses.isEmpty { 105→ Button { 106→ showDetailSheet = true 107→ } label: { 108→ Image(systemName: "arrow.up.right.square") 109→ } 110→ .buttonStyle(.plain) 111→ .help("Open detailed view") 112→ } 113→ } 114→ 115→ // Token summary bar 116→ HStack(spacing: 4) { 117→ TokenPill(label: "In", count: tracker.sessionInputTokens, color: .blue) 118→ TokenPill(label: "Out", count: tracker.sessionOutputTokens, color: .purple) 119→ TokenPill(label: "Cache", count: tracker.sessionCacheTokens, color: .cyan) 120→ } 121→ } 122→ } label: { 123→ Label("Real-time Monitor", systemImage: "waveform.path.ecg") 124→ } 125→ .sheet(isPresented: $showDetailSheet) { 126→ NavigationStack { 127→ RealtimeConsumptionView() 128→ .frame(minWidth: 700, minHeight: 600)