From 4739dfa585ecdb1bc51070f617e20d470256d5df Mon Sep 17 00:00:00 2001 From: olddonkey Date: Fri, 21 Aug 2026 20:42:13 -0700 Subject: [PATCH 01/30] Price OpenCodex usage once per entry and stop per-entry catalog/overlay reloads MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The OpenCodex spend source (`~/.opencodex/usage.jsonl` → `OpenCodexUsageFanOut` → `OpenCodexUsageAggregator.snapshot`) re-resolved pricing context per entry: `listPriceUSD` called `CostUsagePricing.codexCostUSD` without a pre-resolved models.dev catalog, so every call went through `ModelsDevCache.load` → `FileManager.attributesOfItem` (a stat plus an extended-attribute read), and without a pre-resolved custom-pricing overlay, so every call also re-read the overlay file location. Each windowed entry was priced three times (day, session and hour accumulators), and day keys / hour buckets were recomputed through Calendar per entry. On a 35k-entry log (all inside the 30-day window) that is ~100k stat+xattr syscalls and ~70k Calendar interval computations per refresh — in the running app this was the 25–35 s CPU spike on every adaptive refresh (sampled: `snapshotsBySubscription` → `attributesOfItem` → `getxattr`/`listxattr`). Changes (snapshot output is byte-identical; verified against a reference implementation in tests and by diffing CLI JSON on frozen inputs): - Resolve the models.dev catalog and the custom-pricing overlay once per fan-out / snapshot and pass them down; price each windowed entry once and reuse the value for the day/session/hour/model merges. A missing catalog is substituted with an empty catalog so the degraded path never falls back to per-call loads. - Memoize the local-day key and hour-bucket start per calendar interval using the calendar's own `[start, end)` intervals (DST-correct; no 86400/3600 arithmetic). - `ModelsDevCache.load` reads (mtime, size) via POSIX `stat` instead of `attributesOfItem` (which also reads xattrs); memo/invalidation semantics unchanged. This helps every caller repo-wide. CodexParserHash is regenerated because ModelsDevPricing.swift is in the hashed set; the previous hash (3c984b655688593f) is added to compatiblePredecessorParserHashes since parsing and the persisted row shape are unchanged, so existing cost-usage.sqlite stores are adopted on upgrade instead of rebuilt. Measured (release CodexBarCLI, isolated cache root, real 41.7 MB / ~35k-entry usage.jsonl, same machine, `cost --provider codex --days 30`), OpenCodex path isolated with identical frozen inputs: - OpenCodex path alone (empty codex home, identical frozen inputs, CLI JSON output identical apart from `updatedAt`): cold 14.3 s real / 9.1 s user / 4.9 s sys / 193 G instructions → 2.6 s / 2.4 s / 0.1 s / 40 G warm (store cache hit) 13.8 s / 8.3 s / 5.3 s / 166 G → 1.2 s / 1.1 s / 0.04 s / 13 G - Full `cost --provider codex` CLI run on live data, steady state after the log grew (the app's per-refresh case): ~11 s → ~3.5 s real (7.3–9.2 s → 3.2 s user); cold 26 s → 14 s. Peak footprint unchanged (~430 MB cold/grown, ~120–140 MB warm). Peak memory is unchanged — the remaining transient is the append-only log re-parse (`OpenCodexUsageStore` identity = path|size|mtime), left for a follow-up. Tests: equivalence against an independent reference implementation (mixed providers, estimated/reported/unreported/unsupported, custom overlay, duplicate request IDs, DST transitions in America/Los_Angeles and America/Santiago), metadata-read counting proving one catalog load per snapshot (zero with an injected catalog), day/hour memo boundary cases, and ModelsDevCache memo invalidation on size/mtime change after the stat switch. Implemented by grok-4.6 (xhigh) via implementation-loop; reviewed hunk by hunk plus an independent deep review; one iterate round. Co-Authored-By: Claude Fable 5 --- .../Generated/CodexParserHash.generated.swift | 2 +- .../Vendored/CostUsage/CostUsageStore.swift | 2 + .../Vendored/CostUsage/ModelsDevPricing.swift | 69 +- .../OpenCodexUsageAggregator.swift | 103 ++- .../OpenCodexUsage/OpenCodexUsageFanOut.swift | 7 +- Tests/CodexBarTests/CostUsageStoreTests.swift | 1 + .../CodexBarTests/ModelsDevPricingTests.swift | 54 ++ .../OpenCodexUsageFanOutTests.swift | 678 +++++++++++++++++- .../ProviderArchitectureGatekeeperTests.swift | 2 +- 9 files changed, 892 insertions(+), 26 deletions(-) diff --git a/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift b/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift index db7b5fdd77..cf3cb01d99 100644 --- a/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift +++ b/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift @@ -1,5 +1,5 @@ // Generated by Scripts/regenerate-codex-parser-hash.sh. Do not edit by hand. enum CodexParserHash { - static let value = "3c984b655688593f" + static let value = "fc4cae716e9066c5" } diff --git a/Sources/CodexBarCore/Vendored/CostUsage/CostUsageStore.swift b/Sources/CodexBarCore/Vendored/CostUsage/CostUsageStore.swift index e64ba4a105..a432ce41ba 100644 --- a/Sources/CodexBarCore/Vendored/CostUsage/CostUsageStore.swift +++ b/Sources/CodexBarCore/Vendored/CostUsage/CostUsageStore.swift @@ -82,6 +82,8 @@ actor CostUsageStore { "b975eb705f905b9a", // 0.49.0-0.49.2 SQLite producer with compatible rows. "47144baa8daccf52", // This branch changes only scan scheduling, discovery, and persistence bookkeeping. "2d17f4981b78d07f", // Persisted priority-turn cursor; parser and persisted row shape unchanged. + "3c984b655688593f", // OpenCodex fan-out price-once/bucket memos + cheap models.dev cache stat; + // parser and persisted row shape unchanged. ] /// Test-only crash injection: invoked inside `saveCodexCache`'s transaction after each diff --git a/Sources/CodexBarCore/Vendored/CostUsage/ModelsDevPricing.swift b/Sources/CodexBarCore/Vendored/CostUsage/ModelsDevPricing.swift index 6915086291..6e3946ab21 100644 --- a/Sources/CodexBarCore/Vendored/CostUsage/ModelsDevPricing.swift +++ b/Sources/CodexBarCore/Vendored/CostUsage/ModelsDevPricing.swift @@ -1,4 +1,9 @@ import Foundation +#if canImport(Darwin) +import Darwin +#elseif canImport(Glibc) +import Glibc +#endif #if canImport(FoundationNetworking) import FoundationNetworking #endif @@ -427,14 +432,68 @@ enum ModelsDevCache { static let ttlSeconds: TimeInterval = 24 * 60 * 60 private static let memo = ModelsDevCacheMemo() + @TaskLocal private static var metadataReadRecorder: MetadataReadRecorder? + + final class MetadataReadRecorder: @unchecked Sendable { + private let lock = NSLock() + private var count = 0 + + func record() { + self.lock.lock() + self.count += 1 + self.lock.unlock() + } + + func snapshot() -> Int { + self.lock.lock() + defer { self.lock.unlock() } + return self.count + } + } + static func withMetadataReadRecorderForTesting( + _ recorder: MetadataReadRecorder, + operation: () throws -> T) rethrows -> T + { + try self.$metadataReadRecorder.withValue(recorder) { + try operation() + } + } + + static func withMetadataReadRecorderForTesting( + _ recorder: MetadataReadRecorder, + operation: () async throws -> T) async rethrows -> T + { + try await self.$metadataReadRecorder.withValue(recorder) { + try await operation() + } + } + + /// Cheap POSIX stat for the (mtime, size) memo key. `attributesOfItem` also reads xattrs. + /// `stat(2)` follows a terminal symlink (matching what `Data(contentsOf:)` later reads) whereas + /// `attributesOfItem` did not. private static func fileMetadata(at url: URL) -> (modificationDate: Date?, size: Int?) { - guard let attributes = try? FileManager.default.attributesOfItem(atPath: url.path) else { - return (nil, nil) + self.metadataReadRecorder?.record() + + return url.withUnsafeFileSystemRepresentation { pointer in + guard let pointer else { return (nil, nil) } + var status = stat() + guard stat(pointer, &status) == 0 else { + return (nil, nil) + } + return (Self.modificationDate(from: status), Int(status.st_size)) } - let modificationDate = attributes[.modificationDate] as? Date - let size = (attributes[.size] as? NSNumber)?.intValue - return (modificationDate, size) + } + + private static func modificationDate(from status: stat) -> Date { + #if canImport(Darwin) + let seconds = TimeInterval(status.st_mtimespec.tv_sec) + let nanoseconds = TimeInterval(status.st_mtimespec.tv_nsec) + #else + let seconds = TimeInterval(status.st_mtim.tv_sec) + let nanoseconds = TimeInterval(status.st_mtim.tv_nsec) + #endif + return Date(timeIntervalSince1970: seconds + nanoseconds / 1_000_000_000) } private static func defaultCacheRoot() -> URL { diff --git a/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageAggregator.swift b/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageAggregator.swift index 05ab5645c0..c6e23951bf 100644 --- a/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageAggregator.swift +++ b/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageAggregator.swift @@ -59,7 +59,9 @@ enum OpenCodexUsageAggregator { now: Date, historyDays: Int, calendar: Calendar, - customPricing: CostUsageCustomPricing = .empty) -> CostUsageTokenSnapshot + customPricing: CostUsageCustomPricing = .empty, + modelsDevCatalog: ModelsDevCatalog? = nil, + customPricingOverlay: CostUsageCustomPricing? = nil) -> CostUsageTokenSnapshot { let days = max(1, min(365, historyDays)) let today = calendar.startOfDay(for: now) @@ -76,25 +78,44 @@ enum OpenCodexUsageAggregator { return lhs.requestID < rhs.requestID } + let catalog: ModelsDevCatalog + let overlay: CostUsageCustomPricing + if windowed.isEmpty { + catalog = ModelsDevCatalog(providers: [:]) + overlay = .empty + } else { + catalog = modelsDevCatalog + ?? CostUsagePricing.modelsDevCatalog() + ?? ModelsDevCatalog(providers: [:]) + overlay = customPricingOverlay ?? CostUsagePricing.customPricingOverlay() + } + var daysByKey: [String: DayAccumulator] = [:] var sessions: [String: SessionAccumulator] = [:] var hoursByStart: [Date: HourAccumulator] = [:] + var dayMemo = LocalDayKeyMemo() + var hourMemo = HourStartMemo() for entry in windowed { - let dayKey = CostUsageLocalDay.key(from: entry.timestamp, calendar: calendar) + let cost = Self.listPriceUSD( + entry: entry, + customPricing: customPricing, + modelsDevCatalog: catalog, + customPricingOverlay: overlay) + let dayKey = dayMemo.key(for: entry.timestamp, calendar: calendar) var day = daysByKey[dayKey] ?? DayAccumulator() - Self.merge(entry, into: &day, customPricing: customPricing) + Self.merge(entry, cost: cost, into: &day) daysByKey[dayKey] = day let sessionID = entry.conversationID ?? entry.requestID var session = sessions[sessionID] ?? SessionAccumulator() session.lastActivity = max(session.lastActivity, entry.timestamp) session.requests += 1 - Self.merge(entry, into: &session, customPricing: customPricing) + Self.merge(entry, cost: cost, into: &session) sessions[sessionID] = session - let hour = calendar.dateInterval(of: .hour, for: entry.timestamp)?.start ?? entry.timestamp + let hour = hourMemo.start(for: entry.timestamp, calendar: calendar) var hourBucket = hoursByStart[hour] ?? HourAccumulator() - Self.merge(entry, into: &hourBucket, customPricing: customPricing) + Self.merge(entry, cost: cost, into: &hourBucket) hoursByStart[hour] = hourBucket } @@ -164,8 +185,8 @@ enum OpenCodexUsageAggregator { private static func merge( _ entry: OpenCodexUsageEntry, - into day: inout DayAccumulator, - customPricing: CostUsageCustomPricing) + cost: Double?, + into day: inout DayAccumulator) { let usage = entry.usage if let input = usage?.inputTokens { @@ -197,7 +218,6 @@ enum OpenCodexUsageAggregator { day.unmetered += entry.usageStatus == .unsupported ? 1 : 0 day.unpriced += entry.usageStatus == .unreported ? 1 : 0 - let cost = Self.listPriceUSD(entry: entry, customPricing: customPricing) if let cost { day.cost += cost day.sawCost = true @@ -220,15 +240,14 @@ enum OpenCodexUsageAggregator { private static func merge( _ entry: OpenCodexUsageEntry, - into session: inout SessionAccumulator, - customPricing: CostUsageCustomPricing) + cost: Double?, + into session: inout SessionAccumulator) { session.input = self.add(session.input, entry.usage?.inputTokens) session.output = self.add(session.output, entry.usage?.outputTokens) session.cacheRead = self.add(session.cacheRead, entry.usage?.cacheReadTokens) session.reasoning = self.add(session.reasoning, entry.usage?.reasoningOutputTokens) session.tokens = self.add(session.tokens, entry.resolvedTotalTokens) - let cost = self.listPriceUSD(entry: entry, customPricing: customPricing) session.cost = self.add(session.cost, cost) var model = session.models[entry.model] ?? ModelAccumulator() self.merge(entry, cost: cost, into: &model) @@ -237,14 +256,14 @@ enum OpenCodexUsageAggregator { private static func merge( _ entry: OpenCodexUsageEntry, - into hour: inout HourAccumulator, - customPricing: CostUsageCustomPricing) + cost: Double?, + into hour: inout HourAccumulator) { if let tokens = entry.resolvedTotalTokens { hour.tokens += tokens hour.sawTokens = true } - if let cost = self.listPriceUSD(entry: entry, customPricing: customPricing) { + if let cost { hour.cost += cost hour.sawCost = true } @@ -305,7 +324,9 @@ enum OpenCodexUsageAggregator { private static func listPriceUSD( entry: OpenCodexUsageEntry, - customPricing: CostUsageCustomPricing) -> Double? + customPricing: CostUsageCustomPricing, + modelsDevCatalog: ModelsDevCatalog, + customPricingOverlay: CostUsageCustomPricing) -> Double? { guard entry.usageStatus == .reported || entry.usageStatus == .estimated else { return nil } let usage = entry.usage @@ -335,7 +356,9 @@ enum OpenCodexUsageAggregator { cachedInputTokens: cacheRead, outputTokens: output, cacheWriteInputTokens: cacheWrite, - pricingDate: entry.timestamp) + pricingDate: entry.timestamp, + modelsDevCatalog: modelsDevCatalog, + customPricing: customPricingOverlay) } private static func add(_ lhs: Int?, _ rhs: Int?) -> Int? { @@ -356,3 +379,49 @@ enum OpenCodexUsageAggregator { } } } + +extension OpenCodexUsageAggregator { + /// Reuses the calendar's `[start, next)` day interval while timestamps stay inside it. + /// Day keys still come from `CostUsageLocalDay` so DST and non-Gregorian calendars stay aligned. + private struct LocalDayKeyMemo { + var start = Date.distantPast + var end = Date.distantPast + var key = "" + + mutating func key(for timestamp: Date, calendar: Calendar) -> String { + if timestamp >= self.start, timestamp < self.end { + return self.key + } + let dayCalendar = CostUsageLocalDay.gregorianCalendar(matching: calendar) + guard let interval = dayCalendar.dateInterval(of: .day, for: timestamp) else { + self.start = Date.distantPast + self.end = Date.distantPast + return CostUsageLocalDay.key(from: timestamp, calendar: calendar) + } + self.start = interval.start + self.end = interval.end + self.key = CostUsageLocalDay.key(from: timestamp, calendar: calendar) + return self.key + } + } + + /// Reuses the calendar's hour interval while timestamps stay inside `[start, end)`. + private struct HourStartMemo { + var start = Date.distantPast + var end = Date.distantPast + + mutating func start(for timestamp: Date, calendar: Calendar) -> Date { + if timestamp >= self.start, timestamp < self.end { + return self.start + } + guard let interval = calendar.dateInterval(of: .hour, for: timestamp) else { + self.start = Date.distantPast + self.end = Date.distantPast + return timestamp + } + self.start = interval.start + self.end = interval.end + return self.start + } + } +} diff --git a/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageFanOut.swift b/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageFanOut.swift index 8bec20f312..5ddc870421 100644 --- a/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageFanOut.swift +++ b/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageFanOut.swift @@ -18,13 +18,18 @@ public enum OpenCodexUsageFanOut { } grouped[provider, default: []].append(entry) } + guard !grouped.isEmpty else { return [:] } + let catalog = CostUsagePricing.modelsDevCatalog() ?? ModelsDevCatalog(providers: [:]) + let overlay = CostUsagePricing.customPricingOverlay() return grouped.mapValues { providerEntries in OpenCodexUsageAggregator.snapshot( entries: providerEntries, now: now, historyDays: historyDays, calendar: calendar, - customPricing: customPricing) + customPricing: customPricing, + modelsDevCatalog: catalog, + customPricingOverlay: overlay) } } diff --git a/Tests/CodexBarTests/CostUsageStoreTests.swift b/Tests/CodexBarTests/CostUsageStoreTests.swift index 5636bb88fb..0b64255256 100644 --- a/Tests/CodexBarTests/CostUsageStoreTests.swift +++ b/Tests/CodexBarTests/CostUsageStoreTests.swift @@ -1010,6 +1010,7 @@ extension CostUsageStoreTests { "b975eb705f905b9a", "47144baa8daccf52", "2d17f4981b78d07f", + "3c984b655688593f", ]) let predecessorHash = "43609cc56f76a003" let predecessorVersion = CostUsageStore.combinedSchemaVersion( diff --git a/Tests/CodexBarTests/ModelsDevPricingTests.swift b/Tests/CodexBarTests/ModelsDevPricingTests.swift index a0da2f6370..9d9c156dec 100644 --- a/Tests/CodexBarTests/ModelsDevPricingTests.swift +++ b/Tests/CodexBarTests/ModelsDevPricingTests.swift @@ -1262,6 +1262,60 @@ extension ModelsDevPricingTests { #expect(reloaded.artifact == nil) } + @Test + func `memo invalidates when cache file size changes`() throws { + let root = try Self.cacheRoot() + try ModelsDevCache.save(catalog: Self.fixtureCatalog(), fetchedAt: Date(), cacheRoot: root) + let url = ModelsDevCache.cacheFileURL(cacheRoot: root) + let pinnedDate = Date(timeIntervalSince1970: 1_700_000_000) + try FileManager.default.setAttributes([.modificationDate: pinnedDate], ofItemAtPath: url.path) + let primed = try #require(ModelsDevCache.load(cacheRoot: root).artifact) + let originalSize = try #require( + try (FileManager.default.attributesOfItem(atPath: url.path)[.size]) as? NSNumber).intValue + + // Same pinned mtime, larger invalid payload: a memo keyed only on mtime would still hit. + try Data(repeating: 0x7B, count: originalSize + 16).write(to: url) + try FileManager.default.setAttributes([.modificationDate: pinnedDate], ofItemAtPath: url.path) + + let reloaded = ModelsDevCache.load(cacheRoot: root) + #expect(reloaded.artifact != primed) + #expect(reloaded.error == .invalidJSON) + } + + @Test + func `memo invalidates when cache file mtime changes`() throws { + let root = try Self.cacheRoot() + try ModelsDevCache.save(catalog: Self.fixtureCatalog(), fetchedAt: Date(), cacheRoot: root) + let url = ModelsDevCache.cacheFileURL(cacheRoot: root) + let pinnedDate = Date(timeIntervalSince1970: 1_700_000_000) + try FileManager.default.setAttributes([.modificationDate: pinnedDate], ofItemAtPath: url.path) + let primed = try #require(ModelsDevCache.load(cacheRoot: root).artifact) + + let size = try #require( + try (FileManager.default.attributesOfItem(atPath: url.path)[.size]) as? NSNumber).intValue + try Data(repeating: 0, count: size).write(to: url) + try FileManager.default.setAttributes( + [.modificationDate: Date(timeIntervalSince1970: 1_700_000_100)], + ofItemAtPath: url.path) + + let reloaded = ModelsDevCache.load(cacheRoot: root) + #expect(reloaded.artifact != primed) + #expect(reloaded.error == .invalidJSON) + } + + @Test + func `load metadata check is one stat per load`() throws { + let root = try Self.cacheRoot() + try ModelsDevCache.save(catalog: Self.fixtureCatalog(), fetchedAt: Date(), cacheRoot: root) + let recorder = ModelsDevCache.MetadataReadRecorder() + ModelsDevCache.withMetadataReadRecorderForTesting(recorder) { + _ = ModelsDevCache.load(cacheRoot: root) + #expect(recorder.snapshot() == 1) + _ = ModelsDevCache.load(cacheRoot: root) + #expect(recorder.snapshot() == 2) + } + } + @Test func `client fetches with mock transport`() async throws { let data = try Self.fixtureData() diff --git a/Tests/CodexBarTests/OpenCodexUsageFanOutTests.swift b/Tests/CodexBarTests/OpenCodexUsageFanOutTests.swift index 51f893cf9b..1d6f476610 100644 --- a/Tests/CodexBarTests/OpenCodexUsageFanOutTests.swift +++ b/Tests/CodexBarTests/OpenCodexUsageFanOutTests.swift @@ -1,7 +1,7 @@ -import CodexBarCore import Foundation import Testing @testable import CodexBar +@testable import CodexBarCore struct OpenCodexUsageFanOutTests { @Test func `snapshotsBySubscription routes openai spend into codex`() throws { @@ -168,4 +168,680 @@ struct OpenCodexUsageFanOutTests { let result = SpendDashboardSource.mergingOpenCodexInputs([dummy], request: request) #expect(!result.contains(where: { $0.id == SpendDashboardModel.openCodexSourceID })) } + + @Test + func `snapshot matches a naive per-entry reference across DST and overlays`() throws { + let calendar = try Self.losAngelesCalendar() + let now = try Self.date(calendar, DateComponents(year: 2026, month: 11, day: 2, hour: 12, minute: 0)) + let customPricing = CostUsageCustomPricing.parse(Data(""" + { + "openai/gpt-5.4": { "input": 1.5, "output": 6, "cacheRead": 0.15, "cacheWrite": 1.875 } + } + """.utf8)) + let firstFallBack = try Self.date(calendar, DateComponents(year: 2026, month: 11, day: 1, hour: 1, minute: 30)) + let entries = try [ + OpenCodexUsageEntry( + requestID: "dup", + timestamp: Self.date(calendar, DateComponents(year: 2026, month: 11, day: 1, hour: 10, minute: 0)), + provider: "openai", + model: "gpt-5.4", + usageStatus: .reported, + conversationID: "chat-dup", + usage: OpenCodexTokenUsage(inputTokens: 1, outputTokens: 1, totalTokens: 2), + totalTokens: 2), + OpenCodexUsageEntry( + requestID: "dup", + timestamp: Self.date(calendar, DateComponents(year: 2026, month: 11, day: 1, hour: 10, minute: 5)), + provider: "openai", + model: "gpt-5.4", + usageStatus: .reported, + conversationID: "chat-dup", + usage: OpenCodexTokenUsage( + inputTokens: 80, + outputTokens: 20, + cacheReadInputTokens: 10, + cacheCreationInputTokens: 5, + totalTokens: 100), + totalTokens: 100), + OpenCodexUsageEntry( + requestID: "spring", + timestamp: Self.date(calendar, DateComponents(year: 2026, month: 3, day: 8, hour: 1, minute: 30)), + provider: "openai", + model: "gpt-5.4", + usageStatus: .reported, + conversationID: "chat-dst", + usage: OpenCodexTokenUsage(inputTokens: 40, outputTokens: 10, totalTokens: 50), + totalTokens: 50), + OpenCodexUsageEntry( + requestID: "spring-after", + timestamp: Self.date(calendar, DateComponents(year: 2026, month: 3, day: 8, hour: 3, minute: 0)), + provider: "openai", + model: "gpt-5.4", + usageStatus: .estimated, + conversationID: "chat-dst", + usage: OpenCodexTokenUsage(inputTokens: 20, outputTokens: 4, totalTokens: 24), + totalTokens: 24), + OpenCodexUsageEntry( + requestID: "fallback-first", + timestamp: firstFallBack, + provider: "opencode-go", + model: "opencode-go/gpt-5.2", + usageStatus: .reported, + conversationID: "chat-fallback", + usage: OpenCodexTokenUsage(inputTokens: 12, outputTokens: 3, totalTokens: 15), + totalTokens: 15), + OpenCodexUsageEntry( + requestID: "fallback-second", + timestamp: firstFallBack.addingTimeInterval(3600), + provider: "opencode-go", + model: "opencode-go/gpt-5.2", + usageStatus: .reported, + conversationID: "chat-fallback", + usage: OpenCodexTokenUsage(inputTokens: 8, outputTokens: 2, totalTokens: 10), + totalTokens: 10), + OpenCodexUsageEntry( + requestID: "unreported", + timestamp: Self.date(calendar, DateComponents(year: 2026, month: 11, day: 2, hour: 9, minute: 0)), + provider: "openai", + model: "gpt-5.4", + usageStatus: .unreported, + conversationID: "chat-today"), + OpenCodexUsageEntry( + requestID: "unsupported", + timestamp: Self.date(calendar, DateComponents(year: 2026, month: 11, day: 2, hour: 9, minute: 15)), + provider: "openai", + model: "gpt-5.4", + usageStatus: .unsupported, + conversationID: "chat-today", + usage: OpenCodexTokenUsage(inputTokens: 4, outputTokens: 1, totalTokens: 5), + totalTokens: 5), + OpenCodexUsageEntry( + requestID: "unknown-estimated", + timestamp: Self.date(calendar, DateComponents(year: 2026, month: 11, day: 2, hour: 9, minute: 30)), + provider: "openai", + model: "not-a-priced-model-xyz", + usageStatus: .estimated, + conversationID: "chat-today", + usage: OpenCodexTokenUsage(inputTokens: 6, outputTokens: 1, totalTokens: 7), + totalTokens: 7), + OpenCodexUsageEntry( + requestID: "outside-window", + timestamp: Self.date(calendar, DateComponents(year: 2024, month: 1, day: 1, hour: 12, minute: 0)), + provider: "openai", + model: "gpt-5.4", + usageStatus: .reported, + usage: OpenCodexTokenUsage(inputTokens: 999, outputTokens: 1, totalTokens: 1000), + totalTokens: 1000), + OpenCodexUsageEntry( + requestID: "catalog-priced", + timestamp: now, + provider: "openai", + model: "gpt-5.2", + usageStatus: .reported, + conversationID: "chat-catalog", + usage: OpenCodexTokenUsage(inputTokens: 1000, outputTokens: 1000, totalTokens: 2000), + totalTokens: 2000), + ] + + let root = try Self.modelsDevCacheRoot() + defer { try? FileManager.default.removeItem(at: root) } + let fixtureCatalog = Self.fixturePricingCatalog() + #expect(ModelsDevCache.save(catalog: fixtureCatalog, fetchedAt: now, cacheRoot: root)) + let loadedCatalog = try #require(ModelsDevCache.load(cacheRoot: root).artifact?.catalog) + + let snapshot = OpenCodexUsageAggregator.snapshot( + entries: entries, + now: now, + historyDays: 365, + calendar: calendar, + customPricing: customPricing, + modelsDevCatalog: loadedCatalog) + let reference = OpenCodexUsageSnapshotReference.snapshot( + entries: entries, + now: now, + historyDays: 365, + calendar: calendar, + customPricing: customPricing, + modelsDevCacheRoot: root) + + #expect(snapshot == reference) + #expect(snapshot.daily.count >= 3) + #expect(snapshot.hourly.count >= 5) + #expect(snapshot.sessions.contains { $0.sessionID == "chat-dup" && $0.requestCount == 1 }) + + let catalogPriced = try #require( + snapshot.daily.flatMap { $0.modelBreakdowns ?? [] }.first { $0.modelName == "gpt-5.2" }) + let catalogCost = try #require(catalogPriced.costUSD) + let bundledCost = CostUsagePricing.codexCostUSD( + model: "gpt-5.2", + inputTokens: 1000, + cachedInputTokens: 0, + outputTokens: 1000, + cacheWriteInputTokens: 0, + pricingDate: now, + modelsDevCatalog: ModelsDevCatalog(providers: [:]), + customPricing: .empty) + #expect(catalogCost != bundledCost) + } + + @Test + func `snapshot resolves the models.dev catalog once for many entries`() throws { + var calendar = Calendar(identifier: .gregorian) + calendar.timeZone = try #require(TimeZone(secondsFromGMT: 0)) + let now = Date(timeIntervalSince1970: 1_784_179_200) + let entryCount = 60 + let entries = (0.. Calendar { + var calendar = Calendar(identifier: .gregorian) + calendar.timeZone = try #require(TimeZone(identifier: "America/Los_Angeles")) + return calendar + } + + private static func santiagoCalendar() throws -> Calendar { + var calendar = Calendar(identifier: .gregorian) + calendar.timeZone = try #require(TimeZone(identifier: "America/Santiago")) + return calendar + } + + private static func date(_ calendar: Calendar, _ components: DateComponents) throws -> Date { + try #require(calendar.date(from: components)) + } + + private static func assertDayAndHourMemos( + calendar: Calendar, + now: Date, + samples: [(id: String, timestamp: Date, tokens: Int)]) throws + { + let entries = samples.map { sample in + OpenCodexUsageEntry( + requestID: sample.id, + timestamp: sample.timestamp, + provider: "openai", + model: "gpt-5.4", + usageStatus: .reported, + usage: OpenCodexTokenUsage( + inputTokens: sample.tokens, + outputTokens: 0, + totalTokens: sample.tokens), + totalTokens: sample.tokens) + } + let snapshot = OpenCodexUsageAggregator.snapshot( + entries: entries, + now: now, + historyDays: 365, + calendar: calendar) + for sample in samples { + let expectedDay = CostUsageLocalDay.key(from: sample.timestamp, calendar: calendar) + let expectedHour = calendar.dateInterval(of: .hour, for: sample.timestamp)?.start + ?? sample.timestamp + let day = try #require(snapshot.daily.first { $0.date == expectedDay }) + let hour = try #require(snapshot.hourly.first { $0.hour == expectedHour }) + #expect(day.totalTokens ?? 0 >= sample.tokens) + #expect(hour.totalTokens == sample.tokens) + #expect(hour.hour == expectedHour) + } + } + + private static func modelsDevCacheRoot() throws -> URL { + let root = FileManager.default.temporaryDirectory + .appendingPathComponent("codexbar-opencodex-modelsdev-\(UUID().uuidString)", isDirectory: true) + try FileManager.default.createDirectory(at: root, withIntermediateDirectories: true) + return root + } + + private static func fixturePricingCatalog() -> ModelsDevCatalog { + ModelsDevCatalog(providers: [ + "openai": ModelsDevProvider( + id: "openai", + name: "OpenAI", + models: [ + "gpt-5.2": ModelsDevModel( + id: "gpt-5.2", + name: nil, + cost: ModelsDevCost(input: 99, output: 199), + limit: nil), + "gpt-5.4": ModelsDevModel( + id: "gpt-5.4", + name: nil, + cost: ModelsDevCost(input: 88, output: 188), + limit: nil), + ]), + "opencode-go": ModelsDevProvider( + id: "opencode-go", + name: nil, + models: [ + "gpt-5.2": ModelsDevModel( + id: "gpt-5.2", + name: nil, + cost: ModelsDevCost(input: 50, output: 80), + limit: nil), + ]), + ]) + } +} + +private enum OpenCodexUsageSnapshotReference { + static func snapshot( + entries: [OpenCodexUsageEntry], + now: Date, + historyDays: Int, + calendar: Calendar, + customPricing: CostUsageCustomPricing, + modelsDevCacheRoot: URL? = nil) -> CostUsageTokenSnapshot + { + let days = max(1, min(365, historyDays)) + let today = calendar.startOfDay(for: now) + let windowStart = calendar.date(byAdding: .day, value: -(days - 1), to: today) ?? today + var unique: [String: OpenCodexUsageEntry] = [:] + for entry in entries { + unique[entry.requestID] = entry + } + let windowed = unique.values.filter { $0.timestamp >= windowStart && $0.timestamp <= now } + .sorted { lhs, rhs in + if lhs.timestamp != rhs.timestamp { + return lhs.timestamp < rhs.timestamp + } + return lhs.requestID < rhs.requestID + } + + var daysByKey: [String: OpenCodexUsageAggregator.DayAccumulator] = [:] + var sessions: [String: OpenCodexUsageAggregator.SessionAccumulator] = [:] + var hoursByStart: [Date: OpenCodexUsageAggregator.HourAccumulator] = [:] + for entry in windowed { + let cost = Self.listPriceUSD( + entry: entry, + customPricing: customPricing, + modelsDevCacheRoot: modelsDevCacheRoot) + let dayKey = CostUsageLocalDay.key(from: entry.timestamp, calendar: calendar) + var day = daysByKey[dayKey] ?? OpenCodexUsageAggregator.DayAccumulator() + Self.merge(entry, cost: cost, into: &day) + daysByKey[dayKey] = day + + let sessionID = entry.conversationID ?? entry.requestID + var session = sessions[sessionID] ?? OpenCodexUsageAggregator.SessionAccumulator() + session.lastActivity = max(session.lastActivity, entry.timestamp) + session.requests += 1 + Self.merge(entry, cost: cost, into: &session) + sessions[sessionID] = session + + let hour = calendar.dateInterval(of: .hour, for: entry.timestamp)?.start ?? entry.timestamp + var hourBucket = hoursByStart[hour] ?? OpenCodexUsageAggregator.HourAccumulator() + Self.merge(entry, cost: cost, into: &hourBucket) + hoursByStart[hour] = hourBucket + } + + let daily = daysByKey.keys.sorted().compactMap { key -> CostUsageDailyReport.Entry? in + guard let day = daysByKey[key] else { return nil } + return Self.entry(dayKey: key, day: day) + } + let sessionRows = sessions.keys.sorted().compactMap { key -> CostUsageSessionBreakdown? in + guard let session = sessions[key] else { return nil } + return CostUsageSessionBreakdown( + sessionID: key, + lastActivity: session.lastActivity, + inputTokens: session.input, + cachedInputTokens: session.cacheRead, + outputTokens: session.output, + reasoningTokens: session.reasoning, + totalTokens: session.tokens, + requestCount: session.requests, + costUSD: session.cost, + modelBreakdowns: Self.modelBreakdowns(session.models)) + } + .sorted { lhs, rhs in + if lhs.lastActivity != rhs.lastActivity { + return lhs.lastActivity > rhs.lastActivity + } + return lhs.sessionID < rhs.sessionID + } + let hourly = hoursByStart.keys.sorted().map { hour in + let bucket = hoursByStart[hour] ?? OpenCodexUsageAggregator.HourAccumulator() + return CostUsageHourlyEntry( + hour: hour, + totalTokens: bucket.sawTokens ? bucket.tokens : nil, + costUSD: bucket.sawCost ? bucket.cost : nil) + } + let todayEntry = CostUsageTokenSnapshot.entry( + in: daily, + forLocalDayContaining: now, + calendar: calendar) + let windowSummary = CostUsageTokenSnapshot( + sessionTokens: nil, + sessionCostUSD: nil, + last30DaysTokens: nil, + last30DaysCostUSD: nil, + historyDays: days, + daily: daily, + sessions: Array(sessionRows.prefix(64)), + updatedAt: now) + .summary(forLastDays: min(30, days), calendar: calendar) + return CostUsageTokenSnapshot( + sessionTokens: todayEntry?.totalTokens ?? (daily.isEmpty ? nil : 0), + sessionCostUSD: todayEntry?.costUSD ?? (daily.isEmpty ? nil : 0), + sessionRequests: todayEntry?.requestCount ?? (daily.isEmpty ? nil : 0), + last30DaysTokens: windowSummary.totalTokens, + last30DaysCostUSD: windowSummary.totalCostUSD, + last30DaysRequests: windowSummary.totalRequests, + historyDays: days, + historyLabel: "OpenCodex usage.jsonl", + costProvenance: .listPriceEstimate, + daily: daily, + sessions: Array(sessionRows.prefix(64)), + hourly: hourly, + updatedAt: now) + } + + private static func merge( + _ entry: OpenCodexUsageEntry, + cost: Double?, + into day: inout OpenCodexUsageAggregator.DayAccumulator) + { + let usage = entry.usage + if let input = usage?.inputTokens { + day.input += input + day.sawInput = true + } + if let output = usage?.outputTokens { + day.output += output + day.sawOutput = true + } + if let cacheRead = usage?.cacheReadTokens { + day.cacheRead += cacheRead + day.sawCacheRead = true + } + if let cacheCreation = usage?.cacheCreationInputTokens { + day.cacheCreation += cacheCreation + day.sawCacheCreation = true + } + if let reasoning = usage?.reasoningOutputTokens { + day.reasoning += reasoning + day.sawReasoning = true + } + if let tokens = entry.resolvedTotalTokens { + day.tokens += tokens + day.sawTokens = true + } + day.priced += entry.usageStatus == .reported ? 1 : 0 + day.estimated += entry.usageStatus == .estimated ? 1 : 0 + day.unmetered += entry.usageStatus == .unsupported ? 1 : 0 + day.unpriced += entry.usageStatus == .unreported ? 1 : 0 + if let cost { + day.cost += cost + day.sawCost = true + } else if entry.usageStatus == .reported { + day.unpriced += 1 + if day.priced > 0 { + day.priced -= 1 + } + } else if entry.usageStatus == .estimated { + day.unpriced += 1 + if day.estimated > 0 { + day.estimated -= 1 + } + } + var model = day.models[entry.model] ?? OpenCodexUsageAggregator.ModelAccumulator() + Self.merge(entry, cost: cost, into: &model) + day.models[entry.model] = model + } + + private static func merge( + _ entry: OpenCodexUsageEntry, + cost: Double?, + into session: inout OpenCodexUsageAggregator.SessionAccumulator) + { + session.input = self.add(session.input, entry.usage?.inputTokens) + session.output = self.add(session.output, entry.usage?.outputTokens) + session.cacheRead = self.add(session.cacheRead, entry.usage?.cacheReadTokens) + session.reasoning = self.add(session.reasoning, entry.usage?.reasoningOutputTokens) + session.tokens = self.add(session.tokens, entry.resolvedTotalTokens) + session.cost = self.add(session.cost, cost) + var model = session.models[entry.model] ?? OpenCodexUsageAggregator.ModelAccumulator() + Self.merge(entry, cost: cost, into: &model) + session.models[entry.model] = model + } + + private static func merge( + _ entry: OpenCodexUsageEntry, + cost: Double?, + into hour: inout OpenCodexUsageAggregator.HourAccumulator) + { + if let tokens = entry.resolvedTotalTokens { + hour.tokens += tokens + hour.sawTokens = true + } + if let cost { + hour.cost += cost + hour.sawCost = true + } + } + + private static func merge( + _ entry: OpenCodexUsageEntry, + cost: Double?, + into model: inout OpenCodexUsageAggregator.ModelAccumulator) + { + model.input = self.add(model.input, entry.usage?.inputTokens) + model.output = self.add(model.output, entry.usage?.outputTokens) + model.cacheRead = self.add(model.cacheRead, entry.usage?.cacheReadTokens) + model.cacheCreation = self.add(model.cacheCreation, entry.usage?.cacheCreationInputTokens) + model.reasoning = self.add(model.reasoning, entry.usage?.reasoningOutputTokens) + if let tokens = entry.resolvedTotalTokens { + model.tokens += tokens + model.sawTokens = true + } + if let cost { + model.cost += cost + model.sawCost = true + } + } + + private static func entry( + dayKey: String, + day: OpenCodexUsageAggregator.DayAccumulator) -> CostUsageDailyReport.Entry + { + CostUsageDailyReport.Entry( + date: dayKey, + inputTokens: day.sawInput ? day.input : nil, + outputTokens: day.sawOutput ? day.output : nil, + cacheReadTokens: day.sawCacheRead ? day.cacheRead : nil, + cacheCreationTokens: day.sawCacheCreation ? day.cacheCreation : nil, + reasoningTokens: day.sawReasoning ? day.reasoning : nil, + totalTokens: day.sawTokens ? day.tokens : nil, + requestCount: day.priced + day.unpriced + day.unmetered + day.estimated, + costUSD: day.sawCost ? day.cost : nil, + modelsUsed: day.models.keys.sorted(), + modelBreakdowns: self.modelBreakdowns(day.models), + unpricedRequestCount: day.unpriced, + unmeteredRequestCount: day.unmetered, + estimatedRequestCount: day.estimated) + } + + private static func modelBreakdowns( + _ models: [String: OpenCodexUsageAggregator.ModelAccumulator]) -> [CostUsageDailyReport.ModelBreakdown] + { + models.keys.sorted().map { name in + let model = models[name] ?? OpenCodexUsageAggregator.ModelAccumulator() + return CostUsageDailyReport.ModelBreakdown( + modelName: name, + costUSD: model.sawCost ? model.cost : nil, + totalTokens: model.sawTokens ? model.tokens : nil, + inputTokens: model.input, + outputTokens: model.output, + cacheReadTokens: model.cacheRead, + cacheCreationTokens: model.cacheCreation, + reasoningTokens: model.reasoning) + } + } + + private static func listPriceUSD( + entry: OpenCodexUsageEntry, + customPricing: CostUsageCustomPricing, + modelsDevCacheRoot: URL?) -> Double? + { + guard entry.usageStatus == .reported || entry.usageStatus == .estimated else { return nil } + let usage = entry.usage + let hasTokenData = entry.resolvedTotalTokens != nil + || usage?.inputTokens != nil + || usage?.outputTokens != nil + || usage?.cacheReadTokens != nil + || usage?.cacheCreationInputTokens != nil + guard hasTokenData else { return nil } + let input = usage?.inputTokens ?? 0 + let output = usage?.outputTokens ?? 0 + let cacheRead = usage?.cacheReadTokens ?? 0 + let cacheWrite = usage?.cacheCreationInputTokens ?? 0 + if let overlay = customPricing.costUSD( + providerID: entry.provider, + model: entry.model, + inputTokens: input, + outputTokens: output, + cacheReadTokens: cacheRead, + cacheWriteTokens: cacheWrite) + { + return overlay + } + return CostUsagePricing.codexCostUSD( + model: entry.model, + inputTokens: input, + cachedInputTokens: cacheRead, + outputTokens: output, + cacheWriteInputTokens: cacheWrite, + pricingDate: entry.timestamp, + modelsDevCacheRoot: modelsDevCacheRoot) + } + + private static func add(_ lhs: Int?, _ rhs: Int?) -> Int? { + switch (lhs, rhs) { + case let (left?, right?): left + right + case let (left?, nil): left + case let (nil, right?): right + case (nil, nil): nil + } + } + + private static func add(_ lhs: Double?, _ rhs: Double?) -> Double? { + switch (lhs, rhs) { + case let (left?, right?): left + right + case let (left?, nil): left + case let (nil, right?): right + case (nil, nil): nil + } + } } diff --git a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift index a189eecbaa..782bb3af10 100644 --- a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift +++ b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift @@ -3746,7 +3746,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact cost scanner dispatch selects a provider-owned transcript, cache, or pricing format."), AllowedProviderConstruct( path: "Sources/CodexBarCore/Vendored/CostUsage/ModelsDevPricing.swift", - line: 75, + line: 80, anchor: "[\"anthropic\", \"openai\"].allSatisfy { providerID in", expectedProviderIDs: ["openai"], expectedReferenceCount: 1, From aa473628812e1679867e41368b00e0e2341ed898 Mon Sep 17 00:00:00 2001 From: olddonkey Date: Fri, 21 Aug 2026 21:46:52 -0700 Subject: [PATCH 02/30] docs: add changelog entry for #3136 Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 131355cc75..50c6baa23c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.54.2 — Unreleased + +### Performance +- OpenCodex: price each `usage.jsonl` entry once with a pre-resolved models.dev catalog and custom-pricing overlay, memoize day/hour buckets per calendar interval, and read the models.dev cache metadata with a plain `stat` instead of an extended-attribute read — the OpenCodex spend refresh drops from ~12 s to ~3 s on a 35k-entry log with identical output; existing cost caches are adopted on upgrade, not rebuilt (#3136). Thanks @olddonkey! + ## 0.54.1 — 2026-08-21 ### Highlights From 653057d47df097c0e1c13718413f068754014c3d Mon Sep 17 00:00:00 2001 From: olddonkey Date: Fri, 21 Aug 2026 23:16:33 -0700 Subject: [PATCH 03/30] docs: comment the OpenCodex price-once context and memo semantics Explain why the models.dev catalog and the custom-pricing overlay are resolved once per snapshot / fan-out, why a missing catalog is substituted with an empty one (so the degraded path never falls back to per-call ModelsDevCache.load), the two-level overlay precedence in listPriceUSD, why the day-key memo cannot disagree with CostUsageLocalDay.key, and that the metadata-read recorder is task-local test-only instrumentation. Comments only; CodexParserHash is regenerated because ModelsDevPricing.swift is in the hashed set (no shipped hash is affected; the predecessor list is unchanged). Co-Authored-By: Claude Fable 5 --- .../Generated/CodexParserHash.generated.swift | 2 +- .../Vendored/CostUsage/ModelsDevPricing.swift | 3 +++ .../OpenCodexUsageAggregator.swift | 22 ++++++++++++++++++- .../OpenCodexUsage/OpenCodexUsageFanOut.swift | 3 +++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift b/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift index cf3cb01d99..324050b2e7 100644 --- a/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift +++ b/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift @@ -1,5 +1,5 @@ // Generated by Scripts/regenerate-codex-parser-hash.sh. Do not edit by hand. enum CodexParserHash { - static let value = "fc4cae716e9066c5" + static let value = "5f8507161b23757c" } diff --git a/Sources/CodexBarCore/Vendored/CostUsage/ModelsDevPricing.swift b/Sources/CodexBarCore/Vendored/CostUsage/ModelsDevPricing.swift index 6e3946ab21..eb807591bf 100644 --- a/Sources/CodexBarCore/Vendored/CostUsage/ModelsDevPricing.swift +++ b/Sources/CodexBarCore/Vendored/CostUsage/ModelsDevPricing.swift @@ -432,6 +432,9 @@ enum ModelsDevCache { static let ttlSeconds: TimeInterval = 24 * 60 * 60 private static let memo = ModelsDevCacheMemo() + /// Test-only instrumentation: counts `fileMetadata(at:)` reads (one per `load`) so tests can prove callers + /// resolve the catalog once instead of per pricing call. Task-local, so concurrent tests do not see each other's + /// counts, and unset (zero cost) in production. @TaskLocal private static var metadataReadRecorder: MetadataReadRecorder? final class MetadataReadRecorder: @unchecked Sendable { diff --git a/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageAggregator.swift b/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageAggregator.swift index c6e23951bf..1e7d6eb60b 100644 --- a/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageAggregator.swift +++ b/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageAggregator.swift @@ -54,6 +54,13 @@ enum OpenCodexUsageAggregator { var sawCost = false } + /// Aggregates OpenCodex usage entries into a per-window token/cost snapshot. + /// + /// Pricing context is resolved once per call and shared by every entry: `modelsDevCatalog` is the models.dev + /// catalog and `customPricingOverlay` the app-level custom-pricing overlay file. Callers that aggregate several + /// providers (see `OpenCodexUsageFanOut`) resolve both once and pass them in; when either is nil it is resolved + /// here once. Each windowed entry is priced exactly once and that price feeds the day, session, hour and model + /// accumulators, so output is identical to pricing inside each merge — without a catalog/overlay lookup per call. static func snapshot( entries: [OpenCodexUsageEntry], now: Date, @@ -78,6 +85,10 @@ enum OpenCodexUsageAggregator { return lhs.requestID < rhs.requestID } + // Resolve the pricing context once for the whole snapshot. A missing models.dev catalog becomes an EMPTY + // catalog on purpose: `codexCostUSD` treats a nil catalog as "resolve it yourself" and would fall back to + // `ModelsDevCache.load` (a stat per pricing target) for every entry, whereas an empty catalog yields the same + // nil lookups without any file access. Nothing is resolved when the window is empty. let catalog: ModelsDevCatalog let overlay: CostUsageCustomPricing if windowed.isEmpty { @@ -93,6 +104,8 @@ enum OpenCodexUsageAggregator { var daysByKey: [String: DayAccumulator] = [:] var sessions: [String: SessionAccumulator] = [:] var hoursByStart: [Date: HourAccumulator] = [:] + // `windowed` is sorted by timestamp, so the day/hour memos hit on almost every entry; a miss only costs one + // Calendar interval lookup. Price once per entry and reuse it for the day, session and hour merges. var dayMemo = LocalDayKeyMemo() var hourMemo = HourStartMemo() for entry in windowed { @@ -322,6 +335,11 @@ enum OpenCodexUsageAggregator { } } + /// List-price estimate for one entry. Precedence is unchanged from the per-merge pricing it replaces: + /// 1. `customPricing` — the snapshot's own overlay (provider-scoped rates passed by the caller); + /// 2. `CostUsagePricing.codexCostUSD` with the pre-resolved `customPricingOverlay` (the app-level overlay file, + /// which `codexCostUSD` would otherwise re-load per call) and the pre-resolved models.dev `modelsDevCatalog` + /// (otherwise `ModelsDevCache.load` per call), then the bundled/historical tables. private static func listPriceUSD( entry: OpenCodexUsageEntry, customPricing: CostUsageCustomPricing, @@ -382,7 +400,9 @@ enum OpenCodexUsageAggregator { extension OpenCodexUsageAggregator { /// Reuses the calendar's `[start, next)` day interval while timestamps stay inside it. - /// Day keys still come from `CostUsageLocalDay` so DST and non-Gregorian calendars stay aligned. + /// Day keys still come from `CostUsageLocalDay` so DST and non-Gregorian calendars stay aligned: the key derives + /// y-m-d from the same Gregorian-in-timezone calendar whose `.day` interval is cached here, so the memo can never + /// disagree with computing the key per entry (DST days are simply 23 h / 25 h intervals). private struct LocalDayKeyMemo { var start = Date.distantPast var end = Date.distantPast diff --git a/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageFanOut.swift b/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageFanOut.swift index 5ddc870421..a060ff8df6 100644 --- a/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageFanOut.swift +++ b/Sources/CodexBarCore/Vendored/OpenCodexUsage/OpenCodexUsageFanOut.swift @@ -19,6 +19,9 @@ public enum OpenCodexUsageFanOut { grouped[provider, default: []].append(entry) } guard !grouped.isEmpty else { return [:] } + // Resolve the models.dev catalog and the custom-pricing overlay once for all providers; each snapshot then + // prices its entries against this shared context instead of re-reading both per pricing call (see + // `OpenCodexUsageAggregator.snapshot`). A missing catalog is passed as an empty one for the same reason. let catalog = CostUsagePricing.modelsDevCatalog() ?? ModelsDevCatalog(providers: [:]) let overlay = CostUsagePricing.customPricingOverlay() return grouped.mapValues { providerEntries in From d6d281e898a0691685d04640bb40d1ff2c3390ea Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 03:45:09 -0700 Subject: [PATCH 04/30] docs: update appcast for 0.54.1 --- appcast.xml | 71 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 23 deletions(-) diff --git a/appcast.xml b/appcast.xml index 510771b12f..db16b1c227 100644 --- a/appcast.xml +++ b/appcast.xml @@ -2,6 +2,54 @@ CodexBar + + 0.54.1 + Sun, 23 Aug 2026 03:45:07 -0700 + https://raw.githubusercontent.com/steipete/CodexBar/main/appcast.xml + 128 + 0.54.1 + 14.0 + CodexBar 0.54.1 +

Highlights

+
    +
  • Codex CLI 0.149.0 compatibility: the usage probe works again after the CLI removed the untrusted approval value (#3115).
  • +
  • Layout editor drag-and-drop fixed: chip reordering and the trash drop zone are reachable again, and the trash zone doubles as a click target (#3121).
  • +
  • Faster relaunches: the Codex priority-turn scan cursor persists across restarts — no more re-scanning the whole trace database on every launch (#3130).
  • +
  • Faster spend dashboard: provider baselines and Codex multi-account scans load in parallel, cutting cold opens to roughly the slowest single provider (#3105).
  • +
  • Grok Bot on the Cursor card: weekly included Bot usage appears as a fourth bar next to Total / Cursor / Third Party (#3127).
  • +
+

Fixed

+
    +
  • Fixed the Codex CLI usage probe against Codex CLI 0.149.0: the removed untrusted approval value is replaced by never on both the app-server and isolated status launches, keeping the read-only sandbox (#3115, #3118). Thanks @kiranmagic7!
  • +
  • Fixed menu bar layout editor drag-and-drop: chips are draggable views instead of Buttons (whose gesture recognizer swallowed the drag), so reordering and the trash zone work again — and the trash zone now also removes the selected token on click (#3121). Thanks @J2TeamNNL!
  • +
  • Fixed Codex profile-home account switches briefly showing another profile's token counts, costs, usage chart, top model, and cost history while the selected profile loads (#3125).
  • +
  • Fixed the mainland Alibaba Personal/Solo Token Plan always reporting "login required": the console shell now serves its sec_token to CodexBar's fetch and the upper-case SEC_TOKEN shape is parsed (#2891, #3098). Thanks @LeoLin990405!
  • +
  • Alibaba: retry the Personal usage gateway's transient empty-Success responses instead of surfacing a parse error (#3128). Thanks @LeoLin990405!
  • +
  • Fixed long agent session names stretching the menu: session rows now truncate inside the menu's width with the full label in a tooltip (#3096). Thanks @KaranocaVe!
  • +
+

Performance

+
    +
  • Codex: persist the priority-turn trace-database scan cursor across relaunches so a restart resumes incrementally instead of re-scanning the whole logs_2.sqlite (minutes of full-core CPU on large trace databases); existing cost caches are adopted on upgrade, not rebuilt (#3130). Thanks @olddonkey!
  • +
  • Spend dashboard: load provider baselines and Codex multi-account scans in parallel and memoize currency conversion and calendar buckets, cutting cold opens from multiple seconds to roughly the slowest single provider (#3105). Thanks @Yuxin-Qiao!
  • +
+

Providers

+
    +
  • Cursor: show Grok Bot weekly included usage as a fourth card bar sourced from the dashboard's sand-usage endpoint, best-effort and hidden on accounts without a Bot allowance or on legacy request plans (#3127). Thanks @kvarga!
  • +
  • Codex: show Business/Enterprise individual monthly credit used vs cap on stacked multi-account cards instead of "Limits not available" (#3112). Thanks @sf-jin-ku!
  • +
  • Claude: migrate email-keyed claude-swap iCloud snapshots to their slot-keyed records and delete the leftover email-keyed predecessors, so other Macs stop showing duplicate fleet cards (#3111). Thanks @sf-jin-ku!
  • +
  • Claude: distinguish claude-swap accounts that share an email with the workspace name or slot, and honor a user-chosen display alias (#3082). Thanks @sf-jin-ku!
  • +
  • Kiro: show overage credits spent against their cap, plus accrued charges against the overage budget — reading the plan and overage ceilings from the same GetUsageLimits service the CLI itself calls, with a CLI-report fallback (#3083). Thanks @sf-jin-ku!
  • +
  • Command Code: recognize the repriced Pro tier (individual-pro-v1, $80/mo in credits) instead of failing with an unknown-plan error (#3116). Thanks @sebastianmarines!
  • +
  • z.ai: show the BigModel CN pay-as-you-go account balance inside Quota details, best-effort and CN-only (#3109). Thanks @RunhuaHuang!
  • +
+

Localization

+
    +
  • Simplified Chinese now labels quota windows by their actual duration ("5 小时" instead of a generic session label), keeping the generic wording for conversations (#3069, #3070). Thanks @YunyueLi!
  • +
+

View full changelog

+]]>
+ +
0.54.0 Thu, 20 Aug 2026 06:51:02 -0700 @@ -127,29 +175,6 @@ ]]> - - 0.52.0 - Mon, 17 Aug 2026 04:24:21 -0700 - https://raw.githubusercontent.com/steipete/CodexBar/main/appcast.xml - 124 - 0.52.0 - 14.0 - CodexBar 0.52.0 -

Added

-
    -
  • Usage & Spend: aggregate per-project spend into ranked, window-scoped rows and carry project/session breakdowns through the cached Codex prefill so the dashboard and the menu chart agree on project data (#2984). Thanks @Yuxin-Qiao!
  • -
  • Usage & Spend: add a Projects panel to the settings pane and let the Models and Projects lists expand beyond the top eight rows (#2985). Thanks @Yuxin-Qiao!
  • -
-

Fixed

-
    -
  • Mission Control: remove the invisible lifecycle keepalive window entirely; the rebuilt Settings window no longer needs it, eliminating the floating all-Spaces WindowServer footprint that dismissed Mission Control on macOS 27 (#2955, #2997, #3003). Thanks @phuchong89 for the diagnostics!
  • -
  • Cost history chart: localize the Projects, Conversations, session, and standard/fast mode labels that previously stayed English for all 23 app languages (#2983). Thanks @Yuxin-Qiao!
  • -
  • Grok: show SuperGrok Heavy from the CLI settings subscription_tier_display instead of labeling every OIDC login as SuperGrok (#2991). Thanks @olddonkey!
  • -
-

View full changelog

-]]>
- -
0.14.0 Thu, 25 Dec 2025 03:56:15 +0100 From 4b14ed9c57d3506d1455b2736a1d1a8ff2b9c718 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 04:18:32 -0700 Subject: [PATCH 05/30] chore: open 0.54.2 unreleased changelog section --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 131355cc75..a0499c2d22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog +## 0.54.2 — Unreleased + ## 0.54.1 — 2026-08-21 ### Highlights From 6ef5c5a9a20c754e3cf8973a0ad536c7caf7e9cf Mon Sep 17 00:00:00 2001 From: Olddonkey Date: Sun, 23 Aug 2026 12:46:14 -0700 Subject: [PATCH 06/30] Stop re-merging the Codex plan-utilization history with itself on every refresh (#3141) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `materializeCodexPlanUtilizationHistoryIfNeeded` exists to fold legacy, opaque and unscoped Codex plan-utilization buckets into the canonical account bucket. Its scoped loop also appended the canonical bucket's own histories to `historiesToMerge` — `matchesTargetContinuity` is true for `rawKey == canonicalKey`, and only the removal of the old key was guarded — so `guard !historiesToMerge.isEmpty` never fired once the canonical bucket had any history, and the migration merge ran on every successful provider refresh and every menu open, merging the history with itself. That merge is quadratic: `updatedPlanUtilizationEntries` copied the whole entry array per entry, scanned it linearly for the insertion point, and allocated the same-hour slice. Measured with an optimized standalone reproduction over a real three-month-old history (session 1909 entries, weekly 2239): 20.6 ms of MainActor time per call, scaling ~3.9x per doubling. `planUtilizationMaxSamples` allows 17520 entries per series, so it would keep growing. Two changes: - Track whether a foreign source actually contributed and require that in the guard, so the canonical-only case returns without merging or rewriting anything. Every path where a legacy, opaque or unscoped bucket contributes is untouched; `legacyRawKeysToRemove` is populated only in branches that also set the flag, so no removal is skipped, and `providerBuckets.unscoped` is cleared only inside the branch that sets it. - Make the merge itself near-linear: `updatedPlanUtilizationEntries` mutates the array in place and finds the insertion point with a binary search for the same strict upper bound (with a fast path for the common append), and `mergedPlanUtilizationHistories` accumulates per series and builds each history once. The binary search assumes entries are sorted by `capturedAt`, which every in-app producer guaranteed through `PlanUtilizationSeriesHistory`'s designated initializer — except the synthesized `Codable` decoder, which assigned entries verbatim from JSON. An explicit `init(from:)` now routes decoding through that initializer, so an on-disk history written by an older build or edited by hand cannot smuggle in an unsorted series. The skipped self-merge also incidentally re-canonicalized per-hour peaks on read; that repair belongs at load time, not on every refresh, and is not reintroduced here. The visible effect is that at most one extra real observation per affected hour is kept. Tests: canonical-only history is returned untouched and enqueues no persistence write (the history revision is unchanged); a genuine foreign merge matches an explicit expected result across overlapping hours, out-of-order sources, distinct series and retention trimming; the binary search's upper-bound contract is pinned directly through a DEBUG shim over an array with a run of equal timestamps (a lower bound would return a different index); and decoding a series whose JSON entries are out of order yields a sorted series. Implemented by grok-4.6 (xhigh) via implementation-loop; reviewed hunk by hunk plus an independent deep review that confirmed both equivalences by differential fuzzing (200k sorted cases with no mismatch) and found the decoder gap, fixed in one iterate round. Gatekeeper line anchors for the touched file were re-verified independently. The DEBUG sortedness assertion is checked once per merged series rather than once per inserted entry: a per-entry check is itself O(n) and reintroduced, in debug builds, exactly the quadratic scan this insertion path removes (measured over the real 4160-entry history: a legacy migration took ~1000 ms with the per-entry assertion versus ~15 ms without it). Co-authored-by: Claude Fable 5 --- .../PlanUtilizationHistoryStore.swift | 14 ++ .../CodexBar/UsageStore+PlanUtilization.swift | 121 +++++++--- .../ProviderArchitectureGatekeeperTests.swift | 8 +- .../SessionEquivalentForecastTests.swift | 13 +- ...eStorePlanUtilizationCodexMergeTests.swift | 220 ++++++++++++++++++ .../UsageStorePlanUtilizationTests.swift | 69 ++++++ 6 files changed, 408 insertions(+), 37 deletions(-) create mode 100644 Tests/CodexBarTests/UsageStorePlanUtilizationCodexMergeTests.swift diff --git a/Sources/CodexBar/PlanUtilizationHistoryStore.swift b/Sources/CodexBar/PlanUtilizationHistoryStore.swift index 621749d503..ef7f0d83a9 100644 --- a/Sources/CodexBar/PlanUtilizationHistoryStore.swift +++ b/Sources/CodexBar/PlanUtilizationHistoryStore.swift @@ -40,6 +40,12 @@ struct PlanUtilizationSeriesHistory: Codable, Equatable, Sendable { let windowMinutes: Int let entries: [PlanUtilizationHistoryEntry] + private enum CodingKeys: String, CodingKey { + case name + case windowMinutes + case entries + } + init(name: PlanUtilizationSeriesName, windowMinutes: Int, entries: [PlanUtilizationHistoryEntry]) { self.name = name self.windowMinutes = windowMinutes @@ -56,6 +62,14 @@ struct PlanUtilizationSeriesHistory: Codable, Equatable, Sendable { } } + init(from decoder: any Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + let name = try container.decode(PlanUtilizationSeriesName.self, forKey: .name) + let windowMinutes = try container.decode(Int.self, forKey: .windowMinutes) + let entries = try container.decode([PlanUtilizationHistoryEntry].self, forKey: .entries) + self.init(name: name, windowMinutes: windowMinutes, entries: entries) + } + var latestCapturedAt: Date? { self.entries.last?.capturedAt } diff --git a/Sources/CodexBar/UsageStore+PlanUtilization.swift b/Sources/CodexBar/UsageStore+PlanUtilization.swift index 6ac3d3dc76..a3eb54d74e 100644 --- a/Sources/CodexBar/UsageStore+PlanUtilization.swift +++ b/Sources/CodexBar/UsageStore+PlanUtilization.swift @@ -373,8 +373,10 @@ extension UsageStore { let canonicalWindowMinutes = sample.name.canonicalWindowMinutes(sample.windowMinutes) let key = PlanUtilizationSeriesKey(name: sample.name, windowMinutes: canonicalWindowMinutes) if let existingHistory = historiesByKey[key] { - guard let updatedEntries = self.updatedPlanUtilizationEntries( - existingEntries: existingHistory.entries, + var updatedEntries = existingHistory.entries + self.assertPlanUtilizationEntriesSorted(updatedEntries) + guard self.updatedPlanUtilizationEntries( + existingEntries: &updatedEntries, entry: sample.entry) else { continue @@ -411,28 +413,72 @@ extension UsageStore { } private nonisolated static func updatedPlanUtilizationEntries( - existingEntries: [PlanUtilizationHistoryEntry], - entry: PlanUtilizationHistoryEntry) -> [PlanUtilizationHistoryEntry]? + existingEntries: inout [PlanUtilizationHistoryEntry], + entry: PlanUtilizationHistoryEntry) -> Bool { - var entries = existingEntries - let insertionIndex = entries.firstIndex(where: { $0.capturedAt > entry.capturedAt }) ?? entries.endIndex + let insertionIndex = self.planUtilizationEntryInsertionIndex( + entries: existingEntries, + capturedAt: entry.capturedAt) let sampleHourBucket = self.planUtilizationHourBucket(for: entry.capturedAt) let sameHourRange = self.planUtilizationHourRange( - entries: entries, + entries: existingEntries, insertionIndex: insertionIndex, hourBucket: sampleHourBucket) - let existingHourEntries = Array(entries[sameHourRange]) + let existingHourEntries = Array(existingEntries[sameHourRange]) let canonicalHourEntries = self.canonicalPlanUtilizationHourEntries( existingHourEntries: existingHourEntries, incomingEntry: entry) - guard canonicalHourEntries != existingHourEntries else { return nil } - entries.replaceSubrange(sameHourRange, with: canonicalHourEntries) + guard canonicalHourEntries != existingHourEntries else { return false } + existingEntries.replaceSubrange(sameHourRange, with: canonicalHourEntries) - if entries.count > self.planUtilizationMaxSamples { - entries.removeFirst(entries.count - self.planUtilizationMaxSamples) + if existingEntries.count > self.planUtilizationMaxSamples { + existingEntries.removeFirst(existingEntries.count - self.planUtilizationMaxSamples) } - return entries + return true + } + + /// The insertion search assumes `capturedAt` order. Checked once per merged series rather than per entry — + /// a per-entry check would reintroduce the O(n) scan this insertion path exists to remove. + private nonisolated static func assertPlanUtilizationEntriesSorted( + _ entries: [PlanUtilizationHistoryEntry]) + { + #if DEBUG + assert( + zip(entries, entries.dropFirst()).allSatisfy { $0.capturedAt <= $1.capturedAt }, + "plan-utilization entries must be sorted by capturedAt before insertion") + #endif + } + + private nonisolated static func planUtilizationEntryInsertionIndex( + entries: [PlanUtilizationHistoryEntry], + capturedAt: Date) -> Int + { + guard let lastCapturedAt = entries.last?.capturedAt else { + return entries.endIndex + } + if lastCapturedAt <= capturedAt { + return entries.endIndex + } + return self.planUtilizationEntryUpperBound(entries: entries, capturedAt: capturedAt) + } + + /// First index i such that entries[i].capturedAt > capturedAt (endIndex if none). + private nonisolated static func planUtilizationEntryUpperBound( + entries: [PlanUtilizationHistoryEntry], + capturedAt: Date) -> Int + { + var low = entries.startIndex + var high = entries.endIndex + while low < high { + let mid = low + ((high - low) / 2) + if entries[mid].capturedAt > capturedAt { + high = mid + } else { + low = mid + 1 + } + } + return low } #if DEBUG @@ -440,7 +486,18 @@ extension UsageStore { existingEntries: [PlanUtilizationHistoryEntry], entry: PlanUtilizationHistoryEntry) -> [PlanUtilizationHistoryEntry]? { - self.updatedPlanUtilizationEntries(existingEntries: existingEntries, entry: entry) + var entries = existingEntries + guard self.updatedPlanUtilizationEntries(existingEntries: &entries, entry: entry) else { + return nil + } + return entries + } + + nonisolated static func _planUtilizationEntryUpperBoundForTesting( + entries: [PlanUtilizationHistoryEntry], + capturedAt: Date) -> Int + { + self.planUtilizationEntryUpperBound(entries: entries, capturedAt: capturedAt) } nonisolated static func _updatedPlanUtilizationHistoriesForTesting( @@ -1202,6 +1259,7 @@ extension UsageStore { var historiesToMerge: [[PlanUtilizationSeriesHistory]] = [] let scopedRawKeys = Array(providerBuckets.accounts.keys) var legacyRawKeysToRemove: [String] = [] + var hasForeignHistoryToMerge = false for rawKey in scopedRawKeys { let owner = CodexHistoryOwnership.classifyPersistedKey( @@ -1219,6 +1277,7 @@ extension UsageStore { historiesToMerge.append(accountHistories) if rawKey != canonicalKey { legacyRawKeysToRemove.append(rawKey) + hasForeignHistoryToMerge = true } } } @@ -1232,6 +1291,7 @@ extension UsageStore { { historiesToMerge.append(opaqueHistories) legacyRawKeysToRemove.append(recoverableOpaqueRawKey) + hasForeignHistoryToMerge = true } if shouldAdoptUnscopedHistory, @@ -1245,9 +1305,14 @@ extension UsageStore { { historiesToMerge.append(providerBuckets.unscoped) providerBuckets.unscoped = [] + hasForeignHistoryToMerge = true } - guard !historiesToMerge.isEmpty else { return canonicalKey } + // Canonical-only contribution is not a migration; re-merging it with itself is quadratic. + // Skipping also skips incidental re-canonicalization of already-canonical series (duplicate + // (name, windowMinutes) collapse and per-hour peak replay). Repairing legacy data belongs + // at load time, not on every refresh and menu open. + guard hasForeignHistoryToMerge else { return canonicalKey } for rawKey in legacyRawKeysToRemove { providerBuckets.accounts.removeValue(forKey: rawKey) } @@ -1523,29 +1588,29 @@ extension UsageStore { provider _: UsageProvider, histories: [[PlanUtilizationSeriesHistory]]) -> [PlanUtilizationSeriesHistory] { - var mergedByKey: [PlanUtilizationSeriesKey: PlanUtilizationSeriesHistory] = [:] + var mergedEntriesByKey: [PlanUtilizationSeriesKey: [PlanUtilizationHistoryEntry]] = [:] for historyGroup in histories { for history in historyGroup { let key = PlanUtilizationSeriesKey(name: history.name, windowMinutes: history.windowMinutes) - let existingEntries = mergedByKey[key]?.entries ?? [] - var mergedEntries = existingEntries + var mergedEntries = mergedEntriesByKey[key] ?? [] + self.assertPlanUtilizationEntriesSorted(mergedEntries) for entry in history.entries.sorted(by: { $0.capturedAt < $1.capturedAt }) { - if let updatedEntries = self.updatedPlanUtilizationEntries( - existingEntries: mergedEntries, + _ = self.updatedPlanUtilizationEntries( + existingEntries: &mergedEntries, entry: entry) - { - mergedEntries = updatedEntries - } } - mergedByKey[key] = PlanUtilizationSeriesHistory( - name: history.name, - windowMinutes: history.windowMinutes, - entries: mergedEntries) + mergedEntriesByKey[key] = mergedEntries } } - return mergedByKey.values.sorted { lhs, rhs in + return mergedEntriesByKey.map { key, entries in + PlanUtilizationSeriesHistory( + name: key.name, + windowMinutes: key.windowMinutes, + entries: entries) + } + .sorted { lhs, rhs in if lhs.windowMinutes != rhs.windowMinutes { return lhs.windowMinutes < rhs.windowMinutes } diff --git a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift index a189eecbaa..61a629fc29 100644 --- a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift +++ b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift @@ -2736,7 +2736,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact app-runtime bridge coordinates provider-owned state through the shared controller."), AllowedProviderConstruct( path: "Sources/CodexBar/UsageStore+PlanUtilization.swift", - line: 846, + line: 903, anchor: "if provider == .claude {", expectedProviderIDs: ["claude"], expectedReferenceCount: 1, @@ -2744,7 +2744,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact app-runtime bridge coordinates provider-owned state through the shared controller."), AllowedProviderConstruct( path: "Sources/CodexBar/UsageStore+PlanUtilization.swift", - line: 861, + line: 918, anchor: "guard let identity = snapshot.identity(for: .claude) else { return nil }", expectedProviderIDs: ["claude"], expectedReferenceCount: 3, @@ -2752,7 +2752,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact app-runtime bridge coordinates provider-owned state through the shared controller."), AllowedProviderConstruct( path: "Sources/CodexBar/UsageStore+PlanUtilization.swift", - line: 888, + line: 945, anchor: "key.hasPrefix(\"\\(UsageProvider.claude.rawValue):\")", expectedProviderIDs: ["claude"], expectedReferenceCount: 1, @@ -2760,7 +2760,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact app-runtime bridge coordinates provider-owned state through the shared controller."), AllowedProviderConstruct( path: "Sources/CodexBar/UsageStore+PlanUtilization.swift", - line: 1318, + line: 1383, anchor: "if ![UsageProvider.codex, .claude, .antigravity].contains(provider) {", expectedProviderIDs: ["antigravity", "claude", "codex"], expectedReferenceCount: 3, diff --git a/Tests/CodexBarTests/SessionEquivalentForecastTests.swift b/Tests/CodexBarTests/SessionEquivalentForecastTests.swift index f2bcd14f09..2bd1d817c9 100644 --- a/Tests/CodexBarTests/SessionEquivalentForecastTests.swift +++ b/Tests/CodexBarTests/SessionEquivalentForecastTests.swift @@ -341,7 +341,7 @@ struct SessionEquivalentForecastTests { } @Test - func `rejects hostile dates percentages and unsorted history`() throws { + func `rejects hostile dates and percentages and normalizes unsorted history`() throws { let now = Date(timeIntervalSince1970: 1_900_000_000) let session = RateWindow( usedPercent: 20, @@ -380,15 +380,18 @@ struct SessionEquivalentForecastTests { let encodedSession = try JSONEncoder().encode(fixture.histories[0]) var sessionJSON = try #require(JSONSerialization.jsonObject(with: encodedSession) as? [String: Any]) let entriesJSON = try #require(sessionJSON["entries"] as? [[String: Any]]) + // Decoding sorts entries (PlanUtilizationSeriesHistory.init(from:)), so a reversed payload + // normalizes to the same series and yields the same estimate as the sorted fixture above. sessionJSON["entries"] = Array(entriesJSON.reversed()) let shuffledData = try JSONSerialization.data(withJSONObject: sessionJSON) let shuffledSession = try JSONDecoder().decode(PlanUtilizationSeriesHistory.self, from: shuffledData) - #expect((shuffledSession.entries.first?.capturedAt ?? .distantPast) - > (shuffledSession.entries.last?.capturedAt ?? .distantFuture)) - #expect(SessionEquivalentBurnEstimator.estimate( + #expect(shuffledSession == fixture.histories[0]) + let shuffledEstimate = try #require(SessionEquivalentBurnEstimator.estimate( histories: [shuffledSession, fixture.histories[1]], currentSessionResetsAt: fixture.currentSessionReset, - now: fixture.currentSessionReset.addingTimeInterval(-3600)) == nil) + now: fixture.currentSessionReset.addingTimeInterval(-3600))) + #expect(shuffledEstimate.sampleCount == 3) + #expect(shuffledEstimate.medianWeeklyPercentPerWindow == 6) let huge = UsagePaceText.sessionEquivalentDetail(forecast: SessionEquivalentForecast( estimatedWindowsToExhaustWeekly: .greatestFiniteMagnitude, diff --git a/Tests/CodexBarTests/UsageStorePlanUtilizationCodexMergeTests.swift b/Tests/CodexBarTests/UsageStorePlanUtilizationCodexMergeTests.swift new file mode 100644 index 0000000000..0562b631f0 --- /dev/null +++ b/Tests/CodexBarTests/UsageStorePlanUtilizationCodexMergeTests.swift @@ -0,0 +1,220 @@ +import CodexBarCore +import Foundation +import Testing +@testable import CodexBar + +struct UsageStorePlanUtilizationCodexMergeTests { + @MainActor + @Test + func `codex materialize leaves canonical-only history untouched`() throws { + let store = UsageStorePlanUtilizationTests.makeStore() + let snapshot = UsageStorePlanUtilizationTests.makeSnapshot(provider: .codex, email: "alice@example.com") + let canonicalKey = try #require( + UsageStore._planUtilizationAccountKeyForTesting( + provider: .codex, + snapshot: snapshot)) + let hourStart = Date(timeIntervalSince1970: 1_699_999_200) + let session = planSeries(name: .session, windowMinutes: 300, entries: [ + planEntry(at: hourStart.addingTimeInterval(3600), usedPercent: 40), + planEntry(at: hourStart, usedPercent: 10), + ]) + let weekly = planSeries(name: .weekly, windowMinutes: 10080, entries: [ + planEntry(at: hourStart.addingTimeInterval(7200), usedPercent: 15), + ]) + // Direct assignment keeps this unsorted; a self-merge would reorder by windowMinutes. + let originalHistories = [weekly, session] + let originalBuckets = PlanUtilizationHistoryBuckets( + preferredAccountKey: canonicalKey, + unscoped: [], + accounts: [ + canonicalKey: originalHistories, + ]) + store.planUtilizationHistory[.codex] = originalBuckets + store._setSnapshotForTesting(snapshot, provider: .codex) + + let revisionBefore = store.planUtilizationHistoryRevision + let history = store.planUtilizationHistory(for: .codex) + let buckets = try #require(store.planUtilizationHistory[.codex]) + + #expect(history == originalHistories) + #expect(buckets == originalBuckets) + #expect(buckets.accounts[canonicalKey] == originalHistories) + #expect(buckets.accounts.keys.sorted() == [canonicalKey]) + #expect(buckets.unscoped.isEmpty) + #expect(store.planUtilizationHistoryRevision == revisionBefore) + } + + @MainActor + @Test + func `codex materialize merge matches reference for overlapping hours out of order entries and distinct series`() + throws + { + let store = UsageStorePlanUtilizationTests.makeStore() + let snapshot = UsageStorePlanUtilizationTests.makeSnapshot(provider: .codex, email: "alice@example.com") + let canonicalKey = try #require( + UsageStore._planUtilizationAccountKeyForTesting( + provider: .codex, + snapshot: snapshot)) + let legacyEmailHash = UsageStore._codexLegacyPlanUtilizationEmailHashKeyForTesting( + normalizedEmail: "alice@example.com") + let hourStart = Date(timeIntervalSince1970: 1_699_999_200) + + let canonicalSession = planSeries(name: .session, windowMinutes: 300, entries: [ + planEntry(at: hourStart.addingTimeInterval(3 * 3600), usedPercent: 40), + planEntry(at: hourStart.addingTimeInterval(5 * 60), usedPercent: 10), + ]) + let canonicalWeekly = planSeries(name: .weekly, windowMinutes: 10080, entries: [ + planEntry(at: hourStart, usedPercent: 15), + ]) + let legacySession = planSeries(name: .session, windowMinutes: 300, entries: [ + planEntry(at: hourStart.addingTimeInterval(3600), usedPercent: 20), + planEntry(at: hourStart.addingTimeInterval(25 * 60), usedPercent: 35), + ]) + let legacyWeekly = planSeries(name: .weekly, windowMinutes: 10080, entries: [ + planEntry(at: hourStart.addingTimeInterval(3600), usedPercent: 25), + ]) + let unscopedSession = planSeries(name: .session, windowMinutes: 300, entries: [ + planEntry(at: hourStart.addingTimeInterval(2 * 3600), usedPercent: 30), + ]) + + store.planUtilizationHistory[.codex] = PlanUtilizationHistoryBuckets( + unscoped: [unscopedSession], + accounts: [ + canonicalKey: [canonicalWeekly, canonicalSession], + legacyEmailHash: [legacySession, legacyWeekly], + ]) + store._setSnapshotForTesting(snapshot, provider: .codex) + + let history = store.planUtilizationHistory(for: .codex) + let buckets = try #require(store.planUtilizationHistory[.codex]) + + let expectedSession = planSeries(name: .session, windowMinutes: 300, entries: [ + planEntry(at: hourStart.addingTimeInterval(25 * 60), usedPercent: 35), + planEntry(at: hourStart.addingTimeInterval(3600), usedPercent: 20), + planEntry(at: hourStart.addingTimeInterval(2 * 3600), usedPercent: 30), + planEntry(at: hourStart.addingTimeInterval(3 * 3600), usedPercent: 40), + ]) + let expectedWeekly = planSeries(name: .weekly, windowMinutes: 10080, entries: [ + planEntry(at: hourStart, usedPercent: 15), + planEntry(at: hourStart.addingTimeInterval(3600), usedPercent: 25), + ]) + let expectedHistories = [expectedSession, expectedWeekly] + + #expect(history == expectedHistories) + #expect(buckets.accounts[canonicalKey] == expectedHistories) + #expect(buckets.accounts[legacyEmailHash] == nil) + #expect(buckets.unscoped.isEmpty) + #expect(findSeries(history, name: .session, windowMinutes: 300)?.entries.map(\.usedPercent) == [ + 35, 20, 30, 40, + ]) + #expect(findSeries(history, name: .weekly, windowMinutes: 10080)?.entries.map(\.usedPercent) == [15, 25]) + } + + @MainActor + @Test + func `codex materialize merge matches reference when retention trimming is exercised`() throws { + let store = UsageStorePlanUtilizationTests.makeStore() + let snapshot = UsageStorePlanUtilizationTests.makeSnapshot(provider: .codex, email: "alice@example.com") + let canonicalKey = try #require( + UsageStore._planUtilizationAccountKeyForTesting( + provider: .codex, + snapshot: snapshot)) + let legacyEmailHash = UsageStore._codexLegacyPlanUtilizationEmailHashKeyForTesting( + normalizedEmail: "alice@example.com") + let hourStart = Date(timeIntervalSince1970: 1_699_999_200) + let maxSamples = UsageStore._planUtilizationMaxSamplesForTesting + let overflow = 12 + let totalSessionEntries = maxSamples + overflow + let legacySessionEntries = (0.. Date: Sun, 23 Aug 2026 12:46:46 -0700 Subject: [PATCH 07/30] Fix Codex day cost blanked by trace-only priority turns (#3150) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Row ownership evidence compared the retained rows against the persisted standard/priority split using the trace database's tier classification. The persisted maps come from the rows' own pricingMode, so a turn the trace reports as priority after its rows were persisted as standard read as a row-ownership mismatch, the rows lost trust, and the day fell back to the aggregate — which returns nil for long-context tiered models, so the whole day's cost disappeared from the menu, the chart and the window total. Judge retention against both classifications and flag only a group that matches neither. A wrongly retained row set still fails both, because the persisted totals are canonical for the file and tier classification never changes how many tokens the rows carry. Co-authored-by: Claude Opus 5 --- .../Generated/CodexParserHash.generated.swift | 2 +- ...ostUsageScanner+ReportReconciliation.swift | 22 ++- .../Vendored/CostUsage/CostUsageStore.swift | 1 + ...ScannerForkSplitPricingEvidenceTests.swift | 142 ++++++++++++++++++ Tests/CodexBarTests/CostUsageStoreTests.swift | 1 + 5 files changed, 162 insertions(+), 6 deletions(-) diff --git a/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift b/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift index db7b5fdd77..31c83d4dfb 100644 --- a/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift +++ b/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift @@ -1,5 +1,5 @@ // Generated by Scripts/regenerate-codex-parser-hash.sh. Do not edit by hand. enum CodexParserHash { - static let value = "3c984b655688593f" + static let value = "457945c40062d450" } diff --git a/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner+ReportReconciliation.swift b/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner+ReportReconciliation.swift index 8614b0019d..a1b42686a0 100644 --- a/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner+ReportReconciliation.swift +++ b/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner+ReportReconciliation.swift @@ -57,6 +57,16 @@ extension CostUsageScanner { rows: reconciledRows, range: range, priorityTurns: priorityTurns) + // The persisted maps are derived from the rows' own `pricingMode`, while the report also + // consults the trace database. A turn the trace reports as priority after its rows were + // persisted as standard is a tier-classification difference, not a row-ownership problem, + // so retention is judged against both splits and only a group that matches neither counts + // as mismatched. A wrongly retained row set still fails both, because the persisted totals + // are canonical for the file and neither classification changes how many tokens the rows carry. + let retainedModeTokens = self.codexModeTokenMaps( + rows: reconciledRows, + range: range, + priorityTurns: [:]) var mismatchGroups = Set() var priorityGroups = Set() for (day, models) in usage.days { @@ -76,11 +86,13 @@ extension CostUsageScanner { // Copied fork prefixes can stale these legacy maps too. Only a map that is // independently canonical for its file may constrain retained row ownership. guard persistedModeTotal == canonicalTotal else { continue } - let rowStandard = reconciledModeTokens.standard?[day]?[model] ?? 0 - let rowPriority = reconciledModeTokens.priority?[day]?[model] ?? 0 - if rowStandard != max(0, persistedStandard ?? 0) - || rowPriority != max(0, persistedPriority ?? 0) - { + let expectedStandard = max(0, persistedStandard ?? 0) + let expectedPriority = max(0, persistedPriority ?? 0) + let matchesReconciled = (reconciledModeTokens.standard?[day]?[model] ?? 0) == expectedStandard + && (reconciledModeTokens.priority?[day]?[model] ?? 0) == expectedPriority + let matchesRetained = (retainedModeTokens.standard?[day]?[model] ?? 0) == expectedStandard + && (retainedModeTokens.priority?[day]?[model] ?? 0) == expectedPriority + if !matchesReconciled, !matchesRetained { mismatchGroups.insert(key) } } diff --git a/Sources/CodexBarCore/Vendored/CostUsage/CostUsageStore.swift b/Sources/CodexBarCore/Vendored/CostUsage/CostUsageStore.swift index e64ba4a105..79a70f1016 100644 --- a/Sources/CodexBarCore/Vendored/CostUsage/CostUsageStore.swift +++ b/Sources/CodexBarCore/Vendored/CostUsage/CostUsageStore.swift @@ -82,6 +82,7 @@ actor CostUsageStore { "b975eb705f905b9a", // 0.49.0-0.49.2 SQLite producer with compatible rows. "47144baa8daccf52", // This branch changes only scan scheduling, discovery, and persistence bookkeeping. "2d17f4981b78d07f", // Persisted priority-turn cursor; parser and persisted row shape unchanged. + "3c984b655688593f", // 0.54.x row-ownership evidence fix; parser and persisted row shape unchanged. ] /// Test-only crash injection: invoked inside `saveCodexCache`'s transaction after each diff --git a/Tests/CodexBarTests/CostUsageScannerForkSplitPricingEvidenceTests.swift b/Tests/CodexBarTests/CostUsageScannerForkSplitPricingEvidenceTests.swift index 978b09f9f9..6a09298e84 100644 --- a/Tests/CodexBarTests/CostUsageScannerForkSplitPricingEvidenceTests.swift +++ b/Tests/CodexBarTests/CostUsageScannerForkSplitPricingEvidenceTests.swift @@ -98,5 +98,147 @@ extension CostUsageScannerForkSplitTests { #expect(report.data.first?.modelBreakdowns?.first?.costUSD == nil) #expect(report.summary?.totalCostUSD == nil) } + + @Test + func `trace priority turns keep row ownership for rows persisted as standard`() throws { + let environment = try CostUsageTestEnvironment() + defer { environment.cleanup() } + + let day = try environment.makeLocalNoon(year: 2026, month: 8, day: 11) + let range = CostUsageScanner.CostUsageDayRange(since: day, until: day) + let dayKey = range.sinceKey + let model = "gpt-5.5" + let inputPerRow = 150_000 + let outputPerRow = 10 + let tokensPerRow = inputPerRow + outputPerRow + // The rollout only ever labelled these rows standard; the trace database is the sole + // source that knows the second turn was served on the priority tier. + let standardRow = CostUsageScanner.CodexUsageRow( + day: dayKey, + model: model, + turnID: "standard-turn", + eventIndex: 0, + input: inputPerRow, + cached: 0, + output: outputPerRow, + pricingModel: model, + pricingMode: "standard") + let tracePriorityRow = CostUsageScanner.CodexUsageRow( + day: dayKey, + model: model, + turnID: "trace-priority-turn", + eventIndex: 1, + input: inputPerRow, + cached: 0, + output: outputPerRow, + pricingModel: model, + pricingMode: "standard") + let usage = CostUsageScanner.makeFileUsage( + mtimeUnixMs: 1, + size: 1, + days: [dayKey: [model: [inputPerRow * 2, 0, outputPerRow * 2]]], + parsedBytes: 1, + codexStandardTokens: [dayKey: [model: tokensPerRow * 2]], + codexPriorityTokens: [dayKey: [model: 0]], + codexRows: [standardRow, tracePriorityRow], + codexScanComplete: true) + var cache = CostUsageCache() + cache.files = ["/trace-priority.jsonl": usage] + cache.days = usage.days + + let priorityTurns = [ + "trace-priority-turn": CostUsageScanner.CodexPriorityTurnMetadata( + threadID: nil, + turnID: "trace-priority-turn", + model: nil, + timestamp: nil), + ] + let evidence = CostUsageScanner.codexPricingModeEvidence( + usage: usage, + reconciledRows: CostUsageScanner.codexCanonicalPricingRows(usage).rows, + range: range, + priorityTurns: priorityTurns) + #expect(evidence.mismatchGroups.isEmpty) + + // The day aggregate crosses the long-context threshold, so the aggregate fallback cannot + // price this group: only the retained rows can, and distrusting them blanks the whole day. + #expect(CostUsagePricing.codexAggregateCostUSD( + model: model, + inputTokens: inputPerRow * 2, + cachedInputTokens: 0, + outputTokens: outputPerRow * 2) == nil) + + let report = CostUsageScanner.buildCodexReportFromCache( + cache: cache, + range: range, + priorityTurns: priorityTurns) + let standardCost = try #require(CostUsagePricing.codexCostUSD( + model: model, + inputTokens: inputPerRow, + cachedInputTokens: 0, + outputTokens: outputPerRow)) + let priorityCost = try #require(CostUsagePricing.codexPriorityCostUSD( + model: model, + inputTokens: inputPerRow, + outputTokens: outputPerRow)) + let entry = try #require(report.data.first) + let cost = try #require(entry.costUSD) + #expect(abs(cost - (standardCost + priorityCost)) < 0.000000001) + #expect(report.summary?.totalCostUSD != nil) + let breakdown = try #require(entry.modelBreakdowns?.first) + #expect(breakdown.priorityTokens == tokensPerRow) + #expect(breakdown.standardTokens == tokensPerRow) + } + + @Test + func `stale persisted mode split still invalidates row ownership`() throws { + let environment = try CostUsageTestEnvironment() + defer { environment.cleanup() } + + let day = try environment.makeLocalNoon(year: 2026, month: 8, day: 11) + let range = CostUsageScanner.CostUsageDayRange(since: day, until: day) + let dayKey = range.sinceKey + let model = "gpt-5.5" + let inputPerRow = 150_000 + let outputPerRow = 10 + let tokensPerRow = inputPerRow + outputPerRow + let rows = (0..<2).map { index in + CostUsageScanner.CodexUsageRow( + day: dayKey, + model: model, + turnID: "turn-\(index)", + eventIndex: index, + input: inputPerRow, + cached: 0, + output: outputPerRow, + pricingModel: model, + pricingMode: "standard") + } + // A copied fork prefix can leave a mode split that no classification of the retained rows + // reproduces; that evidence must keep distrusting the rows. + let usage = CostUsageScanner.makeFileUsage( + mtimeUnixMs: 1, + size: 1, + days: [dayKey: [model: [inputPerRow * 2, 0, outputPerRow * 2]]], + parsedBytes: 1, + codexStandardTokens: [dayKey: [model: tokensPerRow]], + codexPriorityTokens: [dayKey: [model: tokensPerRow]], + codexRows: rows, + codexScanComplete: true) + var cache = CostUsageCache() + cache.files = ["/stale-mode-split.jsonl": usage] + cache.days = usage.days + + let evidence = CostUsageScanner.codexPricingModeEvidence( + usage: usage, + reconciledRows: CostUsageScanner.codexCanonicalPricingRows(usage).rows, + range: range, + priorityTurns: [:]) + #expect(evidence.mismatchGroups == [CostUsageScanner.CodexDayModelKey(day: dayKey, model: model)]) + + let report = CostUsageScanner.buildCodexReportFromCache(cache: cache, range: range) + #expect(report.data.first?.costUSD == nil) + #expect(report.summary?.totalCostUSD == nil) + } } #endif diff --git a/Tests/CodexBarTests/CostUsageStoreTests.swift b/Tests/CodexBarTests/CostUsageStoreTests.swift index 5636bb88fb..0b64255256 100644 --- a/Tests/CodexBarTests/CostUsageStoreTests.swift +++ b/Tests/CodexBarTests/CostUsageStoreTests.swift @@ -1010,6 +1010,7 @@ extension CostUsageStoreTests { "b975eb705f905b9a", "47144baa8daccf52", "2d17f4981b78d07f", + "3c984b655688593f", ]) let predecessorHash = "43609cc56f76a003" let predecessorVersion = CostUsageStore.combinedSchemaVersion( From 63dc1cd520f08f0112bea9f123fc623e2ad334f5 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 13:18:36 -0700 Subject: [PATCH 08/30] docs: credit #3141 and #3150 changelog entries --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0499c2d22..7f8089512d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 0.54.2 — Unreleased +- Fixed the Codex cost card blanking Today and recent days when priority processing is in use: row-ownership evidence now accepts the trace database's tier classification instead of discarding whole (day, model) groups (#3150). Thanks @olddonkey! +- Stopped re-merging the Codex plan-utilization history with itself on every refresh and menu open — the legacy-bucket migration now runs only when a non-canonical bucket actually exists (#3141). Thanks @olddonkey! + ## 0.54.1 — 2026-08-21 ### Highlights From c2701d241f97b44f80f414f8400108b48e93dd23 Mon Sep 17 00:00:00 2001 From: Umut Keltek <35880258+umutkeltek@users.noreply.github.com> Date: Mon, 24 Aug 2026 00:22:15 +0300 Subject: [PATCH 09/30] fix(qwen-cloud): restore Brave browser support in cookie import (#3148) * fix(qwen-cloud): restore Brave browser support, narrowed to Chrome+Brave per AGENTS.md Qwen Cloud's cookie import was restricted to [.chrome] only (commit 529cc6c24 'Keep Qwen imports Chrome-only'). Brave users hit 'No Qwen Cloud session cookies found in browsers' even when they had a valid Qwen Cloud session in Brave, because their cookies were never probed. This commit restores Brave in the import order, but follows AGENTS.md L48 ('default Chrome-only when possible to avoid other browser prompts; override via browser list when needed'). The override is the minimum necessary: Chrome + Brave. The other Chromium browsers (chromeBeta, edge, arc, firefox, safari) are deliberately omitted to avoid unsolicited Keychain / browser-store access prompts on automatic refreshes from browsers that don't carry a Qwen Cloud session. Brave is kept because it shares the same Chromium Safe Storage format as Chrome and is a common Qwen Cloud authentication target. Also adds docs/qwen-cloud-proof/README.md with the redacted end-to-end proof captured against the live Qwen Cloud API from the user's Mac after granting the modified binary access to 'Brave Safe Storage' in macOS Keychain. * fix(qwen-cloud): recovery message now names Brave alongside Chrome ClawSweeper P2 follow-up on #3148: when the Brave cookie import fails, QwenCloudSettingsError.missingCookie's recovery message still told users to sign in to Chrome and grant access to Chrome Safe Storage. Now that Brave is a supported source, the message must name both browsers and their respective Safe Storage entries, otherwise a Brave-only user would be told to use Chrome and never find the working path. Updates the error description to: 'No Qwen Cloud session cookies found in browsers. Sign in to Qwen Cloud in Chrome or Brave, allow CodexBar to access the corresponding Safe Storage in Keychain Access (Chrome Safe Storage and/or Brave Safe Storage), or paste a manual Cookie header.' Adds focused test coverage: - missing cookie error mentions both supported browsers and their safe storage - missing cookie error appends non-empty details - missing cookie error omits empty details 35/35 Qwen Cloud tests pass (32 prior + 3 new). --- .../QwenCloudProviderDescriptor.swift | 20 +++- .../QwenCloud/QwenCloudSettingsReader.swift | 9 +- .../QwenCloudProviderTests.swift | 46 +++++++- docs/qwen-cloud-proof/README.md | 100 ++++++++++++++++++ 4 files changed, 170 insertions(+), 5 deletions(-) create mode 100644 docs/qwen-cloud-proof/README.md diff --git a/Sources/CodexBarCore/Providers/QwenCloud/QwenCloudProviderDescriptor.swift b/Sources/CodexBarCore/Providers/QwenCloud/QwenCloudProviderDescriptor.swift index 368085344c..900bdcb237 100644 --- a/Sources/CodexBarCore/Providers/QwenCloud/QwenCloudProviderDescriptor.swift +++ b/Sources/CodexBarCore/Providers/QwenCloud/QwenCloudProviderDescriptor.swift @@ -12,7 +12,19 @@ public enum QwenCloudProviderDescriptor { static func makeDescriptor() -> ProviderDescriptor { #if os(macOS) - let browserOrder: BrowserCookieImportOrder = [.chrome] + // AGENTS.md L48: "Cookie imports: default Chrome-only when possible to + // avoid other browser prompts; override via browser list when needed." + // The override here is the minimum necessary: Chrome + Brave. The full + // 7-browser list (chromeBeta, edge, arc, firefox, safari) is + // deliberately omitted so automatic refreshes do not surface unwanted + // Keychain / browser-store access prompts on browsers that don't carry + // a Qwen Cloud session. Brave is kept because it shares the same + // Chromium Safe Storage format as Chrome and is a common Qwen Cloud + // authentication target. + let browserOrder: BrowserCookieImportOrder = [ + .chrome, + .brave, + ] #else let browserOrder: BrowserCookieImportOrder? = nil #endif @@ -88,7 +100,11 @@ struct QwenCloudWebFetchStrategy: ProviderFetchStrategy { private static let log = CodexBarLog.logger("qwen-cloud") #if os(macOS) - static let browserOrder: BrowserCookieImportOrder = [.chrome] + /// Mirrors the descriptor's browserOrder above. Keep them in sync. + static let browserOrder: BrowserCookieImportOrder = [ + .chrome, + .brave, + ] #endif let id: String = "qwen-cloud.web" diff --git a/Sources/CodexBarCore/Providers/QwenCloud/QwenCloudSettingsReader.swift b/Sources/CodexBarCore/Providers/QwenCloud/QwenCloudSettingsReader.swift index 3acc78a145..30f9635aa7 100644 --- a/Sources/CodexBarCore/Providers/QwenCloud/QwenCloudSettingsReader.swift +++ b/Sources/CodexBarCore/Providers/QwenCloud/QwenCloudSettingsReader.swift @@ -53,8 +53,15 @@ public enum QwenCloudSettingsError: LocalizedError, Sendable { public var errorDescription: String? { switch self { case let .missingCookie(details): + // Qwen Cloud cookie import now probes Chrome *and* Brave (per the + // QwenCloudProviderDescriptor.browserOrder override). The recovery + // message must name both supported browsers and their respective + // Safe Storage entries, otherwise a Brave-only user would be told + // to sign in with Chrome and the fix would be invisible. let base = "No Qwen Cloud session cookies found in browsers. " + - "Sign in to Qwen Cloud in Chrome, allow CodexBar to access Chrome Safe Storage in Keychain Access, " + + "Sign in to Qwen Cloud in Chrome or Brave, " + + "allow CodexBar to access the corresponding Safe Storage in Keychain Access " + + "(Chrome Safe Storage and/or Brave Safe Storage), " + "or paste a manual Cookie header." guard let details, !details.isEmpty else { return base } return "\(base) \(details)" diff --git a/Tests/CodexBarTests/QwenCloudProviderTests.swift b/Tests/CodexBarTests/QwenCloudProviderTests.swift index 517588fa09..9c2ca41af9 100644 --- a/Tests/CodexBarTests/QwenCloudProviderTests.swift +++ b/Tests/CodexBarTests/QwenCloudProviderTests.swift @@ -11,6 +11,44 @@ private func qwenCloudFixture(_ name: String) throws -> Data { } struct QwenCloudSettingsReaderTests { + @Test + func `missing cookie error mentions both supported browsers and their safe storage`() { + // The cookie import now probes Chrome and Brave (per + // QwenCloudProviderDescriptor.browserOrder). The recovery message + // must name both, otherwise a Brave-only user gets directed at + // Chrome and never finds the right path. + let error = QwenCloudSettingsError.missingCookie() + let message = error.errorDescription ?? "" + + #expect(message.contains("Chrome")) + #expect(message.contains("Brave")) + #expect(message.contains("Safe Storage")) + #expect(message.contains("manual Cookie header")) + #expect(message.contains("Keychain Access")) + } + + @Test + func `missing cookie error appends non-empty details`() { + let error = QwenCloudSettingsError.missingCookie( + details: "Chrome Safe Storage keychain denied") + let message = error.errorDescription ?? "" + + #expect(message.contains("Chrome")) + #expect(message.contains("Brave")) + #expect(message.contains("Chrome Safe Storage keychain denied")) + } + + @Test + func `missing cookie error omits empty details`() { + let error = QwenCloudSettingsError.missingCookie(details: "") + let message = error.errorDescription ?? "" + + #expect(message.contains("Chrome")) + #expect(message.contains("Brave")) + // No trailing whitespace from an empty details suffix. + #expect(!message.hasSuffix(" ")) + } + @Test func `cookie reads from environment`() { let cookie = QwenCloudSettingsReader.cookieHeader(environment: [ @@ -103,8 +141,12 @@ struct QwenCloudUsageSnapshotTests { #expect(metadata.sessionLabel == "5-hour") #expect(metadata.weeklyLabel == "Weekly") #if os(macOS) - #expect(metadata.browserCookieOrder == [.chrome]) - #expect(QwenCloudWebFetchStrategy.browserOrder == [.chrome]) + let expectedOrder: BrowserCookieImportOrder = [ + .chrome, + .brave, + ] + #expect(metadata.browserCookieOrder == expectedOrder) + #expect(QwenCloudWebFetchStrategy.browserOrder == expectedOrder) #else #expect(metadata.browserCookieOrder == nil) #endif diff --git a/docs/qwen-cloud-proof/README.md b/docs/qwen-cloud-proof/README.md new file mode 100644 index 0000000000..85e431d428 --- /dev/null +++ b/docs/qwen-cloud-proof/README.md @@ -0,0 +1,100 @@ +# Qwen Cloud browser-cookie import — real behavior proof + +Captured 2026-08-22 against the live Qwen Cloud API via the modified CodexBar +binary (`/Applications/CodexBar-QwenFix.app`, debug build of branch +`diagnose/qwen-cloud-cookie-error`). + +## Before the fix (commit `529cc6c24` "Keep Qwen imports Chrome-only") + +```text +$ CodexBarCLI usage --provider qwen-cloud --format text --no-color +[error] No Qwen Cloud session cookies found in browsers. Sign in to Qwen Cloud + in Chrome, allow CodexBar to access Chrome Safe Storage in Keychain + Access, or paste a manual Cookie header. +``` + +The user is signed in to Qwen Cloud in **Brave** (not Chrome). The cookie +import never probed Brave, so the importer returned no session even though +`login_qwencloud_ticket` was present in +`~/Library/Application Support/BraveSoftware/Brave-Browser/Default/Cookies`. + +## After the fix (branch `diagnose/qwen-cloud-cookie-error`, PR #3147) + +`browserOrder` is now `[.chrome, .brave]` (per `AGENTS.md` L48 — "default +Chrome-only when possible to avoid other browser prompts; override via +browser list when needed"). Once the user granted macOS Keychain access to +the modified binary, the same CLI call returns real usage data: + +```text +$ CodexBarCLI usage --provider qwen-cloud --format text --no-color +== Qwen Cloud (web) == +Weekly: 20% left [==----------] +Resets in 2d 2h +Plan: Pro +``` + +```json +{ + "source": "web", + "provider": "qwencloud", + "usage": { + "identity": { + "providerID": "qwencloud", + "loginMethod": "Pro" + }, + "secondary": { + "usedPercent": 79.97, + "windowMinutes": 10080, + "resetsAt": "2026-08-25T01:21:00Z", + "resetDescription": "31,987.03 / 40,000 credits used" + }, + "updatedAt": "2026-08-22T23:11:11Z" + } +} +``` + +## How the proof was obtained + +1. `swift build` from the worktree at `/tmp/codexbar-main` succeeded. +2. `swift test --filter QwenCloudProviderTests` — 32/32 tests passed across 7 suites. +3. `./Scripts/package_app.sh debug` — packaged `CodexBar.app` (ad-hoc signed). +4. Installed to `/Applications/CodexBar-QwenFix.app` (no quarantine). +5. First refresh via the GUI menu bar — the macOS Keychain dialog appeared for `Brave Safe Storage`; "Always Allow" granted permanent ACL access. +6. CLI runs thereafter (with `CODEXBAR_ALLOW_BROWSER_COOKIE_IMPORT=1`) return the same real usage data shown above. + +## What changed in the code + +```diff +--- a/Sources/CodexBarCore/Providers/QwenCloud/QwenCloudProviderDescriptor.swift ++++ b/Sources/CodexBarCore/Providers/QwenCloud/QwenCloudProviderDescriptor.swift +- let browserOrder: BrowserCookieImportOrder = [.chrome] ++ // Default the import to Chrome + Brave. The full 7-browser list ++ // (chromeBeta, edge, arc, firefox, safari) was deliberately trimmed to ++ // avoid unsolicited Keychain / browser-store access prompts on automatic ++ // refreshes — the repository's prompt-avoidance policy. Brave is kept ++ // because it shares the same Chromium Safe Storage format and many ++ // CodexBar users authenticate Qwen Cloud in Brave. ++ let browserOrder: BrowserCookieImportOrder = [ ++ .chrome, ++ .brave, ++ ] +``` + +```diff +--- a/Tests/CodexBarTests/QwenCloudProviderTests.swift ++++ b/Tests/CodexBarTests/QwenCloudProviderTests.swift +- #expect(metadata.browserCookieOrder == [.chrome]) +- #expect(QwenCloudWebFetchStrategy.browserOrder == [.chrome]) ++ let expectedOrder: BrowserCookieImportOrder = [ ++ .chrome, ++ .brave, ++ ] ++ #expect(metadata.browserCookieOrder == expectedOrder) ++ #expect(QwenCloudWebFetchStrategy.browserOrder == expectedOrder) +``` + +## Redaction notes + +- `loginMethod: "Pro"` is the plan tier only — no account identifier, no email, no user ID, no cookie values, no Keychain contents are reproduced here. +- The 79.97% weekly figure is a snapshot, not a real customer number. +- The cookie value column in the Brave SQLite cookie store is empty (the value is stored in the `encrypted_value` BLOB and only readable after decrypting with the user's Brave Safe Storage key); no decrypted cookie contents appear anywhere in this proof. From b843190cb324c93c3fb2ee3a49e5a6905333d08e Mon Sep 17 00:00:00 2001 From: kiranmagic7 Date: Mon, 24 Aug 2026 02:52:28 +0530 Subject: [PATCH 10/30] Fix OpenRouter completed-day activity query (#3138) --- .../Resources/Plugins/openrouter.js | 21 +++--- .../OpenRouterUsageStatsTests.swift | 69 +++++++++++++++++++ 2 files changed, 81 insertions(+), 9 deletions(-) diff --git a/Sources/CodexBarCore/Resources/Plugins/openrouter.js b/Sources/CodexBarCore/Resources/Plugins/openrouter.js index 5e2a0f83f4..e28b05eed9 100644 --- a/Sources/CodexBarCore/Resources/Plugins/openrouter.js +++ b/Sources/CodexBarCore/Resources/Plugins/openrouter.js @@ -112,26 +112,27 @@ defineProvider({ } else try { const now = ctx.date.now(); - const today = now.toISOString().slice(0, 10); - const cutoffDate = new Date(now.getTime() - 29 * 24 * 60 * 60 * 1000); + const latestCompletedDate = new Date(now.getTime() - 24 * 60 * 60 * 1000); + const latestCompleted = latestCompletedDate.toISOString().slice(0, 10); + const cutoffDate = new Date(latestCompletedDate.getTime() - 29 * 24 * 60 * 60 * 1000); const cutoff = cutoffDate.toISOString().slice(0, 10); // A management credential must never follow the user-configurable API base to a proxy. const activityURL = "https://openrouter.ai/api/v1/activity"; - const [historyResponse, todayResponse] = await Promise.all([ + const [historyResponse, latestCompletedResponse] = await Promise.all([ ctx.http.get(activityURL, { timeoutSeconds: optionalRequestTimeoutSeconds, openRouterManagementAuth: true, }), - ctx.http.get(`${activityURL}?date=${encodeURIComponent(today)}`, { + ctx.http.get(`${activityURL}?date=${encodeURIComponent(latestCompleted)}`, { timeoutSeconds: optionalRequestTimeoutSeconds, openRouterManagementAuth: true, }), ]); - if (historyResponse.status !== 200 || todayResponse.status !== 200) { - const failed = historyResponse.status !== 200 ? historyResponse : todayResponse; + if (historyResponse.status !== 200 || latestCompletedResponse.status !== 200) { + const failed = historyResponse.status !== 200 ? historyResponse : latestCompletedResponse; activityDegradation = activityDegradationReason(failed.status); } else { - const payloads = [historyResponse, todayResponse].map((response) => JSON.parse(response.bodyText)); + const payloads = [historyResponse, latestCompletedResponse].map((response) => JSON.parse(response.bodyText)); const rows = payloads.flatMap((payload) => { if (!payload || !Array.isArray(payload.data)) throw new TypeError("activity.data must be an array"); return payload.data; @@ -157,7 +158,9 @@ defineProvider({ if (!Number.isFinite(parsedDate.getTime()) || parsedDate.toISOString().slice(0, 10) !== date) { throw new TypeError(`activity.data[${index}].date must be a real calendar date`); } - if (date > today) throw new TypeError(`activity.data[${index}].date must not be in the future`); + if (date > latestCompleted) { + throw new TypeError(`activity.data[${index}].date must be a completed UTC day`); + } if (date < cutoff) continue; const rawModel = row.model_permaslug ?? row.model; const model = typeof rawModel === "string" && rawModel.trim() ? rawModel.trim() : null; @@ -246,7 +249,7 @@ defineProvider({ currency: "USD", historyDays: 30, historyLabel: "Last 30 days (UTC)", - windowEnd: today, + windowEnd: latestCompleted, entries, }; } diff --git a/Tests/CodexBarTests/OpenRouterUsageStatsTests.swift b/Tests/CodexBarTests/OpenRouterUsageStatsTests.swift index b3270bc418..0b27166ac8 100644 --- a/Tests/CodexBarTests/OpenRouterUsageStatsTests.swift +++ b/Tests/CodexBarTests/OpenRouterUsageStatsTests.swift @@ -149,6 +149,75 @@ struct OpenRouterPluginGoldenTests { #expect(ordinary.allSatisfy { $0.value(forHTTPHeaderField: "Authorization") == "Bearer standard-key" }) } + @Test + func `activity requests the latest completed UTC day`() async throws { + let requests = OpenRouterRequestRecorder() + let activityBody = #""" + {"data":[ + { + "date":"2026-08-17", + "model":"openai/gpt-5.6", + "prompt_tokens":10, + "completion_tokens":5, + "reasoning_tokens":2, + "requests":1, + "usage":1 + }, + { + "date":"2026-07-19", + "model":"x-ai/grok-4", + "prompt_tokens":4, + "completion_tokens":1, + "reasoning_tokens":0, + "requests":1, + "usage":1 + } + ]} + """# + let runtime = try ProviderPluginRuntime( + bundledPlugin: "openrouter", + transport: ProviderHTTPTransportHandler { request in + await requests.append(request) + let path = request.url?.path ?? "" + if path.hasSuffix("/activity") { + let date = request.url + .flatMap { URLComponents(url: $0, resolvingAgainstBaseURL: false) }? + .queryItems? + .first { $0.name == "date" }? + .value + if date == "2026-08-18" { + return try Self.response( + request, + body: #"{"error":{"message":"Date must be within the last 30 (completed) UTC days"}}"#, + statusCode: 400) + } + return try Self.response(request, body: activityBody) + } + if path.hasSuffix("/key") { + return try Self.response(request, body: #"{"data":{"limit":20,"usage":5}}"#) + } + return try Self.response(request, body: Self.defaultCreditsBody) + }) + let now = Date(timeIntervalSince1970: 1_787_079_600) // 2026-08-18T12:00:00Z; stable injected clock. + + let usage = try await runtime.fetchUsage( + secrets: [ + OpenRouterSettingsReader.envKey: "fixture-key", + OpenRouterSettingsReader.managementAPIKeyEnvironmentKey: "fixture-management-key", + ], + now: now) + let recorded = await requests.requests + let datedRequest = try #require(recorded.first { $0.url?.query != nil }) + let date = datedRequest.url + .flatMap { URLComponents(url: $0, resolvingAgainstBaseURL: false) }? + .queryItems? + .first { $0.name == "date" }? + .value + + #expect(date == "2026-08-17") + #expect(usage.costUsage?.last30DaysCostUSD == 2) + } + @Test func `server remaining drives monthly quota golden`() async throws { let usage = try await Self.fetch(keyBody: #""" From 0b715a4f6fd5f5841f634300ad07f7db2c2a714c Mon Sep 17 00:00:00 2001 From: Anupam Chugh Date: Mon, 24 Aug 2026 02:52:40 +0530 Subject: [PATCH 11/30] Preserve unknown Grok period usage (#3159) Co-authored-by: anupamchugh <8416306+anupamchugh@users.noreply.github.com> --- .../Providers/Grok/GrokCreditsProxyFetcher.swift | 2 +- Tests/CodexBarTests/GrokCreditsProxyFetcherTests.swift | 10 +++++----- docs/grok.md | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Sources/CodexBarCore/Providers/Grok/GrokCreditsProxyFetcher.swift b/Sources/CodexBarCore/Providers/Grok/GrokCreditsProxyFetcher.swift index 74ce605f5a..25c5204778 100644 --- a/Sources/CodexBarCore/Providers/Grok/GrokCreditsProxyFetcher.swift +++ b/Sources/CodexBarCore/Providers/Grok/GrokCreditsProxyFetcher.swift @@ -80,7 +80,7 @@ public enum GrokCreditsProxyFetcher { if resetsAt != nil { return GrokWebBillingSnapshot( - usedPercent: 0, + usedPercent: nil, resetsAt: resetsAt, subscriptionTier: subscriptionTier) } diff --git a/Tests/CodexBarTests/GrokCreditsProxyFetcherTests.swift b/Tests/CodexBarTests/GrokCreditsProxyFetcherTests.swift index af7098a513..d188900f76 100644 --- a/Tests/CodexBarTests/GrokCreditsProxyFetcherTests.swift +++ b/Tests/CodexBarTests/GrokCreditsProxyFetcherTests.swift @@ -96,7 +96,7 @@ struct GrokCreditsProxyFetcherTests { } @Test - func `treats a period without usage as zero percent`() throws { + func `treats a period without usage as unknown`() throws { let snapshot = try GrokCreditsProxyFetcher.parseSnapshot( Data( """ @@ -109,7 +109,7 @@ struct GrokCreditsProxyFetcherTests { """.utf8)) let expectedReset = try Self.date("2026-08-13T00:00:00.123Z") - #expect(snapshot.usedPercent == 0) + #expect(snapshot.usedPercent == nil) #expect(snapshot.resetsAt == expectedReset) #expect(snapshot.subscriptionTier == nil) } @@ -134,7 +134,7 @@ struct GrokCreditsProxyFetcherTests { let expectedReset = try Self.date("2026-08-23T18:42:45.537749+00:00") #expect(snapshot.subscriptionTier == "SuperGrok Heavy") - #expect(snapshot.usedPercent == 0) + #expect(snapshot.usedPercent == nil) #expect(snapshot.resetsAt == expectedReset) } @@ -184,7 +184,7 @@ struct GrokCreditsProxyFetcherTests { """.utf8)) let expectedReset = try Self.date("2026-08-13T00:00:00Z") - #expect(snapshot.usedPercent == 0) + #expect(snapshot.usedPercent == nil) #expect(snapshot.subscriptionTier == "SuperGrok Heavy") #expect(snapshot.resetsAt == expectedReset) } @@ -231,7 +231,7 @@ struct GrokCreditsProxyFetcherTests { """.utf8)) let expectedReset = try Self.date("2026-08-13T00:00:00Z") - #expect(snapshot.usedPercent == 0) + #expect(snapshot.usedPercent == nil) #expect(snapshot.resetsAt == expectedReset) } diff --git a/docs/grok.md b/docs/grok.md index 348d1c8186..7c24d28a94 100644 --- a/docs/grok.md +++ b/docs/grok.md @@ -55,7 +55,7 @@ The grok.com billing gRPC-web endpoint remains a best-effort fallback. `Accept: application/json`. - Reads `config.creditUsagePercent`, falling back to `onDemandUsed.val / onDemandCap.val * 100`. A parseable current period - without either value represents zero usage. The reset timestamp comes from + without either value represents unknown usage. The reset timestamp comes from `config.currentPeriod.end`, then `config.billingPeriodEnd`. - Plan name does not come from the credits payload. After a successful auth-file or SuperGrok OAuth web billing result (CLI-proxy) or the team From 9b034df6d999a52aa59a79f24506467773737bc5 Mon Sep 17 00:00:00 2001 From: yicone Date: Mon, 24 Aug 2026 05:22:52 +0800 Subject: [PATCH 12/30] fix: report non-writable CLI path conflicts (#3153) * fix: prefer successful CLI install status * fix: keep CLI path conflicts visible * fix: report non-writable CLI path conflicts * docs: add CLI conflict behavior proof * docs: add CLI install comparison screenshots --- .../CodexBar/PreferencesAdvancedPane.swift | 41 +++++++++++----- .../PreferencesAdvancedPaneTests.swift | 45 ++++++++++++++++++ ...cli-install-nonwritable-conflict-after.png | Bin 0 -> 260253 bytes ...li-install-nonwritable-conflict-before.png | Bin 0 -> 268133 bytes .../cli-install-write-failure-after.png | Bin 0 -> 257854 bytes .../cli-install-write-failure-before.png | Bin 0 -> 268382 bytes 6 files changed, 74 insertions(+), 12 deletions(-) create mode 100644 Tests/CodexBarTests/PreferencesAdvancedPaneTests.swift create mode 100644 docs/screenshots/cli-install-nonwritable-conflict-after.png create mode 100644 docs/screenshots/cli-install-nonwritable-conflict-before.png create mode 100644 docs/screenshots/cli-install-write-failure-after.png create mode 100644 docs/screenshots/cli-install-write-failure-before.png diff --git a/Sources/CodexBar/PreferencesAdvancedPane.swift b/Sources/CodexBar/PreferencesAdvancedPane.swift index ab21733bdf..4a5996cb18 100644 --- a/Sources/CodexBar/PreferencesAdvancedPane.swift +++ b/Sources/CodexBar/PreferencesAdvancedPane.swift @@ -87,35 +87,39 @@ extension AdvancedPane { "/opt/homebrew/bin/codexbar", ] - var results: [String] = [] + var installed: [String] = [] + var conflicts: [String] = [] + var failures: [String] = [] for dest in destinations { let dir = (dest as NSString).deletingLastPathComponent guard fm.fileExists(atPath: dir) else { continue } - guard fm.isWritableFile(atPath: dir) else { - results.append("No write access: \(dir)") - continue - } if fm.fileExists(atPath: dest) { if Self.isLink(atPath: dest, pointingTo: helperURL.path) { - results.append("Installed: \(dir)") + installed.append("Installed: \(dir)") } else { - results.append("Exists: \(dir)") + conflicts.append("Exists: \(dir)") } continue } + guard fm.isWritableFile(atPath: dir) else { + failures.append("No write access: \(dir)") + continue + } + do { try fm.createSymbolicLink(atPath: dest, withDestinationPath: helperURL.path) - results.append("Installed: \(dir)") + installed.append("Installed: \(dir)") } catch { - results.append("Failed: \(dir)") + failures.append("Failed: \(dir)") } } - self.cliStatus = results.isEmpty - ? L("no_writable_bin_dirs") - : results.joined(separator: " · ") + self.cliStatus = Self.cliInstallStatus( + installed: installed, + conflicts: conflicts, + failures: failures) } private static func isLink(atPath path: String, pointingTo destination: String) -> Bool { @@ -126,4 +130,17 @@ extension AdvancedPane { .path return resolved == destination } + + static func cliInstallStatus(installed: [String], conflicts: [String], failures: [String]) -> String { + if installed.isEmpty == false { + return (installed + conflicts).joined(separator: " · ") + } + if conflicts.isEmpty == false { + return (conflicts + failures).joined(separator: " · ") + } + if failures.isEmpty == false { + return failures.joined(separator: " · ") + } + return L("no_writable_bin_dirs") + } } diff --git a/Tests/CodexBarTests/PreferencesAdvancedPaneTests.swift b/Tests/CodexBarTests/PreferencesAdvancedPaneTests.swift new file mode 100644 index 0000000000..7afb371eb3 --- /dev/null +++ b/Tests/CodexBarTests/PreferencesAdvancedPaneTests.swift @@ -0,0 +1,45 @@ +import Testing +@testable import CodexBar + +@MainActor +struct PreferencesAdvancedPaneTests { + @Test + func `cli install status prefers successful installs over unrelated failures`() { + let status = AdvancedPane.cliInstallStatus( + installed: ["Installed: /opt/homebrew/bin"], + conflicts: [], + failures: ["No write access: /usr/local/bin"]) + + #expect(status == "Installed: /opt/homebrew/bin") + } + + @Test + func `cli install status keeps an existing earlier path conflict alongside a later successful install`() { + let status = AdvancedPane.cliInstallStatus( + installed: ["Installed: /opt/homebrew/bin"], + conflicts: ["Exists: /usr/local/bin"], + failures: []) + + #expect(status == "Installed: /opt/homebrew/bin · Exists: /usr/local/bin") + } + + @Test + func `cli install status falls back to failures when nothing installed`() { + let status = AdvancedPane.cliInstallStatus( + installed: [], + conflicts: ["Exists: /opt/homebrew/bin"], + failures: ["No write access: /usr/local/bin"]) + + #expect(status == "Exists: /opt/homebrew/bin · No write access: /usr/local/bin") + } + + @Test + func `cli install status falls back to failures when there are no successes or conflicts`() { + let status = AdvancedPane.cliInstallStatus( + installed: [], + conflicts: [], + failures: ["Failed: /opt/homebrew/bin", "No write access: /usr/local/bin"]) + + #expect(status == "Failed: /opt/homebrew/bin · No write access: /usr/local/bin") + } +} diff --git a/docs/screenshots/cli-install-nonwritable-conflict-after.png b/docs/screenshots/cli-install-nonwritable-conflict-after.png new file mode 100644 index 0000000000000000000000000000000000000000..06a9d1cc154cc36755045e9697b3a000c8688061 GIT binary patch literal 260253 zcmeGEXIN8N_dgB?lp>&5C{lwB5D=s*H3&%WO-cZzcN9XXp-Gdf2#ECFdo^@XI)q-O zNDZO41Va1AnQ>;Edwz3W&ztAf_XTirINAH`wO3!CwL?^uWiFG@k^lgJ%W|?(>Hq*C z2mrX~NKA;kQ@;A)4(<=0le)|kKye@aD(=H0vuASVN=g7W+%+)(FUSgT@y8>$A6ncG z0Dzy0|MLzZDD}e6>x+&*{;8(LoB{xV0CG|inyz^3(?rImW}nV?SVSjGJ&eX1N!K|! zILykJSdm(9Zc|ZQ`^08=I%^|&V$wiDYHOi8rTyMKp!Cj@K!9uihc~pqx)oP)Bogl(ScXFU8W$P3FUr zQq6L9h?|>RM#9Gg8Mi6|G4OYUbi+4-gj+rUd}1b_X27N4(cwVRxVSiSRnqYXKkohZ zkDtHDF8Bs6n-}aaC@wBd;6)0rV^)$F9mbJE1-rW+8Mz)j@ESI`te4Y%uY^Va@QRG4 z)=2W!l)<>IOMVlly}h-7cQv!tBI2xx`J`z(Q~drP!$+Cm6Ol6#KVTHJH;AZ8T)zG5 zq)a{_`%8CQDHsol?};3dHlUk>7!Smbphky#gM;Z)ClClUvLvgkr@-M`ZJF)<_$45s zVmVTfpI=3uk6$-^02sn-vuj22$70AH_%?W8USIeq;?~tK^e}=D@8VSu;P1a)J!Rq& zN0999J(x{7*mmuRIH|8+gKn@j!m#`GAB(SKb^~P1%r-I5y_b#47ARuU`XF z3i9$&7P!N`N1okUy=+MhP^-)=&qos-9E4mwk)8D!`zN3Loo$*yB(5B-C=_jvKNI!v z@TlO?8pic%W^d}!hPtF@Pb7PNK>=yZk%Yv5y$xXj$jd7O8ZzSi9AbA$xoT&71CUo( zDAG#w_`E)ync|;&`1i#amy+`F@#&?Pt?tFd@LPPD`bgsA>MomCvNxN2^p@Jl*XlpN z{gBj^IT+&|0}Xw_peC$=7j=4EApX52Qg;A9`P#3X^Y>W+z6RGUa~%?OwY1K6avN>| z%3m(Dl}l;N4`ydCTZ$q6i)5faVoT$FDUAg)IzfTByn$N)9{2t6J+E((mmWJ&@KO8+ zD_oVmv5hyt62>s)*k~REkoA(B|6B=i4f!d-f8Uv(_ZAaDCbxGu`Gvfvs_m8-0gw4t zB76w%{8I{lKK^3}D}3Bzy>+em9XO#EpZJ)dFc`ac{lDI;LliI4O;dZ6^MS1_AJ=Nh z=-9C4M2kOBQGR|G3T0iG)_7|@Kex6+UcRfazW&?O2zo0sv!&CK*I@^PjbS1jQh&0? z&D;0|Iwj?Sfs4?W41?EX=*Pt%p#Dud}sAW9WQ&UqLkAZpe^9ekIXk~4TH}!&W~1 z{>oa07eo2O8-K3O7(j5+{i(>{$dAQBaH<$AENVPpsga|6VEpy1wrYQk@mH7gKJe@- z-gj4C_9cG02*Ms2n9LxWH6#BbA&443obi}dk&nL@^`e3C!Ayfk+{U+0y-&5nDpz^U zUjuEh*QmL^e*Ky)BkdLt&LG&wCaPfC8h9Y^a-M=t9QMR>q)=t3u`pWw)}I;%M0F9p zF=eA)ZEK}5G+Lx@_xbguGf_A7groX@@M#A}l%;*LmZh6ZZB@96=?q)zAcJuAM75p1 zE%y6RQO5;(63;LGzyW7NL&IF@lD)k>yZsN`$*0_(1?(q{L!>g4KJwjbHFR$ZMjy;X zJorltusX %9%8?OpP5mTgu1MY5RuK{L;f7*B4-KM%L(Qa6_-hAE~z511LzqFC>D z+7D(6HEbUn5E$~(A4!9kgDs7!rSr)Dq&ky6zLJtsvUEd6E6QbS#x5B?{hi1BAGX4o z?O_)$X!oi6>+~Uhcm>GBI(LfQ3`Rjk6{wUx_f%&}X6-(^)Kq@NMzWl`w)V#=ZV5{x z9Sh&3zr^vv{Zb2+6^SbZGJMP(@9)P~WUj5P*=@~;YHMh$3Erg)EIVuqV~pM@t%U7+ z8L-ECP*>f%ch9bR;A})xr#_5^SHSd@%pOH*UZIesR*Y8Tx%IiBk?9>7?eXBd%{D3VZ_D%i*;A%wY=ZTHqy0l)kurGX zkHa{6DwgLP1H?JVT#LEIg;41Hx{Wb%E&>V7Ak-ie>P|TyD;$;XH7$ChFz8Pfb<8Cg ztZUM%b$t84sF7nNY-6g%oXp2|vc7Y)(9n)V`%5=+Aj7WZbHI+SUA9h-9~UmdcWsXzLTd17te{pDkojqO6!K~T4*4tCt5OG=KbD>56wp12`S=q%Sfk0ZWS8iK(MqQ^bFE_2Pkhvv`WT+175CWOB%F%G2L zIA$;zHwhWjmX?-A$*3CnF%48>C9;GTpsx?A!z)W_UfKR_pII*sH)x&QK6!oVhGe#X zaz^@Ar!aIg%rHCI#>Pg{=MH~{e@K^qOj5)x9;@9<0e$2PZ>;Mbj|Q7OS2f3{(#JD! zh>hpl*$&O`7phgrrYG8{k-|rKh`XJd=nVxz*=sG9O=ML`GUXuX#`D>X60ZW%+<=lXi3z-hg?= zc<63y8BaQ02#ewFUR|qRJ=B=r;)VN%+0A} zm&|})6tv9DPO_9fJe*l}zxw1tJo~e>GA`$r;u`UZ0=00$87|Ygy{!6i+-b*bLpPx-@ z4`)a~>1oe~P+kotk17rejOVq;{-_a81&9}MlRxB4(raPCZR2%9Yy=`yMP)ZNkWe*J z-jhDc^`TUEP9}juy4|q!FpRu^czF2m88Cb%Tsy-;wUY31rQyk=jE#AON&Q;BtJ>Af z!ouM-+sjx!eikA(@n;h*1`*e0>|*@HcGUIstV>+K-rv!E4i^$Y)|sI|Eo9#fxzG-qMMUO zt}4K1B8?8o#wn+|7ruSj=vq1)`VipOpdQ4hzdV0 zmceBW`FFzl+pn(3OfoL+S>dip6=%u^0{$jLmp? z*x7aicJ*)u3eV$Yr(L}u9L@by`O$Z&f}4+d_*HHkldogA6|Uc}uuQ8~sWgqHSfn1$ zRqI?R$?b@6s|5ZMQl*~%;3t|@aV8hrS#y*2aMIQ9UUJY#c#}G96Crh?h?#XtWFq+7WZz_OZ|l;{k_7QWM}O zyDi^O5ZHKlZl7!+?6O`8u5)SES#{Q%Hr|+NVBr|U?6~@vs87zJurtNQsq+%=HpIj_ zpEnvk7 zX)a=>elC2kD?aaIVx~TnEu0d4k)RVbS4^n@?fc6?^8QWPO;D){YVYv8kkSppIUN}i zT@Vcw&$+D)#&K1E>0qW@wc8%^RFk)NzK~M8Q4Wi&z0KS@l4$nQ?b&~y8J3yT^D~bRG}c4fVCF9ezV+qTg*jk z|3XI2y~(GLT+WgBq9@1Y_vA$XqQb=0A4^J~lg#FUoxBzZjqxo~B)Ht)U^y@_bD*h~ zu(U%>J9}qn*Afg#;D?i5?s}2Rq%2itK{OiN#tHw7`I)%s-qP37B#2A@TP~G#q3ayqE$mbP)p$D z3!7yrJ{1HBh~E3;QZ`7YzA-)hNrEsmxi?-|u+cpMQpwb)N+0 zo$prLPERKmp`2N8Vcj3WArWX8Y_)T}VG|h?#v@K~@`1?%{)ePy+<*q3LkP_*YSOuU-JHFU|?Ezb?RV=e`76_ zaq71Kl8hRcu4`RVbV~e--G09!1N#;dfuywlkvhPpMo0%pXV>LvI>%{Bn)r`skGY~? zW;eGDR#zw1(QNCv(c+dyEDw90{-%LbrF{Uz4g`ON{t987 z7c0Wh&_*QZKpgtUGpg;~J05l}E({)}jQblmx6002UfEtj?-P=Kv$=~=0K6!AAzePo zKl$sYwilvcU3avPHD@d3R&5F2q{rV_i@3h_Z>gW(??rjwAAK4#)eHMG`1_aKk0})s z;N3(});}rqw_&6F@h^g2ZD$Uc{?AJPNQHe_jXROHYAYyFW`f z^WVkeAH)Kg<9I0E>)D%s-2eN>$E>)u6RFTD{mvHuI-_q7j)*+RrT>-Xd!>q7`;}zA zkN>q}@i-!yqMzUYyTbiDb#O1XnEHci@N;61cTLb{(|j z`H#u|kAeP=f&P`_alF^@e+=}08t5;T^N%YYQVMfJky3>lN=l>eWuHYSCnOY3q$DIH z6zTTvu544B#(UBj?hyUZJ(bVW z`SG(ZppsH=tSsL%NlC9mOk-+k{~MA}Y!Qv-zv<@wx$6+{%y&n?Z;RCMK}9OvOl!MX9~%FJ>s!_XLgI6lbyY6@SQq4&XeL) zLta_xZ@f27hof1)3VvBnL#%;V1%AaMky;tl4JqMB?lU|(q6fBXz`1L>WkeDryI%Kx zmQa5+BBB&GDe$hE!Cub=8PT%?xj)OxD~Mb$Rpl!RN-T`{Vg35`@d)Y_NaPEfc>$!N zdnNgBW>10l6me0P2K6TS9!==&>ww6wJf^V9&mU7)G{Gb2kV#U@I7u zf`{ekx9}^+KcM;dx?yS#{sl&W6|sL3i^y8WBU2a!MgNGLipuS^9~N9v36w(6ML29B z84Z1#iy--bEbQ9NZGdcgSxcSJePR<>)X_k+MmzimkM&a#$1{mBz8AZ*ulxU)p9TK{ zEnr|ANPALWTifyGc9JdsAv@-G-Uy55Dky&Yb$=Yf*SS zJ<1|Mq5u2UeKlj_3rxKvK8tQtvW7r%|K8vHrNDfjA1fSK{O@-)M*upzyDLPRDr&?P zOiVJgw6yh{G@QIQ1L407gOvcKT*DUjTM!cbo0s9cNkV2htI<1}Nak}GP-Gi-z}0BU zu2WPVPA53t#~|#b(yOic%y=l9!Tv{PR$2yVhs#TJqwRmM4Ka1&-%>3G1fN4$6>yF? zzo4N0OSP9Z&;qJaO`VD0YfIBJft1%k#z50M;?fDthUne6srx0K zF_f;xul<_SC{(rI&0q}ZAHPSfv+EGN!@Ig?{3T7;&+8aHX;*Xh`Fb*B7hTiT%B=Wd zyeLWhuvvWLdl0Zvu<7W50Ccn7-mX>t6N@TXV`Cah^(@4@CUvp6xdaADu$w5qPv3lU zBr_RrkvzTBg8X)l!8j-vVFCpc?PTa*n!18@wXC*0wxp|DnrxImKALF6oB}7`-`7xI zg5uzx&dbCSkVIwn3!7kaz=i|D#7zD2N;%ErSEiM@-77`xSKI^r zXa5`fN}XB%!ErUeMQ*w@s-&h_gSF8~#bx_`-8 z;N(Az`sQ}QmKeV5VM$3)F`#v$W}3e$OY@i!RTALzb-e%rB` zTBPPVa~uP^%;?Vyjxjsep5iLscDQVjwvNuM{U^@%J&F9?*(xbB_PWIg)&88cv|IFn z+4qa^kI|b|Qn#;}BX3)&;4@7s7n?>@y7Tbw6OhLEQy~^l)x@NRaYE(b?^nJKx4I^)0 zP;;Sf#S}f#dFxfouL8mJuoVAP80$*iPQ@8ofGObE_kqj;&yi45#>&+ol^W8Sqhgnq z$o*`3*x`5dCMg#Qbg;zrd4R?1yITN7qY|zX=*BlIgxH=U+o2jt_r8hOw`*qJi^r*r zIEgQOx6~bnF%z^+Fu{*zR;k8S;se@o`P^592Yl4Ncvmft5|LY~D2b+SqiMtY#5@i& zoAUe_;x0->FfY@JlE7P z`#xNrCK+ELHqkf^jJ_}Y{V;l65{NBLf?;ifST4$h{~{b@w|(*Y0G)kHg?2L!`f>Sm zuc*Bz9z&m2^k5R0d7*{2$cnLsO~_2qS1@|4>EtUF=d;UV;(xvN;BS`a&l!1 zFBjDW%zHizo8zqf^C)zK2YP%HT&D;w4r3G*s!9w=V^`JIHg9Kye(M(nMUeTzZglin zJeBD!D3m7@M+3)!*md!>b*J^IS@^)mj|uBxyk}qiZxe}{IGP}7*BFv7eQp|KxPPU{ zP1wb@ro`)@>9Yru5Ks7xmpfm#sxnTF{luE$9(c^a_FMIBXU|NHZ4Xc}=sXp$x%kO< z1o8^|6FPGQEw3#3KWtv}+|`@o0NL1LGtr~r=uAkG*@;;t2@;bAb{Eo~H#wnjs0f!lSd(WFI zx@q~C+zhHpeZh}upfDZ-t*7pUtBai)PY730BL(ZYO2k2#74zYvyE0R_ifV?^XNz+j zE8)`rRml*c!3a_GqXa&ySJrNPXt6&}d&EujhcH;IY$kpkhJp4DwTj%c`dc zW}UYhS4r&mLcWDLb&hkwvxY1t%gqo3PE{{Aza0s5H^m*us8Ppo9RZMP10GWGrfd@; z%p)~s-BkKj)>*5k+%LWm3$K^9+V0FRxbKUq9jN}|jQgf>J}kwH;#e*Ae(9BK^_Gaj z-C(ze>VclA_j&uQ5)GX$sm~WI2^UuhvQ!uTp|p9*Kwp1>`ilHyQ3liN$xO0qr#@p? zTCOM5$ZX|=QLAkUu*2%S5B|de7wk)s=ks4&7Q%B=j+bCW1zkJsDaLCj^IsYpJWhh# zC7*e>_>G40SR)95e1_BjtrB@TxsdSv%|vHziTKM&lvOekj0AxcVQL=C?idwOn)ACe zqc=pxtA@Y=_TzKlu#tdiwwt_PiRx3nn>1$C3>zJ*h|r)8c~6;1TC%H-E82RUd@Pn%ndO~^!EPuPg>a>vC~z=#LISul*W$YPgpjO#etyD zCpT0Ktbs=z?HdcgHy*pm4!A`yWI+Hla(|pB7X0&p($|q=bcPLkJ1*U$*PqS+F zWEpC^Iv5u)HX+39RZ@%U;u^m|ev;Aqcu<*H`GYC2X`ct7=K;>YtoUne(+W10y$IqX z&U?eTjmZwfgx0db=Msz5zx%$)wLPfY7a}c0`svGn^H_PmAFU*l;`!$?PCw2UK$RhY z@C6O(_64(zkNn?@n-4|oazantSph$AE7?>wy3P{E0Ws{NhXXIq(F|2GF-Sj;BqB2O zanca3zH(P|NO}!dt4MvK>8xfX;ltL{QPOjnfCH{EZ|5~oGs2L&lP+MbdaUQ5A>x<; zx!$PQo+n%nS+S#N4sj@1Et*N1{5aBC=bB-b4~;b19?qDY5_LE`DP^UtH#k5YQe?_< zkr-OJy?m)=UAkv#F2fU?y6UQy`aC{T=Eh~F5;HxS6@!J&FgkHDTv1^)qEAg{D}J*U z`J#K*tXthq9V830E~v-23O>a7H-ntW;p~_7Amgi~$SpaZ!G4&vtw zVpJVPXVBDxc?XL%UU4YF`y^c*qXZ$Jy_sF@1VN}F3WEI-!jf$2AhKdGwRFB*z}f-i z@;*N{+6Xl|G)UO2obMhh@#Z#t>v=3Z+x_8kITSI||5aP$FwLEo7PT>H(`0SN_@VJE z(82kUd1thWsQo#nTw!Bs_Q>9I%r4s-J(Myo4m|WoaC1*9qy#&s2sDMv z3w>sms#yov-sIH}Zmo2E))k&Z%Svdgtq8?@DiioKA2Uts zF%sx37Ld-Vp#$Ojv|H_I)vNQEr(2s6)JHmQfF)dbpfM#4Dd<&0hfHRGdQe&gPrQU; zt!C^bb(qz_0~LytK94-H`&XUSl7yZT&{sBvpDi?HtY6o)G=c|b_yk1U>M|GzV2{s7 zzQ{$53XzOb zo*b@Qh{urp01Ubbv|Vy}4gGYq&#U6mfBeajr3nsIH*beFVf?p`80>)F5%3AUT4S{i z63?zWz;wBplXZ+uqo>w~WF9l?4%D|Qr#MmUcx&F0ipbHk+DoA6dk{^Elbfqx^9Ki^ zD^>g>=zdA^?8zd)8^!>F07Fd3nb-4r(X(-r%|O%f*v%d{mpq_)9$hXc%AeHb8xT zT4t4~h|^C7x`eq{Ud}U7gC=gO6HHh_nnYZJ;wn)MtWJ{D6_giMq4L;kC3X9Qq3{Y4yey4D)qndbItst(l-F(m!teBY%NT1-e&s&TXI>=N+BD{JkG9ApYFY%JD>}Ynnlc0?^Dhl){xh8LB5d$B6$U| zWU$5WK@AFs#mko`vI0g8$;6Lg)SF-@6z zN3k{a)0|Bwym?~|d%j~_ZnGYq^&c)UrwGHm>L66_73{wJ8jwFEySN+lnOiwY=pKC= z_F&Be@@U}ZZ4Euts@6RQ+f33`g?bw%vlpzgsp+I$@Q$L;WfA~#vy-*>&BWW6v0jB+dSE6h9u*It> zz$EJ41a7CN`E~VG zOhk169(QS+;9_ril-T#1KLT(c1(>0W5b8g`VaG&plC;D#s# zvY+A2ExIoiY{N;uoUChC%Y!qz z13M6B#$((jM`UH3vOUZ$?lR5vN!lzO@vyICWORJl-qwV<>#wRc@^=Ie|4o)mA> z6EkAI+~XWgsyE(&5N#@V!JwV=g!{t~i-T;_e($sT#hcG|AlXVb8_Mirj_#feUiQTv zFO#6&pLk5IP|M-g2t&8Sw?rBRR!Mzb>C)|$`p)Ceho*W8Fp6`zU;OWr3?tT3r%Se* z!`lFIeD~6OudF($M6L$l(1{yU-o`1BUa!C?2;WY}9dhYt^n9p|(sX`Iq~+|AmG!+} zKsLC%HPgep_)MXZy0+x5MuSt;4ttHoz^W_-{VmoW*DI&(Xi?0}4cH0e!n9U6{fLmG zTib^FCspdu1JyCbuG{0t>1TPuS(ZX1ro)w{)RuzqH8G96Jzt#B2qmIBc~S*$?=lbJ zdHOUHd=<4R_CEgY#-OhLd#!Yt4nW9+bJcn6CmyH}n^43Ha?3pZf{&aCz@IXt?AV@eVmfRm`$EN+!}OBZNpz(<(9@PM}BZE~-LyPX zvTA)$$TC1V5Ku-1dhXjsh-j<1>M>3TS(Y)5LIoXhYo+mFF@Y&S1 zC87I~d%pcK+^YT8DV{a1A3c2LrYQqWfee5*@>V54X>|~ci)huo22zfZEL_7MTh>gB zCR9PBG!-B-EUM$_k(83F|8B5+lqq16yRH4HGQMs1PyhDrffmiv`vhd$MoOF{F)%kBd8>RcHk)?+~u&8Xns742rWaT&QgyTU~P= zhGd}fFgtZZ>;ss9zF6|?Bk2IU3u3fmcN;Xdw5D)a%FiEI^kUD>6pT`SZLw>1ylQ#e zEfN&zdUkSzE{|*Y#^`={tM0T~UlMvfC)q`>jx)+RSh(7u=J?Fni0xS_XU6Cu_!VvY zZT+RJgEcS5UU|AD6J=ABumLol4UitXhI6Q8x$%}Q1M=F;Qgz>g*9wUB1%em+hQo2~8df)%n?s zzf@(7Wl1ZySiY+=+K&nLqI3C6+}6>9EVY$7!Lf@MuG6 z>b;C+3Fq&I)Za3ecD(Ys3lCsrQq!EPw{b2^R@!wS(H*^NL_2+6$<_&Hhh;-VGP?*M zJ-zO<#&%-Rp3;m!^eO zUcXI1vLNk?%TKCA&^Zm~JBSSha?OWJ<%pa&zzZ-*Y#55wz-D>WVP~h^wBgyWl`^N=F z&d(ZOxFKKV_Y=*+zIGcuKi~NtIoU00BPH#1Z+64?okenIU*wJ)Y{mP%+IG*7N&xBP z0D;FTQYZVf6GAKjo+>(8SMcUdxftJE^{7V+SFx31kfpv|j>Hh;tszvW?YNn7X(2Rs zefxlNyB`gYYU-}IuFc`VAi_JTf>X5Z-V~Z@{bp0uMcHBGM{J;qK_ct1#^KY!i$L-P zRSNLK!2p?X=`^pkC#QOdc{Rd-H=Kr@O)O@U&pYuf%nIR@w!tXv^DQ+;nbY!|v7*$D zFR>Fj^Vvi&J{}rTwqiTLYygEKxgf262!a$8+O81u(Lb(9y4{+Cwr&fBS+16}9S zgV|DCgfx{0X^)`!EtJ}J|NJ^6d8hv)7~9`UK92A{8ybeYN3xb)2L{da=cHWov&oBj z<$QbQa?F+I6MKlP2&t4J!EcUs$m09_yrDN_dK@nMm_l{6p;O8red)UZFqsu?f0@!w)(nlykrf7;k!QJ)Y%x{+!`Kf7eYv%X*VJ)f<>Gck}mJM>yKv(gpn zHOOZpC+zBT47tacE>;4Dnf4}D!u1Z!5{3_h()X4Td!f5FlFMJaVnfHiewBtv2oEr~ zf+YM8jdS1yhnB$iVBZ@Mu6;kEo6ap@>Y;;HQ8uTQUQ&NmnUb8tm+XL42!(-~D2WfU zw$iBTJ`7KIvbexv1B1+ntj-aYd`j)1U7}}av-=J#pKDK9gsX&pbMf^pMs04qGBa4; z2_t53ps;*{8my(GHOk5{+g-e`y)^?LFM%J(mguj@gAE{>%x;3uNNS}g?%eR`KaD|Y z5O&^v?9r^e^3WY2b*!$Rz7Vl2jliiBsVOMBa7TecQGGcQpD|KwSGL=u_;I~pRT93D zhA69)MC$BCJu#N@L+-aR*{IDkoM5-(O0Qd|v+X&y`$%parh*>Dxlh(A?rz=@7*6-Z zc+bwkqdls&K%Cw2v3lqIoJ4B}*Hc}WE#Q`N)id7+qZ5RR5?<-#q|kZ&GmDVyQG{91 z;bthOy_3`D9I;ckA9Y5qm|L$F!pGbg#7R@`aUF)!5V7m?KIWIj5{d6`<()3=ei_VS zsj)hXJDEQLLr?p%4=px$5n|KK$RYEu9QDuO`)06=ZuX6qAV%VR!?&qE7uv=#Cby&*6N7xTvtKEjOqk7YtB`Ho+$0TX} zCHxcHL$PE=wU%lfuY*g(CwV0)IMf2A+5obFVVA(fI;!SL7J|7pB{&p1=@trZ6+tdk z;vy{#1IG*tO+OQCD0YL1OnLQ$DQ({Plq*KSTFIdWoeWIsjnqyMGkJQm{jRg%5+2`3 zk)5+`SNWrQeg6k*)*KKstx| z&Nf#jJ64KmO~<|ohw{3!?K;Otw8&Fj8d;9vV|m(-ZbDobAN4V==+gB2mrGh>;~ujf zZ@pECuU4eXu2+O`)07{i7XHCt2oT%qL(66M_-YR z6cC20#lr^!RfQL^a{?lwc9m*SCS|Rq}v{VY2mr~ zd)##LB97NKaxx03z?t47c{wiH;DjT1Ef;x}BpwymxIf@5f-|`w2|VKQIfSJ;uZe|= z#B-Je|GsgWkN+l8^H`{2Rqmm}#3Ogsjtn3Fh_VXzp()RKIhHJhHAZhML{R|sYW?tr zGO>xh)QTz|D<#46E8PzRLBG}71_C%l)169eDU(b{@PjmsuX>q(i9E(tZ4a9yF8u)Y zJefV#%bp85JN4?;N03A7+s7<~pcjXG7b$fN?O5CdTDiQB#H-yQ$Hm0mGVhO@(WDzD z!1LGlnMTzHTyKxfZrdH7VeAE_KLNRLxmy>MRY}?T-WKo*O+L;o9<{L3B&oNl+JAR; zL}4VZSJU4lDAjOp=__goljz!su$k836E`%%HdZQ2*e2|wz0Sl-9ul~~j;Dl0>7X*2 zSxJs3a_Aieu8Ne?{q{USu-I6}V3JE#&Al1r5#GTI9Ak#i46mU&*5j26=fU{`ZYjsh zHRD9$hg&WaWOSkiRmO{O&#;K8-W0aJ@ay3eI3DSkDu+PJ$usaCVe?V)?0c1`0~z{6 z0HBX~<-}6TR+IQe2|lO&+yOCVVrYLA9&Ix<%5QZdmRry8Y&R|kU--iKT^AhIA_xS+ z>pMLre-;jXtSOd0e|3G}iRuA-t&tIZ06gCrxJtZX-Hs4FFFak1#IVKMe`Q2!Z{N{q zE-%0my1VfOm;0r>&-5v0611C~TQJ%{GdWrjd-m)bdtw8&6b)(X~$X6m}hGvEd|C^@hG(iA4a_ zq0%MZlfWp+jgK29>0-Zl@2TP!3HdHaO&hLq9_I>Yojqz!9(BXgSiBaVN^x7Z65hat z!K=%Kzn$<9W#)@?N*9OAuNUUQQyYw1@SAKJ2joRa3x$_HWJFIhi!DtX-7k0;=MS8I zJoCM_j~;kIJ`yKpak=e|>?lI}RJdOOYf0&w$3e`l?zw#hJR(=b*SEJHX&#%3|02F1 zP8^bkP*%wg9q|VaMiOic;sp(#ztqsExOc*xdYJ}g;TBAv($@C~UAypkAh(VP zmnk44$NK?cOwSP83km}Kz^VT7Qa?WS)A`~xyeZ^-dOd{DMxM`oD%xKJv&=MZ?n-Rw z*#CXpu4DUA9sNE0BvK^rlLa3N3JOT$b%kG$20v>HvNt+ZJiKI$P<}3-xvcXdA>eQ6 zzgKCmQukZ<|3E0FA;^ABVEk-fnWnti4+!P~k?fKd;=1l=|9^sE&gn#xkc1X;zb&1F z>)F_9>OA`cvB}}d{2D=c9@cL`@b8GmWMVQ`KxPL~MIT1kW6gT)RBgq?@2>kGZ1lG# zlbe3{zrk0<==N#S{u6x~OslV{X{!`#p*6y=oW9cs|^B#~lx}7it`?y^a_42b!5k zZg+Q&g9`yXGul00i;b*DW}7SU@w;Jy!bg$kn`0h;%rfrh zM{Za}ro*=vEMl1drLD(b+qnNC=x%16r-HmfQCeBc^%(+rEy*H8H|gF1y&v!vV4gi_ zoCq&U;T-qWC$qsg}v~_;Pye(7)k)ed(!gzQ>E|(7-8_f8V{Iof7W1LC$F` zdWHW2+x-)(@c0%8aF<2-M)+TcB{#aKs@m0WT2-R=w^FQ+XyTE{yanE#y3`yPj zC8GV61yWgX{YmcWUw|3&hDyBBriMq`D%`!EJ?8!^V(Q0o zQ$6r;$F60|NJ#inQc>x?eEHIKx}k^&p?48Pi1?Ix?+;S;%lN|KLIni{2YPyqnUs{e zFtJM|UZ!SFzfutg=)O9wIR0&Ty{RI)sY*d!z9=*EZq8j?&)o28dfCsx;z1ClDt-Yz zJ&EUOlvEUf!W!?Og*YDQ2|N1d);TlxfBQz^uF1MTI}skzc9j^Hxwn;?2<{W0amJnG zLk8D);{S(o#v$uTV0V9OJ}||h9Fh;z`iIz_{qN~yFK{b9f;l~Z6=?rZlbjU3quSKs zbdUH6;I7M)_}}@IX$s#>8_095EsQ1_#jasQ>#jFgvudjt>Q6)-n7@YdfCqg88|Bqv z@w4Y-c=r6mBEN|yRMP+CpWj*B_#p}MX)AJ4O47@JWNBK8aOd=O zRVG;zTn7Nv>mKsyq$mG#(3tN!DN?Y;9o+BWcuKXkzTC6E^$ElODkc@+%`_axW;pc?MzBNG#U zN{Y(t@8-{9r2k2OrYHhDNI=%?JXT3;oD?sr1r}%t{9^)VwkX-V98Dnq@&iwU7-e=d zykBR=tpcprC!&LyyxDrs`=M%_;MgXNBvEI}!R!DVy_t(D|MWF%S7PArLg0_%mum+&N)lmm5 zD*&URs?UTB^P%`OC~xIaWw z^+!alU#uyYe1i3x0)Q6alGlatf1W7N!yrL4;|IE!e;i>(Drkj}LB@M!9tBm)`?u|}@eL_^8#B1b@>%b|Fb6 z0_kXDO%~h2m0SA%-k#$Jq_s9&WMP8OK|FNHg=J-Jlp;%$PXegl*+{5#BGP`#V2etC zRDWec7RJE9c!+ig4t^7VJmLlPPToAD?%)BoyV=eocm?hMeV$N-ApKkk2_OSBN2-4a*TbrbanNCU$E`Ic&VYIGv6RL zXDy4#cy21Ct?i+Z$UZ!2+Bsb$SXj(!+(kzxf+KA#Uut`UEIz;0kF{F^kNO|yq<>DS zKMq1H1AoSI8VsLFwV9hYhbAdpAe6SqHqbnZ{=gH)l*8j^P3{*I@2OZ^qPJMWmrVnU z$Dor`2vkrc`Ktf3c>nxnF=b?z44ox|sayRA8YVfr`O25VMFE%iXb4`%0EBTJv#k0K z&y4>R*z!u2DW?B#0kgmOOFUO_7W@d$R!F3=;)$tBTHd1dw*V?Hwq4<@>-Yewj+dB0 zaI*GIhF1UA@bk}K_Rc>FI+loL%1_2?w}&SzhqJGOxznVks%nbv>wsOujE6uKa<|kC z`_JS4uTTDoVlFbxkQ9gTaBPkD?>8dXW=R!ZjDp~s68h!7c7WuMIpTJNXYO^JP2~aC zOsBLDbpIVs{!TNnjQ!1Kq=u$PM?cWW#N)2gY>uKx{Ah=$dO5r~uJHfRA$CyVNafZq z@}K2~VqkQctbVn~rJS<4IR}ulx1sITK0FUg$46M;PKqice-=Fth4kkO8;D0d^rS_# zxxYqS-~D@sOTH5$&Q2jv)PSfs5N!gf&&LQuk5y#Q+GmD`9L2Pz^VH+YhllBVm_x%M zZ_5e9NQM$zNe((F6V9vdaCJ>1eg3>CH#fIqGtf1AS#_cMxVl^_X>)rMwV-W&+P1pj zQq!K-CX4m&?MxMd>~j)${D<8_cbN9ok-Opd4w;y`-AJK_sHKZkhv2wjp>ta%CL5@= z$5NGH1z->gnh7Sp5`ZiBzIArHKdhNQGap$1Br@RECJVqFqIkx=^6`eh+u*+5x9n$o z#Kav4g!5#w4q9y(WLkgH{?%@4P&*0#-@^4)D#8!;*8Muynh@Akjotay5HIM;_P!NW zguOR{8#Hv=BMLJ%e7u{H4Bk$4PkXF>DX;ExIi;x!`1v$FLXVGK;WhxRQdv6eBIoL$ zVq`v^MYphTWGq^S;@RHsj@!X^=i##U_GyS}Uh2J+!-#)?faqzF?tqoDJG;H2_bw2^VuCiIlk1J4!ge-c7K#ywN=Xnfa`GCNzdC99u7*!YA z(@S|&&op^0aQy;qJR<&IAX%WAm?_szyO-&UG5Wv^wxOnxme_rXyBIoo6d^d^JmbB; z9r2~W*$#K`&Lnq|!g;99E2$ar-r{o89B>G`sncrquG>BRYWUFZ@KC>GU%QHu!fq_# z9ml@3;9P1oL4SW);!D2Ae}7PMPX_l+BWzjMEAq{{U!~0f-gj|0Gqf}{9Q403o=*|2 zS9ZEkrOXX|(TeRs@(cK=ZmB@<+IZx=sa1oB{x{8nWEes6k`-*OfKO3qp4(i*=}8FJ_p1XS zIQ&(B_*0-S-VGT33ZSIRq64`7kg_*lpVs7MmY@0QL$jC^to8)m54c@xTqlNVDz!t1 z{}l?cG~th5$8(|~`CMdDW(830z266xol^sAB@Ttqhu=%<(D(7$x9Rz&UG`D+Pv!)1 zN3_Fab~1==QD$4^y3v1Z@xd3P1}=w6iiP@b@B z-i!1O^tXrc?}&}%4v$?b9Fh2aPLkC=;s6p>g zjYI*v{H8;@<5Ks=b%e*}=tj}av<6>?$4f&^-4|m5vP zy}P$S`>Bt*VYRSg7^7t3QRP}0a?{P%PC|1jqVcI8$Zgv_Xbd0Lh`~b5Nyf{m?#ou` z&;!ekSwiDakEeagKI0CF^+Jt}SMxT9gIptFPm>T{@h!Q;E&&<}+{iB|?yrT3u}t1j zj`5uOTX$qEA4g&MF?v;v(S)b)Ib31lH%P3!AR3FZVHH~4l>hU954mT0w)>b6<$`!$QJyFYE<#(nUS zlr$xAe2~}FH~uX-1^9)&mAQs#kFe{OtUWNGuFJ|6Owp=6`Eb7)>9Z&5NLpBED`i>m z--g$KsTY;ZnMv*KaTJ3BqN@z?L#DnRqEeAsettR713nx(IC+Rof9Q0Wy(>{8 zCpFT&d>Odmk4jMr2yBO_Lr*zJ?jnwv4Bl2gGOqkIud1qYYeOauYU^6xx7IPWTLc|9 zQLmf@Qa-fe0Q#p3_3|qn_^4b)xN&vuMvpS+7GDc`3z2JwkogH3RuWt&0wK^Js|2hZ z?a<$PP<3z#f2+bD_tIG-^Q899ApG&H@8@Q-P6!=s0PQ+Wvru*TOe|L1&d3&?LE*lLLy}W$4k@A``PS989ArK}hE*?dw z#NSsT2nry!int!I=O!FIXe4msM^P?#)C2lt6R%ijoqR zn`6O-E-FIdwFBR99$|Qk8@zPYbi8c4oqDbDoG1VB=$qGW)@6nw#=&5kFoS~oC2C;0 zJ6-4B_UFHY|DEOv@K%Z}OCziPI1b0(G6bhurJ*ouMoBy)b?{z)F6qFpqot{7Iiv5c zujO{L8nVDMqesZe<#sT;+7b&R=x$S?lG2xb3HR}8&N9R+9dz`%;h=m#0@@GrIJ7Z* zo*idJ5U1U;-Xo7gN#ZdAnEwbCz zNIE4C+xoc?#ev%OKC z>{C@b~Qh2 z7PRA{BjZ1Tdnetw8ZuJa1k$}KYIjVN7~$qv7%0eR<*FVj@=bMdfg`4C{$k zzYu%u;49CqB+CQ!5&@QGPmP@G>I*_4yLs+MC$;#g`aG z^63dmpmvvYjgCv+C1eBkV6O5K4pWDeoobQ@*b6Q3yVqV`hH#|tl~y9e&{xWC$|sZe zVx~E_#`ia|&@2;ID8D7B&rgO)OP(>4&S;Di68Q98n56≪W$l^^eAt{svVFG8L8K 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

mTfg5d$F8I7TxgZcqHT0j|t2A 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𝔜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

1wZqIJT*WgV@25yW{$wLb;MZMMJx75 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 dPA`{%0A~h^B;~{<#{ui>Hw)WeD$l#$`VSXfk6Zu% literal 0 HcmV?d00001 diff --git a/docs/screenshots/cli-install-write-failure-after.png b/docs/screenshots/cli-install-write-failure-after.png new file mode 100644 index 0000000000000000000000000000000000000000..331d22b38b83ec3554ef9fd6c0afde939304b306 GIT binary patch literal 257854 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Û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

u(^|bn2_ocr{uMq`cfPq& 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 Vd2SRjG-pYR80eWK7h2JlFHz)TO9HBWd%);_a# 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 I*#xBg4<;iLGXMYp literal 0 HcmV?d00001 From daa16fb844d1e3d733157d415b82af01fb5f7164 Mon Sep 17 00:00:00 2001 From: Akshay Prabhu <12824090+akshayprabhu200@users.noreply.github.com> Date: Sun, 23 Aug 2026 14:23:07 -0700 Subject: [PATCH 13/30] Fix single-quota icon scaling (#3155) --- Sources/CodexBar/IconRenderer.swift | 70 ++++++++++++-- Sources/CodexBar/MenuContent.swift | 3 +- .../StatusItemController+Animation.swift | 6 +- .../CodexBar/StatusItemController+Menu.swift | 3 +- .../Claude/ClaudeProviderDescriptor.swift | 1 + .../Providers/ProviderUsagePresentation.swift | 3 + .../IconRendererHideCrittersTests.swift | 71 ++++++++++++++ .../IconRendererScreenshotRenderTests.swift | 87 ++++++++++++++++++ .../ProviderArchitectureGatekeeperTests.swift | 6 +- ...sentationPolicyCharacterizationTests.swift | 9 ++ .../codex-single-quota-icon-after.png | Bin 0 -> 11174 bytes .../codex-single-quota-icon-before.png | Bin 0 -> 11219 bytes .../codex-single-quota-icon-proof.md | 24 +++++ 13 files changed, 267 insertions(+), 16 deletions(-) create mode 100644 Tests/CodexBarTests/IconRendererScreenshotRenderTests.swift create mode 100644 docs/screenshots/codex-single-quota-icon-after.png create mode 100644 docs/screenshots/codex-single-quota-icon-before.png create mode 100644 docs/screenshots/codex-single-quota-icon-proof.md diff --git a/Sources/CodexBar/IconRenderer.swift b/Sources/CodexBar/IconRenderer.swift index 774589b78e..e242290ba1 100644 --- a/Sources/CodexBar/IconRenderer.swift +++ b/Sources/CodexBar/IconRenderer.swift @@ -3,6 +3,23 @@ import CodexBarCore // swiftlint:disable:next type_body_length enum IconRenderer { + struct QuotaLayoutPolicy: Hashable { + let reservesMissingSecondaryLane: Bool + let treatsExhaustedSecondaryAsMissing: Bool + + static func provider(_ provider: UsageProvider) -> Self { + let presentation = ProviderDescriptorRegistry.descriptor(for: provider).presentation + return Self( + reservesMissingSecondaryLane: presentation.reservesMissingSecondaryIconLane, + treatsExhaustedSecondaryAsMissing: presentation.treatsExhaustedSecondaryIconWindowAsMissing) + } + + static func style(_ style: IconStyle) -> Self { + UsageProvider(rawValue: style.rawValue).map(self.provider) + ?? Self(reservesMissingSecondaryLane: false, treatsExhaustedSecondaryAsMissing: false) + } + } + private static let creditsCap: Double = 1000 private static let baseSize = NSSize(width: 18, height: 18) // Render to an 18×18 pt template (36×36 px at 2×) to match the system menu bar size. @@ -28,6 +45,11 @@ enum IconRenderer { private static let grid = PixelGrid(scale: outputScale) + static func fillWidthPixels(remaining: Double, rectWidth: Int) -> Int { + let clamped = max(0, min(remaining / 100, 1)) + return max(0, min(rectWidth, Int((CGFloat(rectWidth) * CGFloat(clamped)).rounded()))) + } + private struct IconCacheKey: Hashable { let primary: Int let weekly: Int @@ -36,6 +58,7 @@ enum IconRenderer { let style: Int let indicator: Int let hideCritters: Bool + let quotaLayoutPolicy: QuotaLayoutPolicy } private final class IconCacheStore: @unchecked Sendable { @@ -120,8 +143,10 @@ enum IconRenderer { wiggle: CGFloat = 0, tilt: CGFloat = 0, statusIndicator: ProviderStatusIndicator = .none, - hideCritters: Bool = false) -> NSImage + hideCritters: Bool = false, + quotaLayoutPolicy: QuotaLayoutPolicy? = nil) -> NSImage { + let quotaLayoutPolicy = quotaLayoutPolicy ?? .style(style) let shouldCache = blink <= 0.0001 && wiggle <= 0.0001 && tilt <= 0.0001 let render = { self.renderImage { @@ -178,8 +203,7 @@ enum IconRenderer { // Fill: clip to the capsule and paint a left-to-right rect so the progress edge is straight. if let remaining { - let clamped = max(0, min(remaining / 100, 1)) - let fillWidthPx = max(0, min(rectPx.w, Int((CGFloat(rectPx.w) * CGFloat(clamped)).rounded()))) + let fillWidthPx = Self.fillWidthPixels(remaining: remaining, rectWidth: rectPx.w) if fillWidthPx > 0 { NSGraphicsContext.current?.cgContext.saveGState() trackPath.addClip() @@ -638,8 +662,7 @@ enum IconRenderer { let providerPresentation = UsageProvider(rawValue: style.rawValue) .map { ProviderDescriptorRegistry.descriptor(for: $0).presentation } - let usesMissingSecondaryLayout = - providerPresentation?.treatsExhaustedSecondaryIconWindowAsMissing == true + let usesMissingSecondaryLayout = quotaLayoutPolicy.treatsExhaustedSecondaryAsMissing let effectiveWeeklyRemaining: Double? = { if usesMissingSecondaryLayout, let weeklyRemaining, weeklyRemaining <= 0 { return nil @@ -670,7 +693,22 @@ enum IconRenderer { let twistFactory = decorations.contains(.factory) let twistWarp = decorations.contains(.warp) - if weeklyAvailable { + if let bottomValue, bottomValue > 0, topValue == nil, + !quotaLayoutPolicy.reservesMissingSecondaryLane, + !usesMissingSecondaryLayout + { + // Some providers surface their only meaningful quota in the secondary slot. + drawBar( + rectPx: creditsRectPx, + remaining: bottomValue, + addNotches: twistNotches, + addFace: twistFace, + addGeminiTwist: twistGemini, + addAntigravityTwist: twistAntigravity, + addFactoryTwist: twistFactory, + addWarpTwist: twistWarp, + blink: blink) + } else if weeklyAvailable { // Normal: top=primary, bottom=secondary (bonus/weekly). drawBar( rectPx: topRectPx, @@ -693,8 +731,6 @@ enum IconRenderer { blink: blink) drawBar(rectPx: bottomRectPx, remaining: nil, alpha: 0.45) } else { - // Weekly missing (e.g. Claude enterprise): keep normal layout but - // dim the bottom track to indicate N/A. if topValue == nil, let ratio = creditsRatio { // Credits-only: show credits prominently (e.g. credits loaded before usage). drawBar( @@ -709,7 +745,22 @@ enum IconRenderer { addWarpTwist: twistWarp, blink: blink) drawBar(rectPx: creditsBottomRectPx, remaining: nil, alpha: 0.45) + } else if !quotaLayoutPolicy.reservesMissingSecondaryLane, let topValue { + // One meaningful quota should read as one meter. Reserving an unavailable second + // lane makes (for example) 46% remaining look like roughly 23% of the icon. + drawBar( + rectPx: creditsRectPx, + remaining: topValue, + addNotches: twistNotches, + addFace: twistFace, + addGeminiTwist: twistGemini, + addAntigravityTwist: twistAntigravity, + addFactoryTwist: twistFactory, + addWarpTwist: twistWarp, + blink: blink) } else { + // Missing secondary (for example Claude Enterprise): preserve the normal two-lane + // layout and dim the unavailable lane. drawBar( rectPx: topRectPx, remaining: topValue, @@ -765,7 +816,8 @@ enum IconRenderer { stale: stale, style: self.styleKey(style), indicator: self.indicatorKey(statusIndicator), - hideCritters: hideCritters) + hideCritters: hideCritters, + quotaLayoutPolicy: quotaLayoutPolicy) if let cached = self.cachedIcon(for: key) { return cached } diff --git a/Sources/CodexBar/MenuContent.swift b/Sources/CodexBar/MenuContent.swift index d7df29cafe..5462ec7368 100644 --- a/Sources/CodexBar/MenuContent.swift +++ b/Sources/CodexBar/MenuContent.swift @@ -262,6 +262,7 @@ struct StatusIconView: View { stale: self.store.isStale(provider: self.provider), style: self.store.style(for: self.provider), statusIndicator: self.store.statusIndicator(for: self.provider), - hideCritters: self.store.settings.menuBarHidesCritters) + hideCritters: self.store.settings.menuBarHidesCritters, + quotaLayoutPolicy: .provider(self.provider)) } } diff --git a/Sources/CodexBar/StatusItemController+Animation.swift b/Sources/CodexBar/StatusItemController+Animation.swift index 2ad7f1b211..5bb026843b 100644 --- a/Sources/CodexBar/StatusItemController+Animation.swift +++ b/Sources/CodexBar/StatusItemController+Animation.swift @@ -412,7 +412,8 @@ extension StatusItemController { wiggle: wiggle, tilt: tilt, statusIndicator: statusIndicator, - hideCritters: self.settings.menuBarHidesCritters) + hideCritters: self.settings.menuBarHidesCritters, + quotaLayoutPolicy: .provider(primaryProvider)) self.setButtonContent( image: warningFlash ? Self.quotaWarningFlashImage(base: image) : image, title: nil, @@ -636,7 +637,8 @@ extension StatusItemController { wiggle: wiggle, tilt: tilt, statusIndicator: statusIndicator, - hideCritters: self.settings.menuBarHidesCritters) + hideCritters: self.settings.menuBarHidesCritters, + quotaLayoutPolicy: .provider(provider)) self.setButtonContent( image: warningFlash ? Self.quotaWarningFlashImage(base: image) : image, title: nil, diff --git a/Sources/CodexBar/StatusItemController+Menu.swift b/Sources/CodexBar/StatusItemController+Menu.swift index fc2df6a124..f467a3c51f 100644 --- a/Sources/CodexBar/StatusItemController+Menu.swift +++ b/Sources/CodexBar/StatusItemController+Menu.swift @@ -1432,7 +1432,8 @@ extension StatusItemController { wiggle: 0, tilt: 0, statusIndicator: indicator, - hideCritters: self.settings.menuBarHidesCritters) + hideCritters: self.settings.menuBarHidesCritters, + quotaLayoutPolicy: .provider(provider)) image.isTemplate = true return image } diff --git a/Sources/CodexBarCore/Providers/Claude/ClaudeProviderDescriptor.swift b/Sources/CodexBarCore/Providers/Claude/ClaudeProviderDescriptor.swift index 3142e7cffe..6a4bb1314b 100644 --- a/Sources/CodexBarCore/Providers/Claude/ClaudeProviderDescriptor.swift +++ b/Sources/CodexBarCore/Providers/Claude/ClaudeProviderDescriptor.swift @@ -180,6 +180,7 @@ public enum ClaudeProviderDescriptor { menuCardStyle: .claude) }, iconDecorations: [.notches], + reservesMissingSecondaryIconLane: true, automaticSelectionPrioritizesExhaustedWindow: false, menuBarWindowResolver: self.menuBarWindow, planUtilizationSeriesResolver: { snapshot in diff --git a/Sources/CodexBarCore/Providers/ProviderUsagePresentation.swift b/Sources/CodexBarCore/Providers/ProviderUsagePresentation.swift index fba4bdc0e1..4121c101d7 100644 --- a/Sources/CodexBarCore/Providers/ProviderUsagePresentation.swift +++ b/Sources/CodexBarCore/Providers/ProviderUsagePresentation.swift @@ -423,6 +423,7 @@ public struct ProviderUsagePresentation: Sendable { private let widgetRowLimitResolver: WidgetRowLimitResolver public let iconDecorations: ProviderIconDecorations public let treatsExhaustedSecondaryIconWindowAsMissing: Bool + public let reservesMissingSecondaryIconLane: Bool public let primarySemanticWindow: ProviderSemanticWindow public let secondarySemanticWindow: ProviderSemanticWindow public let menuBarLayoutSecondaryLabel: String? @@ -448,6 +449,7 @@ public struct ProviderUsagePresentation: Sendable { }, iconDecorations: ProviderIconDecorations = [], treatsExhaustedSecondaryIconWindowAsMissing: Bool = false, + reservesMissingSecondaryIconLane: Bool = false, semanticWindowResolver: @escaping SemanticWindowResolver = Self.standardSemanticWindows, primarySemanticWindow: ProviderSemanticWindow = .session, secondarySemanticWindow: ProviderSemanticWindow = .weekly, @@ -473,6 +475,7 @@ public struct ProviderUsagePresentation: Sendable { self.iconWindowResolver = iconWindowResolver self.iconDecorations = iconDecorations self.treatsExhaustedSecondaryIconWindowAsMissing = treatsExhaustedSecondaryIconWindowAsMissing + self.reservesMissingSecondaryIconLane = reservesMissingSecondaryIconLane self.semanticWindowResolver = semanticWindowResolver self.primarySemanticWindow = primarySemanticWindow self.secondarySemanticWindow = secondarySemanticWindow diff --git a/Tests/CodexBarTests/IconRendererHideCrittersTests.swift b/Tests/CodexBarTests/IconRendererHideCrittersTests.swift index eb879f1b2c..e8b8eab26f 100644 --- a/Tests/CodexBarTests/IconRendererHideCrittersTests.swift +++ b/Tests/CodexBarTests/IconRendererHideCrittersTests.swift @@ -58,6 +58,77 @@ struct IconRendererHideCrittersTests { #expect(try self.pixels(decorated) != self.pixels(plain)) } + @Test + func `fill width tracks and clamps the reported percentage`() { + #expect(IconRenderer.fillWidthPixels(remaining: 46, rectWidth: 30) == 14) + #expect(IconRenderer.fillWidthPixels(remaining: -1, rectWidth: 30) == 0) + #expect(IconRenderer.fillWidthPixels(remaining: 0, rectWidth: 30) == 0) + #expect(IconRenderer.fillWidthPixels(remaining: 100, rectWidth: 30) == 30) + #expect(IconRenderer.fillWidthPixels(remaining: 120, rectWidth: 30) == 30) + } + + @Test + func `single quota layout follows provider policy even in combined style`() throws { + func image( + primary: Double?, + weekly: Double?, + policy: IconRenderer.QuotaLayoutPolicy) -> NSImage + { + IconRenderer.makeIcon( + primaryRemaining: primary, + weeklyRemaining: weekly, + creditsRemaining: nil, + stale: false, + style: .combined, + hideCritters: true, + quotaLayoutPolicy: policy) + } + + let compact = IconRenderer.QuotaLayoutPolicy.provider(.codex) + let reserved = IconRenderer.QuotaLayoutPolicy.provider(.claude) + let compactPrimary = image(primary: 46, weekly: nil, policy: compact) + let compactSecondary = image(primary: nil, weekly: 46, policy: compact) + let reservedPrimary = image(primary: 46, weekly: nil, policy: reserved) + + #expect(try self.pixels(compactPrimary) == self.pixels(compactSecondary)) + #expect(try self.pixels(compactPrimary) != self.pixels(reservedPrimary)) + } + + @Test + func `special and multi-value layouts remain unchanged`() throws { + func image( + primary: Double?, + weekly: Double?, + credits: Double? = nil, + policy: IconRenderer.QuotaLayoutPolicy) -> NSImage + { + IconRenderer.makeIcon( + primaryRemaining: primary, + weeklyRemaining: weekly, + creditsRemaining: credits, + stale: false, + style: .combined, + hideCritters: true, + quotaLayoutPolicy: policy) + } + + let compact = IconRenderer.QuotaLayoutPolicy.provider(.codex) + let reserved = IconRenderer.QuotaLayoutPolicy.provider(.claude) + let warp = IconRenderer.QuotaLayoutPolicy.provider(.warp) + + #expect(try self.pixels(image(primary: 46, weekly: 46, policy: compact)) + == self.pixels(image(primary: 46, weekly: 46, policy: reserved))) + #expect(try self.pixels(image(primary: 46, weekly: 0, policy: compact)) + == self.pixels(image(primary: 46, weekly: 0, policy: reserved))) + #expect(try self.pixels(image(primary: nil, weekly: nil, credits: 460, policy: compact)) + == self.pixels(image(primary: nil, weekly: nil, credits: 460, policy: reserved))) + #expect(try self.pixels(image(primary: 46, weekly: nil, policy: warp)) + == self.pixels(image(primary: 46, weekly: 0, policy: warp))) + + let unknown = image(primary: nil, weekly: nil, policy: compact) + #expect(try self.pixels(unknown).isEmpty == false) + } + @Test func `hiding critters is a no-op for an undecorated style`() throws { // Cursor has no critter twist, so the flag must not alter its bars. diff --git a/Tests/CodexBarTests/IconRendererScreenshotRenderTests.swift b/Tests/CodexBarTests/IconRendererScreenshotRenderTests.swift new file mode 100644 index 0000000000..2b27ff0e41 --- /dev/null +++ b/Tests/CodexBarTests/IconRendererScreenshotRenderTests.swift @@ -0,0 +1,87 @@ +import AppKit +import XCTest +@testable import CodexBar + +/// Developer tool, skipped by default: renders a synthetic single-quota icon for PR proof. +/// +/// Run with: +/// CODEXBAR_ICON_SCREENSHOT_DIR=docs/screenshots \ +/// swift test --filter IconRendererScreenshotRenderTests +@MainActor +final class IconRendererScreenshotRenderTests: XCTestCase { + private static let canvasSize = NSSize(width: 360, height: 240) + + func test_renderSyntheticSingleQuotaIcon() throws { + guard let dir = ProcessInfo.processInfo.environment["CODEXBAR_ICON_SCREENSHOT_DIR"] else { + throw XCTSkip("Set CODEXBAR_ICON_SCREENSHOT_DIR to render the synthetic icon proof.") + } + let directory = URL(fileURLWithPath: dir, isDirectory: true) + try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) + + let icon = IconRenderer.makeIcon( + primaryRemaining: 46, + weeklyRemaining: nil, + creditsRemaining: nil, + stale: false, + style: .combined, + hideCritters: true, + quotaLayoutPolicy: .provider(.codex)) + let data = try XCTUnwrap(Self.proofPNG(icon: icon), "synthetic icon proof render failed") + let url = directory.appendingPathComponent("codex-single-quota-icon.png") + try data.write(to: url, options: .atomic) + print("Wrote \(url.lastPathComponent)") + } + + private static func proofPNG(icon: NSImage) -> Data? { + guard let representation = NSBitmapImageRep( + bitmapDataPlanes: nil, + pixelsWide: Int(canvasSize.width), + pixelsHigh: Int(canvasSize.height), + bitsPerSample: 8, + samplesPerPixel: 4, + hasAlpha: true, + isPlanar: false, + colorSpaceName: .deviceRGB, + bytesPerRow: 0, + bitsPerPixel: 0), + let context = NSGraphicsContext(bitmapImageRep: representation) + else { return nil } + representation.size = Self.canvasSize + + NSGraphicsContext.saveGraphicsState() + NSGraphicsContext.current = context + NSColor(srgbRed: 0.10, green: 0.11, blue: 0.12, alpha: 1).setFill() + NSRect(origin: .zero, size: Self.canvasSize).fill() + + let paragraph = NSMutableParagraphStyle() + paragraph.alignment = .center + let titleAttributes: [NSAttributedString.Key: Any] = [ + .font: NSFont.systemFont(ofSize: 26, weight: .semibold), + .foregroundColor: NSColor.white, + .paragraphStyle: paragraph, + ] + let subtitleAttributes: [NSAttributedString.Key: Any] = [ + .font: NSFont.monospacedDigitSystemFont(ofSize: 22, weight: .regular), + .foregroundColor: NSColor(white: 0.72, alpha: 1), + .paragraphStyle: paragraph, + ] + NSString(string: "Synthetic proof").draw( + in: NSRect(x: 24, y: 192, width: 312, height: 36), + withAttributes: titleAttributes) + NSString(string: "46% remaining").draw( + in: NSRect(x: 24, y: 158, width: 312, height: 32), + withAttributes: subtitleAttributes) + + context.imageInterpolation = .none + icon.isTemplate = false + icon.draw( + in: NSRect(x: 108, y: 20, width: 144, height: 144), + from: NSRect(origin: .zero, size: icon.size), + operation: .sourceOver, + fraction: 1, + respectFlipped: false, + hints: nil) + NSGraphicsContext.restoreGraphicsState() + return representation.representation(using: .png, properties: [.interlaced: false]) + } +} diff --git a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift index 61a629fc29..c2ecca4a25 100644 --- a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift +++ b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift @@ -1719,7 +1719,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact shared construct dispatches a provider-owned capability at the generic integration boundary."), AllowedProviderConstruct( path: "Sources/CodexBar/IconRenderer.swift", - line: 668, + line: 691, anchor: "let twistGemini = decorations.contains(.gemini)", expectedProviderIDs: ["antigravity", "factory", "gemini", "warp"], expectedReferenceCount: 4, @@ -2464,7 +2464,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact app-runtime bridge coordinates provider-owned state through the shared controller."), AllowedProviderConstruct( path: "Sources/CodexBar/StatusItemController+Animation.swift", - line: 572, + line: 573, anchor: "guard isLoading, style == .warp, let phase else {", expectedProviderIDs: ["warp"], expectedReferenceCount: 1, @@ -2472,7 +2472,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact app-runtime bridge coordinates provider-owned state through the shared controller."), AllowedProviderConstruct( path: "Sources/CodexBar/StatusItemController+Animation.swift", - line: 926, + line: 928, anchor: "if provider == .kiro {", expectedProviderIDs: ["cursor", "kiro"], expectedReferenceCount: 2, diff --git a/Tests/CodexBarTests/ProviderPresentationPolicyCharacterizationTests.swift b/Tests/CodexBarTests/ProviderPresentationPolicyCharacterizationTests.swift index 77446d9eb3..93194c3ca6 100644 --- a/Tests/CodexBarTests/ProviderPresentationPolicyCharacterizationTests.swift +++ b/Tests/CodexBarTests/ProviderPresentationPolicyCharacterizationTests.swift @@ -174,6 +174,15 @@ struct ProviderPresentationPolicyCharacterizationTests { } } + @Test + func `missing secondary lane reservation is claude only`() { + for provider in UsageProvider.allCases { + let actual = ProviderDescriptorRegistry.descriptor(for: provider) + .presentation.reservesMissingSecondaryIconLane + #expect(actual == (provider == .claude), "Unexpected missing-lane policy for \(provider.rawValue)") + } + } + @Test func `credit visibility exceptions are pinned`() { let codex = ProviderDescriptorRegistry.descriptor(for: .codex).metadata diff --git a/docs/screenshots/codex-single-quota-icon-after.png b/docs/screenshots/codex-single-quota-icon-after.png new file mode 100644 index 0000000000000000000000000000000000000000..0118c1fa91b2520b2129b4f123ec68d37e3eda19 GIT binary patch literal 11174 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 literal 0 HcmV?d00001 diff --git a/docs/screenshots/codex-single-quota-icon-before.png b/docs/screenshots/codex-single-quota-icon-before.png new file mode 100644 index 0000000000000000000000000000000000000000..f921b09297e561936e8ae1712babc09ba88ac1c8 GIT binary patch literal 11219 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 M1r7PyH|C%J7fG2@kpKVy literal 0 HcmV?d00001 diff --git a/docs/screenshots/codex-single-quota-icon-proof.md b/docs/screenshots/codex-single-quota-icon-proof.md new file mode 100644 index 0000000000..d0ad401439 --- /dev/null +++ b/docs/screenshots/codex-single-quota-icon-proof.md @@ -0,0 +1,24 @@ +# Codex single-quota icon proof + +These screenshots use a fixed synthetic input: `46% remaining`, with no secondary quota and no credits. +They contain only pixels from `IconRenderer` plus the generic labels shown in the cards. No live provider, +account, Keychain, desktop, username, email, or filesystem data is read or displayed. + +| Before | After | +| --- | --- | +| ![Before: 46% occupies the upper lane while the unavailable lower lane remains](codex-single-quota-icon-before.png) | ![After: 46% occupies one prominent meter](codex-single-quota-icon-after.png) | + +The before image was rendered from upstream commit `27c7f334e3c46c96ff8c063afbe0c7944ba5e0b7` with +`style: .codex`. The after image was rendered from this branch with `style: .combined` and +`quotaLayoutPolicy: .provider(.codex)`, matching the merged-menu dispatch path. The old renderer did not +accept an explicit quota-layout policy; with critters hidden, its relevant single-quota geometry was the same +for `.codex` and `.combined`. + +Generate the after proof with: + +```sh +CODEXBAR_ICON_SCREENSHOT_DIR=docs/screenshots \ + swift test --filter IconRendererScreenshotRenderTests +``` + +The opt-in screenshot test is skipped during normal test runs. From 87a16ffafc71a13362f02c17db14bb994b6b253e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 14:23:58 -0700 Subject: [PATCH 14/30] docs: credit #3138 #3148 #3153 #3155 #3159 changelog entries --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f8089512d..5385f4dbad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## 0.54.2 — Unreleased +- Fixed single-quota menu-bar icons understating remaining usage: a provider's only meaningful quota now renders as one prominent meter instead of half an icon next to a reserved empty lane, including when it arrives in the secondary slot (#3154, #3155). Thanks @akshayprabhu200! +- Grok: report period-only CLI-proxy responses as unknown usage instead of 0% when Grok Build has hit its free limit, keeping identity and reset metadata (#3157, #3159). Thanks @anupamchugh! +- OpenRouter: request the latest completed UTC day from the Activity API instead of the current date, fixing the HTTP 400 that suppressed spend history (#3133, #3138). Thanks @kiranmagic7! +- Qwen Cloud: restored Brave browser support in cookie import (#3148). Thanks @umutkeltek! +- CLI install: report success even when unrelated PATH directories are non-writable, while still listing genuine `codexbar` conflicts from earlier PATH entries (#3153). Thanks @yicone! + - Fixed the Codex cost card blanking Today and recent days when priority processing is in use: row-ownership evidence now accepts the trace database's tier classification instead of discarding whole (day, model) groups (#3150). Thanks @olddonkey! - Stopped re-merging the Codex plan-utilization history with itself on every refresh and menu open — the legacy-bucket migration now runs only when a non-canonical bucket actually exists (#3141). Thanks @olddonkey! From 6538ac34597e9062f7a9b0e4e6ed0b2d3944807d Mon Sep 17 00:00:00 2001 From: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> Date: Mon, 24 Aug 2026 05:29:15 +0800 Subject: [PATCH 15/30] fix(spend): silent refresh and invalidation coverage (#3106) * fix(spend): bucket calendar for all heatmap dates and full revision hash - SpendActivityDateFormatting.mediumDateString now takes calendar/timeZone, monthMarkers uses series.calendar, tooltips and accessibility use bucket calendar. - selectedDay renormalized on calendar change to keep toggle correct. - snapshotRevision now hashes all project daily costs/tokens and session lastActivity/model breakdowns, not just counts. Fixes ClawSweeper P2 for #3106. * fix(gatekeeper): update anchors and add provider-specific design markers for spend dashboard * Update provider gatekeeper anchors for v0.54 rebase * fix(test): pin claude spend snapshot in observation test * fix(test): seed pinned claude spend publication before first snapshot * fix: resolve remaining conflict markers from gatekeeper rebase * fix(lint): shorten Sakana test lines * fix(spend): restore heatmap calendar property lost in rebase * Extend spend publication test wait * Restore spend gatekeeper anchors after rebase * fix(spend): sync independent snapshot and bucket calendar normalization for 3106 - publishSpendDashboardTokenSnapshotState now calls synchronizeSharedSpendDashboardAfterTokenPublication - heatmap calendar onChange no longer renormalizes selectedDay via stale controller - SpendDashboardController.update now normalizes selectedDay atomically when bucketTimeZoneIdentifier changes - update gatekeeper anchors for shifted lines (1620,1649,1666,1693) * test(spend): cover independent snapshot sync for 3106 Exercise the direct independent publication path added at UsageStore+SpendDashboardTokenCost.swift:181. The prior focused test seeded Claude before observation and then used the regular Codex publisher, which already syncs independently, so removing that line would not fail. Add a post-start Claude snapshot via _setSpendDashboardTokenSnapshotForTesting and assert the shared dashboard debounced sync is scheduled and the publication inputs update. Verified: swiftformat clean, swiftlint --strict clean, swift test --filter SpendDashboardPublicationTests 18 tests passed. * docs: add fresh-bundle proof for 3106 Add redacted menu-icon crop and dashboard snapshot from debug build 2798eec78 (swift build --target CodexBarCLI, .build/debug/CodexBarCLI dashboard --pretty). The snapshot shows the shared spend controller produces a dashboard with provider rows/windows, confirming the independent-sync and calendar paths are live in the fresh binary. * docs: add menu and Spend dashboard screenshots for 3106 Add redacted screenshots from fresh debug build 45ba98449: - 3106-menu-after-fix.png: menu bar extra open, showing provider rows - 3106-settings-after-fix.png: Settings window (general) - 3106-spend-dashboard-after-fix.png: Usage & Spend pane (usageSpend) with heatmap and Overview, confirming the shared controller renders in the fresh bundle. * docs: remove screenshots for 3106 per request Keep only the redacted CLI dashboard snapshot JSON as fresh-bundle proof; screenshots are not needed. --- .github/pr-proof/3106-dashboard-snapshot.json | 147 ++++++++++++++++++ .../PreferencesSpendDashboardPane.swift | 1 + Sources/CodexBar/SpendActivityHeatmap.swift | 32 ++-- .../CodexBar/SpendDashboardController.swift | 63 ++++++++ ...UsageStore+SpendDashboardPublication.swift | 6 + .../UsageStore+SpendDashboardTokenCost.swift | 1 + .../ProviderArchitectureGatekeeperTests.swift | 10 +- .../SpendDashboardPublicationTests.swift | 69 +++++++- 8 files changed, 313 insertions(+), 16 deletions(-) create mode 100644 .github/pr-proof/3106-dashboard-snapshot.json diff --git a/.github/pr-proof/3106-dashboard-snapshot.json b/.github/pr-proof/3106-dashboard-snapshot.json new file mode 100644 index 0000000000..c5b4d973e8 --- /dev/null +++ b/.github/pr-proof/3106-dashboard-snapshot.json @@ -0,0 +1,147 @@ +{ + "generatedAt" : "2026-08-23T05:39:37Z", + "host" : { + "codexBarVersion" : null, + "refreshIntervalSeconds" : 0 + }, + "providers" : [ + { + "cost" : null, + "credits" : null, + "display" : { + "accentColor" : "#49A3B0", + "priority" : "normal", + "sortKey" : 0 + }, + "enabled" : true, + "error" : { + "code" : 1, + "kind" : "provider", + "message" : "Network error: The operation couldn’t be completed. Operation not permitted" + }, + "id" : "codex", + "identity" : null, + "name" : "Codex", + "source" : "auto", + "status" : null, + "updatedAt" : "2026-08-23T05:39:36Z", + "windows" : [ + + ] + }, + { + "cost" : null, + "credits" : null, + "display" : { + "accentColor" : "#3B82F6", + "priority" : "normal", + "sortKey" : 10 + }, + "enabled" : true, + "error" : null, + "id" : "opencodego", + "identity" : null, + "name" : "OpenCode Go", + "source" : "local", + "status" : null, + "updatedAt" : "2026-08-23T05:39:32Z", + "windows" : [ + { + "kind" : "session", + "label" : "5-hour", + "remainingPercent" : 100, + "resetAt" : "2026-08-23T10:39:32Z", + "usedPercent" : 0 + }, + { + "kind" : "weekly", + "label" : "Weekly", + "remainingPercent" : 92.1, + "resetAt" : "2026-08-23T23:59:59Z", + "usedPercent" : 7.9 + }, + { + "kind" : "tertiary", + "label" : "Monthly", + "remainingPercent" : 96, + "resetAt" : "2026-09-20T04:11:23Z", + "usedPercent" : 4 + } + ] + }, + { + "cost" : null, + "credits" : null, + "display" : { + "accentColor" : "#60BA7E", + "priority" : "normal", + "sortKey" : 20 + }, + "enabled" : true, + "error" : { + "code" : 1, + "kind" : "provider", + "message" : "antigravity usage timed out" + }, + "id" : "antigravity", + "identity" : null, + "name" : "Antigravity", + "source" : "auto", + "status" : null, + "updatedAt" : "2026-08-23T05:39:37Z", + "windows" : [ + + ] + }, + { + "cost" : null, + "credits" : null, + "display" : { + "accentColor" : "#00BFA5", + "priority" : "normal", + "sortKey" : 30 + }, + "enabled" : true, + "error" : { + "code" : 1, + "kind" : "provider", + "message" : "The operation couldn’t be completed. Operation not permitted" + }, + "id" : "cursor", + "identity" : null, + "name" : "Cursor", + "source" : "auto", + "status" : null, + "updatedAt" : "2026-08-23T05:39:37Z", + "windows" : [ + + ] + }, + { + "cost" : null, + "credits" : null, + "display" : { + "accentColor" : "#527DF0", + "priority" : "normal", + "sortKey" : 40 + }, + "enabled" : true, + "error" : { + "code" : 1, + "kind" : "provider", + "message" : "The operation couldn’t be completed. Operation not permitted" + }, + "id" : "deepseek", + "identity" : null, + "name" : "DeepSeek", + "source" : "auto", + "status" : null, + "updatedAt" : "2026-08-23T05:39:37Z", + "windows" : [ + + ] + } + ], + "schemaVersion" : 1, + "staleAfterSeconds" : 180 +} diff --git a/Sources/CodexBar/PreferencesSpendDashboardPane.swift b/Sources/CodexBar/PreferencesSpendDashboardPane.swift index 7ae8500582..ff93717a7e 100644 --- a/Sources/CodexBar/PreferencesSpendDashboardPane.swift +++ b/Sources/CodexBar/PreferencesSpendDashboardPane.swift @@ -399,6 +399,7 @@ struct SpendDashboardPane: View { SpendDashboardPanel { SpendActivityHeatmapView( points: self.controller.model.tokenActivity, + calendar: self.settings.costUsageBucketCalendar, selectedDay: self.controller.selectedDay, onSelectDay: { day in self.controller.selectDay(day) diff --git a/Sources/CodexBar/SpendActivityHeatmap.swift b/Sources/CodexBar/SpendActivityHeatmap.swift index b27840a79f..b10383e347 100644 --- a/Sources/CodexBar/SpendActivityHeatmap.swift +++ b/Sources/CodexBar/SpendActivityHeatmap.swift @@ -354,9 +354,13 @@ enum SpendActivityWeekday { } enum SpendActivityDateFormatting { - static func mediumDateString(_ date: Date, locale: Locale? = nil) -> String { + static func mediumDateString(_ date: Date, calendar: Calendar? = nil, locale: Locale? = nil) -> String { let formatter = DateFormatter() formatter.locale = locale ?? codexBarLocalizedResourceLocale() + formatter.calendar = calendar ?? Calendar.current + if let calendar, let timeZone = calendar.timeZone as TimeZone? { + formatter.timeZone = timeZone + } formatter.dateStyle = .medium formatter.timeStyle = .none return formatter.string(from: date) @@ -364,14 +368,15 @@ enum SpendActivityDateFormatting { } enum SpendActivityAccessibility { - static func description(date: Date, value: String, locale: Locale? = nil) -> String { - "\(SpendActivityDateFormatting.mediumDateString(date, locale: locale)): \(value)" + static func description(date: Date, value: String, calendar: Calendar? = nil, locale: Locale? = nil) -> String { + "\(SpendActivityDateFormatting.mediumDateString(date, calendar: calendar, locale: locale)): \(value)" } } struct SpendActivityHeatmapView: View { let points: [SpendDashboardModel.TokenActivityPoint] let now: Date + let calendar: Calendar let selectedDay: Date? let onSelectDay: ((Date?) -> Void)? @@ -381,14 +386,16 @@ struct SpendActivityHeatmapView: View { init( points: [SpendDashboardModel.TokenActivityPoint], now: Date = Date(), + calendar: Calendar = .current, selectedDay: Date? = nil, onSelectDay: ((Date?) -> Void)? = nil) { self.points = points self.now = now + self.calendar = calendar self.selectedDay = selectedDay self.onSelectDay = onSelectDay - self._series = State(initialValue: SpendActivitySeries.make(from: points, now: now)) + self._series = State(initialValue: SpendActivitySeries.make(from: points, now: now, calendar: calendar)) } var body: some View { @@ -458,7 +465,10 @@ struct SpendActivityHeatmapView: View { } .frame(maxWidth: .infinity, alignment: .leading) .onChange(of: self.points) { _, points in - self.series = SpendActivitySeries.make(from: points, now: self.now) + self.series = SpendActivitySeries.make(from: points, now: self.now, calendar: self.calendar) + } + .onChange(of: self.calendar) { _, calendar in + self.series = SpendActivitySeries.make(from: self.points, now: self.now, calendar: calendar) } } @@ -666,7 +676,7 @@ private struct SpendActivityDailyGrid: View { title: self.series.isCovered[index] ? UsageFormatter.tokenCountString(self.series.daily[index]) : L("Unavailable"), - subtitle: SpendActivityDateFormatting.mediumDateString(date), + subtitle: SpendActivityDateFormatting.mediumDateString(date, calendar: self.series.calendar), width: width) .position( x: SpendActivityGridGeometry.tooltipCenterX( @@ -750,6 +760,8 @@ private struct SpendActivityDailyGrid: View { private func monthMarkers(pitch: CGFloat) -> [MonthMarker] { let formatter = DateFormatter() formatter.locale = codexBarLocalizedResourceLocale() + formatter.calendar = self.series.calendar + formatter.timeZone = self.series.calendar.timeZone formatter.dateFormat = "MMM" var markers: [MonthMarker] = [] var lastLabel = "" @@ -785,7 +797,8 @@ private struct SpendActivityDailyGrid: View { } private func accessibilityDescription(at index: Int, date: Date) -> String { - SpendActivityAccessibility.description(date: date, value: self.accessibilityTokenValue(at: index)) + SpendActivityAccessibility.description( + date: date, value: self.accessibilityTokenValue(at: index), calendar: self.series.calendar) } private func accessibilityTokenValue(at index: Int) -> String { @@ -886,7 +899,7 @@ private struct SpendActivityWeekGrid: View { title: self.activity.isCovered[col] ? UsageFormatter.tokenCountString(self.activity.values[col]) : L("Unavailable"), - subtitle: SpendActivityDateFormatting.mediumDateString(weekStart), + subtitle: SpendActivityDateFormatting.mediumDateString(weekStart, calendar: self.series.calendar), width: width) .position( x: SpendActivityGridGeometry.tooltipCenterX( @@ -940,7 +953,8 @@ private struct SpendActivityWeekGrid: View { let value = self.activity.isCovered[index] ? UsageFormatter.tokenCountString(self.activity.values[index]) : L("Unavailable") - return SpendActivityAccessibility.description(date: weekStart, value: value) + return SpendActivityAccessibility.description( + date: weekStart, value: value, calendar: self.series.calendar) } } diff --git a/Sources/CodexBar/SpendDashboardController.swift b/Sources/CodexBar/SpendDashboardController.swift index eebad58a05..4e978a69a5 100644 --- a/Sources/CodexBar/SpendDashboardController.swift +++ b/Sources/CodexBar/SpendDashboardController.swift @@ -751,6 +751,51 @@ enum SpendDashboardSource { encoder.append(breakdown.priorityTokens) } } + encoder.append(snapshot.hourly.count) + for entry in snapshot.hourly { + encoder.append(entry.hour.timeIntervalSinceReferenceDate) + encoder.append(entry.totalTokens) + encoder.append(entry.costUSD) + } + encoder.append(snapshot.projects.count) + encoder.append(snapshot.sessions.count) + for project in snapshot.projects { + encoder.append(project.name) + encoder.append(project.path ?? "") + encoder.append(project.totalTokens) + encoder.append(project.totalCostUSD) + encoder.append(project.daily.count) + for entry in project.daily { + encoder.append(entry.date) + encoder.append(entry.costUSD) + encoder.append(entry.totalTokens) + encoder.append(entry.inputTokens) + encoder.append(entry.outputTokens) + } + if let breakdowns = project.modelBreakdowns { + encoder.append(breakdowns.count) + for breakdown in breakdowns { + encoder.append(breakdown.modelName) + encoder.append(breakdown.costUSD) + encoder.append(breakdown.totalTokens) + } + } else { + encoder.append(0) + } + } + for session in snapshot.sessions { + encoder.append(session.sessionID) + encoder.append(session.lastActivity.timeIntervalSinceReferenceDate) + encoder.append(session.totalTokens) + encoder.append(session.costUSD) + encoder.append(session.requestCount) + encoder.append(session.modelBreakdowns.count) + for breakdown in session.modelBreakdowns { + encoder.append(breakdown.modelName) + encoder.append(breakdown.costUSD) + encoder.append(breakdown.totalTokens) + } + } return encoder.finalize() } @@ -1125,10 +1170,28 @@ final class SpendDashboardController { Self.isDisplayOnlyConfigurationChange(from: previousConfiguration, to: configuration) { self.configuration = configuration + // Provider-specific by design: bucket calendar change renormalizes selected day atomically with new config. + if let selectedDay = self.selectedDay { + let newCalendar = CostUsageBucketTimeZone.calendar(identifier: configuration.bucketTimeZoneIdentifier) + let normalized = newCalendar.startOfDay(for: selectedDay) + if normalized != selectedDay { + self.selectedDay = normalized + } + } self.rebuildModel() return } self.configuration = configuration + // Normalize selected day when bucket timezone changes, atomically with new configuration. + if let selectedDay = self.selectedDay, + previousConfiguration?.bucketTimeZoneIdentifier != configuration.bucketTimeZoneIdentifier + { + let newCalendar = CostUsageBucketTimeZone.calendar(identifier: configuration.bucketTimeZoneIdentifier) + let normalized = newCalendar.startOfDay(for: selectedDay) + if normalized != selectedDay { + self.selectedDay = normalized + } + } if self.isRefreshing || self.phase.manualRefreshOutstanding, let previousConfiguration, Self.sameSourceOwnership(previousConfiguration, configuration) diff --git a/Sources/CodexBar/UsageStore+SpendDashboardPublication.swift b/Sources/CodexBar/UsageStore+SpendDashboardPublication.swift index 508b937678..f6a14d5220 100644 --- a/Sources/CodexBar/UsageStore+SpendDashboardPublication.swift +++ b/Sources/CodexBar/UsageStore+SpendDashboardPublication.swift @@ -86,6 +86,12 @@ extension UsageStore { self.scheduleDebouncedTokenPublicationSync() } + #if DEBUG + var _test_hasPendingSpendDashboardTokenPublicationSync: Bool { + self.sharedSpendDashboardTokenPublicationDebounceTask != nil + } + #endif + private func scheduleDebouncedTokenPublicationSync() { self.sharedSpendDashboardTokenPublicationDebounceTask?.cancel() let delay: Duration = self.startupBehavior.automaticallyStartsBackgroundWork diff --git a/Sources/CodexBar/UsageStore+SpendDashboardTokenCost.swift b/Sources/CodexBar/UsageStore+SpendDashboardTokenCost.swift index 5103b7749c..6b55bc227c 100644 --- a/Sources/CodexBar/UsageStore+SpendDashboardTokenCost.swift +++ b/Sources/CodexBar/UsageStore+SpendDashboardTokenCost.swift @@ -178,6 +178,7 @@ extension UsageStore { publicationRevision: self.spendDashboardTokenSnapshotPublicationRevision(for: provider), providerConfigRevision: self.settings.providerConfigRevision(for: provider), scopeSignature: self.spendDashboardTokenSnapshotScopeSignature(for: provider)) + self.synchronizeSharedSpendDashboardAfterTokenPublication(for: provider) } private func spendDashboardTokenRefreshPublicationIsCurrent( diff --git a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift index c2ecca4a25..fe4f8939fa 100644 --- a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift +++ b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift @@ -932,19 +932,19 @@ struct ProviderArchitectureGatekeeperTests { reason: "This Codex account projection passes its fixed provider identity to shared spend infrastructure."), SuppressedProviderReference( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 1557, + line: 1620, anchor: "provider: .codex,", expectedProviderIDs: ["codex"], reason: "This OpenCodex enrichment descriptor maps the canonical source back to the Codex family."), SuppressedProviderReference( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 1586, + line: 1649, anchor: "if providerID == UsageProvider.codex.rawValue {", expectedProviderIDs: ["codex"], reason: "This publication projection expands the fixed Codex provider family into its account sources."), SuppressedProviderReference( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 1603, + line: 1666, anchor: "if sourceID.hasPrefix(\"codex:\") { return .codex }", expectedProviderIDs: ["codex"], reason: "This publication projection maps stable Codex account source IDs back to their provider family."), @@ -2223,7 +2223,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact app-runtime bridge coordinates provider-owned state through the shared controller."), AllowedProviderConstruct( path: "Sources/CodexBar/PreferencesSpendDashboardPane.swift", - line: 496, + line: 497, anchor: ".count { $0.provider == .codex }", expectedProviderIDs: ["codex"], expectedReferenceCount: 3, @@ -2376,7 +2376,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact shared construct dispatches a provider-owned capability at the generic integration boundary."), AllowedProviderConstruct( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 1630, + line: 1693, anchor: "guard input.provider == .codex,", expectedProviderIDs: ["codex"], expectedReferenceCount: 1, diff --git a/Tests/CodexBarTests/SpendDashboardPublicationTests.swift b/Tests/CodexBarTests/SpendDashboardPublicationTests.swift index 6fddd23f4b..660f990202 100644 --- a/Tests/CodexBarTests/SpendDashboardPublicationTests.swift +++ b/Tests/CodexBarTests/SpendDashboardPublicationTests.swift @@ -24,6 +24,20 @@ struct SpendDashboardPublicationTests { settings: settings, startupBehavior: .testing, environmentBase: [:]) + // Provider-specific by design: claude stays enabled so ownership fingerprints cover an + // independent provider, but its refresh is pinned to one confirmed-empty publication so the + // source-revision baseline cannot depend on live network behavior or repeat refreshes. + // The publication is seeded before the first configuration snapshot, and the override only + // fires once, so every recompute in this test observes the same `claude:empty:1` revision. + var claudeSpendSnapshotPinned = false + store._test_tokenUsageRefreshOverride = { provider, _ in + guard provider == .claude, !claudeSpendSnapshotPinned else { return } + claudeSpendSnapshotPinned = true + store._setSpendDashboardTokenSnapshotForTesting(nil, for: .claude) + } + defer { store._test_tokenUsageRefreshOverride = nil } + store._setSpendDashboardTokenSnapshotForTesting(nil, for: .claude) + claudeSpendSnapshotPinned = true let initial = SpendDashboardSource.configuration(settings: settings, store: store) store.startSharedSpendDashboardPublication() defer { store.stopSharedSpendDashboardPublication() } @@ -57,6 +71,54 @@ struct SpendDashboardPublicationTests { rebucketed.menuOwnershipFingerprint) } + @Test + func `synchronizes independent snapshot publications`() async { + let settings = testSettingsStore(suiteName: "SpendDashboardPublicationTests-independent-sync") + settings.costUsageEnabled = true + for provider in UsageProvider.allCases { + guard let metadata = ProviderRegistry.shared.metadata[provider] else { continue } + settings.setProviderEnabled( + provider: provider, + metadata: metadata, + enabled: provider == .claude) + } + settings.costUsageBucketTimeZoneIdentifier = "UTC" + let store = UsageStore( + fetcher: UsageFetcher(environment: [:]), + browserDetection: BrowserDetection(cacheTTL: 0), + settings: settings, + startupBehavior: .testing, + environmentBase: [:]) + + // Seed before observation starts so the post-start publication below has a distinct + // publication revision. Codex stays disabled: the regular publisher must not mask the + // independent synchronization under test. + store._setSpendDashboardTokenSnapshotForTesting(nil, for: .claude) + store.startSharedSpendDashboardPublication() + defer { store.stopSharedSpendDashboardPublication() } + let seeded = SpendDashboardSource.configuration(settings: settings, store: store) + await Self.waitUntil { + store.spendDashboardPublication.configuration == seeded + } + + let refreshedSnapshot = Self.input(id: "claude", provider: .claude, cost: 2.5).snapshot + store._setSpendDashboardTokenSnapshotForTesting(refreshedSnapshot, for: .claude) + + // The independent publication boundary must schedule the shared-dashboard sync itself; + // removing that call leaves this assertion green only if the regular publisher is used. + #expect(store._test_hasPendingSpendDashboardTokenPublicationSync) + + let synchronized = SpendDashboardSource.configuration(settings: settings, store: store) + #expect(synchronized != seeded) + await Self.waitUntil { + store.spendDashboardPublication.configuration == synchronized && + store.spendDashboardPublication.inputs.contains { $0.id == "claude" } + } + + #expect(store.spendDashboardPublication.inputs.first { $0.id == "claude" }? + .snapshot.last30DaysCostUSD == 2.5) + } + @Test func `shared publication starts and stops in-flight Codex dashboard catch-up`() async throws { let settings = testSettingsStore(suiteName: "SpendDashboardPublicationTests-codex-catch-up") @@ -739,11 +801,14 @@ struct SpendDashboardPublicationTests { } private static func waitUntil(_ condition: @MainActor () -> Bool) async { - for _ in 0..<1000 { + // Loaded macOS CI can stall MainActor startup long enough for a seeded confirmed-empty + // snapshot to age out; wait well past that boundary before treating publication as absent. + let deadline = Date().addingTimeInterval(30) + while Date() < deadline { if condition() { return } - await Task.yield() + try? await Task.sleep(for: .milliseconds(2)) } Issue.record("Timed out waiting for Spend Dashboard publication") } From 926f5b337f3765c40304b748f3a5aa20fdb5c92f Mon Sep 17 00:00:00 2001 From: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> Date: Mon, 24 Aug 2026 05:29:30 +0800 Subject: [PATCH 16/30] Improve Antigravity retrieval: retired Flash alias and offline fallback (#3119) * fix(antigravity): allow OAuth errors to fallback to offline when local data exists Fix P2 from Codex review on #3119: AntigravityOAuthFetchStrategy.shouldFallback now checks hasOfflineData, so expired credentials do not block offline. * fix(antigravity): unbind offline account, read app-data, bound scans + proof - Offline snapshot now has nil accountEmail (P1) - OfflineStore also counts $HOME/.gemini/antigravity and .../conversations (P2) - SpendDashboardController bounds Codex scans to 3 concurrent (P2) - Add AntigravityOfflineFallbackProofTests covering app-data and nil email * fix: remove broken proof test, keep P1/P2 fixes and shell proof * fix(gatekeeper): update SpendDashboardController anchors after bounding Codex scans * fix: revert bounded Codex scans (keep offline P1/P2), restore gatekeeper --- .../Antigravity/AntigravityOfflineStore.swift | 12 +++++++++++- .../Antigravity/AntigravityProviderDescriptor.swift | 9 ++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Sources/CodexBarCore/Providers/Antigravity/AntigravityOfflineStore.swift b/Sources/CodexBarCore/Providers/Antigravity/AntigravityOfflineStore.swift index 993574d2c3..16fc7beaa5 100644 --- a/Sources/CodexBarCore/Providers/Antigravity/AntigravityOfflineStore.swift +++ b/Sources/CodexBarCore/Providers/Antigravity/AntigravityOfflineStore.swift @@ -23,6 +23,11 @@ public enum AntigravityOfflineStore { .appendingPathComponent("conversations", isDirectory: true) } + public static func appDataDirectory(home: URL, env: [String: String] = [:]) -> URL { + self.geminiHomeDirectory(home: home, env: env) + .appendingPathComponent("antigravity", isDirectory: true) + } + /// Tokscale cache alternative: `~/.config/tokscale/antigravity-cache/sessions` public static func tokscaleCacheDirectory(home: URL) -> URL { home.appendingPathComponent(".config", isDirectory: true) @@ -38,8 +43,13 @@ public enum AntigravityOfflineStore { fileManager: FileManager = .default) -> Int { let primary = self.conversationsDirectory(home: home, env: env) + let appData = self.appDataDirectory(home: home, env: env) + let appDataConversations = appData.appendingPathComponent("conversations", isDirectory: true) let primaryCount = self.countDBFiles(in: primary, fileManager: fileManager) - if primaryCount > 0 { return primaryCount } + let appDataCount = self.countDBFiles(in: appData, fileManager: fileManager) + let appDataConvCount = self.countDBFiles(in: appDataConversations, fileManager: fileManager) + let totalDB = primaryCount + appDataCount + appDataConvCount + if totalDB > 0 { return totalDB } // Fallback to tokscale JSONL cache (also counts as offline availability) let cache = self.tokscaleCacheDirectory(home: home) return self.countJSONLFiles(in: cache, fileManager: fileManager) diff --git a/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift b/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift index c7401d9dbf..56d8ded2c0 100644 --- a/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift +++ b/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift @@ -782,8 +782,11 @@ struct AntigravityOAuthFetchStrategy: ProviderFetchStrategy { sourceLabel: "oauth") } - func shouldFallback(on _: Error, context _: ProviderFetchContext) -> Bool { - false + func shouldFallback(on _: Error, context: ProviderFetchContext) -> Bool { + let homeURL = context.env["HOME"] + .flatMap { $0.isEmpty ? nil : URL(fileURLWithPath: $0, isDirectory: true) } + ?? FileManager.default.homeDirectoryForCurrentUser + return AntigravityOfflineStore.hasOfflineData(home: homeURL, env: context.env) } } @@ -830,7 +833,7 @@ struct AntigravityOfflineFetchStrategy: ProviderFetchStrategy { updatedAt: Date(), identity: ProviderIdentitySnapshot( providerID: .antigravity, - accountEmail: AntigravitySelectedAccountGuard.selectedAccountEmail(context: context), + accountEmail: nil, accountOrganization: nil, loginMethod: "offline")) return self.makeResult(usage: snapshot, sourceLabel: "offline") From 7427660af27d8994214fe5a2b57c2d2d7a73d7a8 Mon Sep 17 00:00:00 2001 From: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> Date: Mon, 24 Aug 2026 05:29:57 +0800 Subject: [PATCH 17/30] feat(spend): add tokscale-compatible local readers for Cursor and Antigravity (#3113) * feat(spend): add tokscale-compatible local readers for Cursor and Antigravity - Cursor: read ~/.config/tokscale/cursor-cache/usage*.csv (v1/v2/v3) with tokstyle column handling, cacheWrite = with-without, noon UTC for date-only, and CostUsageDailyReport aggregation. (Sources/CodexBarCore/Providers/Cursor/CursorLocalCSVReader.swift:1) - Antigravity: read ~/.config/tokscale/antigravity-cache/sessions/*.jsonl (tokscale JSONL) and stub for ~/.gemini/antigravity-cli/*.db direct SQLite (ProtoReader to follow). Handles session_meta fallback and dedup. (Sources/CodexBarCore/Providers/Antigravity/AntigravityLocalReader.swift:1) - CostUsageFetcher: local fallback before remote for Cursor (offline) and primary for Antigravity (quota-only before), with Provider-specific by design comments for gatekeeper. (Sources/CodexBarCore/CostUsageFetcher.swift:440) - Antigravity descriptor: enable supportsTokenSnapshot for spend dashboard. (Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift:51) Reproduced from /tmp/opencodex/src/adapters/cursor/protobuf-events.ts:218 and /tmp/tokscale/crates/tokscale-core/src/sessions/{cursor,antigravity_cli}.rs Phase 1 of opencodex/tokscale plan, offline-first, no auth. * test(readers): cover cursor csv schemas and antigravity cache fallback * fix(test): include antigravity in cost capable dashboard sources * fix(spend): honor CSV total tokens and add Antigravity Linux capability * fix(test): honor cursor CSV total tokens column in aggregation * fix(spend): repair 3113 tokscale readers P1s - catch remote Cursor errors before falling back to local CSV - recompute summaries after window filtering for Cursor and Antigravity - keep Antigravity costs nil (unpriced) and deduplicate by responseId - parse date-only CSV rows with UTC calendar - thread fallback calendar through loaders * fix(lint): repair 3113 build and format - calendar before now in makeDailyReport - implicit optional init - wrap long lines and andOperator * style: swiftformat wrap for 3113 * Fix 3113 provider gatekeeper anchors * fix(spend): address 3113 review findings -- freshness, calendar, date-only, fixture model - Preserve cache freshness: return nil when filtered window is empty instead of publishing established zero with now timestamp - Pass pinned calendar into tokenSnapshot for Cursor/Antigravity local snapshots - Keep date-only Cursor CSV rows in configured calendar's noon, not UTC noon - Use clearly fictitious test model test-model-antigravity-a * style: fix line length for fixture model * fix(test): update gatekeeper anchors for CostUsageFetcher line drift Allowlist lines 1339->1335 and 1695->1691 after 075eac7 freshness/calendar fixes --- Sources/CodexBarCore/CostUsageFetcher.swift | 110 ++++++++- .../Antigravity/AntigravityLocalReader.swift | 208 ++++++++++++++++++ .../AntigravityProviderDescriptor.swift | 5 +- .../Cursor/CursorLocalCSVReader.swift | 204 +++++++++++++++++ .../CursorAntigravityLocalReaderTests.swift | 138 ++++++++++++ .../ProviderArchitectureGatekeeperTests.swift | 27 +-- .../SpendDashboardModelTests.swift | 2 + 7 files changed, 673 insertions(+), 21 deletions(-) create mode 100644 Sources/CodexBarCore/Providers/Antigravity/AntigravityLocalReader.swift create mode 100644 Sources/CodexBarCore/Providers/Cursor/CursorLocalCSVReader.swift create mode 100644 Tests/CodexBarTests/CursorAntigravityLocalReaderTests.swift diff --git a/Sources/CodexBarCore/CostUsageFetcher.swift b/Sources/CodexBarCore/CostUsageFetcher.swift index cc58477c52..473dd35923 100644 --- a/Sources/CodexBarCore/CostUsageFetcher.swift +++ b/Sources/CodexBarCore/CostUsageFetcher.swift @@ -1,3 +1,4 @@ +// swiftlint:disable file_length import Foundation public enum CostUsageError: LocalizedError, Sendable { @@ -425,14 +426,43 @@ public struct CostUsageFetcher: Sendable { let clampedHistoryDays = max(1, min(365, historyDays)) - if let remoteSnapshot = try await self.loadRemoteTokenSnapshot( + var remoteSnapshot: CostUsageTokenSnapshot? + var remoteError: Error? + // Provider-specific by design: Cursor may fall back to local CSV when its remote dashboard is unavailable. + do { + remoteSnapshot = try await self.loadRemoteTokenSnapshot( + provider: provider, + environment: environment, + now: now, + historyDays: clampedHistoryDays, + cursorCookieHeaderOverride: cursorCookieHeaderOverride) + } catch { + if provider != .cursor { + throw error + } + remoteError = error + } + if let remoteSnapshot { + return remoteSnapshot + } + + // Provider-specific by design: Cursor and Antigravity local readers backfill providers without remote history. + let fallbackCalendar = Self.resolvedScannerOptions( + overrideScannerOptions, provider: provider, - environment: environment, - now: now, - historyDays: clampedHistoryDays, - cursorCookieHeaderOverride: cursorCookieHeaderOverride) + codexHomePath: codexHomePath).calendar + if provider == .cursor, let local = await self.loadCursorLocalSnapshot( + now: now, historyDays: clampedHistoryDays, calendar: fallbackCalendar) { - return remoteSnapshot + return local + } + if let remoteError { + throw remoteError + } + if provider == .antigravity, let local = await self.loadAntigravityLocalSnapshot( + now: now, historyDays: clampedHistoryDays, calendar: fallbackCalendar) + { + return local } var options = Self.resolvedScannerOptions( @@ -1120,6 +1150,74 @@ public struct CostUsageFetcher: Sendable { } #endif + private static func loadCursorLocalSnapshot( + now: Date, + historyDays: Int, + calendar: Calendar = .current) async -> CostUsageTokenSnapshot? + { + let paths = CursorLocalCSVReader.cachedCSVPaths() + guard !paths.isEmpty else { return nil } + var allRows: [CursorLocalCSVReader.Row] = [] + for url in paths { + allRows.append(contentsOf: CursorLocalCSVReader.parseFile(at: url)) + } + guard !allRows.isEmpty else { return nil } + let full = CursorLocalCSVReader.makeDailyReport(from: allRows, calendar: calendar, now: now) + let cal = calendar + let since = cal.date(byAdding: .day, value: -(historyDays - 1), to: cal.startOfDay(for: now)) ?? now + let sinceKey = CostUsageLocalDay.key(from: since, calendar: cal) + let nowKey = CostUsageLocalDay.key(from: now, calendar: cal) + let filtered = full.data.filter { $0.date >= sinceKey && $0.date <= nowKey } + guard !filtered.isEmpty else { return nil } + let costValues = filtered.compactMap(\.costUSD) + let totalCost: Double? = costValues.isEmpty ? nil : costValues.reduce(0, +) + let totalTokens = filtered.compactMap(\.totalTokens).reduce(0, +) + let filteredSummary: CostUsageDailyReport.Summary = .init( + totalInputTokens: nil, + totalOutputTokens: nil, + totalTokens: totalTokens, + totalCostUSD: totalCost) + let daily = CostUsageDailyReport(data: filtered, summary: filteredSummary) + return Self.tokenSnapshot( + from: daily, + now: now, + historyDays: historyDays, + useCurrentLocalDayForSession: true, + calendar: cal, + costProvenance: .listPriceEstimate) + } + + private static func loadAntigravityLocalSnapshot( + now: Date, + historyDays: Int, + calendar: Calendar = .current) async -> CostUsageTokenSnapshot? + { + let cal = calendar + let report = AntigravityLocalReader.makeDailyReport(calendar: cal) + guard !report.data.isEmpty else { return nil } + let since = cal.date(byAdding: .day, value: -(historyDays - 1), to: cal.startOfDay(for: now)) ?? now + let sinceKey = CostUsageLocalDay.key(from: since, calendar: cal) + let nowKey = CostUsageLocalDay.key(from: now, calendar: cal) + let filtered = report.data.filter { $0.date >= sinceKey && $0.date <= nowKey } + guard !filtered.isEmpty else { return nil } + let costValues = filtered.compactMap(\.costUSD) + let totalCost: Double? = costValues.isEmpty ? nil : costValues.reduce(0, +) + let totalTokens = filtered.compactMap(\.totalTokens).reduce(0, +) + let filteredSummary: CostUsageDailyReport.Summary = .init( + totalInputTokens: nil, + totalOutputTokens: nil, + totalTokens: totalTokens, + totalCostUSD: totalCost) + let daily = CostUsageDailyReport(data: filtered, summary: filteredSummary) + return Self.tokenSnapshot( + from: daily, + now: now, + historyDays: historyDays, + useCurrentLocalDayForSession: true, + calendar: cal, + costProvenance: .unknown) + } + static func tokenSnapshot( from daily: CostUsageDailyReport, now: Date, diff --git a/Sources/CodexBarCore/Providers/Antigravity/AntigravityLocalReader.swift b/Sources/CodexBarCore/Providers/Antigravity/AntigravityLocalReader.swift new file mode 100644 index 0000000000..57f1fdb896 --- /dev/null +++ b/Sources/CodexBarCore/Providers/Antigravity/AntigravityLocalReader.swift @@ -0,0 +1,208 @@ +import Foundation + +// MARK: - Antigravity Local Reader (tokscale compatible) + +enum AntigravityLocalReader { + static func tokiCachePaths(home: URL? = nil) -> [URL] { + let base: URL = if let home { + home.appendingPathComponent(".config/tokscale/antigravity-cache/sessions", isDirectory: true) + } else if let dir = ProcessInfo.processInfo.environment["TOKSCALE_CONFIG_DIR"] { + URL(fileURLWithPath: dir).appendingPathComponent("antigravity-cache/sessions", isDirectory: true) + } else { + FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent(".config/tokscale/antigravity-cache/sessions", isDirectory: true) + } + guard let contents = try? FileManager.default.contentsOfDirectory( + at: base, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles]) else { return [] } + return contents.filter { $0.pathExtension == "jsonl" }.sorted { $0.lastPathComponent < $1.lastPathComponent } + } + + static func cliDBPaths(home: URL? = nil) -> [URL] { + let base: URL = if let env = ProcessInfo.processInfo.environment["GEMINI_CLI_HOME"], !env.isEmpty { + URL(fileURLWithPath: env).appendingPathComponent("antigravity-cli/conversations", isDirectory: true) + } else if let home { + home.appendingPathComponent(".gemini/antigravity-cli/conversations", isDirectory: true) + } else { + FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent(".gemini/antigravity-cli/conversations", isDirectory: true) + } + guard let c = try? FileManager.default.contentsOfDirectory( + at: base, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles]) else { return [] } + return c + .filter { + $0.pathExtension == "db" && !$0.lastPathComponent.hasSuffix("-wal") && !$0.lastPathComponent + .hasSuffix("-shm") + } + .sorted { $0.lastPathComponent < $1.lastPathComponent } + } + + static func parseJSONLCache(paths: [URL]? = nil, calendar: Calendar = .current) -> [CostUsageDailyReport.Entry] { + var entries: [CostUsageDailyReport.Entry] = [] + var seenResponseIds = Set() + for url in paths ?? self.tokiCachePaths() { + guard let data = try? Data(contentsOf: url), + let text = String(data: data, encoding: .utf8) else { continue } + var sessionModel: String? + for line in text.components(separatedBy: .newlines) { + let t = line.trimmingCharacters(in: .whitespacesAndNewlines) + guard !t.isEmpty, let d = t.data(using: .utf8), + let json = try? JSONSerialization.jsonObject(with: d) as? [String: Any] else { continue } + let type = json["type"] as? String + if type == "session_meta" { + sessionModel = json["modelId"] as? String ?? json["model_id"] as? String + continue + } + if type == "usage" || json["input"] != nil { + if let rid = (json["responseId"] as? String ?? json["response_id"] as? String), !rid.isEmpty { + if seenResponseIds.contains(rid) { continue } + seenResponseIds.insert(rid) + } + let modelId = + (json["modelId"] as? String ?? json["model_id"] as? String ?? sessionModel ?? "unknown") + let input = (json["input"] as? Int) ?? 0 + let output = (json["output"] as? Int) ?? 0 + let read = (json["cacheRead"] as? Int) ?? (json["cache_read"] as? Int) ?? 0 + let write = (json["cacheWrite"] as? Int) ?? (json["cache_write"] as? Int) ?? 0 + let reason = (json["reasoning"] as? Int) ?? 0 + let ts = (json["timestamp"] as? Int64) ?? (json["timestamp"] as? Int).map(Int64.init) ?? 0 + let date = self.timestampToDayKey(ts, calendar: calendar) + let total = input + output + read + write + if total == 0 { continue } + if let idx = entries.firstIndex(where: { $0.date == date }) { + var e = entries[idx] + let ne = CostUsageDailyReport.Entry( + date: e.date, + inputTokens: (e.inputTokens ?? 0) + input, + outputTokens: (e.outputTokens ?? 0) + output, + cacheReadTokens: (e.cacheReadTokens ?? 0) + read, + cacheCreationTokens: (e.cacheCreationTokens ?? 0) + write, + reasoningTokens: (e.reasoningTokens ?? 0) + reason, + totalTokens: (e.totalTokens ?? 0) + total, + requestCount: (e.requestCount ?? 0) + 1, + costUSD: e.costUSD, + modelsUsed: nil, + modelBreakdowns: self.mergeBreakdown(e.modelBreakdowns, model: modelId, tokens: total)) + entries[idx] = ne + } else { + let e = CostUsageDailyReport.Entry( + date: date, + inputTokens: input, + outputTokens: output, + cacheReadTokens: read, + cacheCreationTokens: write, + reasoningTokens: reason, + totalTokens: total, + requestCount: 1, + costUSD: nil, + modelsUsed: nil, + modelBreakdowns: [ + CostUsageDailyReport.ModelBreakdown( + modelName: modelId, + costUSD: nil, + totalTokens: total, + requestCount: 1), + ]) + entries.append(e) + } + } + } + } + return entries.sorted { $0.date < $1.date } + } + + static func parseCLIDBs() -> [CostUsageDailyReport.Entry] { + [] + } + + static func makeDailyReport(calendar: Calendar = .current) -> CostUsageDailyReport { + var merged: [String: CostUsageDailyReport.Entry] = [:] + for e in self.parseJSONLCache(calendar: calendar) + self.parseCLIDBs() { + if var ex = merged[e.date] { + let mergedCost: Double? = { + if ex.costUSD == nil, e.costUSD == nil { return nil } + return (ex.costUSD ?? 0) + (e.costUSD ?? 0) + }() + let ne = CostUsageDailyReport.Entry( + date: ex.date, + inputTokens: (ex.inputTokens ?? 0) + (e.inputTokens ?? 0), + outputTokens: (ex.outputTokens ?? 0) + (e.outputTokens ?? 0), + cacheReadTokens: (ex.cacheReadTokens ?? 0) + (e.cacheReadTokens ?? 0), + cacheCreationTokens: (ex.cacheCreationTokens ?? 0) + (e.cacheCreationTokens ?? 0), + reasoningTokens: (ex.reasoningTokens ?? 0) + (e.reasoningTokens ?? 0), + totalTokens: (ex.totalTokens ?? 0) + (e.totalTokens ?? 0), + requestCount: (ex.requestCount ?? 0) + (e.requestCount ?? 0), + costUSD: mergedCost, + modelsUsed: nil, + modelBreakdowns: self.mergeBreakdowns(ex.modelBreakdowns, e.modelBreakdowns)) + merged[e.date] = ne + } else { + merged[e.date] = e + } + } + let sorted = merged.values.sorted { $0.date < $1.date } + let costValues = sorted.compactMap(\.costUSD) + let totalCost: Double? = costValues.isEmpty ? nil : costValues.reduce(0, +) + let totalTokens = sorted.compactMap(\.totalTokens).reduce(0, +) + let summary: CostUsageDailyReport.Summary? = sorted.isEmpty ? nil : .init( + totalInputTokens: nil, + totalOutputTokens: nil, + totalTokens: totalTokens, + totalCostUSD: totalCost) + return CostUsageDailyReport(data: sorted, summary: summary) + } + + private static func timestampToDayKey(_ ms: Int64, calendar: Calendar = .current) -> String { + let sec = Double(ms) / 1000.0 + let date = Date(timeIntervalSince1970: sec) + let c = calendar + let comps = c.dateComponents([.year, .month, .day], from: date) + return String(format: "%04d-%02d-%02d", comps.year ?? 1970, comps.month ?? 1, comps.day ?? 1) + } + + private static func mergeBreakdown( + _ ex: [CostUsageDailyReport.ModelBreakdown]?, + model: String, + tokens: Int) -> [CostUsageDailyReport.ModelBreakdown] + { + var arr = ex ?? [] + if let i = arr.firstIndex(where: { $0.modelName == model }) { + let b = arr[i] + arr[i] = CostUsageDailyReport.ModelBreakdown( + modelName: b.modelName, + costUSD: b.costUSD, + totalTokens: (b.totalTokens ?? 0) + tokens, + requestCount: (b.requestCount ?? 0) + 1) + } else { + arr.append(CostUsageDailyReport.ModelBreakdown( + modelName: model, + costUSD: nil, + totalTokens: tokens, + requestCount: 1)) + } + return arr + } + + private static func mergeBreakdowns( + _ a: [CostUsageDailyReport.ModelBreakdown]?, + _ b: [CostUsageDailyReport.ModelBreakdown]?) -> [CostUsageDailyReport.ModelBreakdown]? + { + var d: [String: CostUsageDailyReport.ModelBreakdown] = [:] + for m in (a ?? []) + (b ?? []) { + if var ex = d[m.modelName] { + let mergedCost: Double? = { + if ex.costUSD == nil, m.costUSD == nil { return nil } + return (ex.costUSD ?? 0) + (m.costUSD ?? 0) + }() + ex = CostUsageDailyReport.ModelBreakdown( + modelName: ex.modelName, + costUSD: mergedCost, + totalTokens: (ex.totalTokens ?? 0) + (m.totalTokens ?? 0), + requestCount: (ex.requestCount ?? 0) + (m.requestCount ?? 0)) + d[m.modelName] = ex + } else { + d[m.modelName] = m + } + } + return d.isEmpty ? nil : Array(d.values) + } +} diff --git a/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift b/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift index 56d8ded2c0..06a70e2894 100644 --- a/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift +++ b/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift @@ -49,8 +49,9 @@ public enum AntigravityProviderDescriptor { ProviderColor(hex: 0xFBBC04), ]), tokenCost: ProviderTokenCostConfig( - supportsTokenCost: false, - noDataMessage: { "Antigravity cost summary is not supported." }), + supportsTokenCost: true, + noDataMessage: { "Antigravity cost summary is not supported." }, + supportsTokenSnapshot: true), pace: ProviderPaceCapability( sessionPaceWindowRule: .custom { window, _ in window.windowMinutes == nil || window.windowMinutes == 300 diff --git a/Sources/CodexBarCore/Providers/Cursor/CursorLocalCSVReader.swift b/Sources/CodexBarCore/Providers/Cursor/CursorLocalCSVReader.swift new file mode 100644 index 0000000000..c7b73ddb0d --- /dev/null +++ b/Sources/CodexBarCore/Providers/Cursor/CursorLocalCSVReader.swift @@ -0,0 +1,204 @@ +import Foundation + +// MARK: - Cursor Local CSV Reader (tokscale compatible) + +enum CursorLocalCSVReader { + static func cachedCSVPaths(home: URL? = nil) -> [URL] { + let base: URL = if let home { + home.appendingPathComponent(".config/tokscale/cursor-cache", isDirectory: true) + } else if let dir = ProcessInfo.processInfo.environment["TOKSCALE_CONFIG_DIR"] { + URL(fileURLWithPath: dir).appendingPathComponent("cursor-cache", isDirectory: true) + } else { + FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent(".config/tokscale/cursor-cache", isDirectory: true) + } + guard let contents = try? FileManager.default.contentsOfDirectory( + at: base, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles]) + else { return [] } + return contents.filter { + let n = $0.lastPathComponent + return n.hasPrefix("usage") && n.hasSuffix(".csv") && !$0.path.contains("/archive/") && !n + .hasPrefix("usage.backup") + }.sorted { $0.lastPathComponent < $1.lastPathComponent } + } + + struct Row: Sendable { + let date: Date + let model: String + let input: Int + let cacheRead: Int + let cacheWrite: Int + let output: Int + let totalTokens: Int? + let cost: Double + } + + static func parseFile(at url: URL, calendar: Calendar = .current) -> [Row] { + guard let data = try? Data(contentsOf: url), + let text = String(data: data, encoding: .utf8) else { return [] } + let lines = text.components(separatedBy: .newlines).filter { !$0.trimmingCharacters(in: .whitespaces).isEmpty } + guard let header = lines.first else { return [] } + let cols = self.parseCSVLine(header) + let hasKind = cols.contains { $0.lowercased() == "kind" } + struct Idx { let model: Int; let inW: Int; let inWo: Int; let read: Int; let out: Int; let cost: Int } + let idx = if hasKind, cols.count >= 11 { + Idx(model: 4, inW: 6, inWo: 7, read: 8, out: 9, cost: 11) + } else if hasKind { + Idx(model: 2, inW: 4, inWo: 5, read: 6, out: 7, cost: 9) + } else { + Idx(model: 1, inW: 2, inWo: 3, read: 4, out: 5, cost: 7) + } + var rows: [Row] = [] + for line in lines.dropFirst() { + let c = self.parseCSVLine(line) + guard c.count > max(idx.model, idx.cost) else { continue } + let model = c[idx.model].trimmingCharacters(in: .whitespacesAndNewlines) + guard !model.isEmpty else { continue } + let inW = self.parseInt(c[idx.inW]) + let inWo = self.parseInt(c[idx.inWo]) + let read = self.parseInt(c[idx.read]) + let out = self.parseInt(c[idx.out]) + let cost = self.parseCost(c[idx.cost]) + // Parse the authoritative Total Tokens column if present. + let totalIdx = idx.cost - 1 + let totalTokens = totalIdx < cols.count && totalIdx < c.count + && cols[totalIdx].lowercased().contains("total") ? self.parseInt(c[totalIdx]) : nil + guard let date = parseDate(c[0], calendar: calendar) else { continue } + let write = max(0, inW - inWo) + let input = inWo + if input == 0, out == 0, read == 0, write == 0 { continue } + rows.append(Row( + date: date, + model: model, + input: input, + cacheRead: read, + cacheWrite: write, + output: out, + totalTokens: totalTokens, + cost: cost)) + } + return rows + } + + static func makeDailyReport( + from rows: [Row], + calendar: Calendar = .current, + now: Date = Date()) -> CostUsageDailyReport + { + var byDay: [String: CostUsageDailyReport.Entry] = [:] + var totalCost: Double = 0 + var totalTokens = 0 + for row in rows { + let key = CostUsageLocalDay.key(from: row.date, calendar: calendar) + let existing = byDay[key] + var e = existing ?? CostUsageDailyReport.Entry( + date: key, + inputTokens: 0, + outputTokens: 0, + cacheReadTokens: 0, + cacheCreationTokens: 0, + totalTokens: 0, + requestCount: 0, + costUSD: 0, + modelsUsed: nil, + modelBreakdowns: []) + // Honor the CSV's authoritative Total Tokens column when present; + // otherwise derive from component columns. + let tot = row.totalTokens ?? (row.input + row.output + row.cacheRead + row.cacheWrite) + var bds = e.modelBreakdowns ?? [] + if let i = bds.firstIndex(where: { $0.modelName == row.model }) { + let b = bds[i] + bds[i] = CostUsageDailyReport.ModelBreakdown( + modelName: b.modelName, + costUSD: (b.costUSD ?? 0) + row.cost, + totalTokens: (b.totalTokens ?? 0) + tot, + requestCount: (b.requestCount ?? 0) + 1) + } else { + bds.append(CostUsageDailyReport.ModelBreakdown( + modelName: row.model, + costUSD: row.cost, + totalTokens: tot, + requestCount: 1)) + } + let ne = CostUsageDailyReport.Entry( + date: key, + inputTokens: (e.inputTokens ?? 0) + row.input, + outputTokens: (e.outputTokens ?? 0) + row.output, + cacheReadTokens: (e.cacheReadTokens ?? 0) + row.cacheRead, + cacheCreationTokens: (e.cacheCreationTokens ?? 0) + row.cacheWrite, + totalTokens: (e.totalTokens ?? 0) + tot, + requestCount: (e.requestCount ?? 0) + 1, + costUSD: (e.costUSD ?? 0) + row.cost, + modelsUsed: e.modelsUsed, + modelBreakdowns: bds) + byDay[key] = ne + totalCost += row.cost + totalTokens += tot + } + let sorted = byDay.values.sorted { $0.date < $1.date } + let summary: CostUsageDailyReport.Summary? = sorted.isEmpty ? nil : .init( + totalInputTokens: nil, + totalOutputTokens: nil, + totalTokens: totalTokens, + totalCostUSD: totalCost) + return CostUsageDailyReport(data: sorted, summary: summary) + } + + static func parseCSVLine(_ line: String) -> [String] { + var cols: [String] = [] + var cur = "" + var q = false + for ch in line { + if ch == "\"" { q.toggle() } else if ch == ",", !q { + cols.append(cur); cur = "" + } else { cur.append(ch) } + } + cols.append(cur) + return cols + .map { $0.trimmingCharacters(in: .whitespacesAndNewlines).replacingOccurrences(of: "\"\"", with: "\"") } + } + + static func parseInt(_ s: String) -> Int { + Int(s.trimmingCharacters(in: .whitespacesAndNewlines).replacingOccurrences(of: ",", with: "")) ?? 0 + } + + static func parseCost(_ s: String) -> Double { + let t = s.trimmingCharacters(in: .whitespacesAndNewlines) + if t.isEmpty || t == "-" || t.lowercased() == "included" || t.lowercased() == "nan" { return 0 } + return Double(t.replacingOccurrences(of: "$", with: "").replacingOccurrences(of: ",", with: "")) ?? 0 + } + + static func parseDate(_ s: String, calendar: Calendar) -> Date? { + let t = s.trimmingCharacters(in: .whitespacesAndNewlines) + let iso = ISO8601DateFormatter() + iso.formatOptions = [.withInternetDateTime, .withFractionalSeconds] + if let d = iso.date(from: t) { return d } + iso.formatOptions = [.withInternetDateTime] + if let d = iso.date(from: t) { return d } + let df = DateFormatter() + df.locale = Locale(identifier: "en_US_POSIX") + df.timeZone = TimeZone(secondsFromGMT: 0) + for fmt in ["yyyy-MM-dd'T'HH:mm:ss.SSS", "yyyy-MM-dd'T'HH:mm:ss", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd"] { + df.dateFormat = fmt + if let d = df.date(from: t) { + if fmt == "yyyy-MM-dd" { + // Keep date-only rows in the configured calendar's day (noon in that calendar), + // so UTC+13/14 users don't see the row shifted to the next local day. + var utcCal = Calendar(identifier: .gregorian) + utcCal.timeZone = TimeZone(secondsFromGMT: 0)! + let utcComps = utcCal.dateComponents([.year, .month, .day], from: d) + var targetComps = DateComponents() + targetComps.year = utcComps.year + targetComps.month = utcComps.month + targetComps.day = utcComps.day + targetComps.hour = 12 + targetComps.minute = 0 + targetComps.second = 0 + return calendar.date(from: targetComps) ?? d + } + return d + } + } + return nil + } +} diff --git a/Tests/CodexBarTests/CursorAntigravityLocalReaderTests.swift b/Tests/CodexBarTests/CursorAntigravityLocalReaderTests.swift new file mode 100644 index 0000000000..ffbce28174 --- /dev/null +++ b/Tests/CodexBarTests/CursorAntigravityLocalReaderTests.swift @@ -0,0 +1,138 @@ +import Foundation +import Testing +@testable import CodexBarCore + +/// Tokscale-compatible local readers: Cursor CSV caches +/// (`~/.config/tokscale/cursor-cache/usage*.csv`) and Antigravity session caches +/// (`~/.config/tokscale/antigravity-cache/sessions/*.jsonl`). +/// Header layouts mirror `tokscale/crates/tokscale-core/src/sessions/cursor.rs`: +/// - v1: Date,Model,Input (w/ Cache Write),Input (w/o Cache Write),Cache Read,Output Tokens,Total Tokens,Cost,Cost to +/// you +/// - v2: Date,Kind,Model,Max Mode,Input (w/ Cache Write),Input (w/o Cache Write),Cache Read,Output Tokens,Total +/// Tokens,Cost +/// - v3: Date,Cloud Agent ID,Automation ID,Kind,Model,Max Mode,Input (w/ Cache Write),Input (w/o Cache Write),Cache +/// Read,Output Tokens,Total Tokens,Cost +struct CursorAntigravityLocalReaderTests { + @Test + func `cursor v1 csv parses token buckets and cost`() throws { + let csv = """ + Date,Model,Input (w/ Cache Write),Input (w/o Cache Write),Cache Read,Output Tokens,Total Tokens,Cost,Cost to you + 2026-08-20T10:00:00.000Z,claude-sonnet-4-5,1200,800,400,300,1500,0.012,0 + """ + let url = try Self.writeTemporary(csv, extension: "csv") + defer { try? FileManager.default.removeItem(at: url) } + let rows = CursorLocalCSVReader.parseFile(at: url) + #expect(rows.count == 1) + let row = try #require(rows.first) + #expect(row.model == "claude-sonnet-4-5") + #expect(row.input == 800) + #expect(row.cacheRead == 400) + #expect(row.cacheWrite == 400) + #expect(row.output == 300) + #expect(row.cost == 0.012) + } + + @Test + func `cursor v2 csv parses kind rows`() throws { + let csv = [ + "Date,Kind,Model,Max Mode,Input (w/ Cache Write),Input (w/o Cache Write)," + + "Cache Read,Output Tokens,Total Tokens,Cost", + "2026-08-20T11:00:00Z,chat,gpt-5.4,on,500,500,0,50,550,0.001", + ].joined(separator: "\n") + "\n" + let url = try Self.writeTemporary(csv, extension: "csv") + defer { try? FileManager.default.removeItem(at: url) } + let rows = CursorLocalCSVReader.parseFile(at: url) + let row = try #require(rows.first) + #expect(row.model == "gpt-5.4") + #expect(row.input == 500) + #expect(row.cacheRead == 0) + #expect(row.cacheWrite == 0) + #expect(row.output == 50) + } + + @Test + func `cursor v3 csv parses cloud agent rows`() throws { + let csv = [ + "Date,Cloud Agent ID,Automation ID,Kind,Model,Max Mode," + + "Input (w/ Cache Write),Input (w/o Cache Write)," + + "Cache Read,Output Tokens,Total Tokens,Cost", + "2026-08-20,agent-123,,agent,claude-opus-4-6,off,900,700,200,120,1020,0.05", + ].joined(separator: "\n") + "\n" + let url = try Self.writeTemporary(csv, extension: "csv") + defer { try? FileManager.default.removeItem(at: url) } + let rows = CursorLocalCSVReader.parseFile(at: url) + let row = try #require(rows.first) + #expect(row.model == "claude-opus-4-6") + #expect(row.input == 700) + #expect(row.cacheRead == 200) + #expect(row.cacheWrite == 200) + #expect(row.output == 120) + #expect(row.cost == 0.05) + } + + @Test + func `cursor csv aggregation groups rows into day entries`() throws { + let csv = """ + Date,Model,Input (w/ Cache Write),Input (w/o Cache Write),Cache Read,Output Tokens,Total Tokens,Cost,Cost to you + 2026-08-20T10:00:00.000Z,claude-sonnet-4-5,1200,800,400,300,1500,0.012,0 + 2026-08-20T12:00:00.000Z,claude-sonnet-4-5,600,500,100,100,700,0.004,0 + 2026-08-21T09:00:00.000Z,gpt-5.4,0,0,0,40,40,0.001,0 + """ + let url = try Self.writeTemporary(csv, extension: "csv") + defer { try? FileManager.default.removeItem(at: url) } + let report = CursorLocalCSVReader.makeDailyReport( + from: CursorLocalCSVReader.parseFile(at: url)) + #expect(report.data.count == 2) + let first = try #require(report.data.first) + #expect(first.inputTokens == 1300) + #expect(first.cacheReadTokens == 500) + #expect(first.cacheCreationTokens == 500) + #expect(first.outputTokens == 400) + #expect(first.requestCount == 2) + #expect(first.costUSD ?? 0 == 0.016) + let breakdowns = try #require(first.modelBreakdowns) + #expect(breakdowns.count == 1) + #expect(breakdowns.first?.modelName == "claude-sonnet-4-5") + let summary = try #require(report.summary) + // The CSV's own Total Tokens column is authoritative when present + // (1500 + 700 + 40), rather than the recomputed bucket sum. + #expect(summary.totalTokens == 2240) + } + + @Test + func `antigravity cache jsonl aggregates usage with session model fallback`() throws { + // Derive timestamps from local noon so both events land on the same local day in any TZ. + let calendar = Calendar.current + let noon = calendar.date( + byAdding: .hour, value: 12, to: calendar.startOfDay(for: Date())) ?? Date() + let firstStamp = Int64(noon.timeIntervalSince1970 * 1000) + let secondStamp = firstStamp + 3_600_000 + let jsonl = [ + #"{"type":"session_meta","modelId":"test-model-a"}"#, + #"{"type":"usage","modelId":"test-model-a","input":100,"output":30,"cacheRead":50,"cacheWrite":10,"# + + #""timestamp":\#(firstStamp)}"#, + #"{"type":"usage","input":40,"output":10,"cacheRead":0,"cacheWrite":0,"timestamp":\#(secondStamp)}"#, + ].joined(separator: "\n") + "\n" + let url = try Self.writeTemporary(jsonl, extension: "jsonl") + defer { try? FileManager.default.removeItem(at: url) } + let entries = AntigravityLocalReader.parseJSONLCache(paths: [url]) + #expect(entries.count == 1) + let entry = try #require(entries.first) + #expect(entry.inputTokens == 140) + #expect(entry.outputTokens == 40) + #expect(entry.cacheReadTokens == 50) + #expect(entry.cacheCreationTokens == 10) + #expect(entry.requestCount == 2) + // The second event omits `modelId` and falls back to the session_meta model. + let breakdowns = try #require(entry.modelBreakdowns) + #expect(breakdowns.map(\.modelName) == ["test-model-a"]) + #expect(breakdowns.first?.requestCount == 2) + } + + private static func writeTemporary(_ contents: String, extension fileExtension: String) throws -> URL { + let url = FileManager.default.temporaryDirectory + .appendingPathComponent("cursor-antigravity-reader-\(UUID().uuidString).\(fileExtension)") + try contents.write(to: url, atomically: true, encoding: .utf8) + return url + } +} diff --git a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift index fe4f8939fa..cb1d7dbd38 100644 --- a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift +++ b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift @@ -200,12 +200,13 @@ struct ProviderArchitectureGatekeeperTests { .warp, .kilo, .mistral, .deepseek, .deepinfra, .qoder, .crof, .chutes, ]) #if os(macOS) + // Antigravity joined via the tokscale-compatible local usage readers. #expect(Set(descriptors.filter(\.tokenCost.supportsTokenSnapshot).map(\.id)) == [ - .codex, .claude, .cursor, .vertexai, .bedrock, + .codex, .claude, .cursor, .vertexai, .bedrock, .antigravity, ]) #else #expect(Set(descriptors.filter(\.tokenCost.supportsTokenSnapshot).map(\.id)) == [ - .codex, .claude, .vertexai, .bedrock, + .codex, .claude, .vertexai, .bedrock, .antigravity, ]) #endif #expect(Set(descriptors.filter { $0.cli.binaryLocator != nil }.map(\.id)) == [ @@ -1347,31 +1348,31 @@ struct ProviderArchitectureGatekeeperTests { reason: "This provider-owned integration passes its fixed identity to a shared helper."), SuppressedProviderReference( path: "Sources/CodexBarCore/CostUsageFetcher.swift", - line: 291, + line: 292, anchor: "provider: .codex,", expectedProviderIDs: ["codex"], reason: "This provider-specific core branch passes its already-selected identity to a shared helper."), SuppressedProviderReference( path: "Sources/CodexBarCore/CostUsageFetcher.swift", - line: 307, + line: 308, anchor: "provider: .codex,", expectedProviderIDs: ["codex"], reason: "This provider-specific core branch passes its already-selected identity to a shared helper."), SuppressedProviderReference( path: "Sources/CodexBarCore/CostUsageFetcher.swift", - line: 779, + line: 809, anchor: "provider: .codex,", expectedProviderIDs: ["codex"], reason: "This provider-specific core branch passes its already-selected identity to a shared helper."), SuppressedProviderReference( path: "Sources/CodexBarCore/CostUsageFetcher.swift", - line: 859, + line: 889, anchor: "provider: .codex,", expectedProviderIDs: ["codex"], reason: "This provider-specific core branch passes its already-selected identity to a shared helper."), SuppressedProviderReference( path: "Sources/CodexBarCore/CostUsageFetcher.swift", - line: 950, + line: 980, anchor: "provider: .codex,", expectedProviderIDs: ["codex"], reason: "This provider-specific core branch passes its already-selected identity to a shared helper."), @@ -3455,7 +3456,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact shared construct dispatches a provider-owned capability at the generic integration boundary."), AllowedProviderConstruct( path: "Sources/CodexBarCore/CostUsageFetcher.swift", - line: 584, + line: 614, anchor: "if provider == .codex {", expectedProviderIDs: ["codex"], expectedReferenceCount: 1, @@ -3463,7 +3464,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact cost scanner dispatch selects a provider-owned transcript, cache, or pricing format."), AllowedProviderConstruct( path: "Sources/CodexBarCore/CostUsageFetcher.swift", - line: 612, + line: 642, anchor: "provider == .claude || (provider == .codex && options.shouldMergePiUsage)", expectedProviderIDs: ["claude", "codex"], expectedReferenceCount: 5, @@ -3471,7 +3472,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact cost scanner dispatch selects a provider-owned transcript, cache, or pricing format."), AllowedProviderConstruct( path: "Sources/CodexBarCore/CostUsageFetcher.swift", - line: 659, + line: 689, anchor: "options.provider == .codex || options.provider == .claude", expectedProviderIDs: ["claude", "codex"], expectedReferenceCount: 2, @@ -3479,7 +3480,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact cost scanner dispatch selects a provider-owned transcript, cache, or pricing format."), AllowedProviderConstruct( path: "Sources/CodexBarCore/CostUsageFetcher.swift", - line: 690, + line: 720, anchor: "guard provider == .codex || provider == .claude else { return nil }", expectedProviderIDs: ["claude", "codex"], expectedReferenceCount: 3, @@ -3487,7 +3488,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact cost scanner dispatch selects a provider-owned transcript, cache, or pricing format."), AllowedProviderConstruct( path: "Sources/CodexBarCore/CostUsageFetcher.swift", - line: 1237, + line: 1335, anchor: "if provider == .vertexai {", expectedProviderIDs: ["claude", "vertexai"], expectedReferenceCount: 2, @@ -3495,7 +3496,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact cost scanner dispatch selects a provider-owned transcript, cache, or pricing format."), AllowedProviderConstruct( path: "Sources/CodexBarCore/CostUsageFetcher.swift", - line: 1593, + line: 1691, anchor: "if provider == .cursor {", expectedProviderIDs: ["cursor"], expectedReferenceCount: 1, diff --git a/Tests/CodexBarTests/SpendDashboardModelTests.swift b/Tests/CodexBarTests/SpendDashboardModelTests.swift index 6056331e6f..69b0986d75 100644 --- a/Tests/CodexBarTests/SpendDashboardModelTests.swift +++ b/Tests/CodexBarTests/SpendDashboardModelTests.swift @@ -81,6 +81,8 @@ struct SpendDashboardModelTests { .opencodego, .openrouter, .xai, + // Antigravity joined via the tokscale-compatible local usage readers. + .antigravity, ]) } From ec1c13d924b963d93c4ccf30a25c439fadcc0182 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 15:01:24 -0700 Subject: [PATCH 18/30] docs: credit #3106 #3113 #3119 changelog entries --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5385f4dbad..e4edbdaaa4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.54.2 — Unreleased +- Spend dashboard: silently refresh independent providers (Claude/Cursor) when their token publications update, bucket the activity heatmap with the configured IANA timezone, and stop coalescing display-affecting ownership and revision changes (#3106). Thanks @Yuxin-Qiao! +- Spend: add tokscale-compatible local readers for Cursor and Antigravity local history (#3113). Thanks @Yuxin-Qiao! +- Antigravity: map retired Flash wire IDs to their current tier, and count local conversations as an offline fallback when the desktop app is unavailable (#3119). Thanks @Yuxin-Qiao! + - Fixed single-quota menu-bar icons understating remaining usage: a provider's only meaningful quota now renders as one prominent meter instead of half an icon next to a reserved empty lane, including when it arrives in the secondary slot (#3154, #3155). Thanks @akshayprabhu200! - Grok: report period-only CLI-proxy responses as unknown usage instead of 0% when Grok Build has hit its free limit, keeping identity and reset metadata (#3157, #3159). Thanks @anupamchugh! - OpenRouter: request the latest completed UTC day from the Activity API instead of the current date, fixing the HTTP 400 that suppressed spend history (#3133, #3138). Thanks @kiranmagic7! From b83a967f8427e1b3ae334c6974c362378da56c52 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 15:08:53 -0700 Subject: [PATCH 19/30] feat: add CHF display currency (#3149) --- CHANGELOG.md | 2 ++ Sources/CodexBar/PreferencesGeneralPane.swift | 2 ++ Sources/CodexBarCore/CurrencyExchange.swift | 3 ++- Tests/CodexBarTests/UsageFormatterTests.swift | 4 +++- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4edbdaaa4..5fd804d207 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## 0.54.2 — Unreleased +- Added CHF (Swiss Franc) to the display currency options (#3149). + - Spend dashboard: silently refresh independent providers (Claude/Cursor) when their token publications update, bucket the activity heatmap with the configured IANA timezone, and stop coalescing display-affecting ownership and revision changes (#3106). Thanks @Yuxin-Qiao! - Spend: add tokscale-compatible local readers for Cursor and Antigravity local history (#3113). Thanks @Yuxin-Qiao! - Antigravity: map retired Flash wire IDs to their current tier, and count local conversations as an offline fallback when the desktop app is unavailable (#3119). Thanks @Yuxin-Qiao! diff --git a/Sources/CodexBar/PreferencesGeneralPane.swift b/Sources/CodexBar/PreferencesGeneralPane.swift index 892cb4d6ed..b1d07600da 100644 --- a/Sources/CodexBar/PreferencesGeneralPane.swift +++ b/Sources/CodexBar/PreferencesGeneralPane.swift @@ -90,6 +90,7 @@ enum PreferredCurrencyOption: String, CaseIterable, Identifiable { case twd = "TWD" case sgd = "SGD" case inr = "INR" + case chf = "CHF" var id: String { self.rawValue @@ -111,6 +112,7 @@ enum PreferredCurrencyOption: String, CaseIterable, Identifiable { case .twd: "TWD (NT$)" case .sgd: "SGD ($)" case .inr: "INR (₹)" + case .chf: "CHF (Fr.)" } } } diff --git a/Sources/CodexBarCore/CurrencyExchange.swift b/Sources/CodexBarCore/CurrencyExchange.swift index a03f8ff218..1908c2f2c3 100644 --- a/Sources/CodexBarCore/CurrencyExchange.swift +++ b/Sources/CodexBarCore/CurrencyExchange.swift @@ -15,7 +15,7 @@ public final class CurrencyExchange: @unchecked Sendable { /// All currency codes supported by the converter. public static let supportedCurrencies: [String] = [ - "USD", "GBP", "EUR", "CZK", "CNY", "JPY", "KRW", "CAD", "AUD", "HKD", "TWD", "SGD", "INR", + "USD", "GBP", "EUR", "CZK", "CNY", "JPY", "KRW", "CAD", "AUD", "HKD", "TWD", "SGD", "INR", "CHF", ] private let lock = NSLock() @@ -35,6 +35,7 @@ public final class CurrencyExchange: @unchecked Sendable { "TWD": 32.30, "SGD": 1.34, "INR": 84.50, + "CHF": 0.80, ] private var lastFetchTime: Date? diff --git a/Tests/CodexBarTests/UsageFormatterTests.swift b/Tests/CodexBarTests/UsageFormatterTests.swift index bf7792d7dc..e7712368b7 100644 --- a/Tests/CodexBarTests/UsageFormatterTests.swift +++ b/Tests/CodexBarTests/UsageFormatterTests.swift @@ -537,7 +537,9 @@ struct UsageFormatterTests { #expect(!CurrencyExchange.requiresLiveRates(preferredCurrencyCode: "USD")) #expect(!CurrencyExchange.requiresLiveRates(preferredCurrencyCode: " usd ")) #expect(!CurrencyExchange.requiresLiveRates(preferredCurrencyCode: "auto")) - #expect(!CurrencyExchange.requiresLiveRates(preferredCurrencyCode: "CHF")) + // Unsupported codes never trigger live-rate fetches. + #expect(!CurrencyExchange.requiresLiveRates(preferredCurrencyCode: "XYZ")) + #expect(CurrencyExchange.requiresLiveRates(preferredCurrencyCode: "CHF")) #expect(CurrencyExchange.requiresLiveRates(preferredCurrencyCode: "GBP")) #expect(CurrencyExchange.requiresLiveRates(preferredCurrencyCode: " eur ")) #expect(CurrencyExchange.requiresLiveRates(preferredCurrencyCode: "KRW")) From 3f3d75b78a86652bb098510896cd6be7e2fe9a05 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 15:13:18 -0700 Subject: [PATCH 20/30] test: fix currency fixtures after CHF became supported --- Tests/CodexBarTests/UsageFormatterTests.swift | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Tests/CodexBarTests/UsageFormatterTests.swift b/Tests/CodexBarTests/UsageFormatterTests.swift index e7712368b7..a64529b175 100644 --- a/Tests/CodexBarTests/UsageFormatterTests.swift +++ b/Tests/CodexBarTests/UsageFormatterTests.swift @@ -523,12 +523,18 @@ struct UsageFormatterTests { #expect(explicitCZK.contains("CZK")) #expect(explicitCZK.contains(".")) - #expect(exchange.convert(amount: 10.0, from: "CHF", to: "USD") == nil) + // CHF is supported: conversion through the USD pivot works both ways. + let chfRate = exchange.rate(for: "CHF") ?? 0.80 + #expect(abs((exchange.convert(usdAmount: 10.0, to: "CHF") ?? 0) - 10.0 * chfRate) < epsilon) + #expect(abs((exchange.convert(amount: 10.0, from: "CHF", to: "USD") ?? 0) - 10.0 / chfRate) < epsilon) + + // An unsupported provider currency stays unconverted and keeps its own code. + #expect(exchange.convert(amount: 10.0, from: "XYZ", to: "USD") == nil) let unavailable = UsageFormatter.convertedCostString( 10.0, preferredCurrency: "USD", - providerCurrency: "CHF") - #expect(unavailable.contains("CHF")) + providerCurrency: "XYZ") + #expect(unavailable.contains("XYZ")) #expect(!unavailable.contains("$")) } From d92783689570faa306a3da27cc98837c71584c09 Mon Sep 17 00:00:00 2001 From: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> Date: Mon, 24 Aug 2026 06:21:48 +0800 Subject: [PATCH 21/30] fix(codex): tokscale parity for token counts - max cached, clamped, reasoning split, stale (#3120) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Align Codex token parsing with tokscale stale snapshots - skip lightly regressed cumulative snapshots before interleaved latching - take the maximum of cached and cache-read fields in all parsers - cover cache field selection and out-of-order snapshot accounting with focused tests * Refresh Codex parser hash * Parse bare usage rows in Codex rollouts * Fix stale reasoning and fallback cache parity * Fix Codex fallback test fixture line handling * fix(antigravity): repair offline fallback proof and oauth fallback; fix(spend): limit concurrent dashboard fetches to 3 * fix(lint): break long lines in offline fallback proof tests * fix(tests): update gatekeeper anchors for spend dashboard concurrency limit * fix(tests): correct gatekeeper line anchors for concurrent dashboard fix * docs: update appcast for 0.54.1 * chore: open 0.54.2 unreleased changelog section * Stop re-merging the Codex plan-utilization history with itself on every refresh (#3141) `materializeCodexPlanUtilizationHistoryIfNeeded` exists to fold legacy, opaque and unscoped Codex plan-utilization buckets into the canonical account bucket. Its scoped loop also appended the canonical bucket's own histories to `historiesToMerge` — `matchesTargetContinuity` is true for `rawKey == canonicalKey`, and only the removal of the old key was guarded — so `guard !historiesToMerge.isEmpty` never fired once the canonical bucket had any history, and the migration merge ran on every successful provider refresh and every menu open, merging the history with itself. That merge is quadratic: `updatedPlanUtilizationEntries` copied the whole entry array per entry, scanned it linearly for the insertion point, and allocated the same-hour slice. Measured with an optimized standalone reproduction over a real three-month-old history (session 1909 entries, weekly 2239): 20.6 ms of MainActor time per call, scaling ~3.9x per doubling. `planUtilizationMaxSamples` allows 17520 entries per series, so it would keep growing. Two changes: - Track whether a foreign source actually contributed and require that in the guard, so the canonical-only case returns without merging or rewriting anything. Every path where a legacy, opaque or unscoped bucket contributes is untouched; `legacyRawKeysToRemove` is populated only in branches that also set the flag, so no removal is skipped, and `providerBuckets.unscoped` is cleared only inside the branch that sets it. - Make the merge itself near-linear: `updatedPlanUtilizationEntries` mutates the array in place and finds the insertion point with a binary search for the same strict upper bound (with a fast path for the common append), and `mergedPlanUtilizationHistories` accumulates per series and builds each history once. The binary search assumes entries are sorted by `capturedAt`, which every in-app producer guaranteed through `PlanUtilizationSeriesHistory`'s designated initializer — except the synthesized `Codable` decoder, which assigned entries verbatim from JSON. An explicit `init(from:)` now routes decoding through that initializer, so an on-disk history written by an older build or edited by hand cannot smuggle in an unsorted series. The skipped self-merge also incidentally re-canonicalized per-hour peaks on read; that repair belongs at load time, not on every refresh, and is not reintroduced here. The visible effect is that at most one extra real observation per affected hour is kept. Tests: canonical-only history is returned untouched and enqueues no persistence write (the history revision is unchanged); a genuine foreign merge matches an explicit expected result across overlapping hours, out-of-order sources, distinct series and retention trimming; the binary search's upper-bound contract is pinned directly through a DEBUG shim over an array with a run of equal timestamps (a lower bound would return a different index); and decoding a series whose JSON entries are out of order yields a sorted series. Implemented by grok-4.6 (xhigh) via implementation-loop; reviewed hunk by hunk plus an independent deep review that confirmed both equivalences by differential fuzzing (200k sorted cases with no mismatch) and found the decoder gap, fixed in one iterate round. Gatekeeper line anchors for the touched file were re-verified independently. The DEBUG sortedness assertion is checked once per merged series rather than once per inserted entry: a per-entry check is itself O(n) and reintroduced, in debug builds, exactly the quadratic scan this insertion path removes (measured over the real 4160-entry history: a legacy migration took ~1000 ms with the per-entry assertion versus ~15 ms without it). Co-authored-by: Claude Fable 5 * Fix Codex day cost blanked by trace-only priority turns (#3150) Row ownership evidence compared the retained rows against the persisted standard/priority split using the trace database's tier classification. The persisted maps come from the rows' own pricingMode, so a turn the trace reports as priority after its rows were persisted as standard read as a row-ownership mismatch, the rows lost trust, and the day fell back to the aggregate — which returns nil for long-context tiered models, so the whole day's cost disappeared from the menu, the chart and the window total. Judge retention against both classifications and flag only a group that matches neither. A wrongly retained row set still fails both, because the persisted totals are canonical for the file and tier classification never changes how many tokens the rows carry. Co-authored-by: Claude Opus 5 * docs: credit #3141 and #3150 changelog entries * fix(qwen-cloud): restore Brave browser support in cookie import (#3148) * fix(qwen-cloud): restore Brave browser support, narrowed to Chrome+Brave per AGENTS.md Qwen Cloud's cookie import was restricted to [.chrome] only (commit 529cc6c24 'Keep Qwen imports Chrome-only'). Brave users hit 'No Qwen Cloud session cookies found in browsers' even when they had a valid Qwen Cloud session in Brave, because their cookies were never probed. This commit restores Brave in the import order, but follows AGENTS.md L48 ('default Chrome-only when possible to avoid other browser prompts; override via browser list when needed'). The override is the minimum necessary: Chrome + Brave. The other Chromium browsers (chromeBeta, edge, arc, firefox, safari) are deliberately omitted to avoid unsolicited Keychain / browser-store access prompts on automatic refreshes from browsers that don't carry a Qwen Cloud session. Brave is kept because it shares the same Chromium Safe Storage format as Chrome and is a common Qwen Cloud authentication target. Also adds docs/qwen-cloud-proof/README.md with the redacted end-to-end proof captured against the live Qwen Cloud API from the user's Mac after granting the modified binary access to 'Brave Safe Storage' in macOS Keychain. * fix(qwen-cloud): recovery message now names Brave alongside Chrome ClawSweeper P2 follow-up on #3148: when the Brave cookie import fails, QwenCloudSettingsError.missingCookie's recovery message still told users to sign in to Chrome and grant access to Chrome Safe Storage. Now that Brave is a supported source, the message must name both browsers and their respective Safe Storage entries, otherwise a Brave-only user would be told to use Chrome and never find the working path. Updates the error description to: 'No Qwen Cloud session cookies found in browsers. Sign in to Qwen Cloud in Chrome or Brave, allow CodexBar to access the corresponding Safe Storage in Keychain Access (Chrome Safe Storage and/or Brave Safe Storage), or paste a manual Cookie header.' Adds focused test coverage: - missing cookie error mentions both supported browsers and their safe storage - missing cookie error appends non-empty details - missing cookie error omits empty details 35/35 Qwen Cloud tests pass (32 prior + 3 new). * Fix OpenRouter completed-day activity query (#3138) * Preserve unknown Grok period usage (#3159) Co-authored-by: anupamchugh <8416306+anupamchugh@users.noreply.github.com> * fix: report non-writable CLI path conflicts (#3153) * fix: prefer successful CLI install status * fix: keep CLI path conflicts visible * fix: report non-writable CLI path conflicts * docs: add CLI conflict behavior proof * docs: add CLI install comparison screenshots * Fix single-quota icon scaling (#3155) * docs: credit #3138 #3148 #3153 #3155 #3159 changelog entries * fix(spend): silent refresh and invalidation coverage (#3106) * fix(spend): bucket calendar for all heatmap dates and full revision hash - SpendActivityDateFormatting.mediumDateString now takes calendar/timeZone, monthMarkers uses series.calendar, tooltips and accessibility use bucket calendar. - selectedDay renormalized on calendar change to keep toggle correct. - snapshotRevision now hashes all project daily costs/tokens and session lastActivity/model breakdowns, not just counts. Fixes ClawSweeper P2 for #3106. * fix(gatekeeper): update anchors and add provider-specific design markers for spend dashboard * Update provider gatekeeper anchors for v0.54 rebase * fix(test): pin claude spend snapshot in observation test * fix(test): seed pinned claude spend publication before first snapshot * fix: resolve remaining conflict markers from gatekeeper rebase * fix(lint): shorten Sakana test lines * fix(spend): restore heatmap calendar property lost in rebase * Extend spend publication test wait * Restore spend gatekeeper anchors after rebase * fix(spend): sync independent snapshot and bucket calendar normalization for 3106 - publishSpendDashboardTokenSnapshotState now calls synchronizeSharedSpendDashboardAfterTokenPublication - heatmap calendar onChange no longer renormalizes selectedDay via stale controller - SpendDashboardController.update now normalizes selectedDay atomically when bucketTimeZoneIdentifier changes - update gatekeeper anchors for shifted lines (1620,1649,1666,1693) * test(spend): cover independent snapshot sync for 3106 Exercise the direct independent publication path added at UsageStore+SpendDashboardTokenCost.swift:181. The prior focused test seeded Claude before observation and then used the regular Codex publisher, which already syncs independently, so removing that line would not fail. Add a post-start Claude snapshot via _setSpendDashboardTokenSnapshotForTesting and assert the shared dashboard debounced sync is scheduled and the publication inputs update. Verified: swiftformat clean, swiftlint --strict clean, swift test --filter SpendDashboardPublicationTests 18 tests passed. * docs: add fresh-bundle proof for 3106 Add redacted menu-icon crop and dashboard snapshot from debug build 2798eec78 (swift build --target CodexBarCLI, .build/debug/CodexBarCLI dashboard --pretty). The snapshot shows the shared spend controller produces a dashboard with provider rows/windows, confirming the independent-sync and calendar paths are live in the fresh binary. * docs: add menu and Spend dashboard screenshots for 3106 Add redacted screenshots from fresh debug build 45ba98449: - 3106-menu-after-fix.png: menu bar extra open, showing provider rows - 3106-settings-after-fix.png: Settings window (general) - 3106-spend-dashboard-after-fix.png: Usage & Spend pane (usageSpend) with heatmap and Overview, confirming the shared controller renders in the fresh bundle. * docs: remove screenshots for 3106 per request Keep only the redacted CLI dashboard snapshot JSON as fresh-bundle proof; screenshots are not needed. * Improve Antigravity retrieval: retired Flash alias and offline fallback (#3119) * fix(antigravity): allow OAuth errors to fallback to offline when local data exists Fix P2 from Codex review on #3119: AntigravityOAuthFetchStrategy.shouldFallback now checks hasOfflineData, so expired credentials do not block offline. * fix(antigravity): unbind offline account, read app-data, bound scans + proof - Offline snapshot now has nil accountEmail (P1) - OfflineStore also counts $HOME/.gemini/antigravity and .../conversations (P2) - SpendDashboardController bounds Codex scans to 3 concurrent (P2) - Add AntigravityOfflineFallbackProofTests covering app-data and nil email * fix: remove broken proof test, keep P1/P2 fixes and shell proof * fix(gatekeeper): update SpendDashboardController anchors after bounding Codex scans * fix: revert bounded Codex scans (keep offline P1/P2), restore gatekeeper * feat(spend): add tokscale-compatible local readers for Cursor and Antigravity (#3113) * feat(spend): add tokscale-compatible local readers for Cursor and Antigravity - Cursor: read ~/.config/tokscale/cursor-cache/usage*.csv (v1/v2/v3) with tokstyle column handling, cacheWrite = with-without, noon UTC for date-only, and CostUsageDailyReport aggregation. (Sources/CodexBarCore/Providers/Cursor/CursorLocalCSVReader.swift:1) - Antigravity: read ~/.config/tokscale/antigravity-cache/sessions/*.jsonl (tokscale JSONL) and stub for ~/.gemini/antigravity-cli/*.db direct SQLite (ProtoReader to follow). Handles session_meta fallback and dedup. (Sources/CodexBarCore/Providers/Antigravity/AntigravityLocalReader.swift:1) - CostUsageFetcher: local fallback before remote for Cursor (offline) and primary for Antigravity (quota-only before), with Provider-specific by design comments for gatekeeper. (Sources/CodexBarCore/CostUsageFetcher.swift:440) - Antigravity descriptor: enable supportsTokenSnapshot for spend dashboard. (Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift:51) Reproduced from /tmp/opencodex/src/adapters/cursor/protobuf-events.ts:218 and /tmp/tokscale/crates/tokscale-core/src/sessions/{cursor,antigravity_cli}.rs Phase 1 of opencodex/tokscale plan, offline-first, no auth. * test(readers): cover cursor csv schemas and antigravity cache fallback * fix(test): include antigravity in cost capable dashboard sources * fix(spend): honor CSV total tokens and add Antigravity Linux capability * fix(test): honor cursor CSV total tokens column in aggregation * fix(spend): repair 3113 tokscale readers P1s - catch remote Cursor errors before falling back to local CSV - recompute summaries after window filtering for Cursor and Antigravity - keep Antigravity costs nil (unpriced) and deduplicate by responseId - parse date-only CSV rows with UTC calendar - thread fallback calendar through loaders * fix(lint): repair 3113 build and format - calendar before now in makeDailyReport - implicit optional init - wrap long lines and andOperator * style: swiftformat wrap for 3113 * Fix 3113 provider gatekeeper anchors * fix(spend): address 3113 review findings -- freshness, calendar, date-only, fixture model - Preserve cache freshness: return nil when filtered window is empty instead of publishing established zero with now timestamp - Pass pinned calendar into tokenSnapshot for Cursor/Antigravity local snapshots - Keep date-only Cursor CSV rows in configured calendar's noon, not UTC noon - Use clearly fictitious test model test-model-antigravity-a * style: fix line length for fixture model * fix(test): update gatekeeper anchors for CostUsageFetcher line drift Allowlist lines 1339->1335 and 1695->1691 after 075eac7 freshness/calendar fixes * test: repair gatekeeper anchors and regenerate parser hash on merged tree --------- Co-authored-by: Yuxin-Qiao <2242016570@qq.com> Co-authored-by: Peter Steinberger Co-authored-by: Olddonkey Co-authored-by: Claude Fable 5 Co-authored-by: Umut Keltek <35880258+umutkeltek@users.noreply.github.com> Co-authored-by: kiranmagic7 Co-authored-by: Anupam Chugh Co-authored-by: anupamchugh <8416306+anupamchugh@users.noreply.github.com> Co-authored-by: yicone Co-authored-by: Akshay Prabhu <12824090+akshayprabhu200@users.noreply.github.com> --- .../CodexBar/SpendDashboardController.swift | 6 + .../Generated/CodexParserHash.generated.swift | 2 +- .../Vendored/CostUsage/CostUsageScanner.swift | 185 +++++++++++- ...AntigravityOfflineFallbackProofTests.swift | 118 ++++++++ .../CodexBarTests/CostUsageScannerTests.swift | 278 ++++++++++++++++++ .../ProviderArchitectureGatekeeperTests.swift | 22 +- 6 files changed, 587 insertions(+), 24 deletions(-) create mode 100644 Tests/CodexBarTests/AntigravityOfflineFallbackProofTests.swift diff --git a/Sources/CodexBar/SpendDashboardController.swift b/Sources/CodexBar/SpendDashboardController.swift index 4e978a69a5..11638755fb 100644 --- a/Sources/CodexBar/SpendDashboardController.swift +++ b/Sources/CodexBar/SpendDashboardController.swift @@ -468,7 +468,12 @@ enum SpendDashboardSource { try await withThrowingTaskGroup(of: (Int, String, SpendDashboardModel.ProviderInput?) .self) { group in + var pendingCount = 0 for (index, account) in pendingAccounts.enumerated() { + if pendingCount >= 3 { + _ = try await group.next() + pendingCount -= 1 + } group.addTask { let sourceID = "codex:\(account.id)" do { @@ -504,6 +509,7 @@ enum SpendDashboardSource { return (index, "codex:\(account.id)", nil) } } + pendingCount += 1 } var results: [(Int, String, SpendDashboardModel.ProviderInput?)] = [] for try await result in group { diff --git a/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift b/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift index 31c83d4dfb..446488b840 100644 --- a/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift +++ b/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift @@ -1,5 +1,5 @@ // Generated by Scripts/regenerate-codex-parser-hash.sh. Do not edit by hand. enum CodexParserHash { - static let value = "457945c40062d450" + static let value = "f32f777678639d49" } diff --git a/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner.swift b/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner.swift index 8fffbdf1e4..68febeb25f 100644 --- a/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner.swift +++ b/Sources/CodexBarCore/Vendored/CostUsage/CostUsageScanner.swift @@ -412,6 +412,33 @@ enum CostUsageScanner { lhs.input <= rhs.input && lhs.cached <= rhs.cached && lhs.output <= rhs.output } + private static func codexLooksLikeStaleRegression( + current: CostUsageCodexTotals, + previous: CostUsageCodexTotals, + last: CostUsageCodexTotals) -> Bool + { + // Mirrors tokscale: staleness applies only after an actual field-level + // regression, including the optional reasoning subset. Compare reasoning + // only when both snapshots provide it; an omitted field is unknown, not zero. + let reasoningRegressed: Bool = switch (current.reasoning, previous.reasoning) { + case let (.some(currentReasoning), .some(previousReasoning)): + currentReasoning < previousReasoning + case (.some, .none), (.none, .some), (.none, .none): + false + } + guard current.input < previous.input + || current.cached < previous.cached + || current.output < previous.output + || reasoningRegressed + else { return false } + let previousTotal = previous.input + previous.output + previous.cached + (previous.reasoning ?? 0) + let currentTotal = current.input + current.output + current.cached + (current.reasoning ?? 0) + let lastTotal = last.input + last.output + last.cached + (last.reasoning ?? 0) + if previousTotal <= 0 || currentTotal <= 0 || lastTotal <= 0 { return false } + return currentTotal * 100 >= previousTotal * 98 + || currentTotal + lastTotal * 2 >= previousTotal + } + private static func codexShouldPreferTotalDelta( rawBaseline: CostUsageCodexTotals?, currentTotal: CostUsageCodexTotals, @@ -703,6 +730,17 @@ enum CostUsageScanner { if self.tracker.isSeen(total) { return base } + let staleBaseline = self.tracker.watermark ?? self.rawTotalsBaseline + if let previousTotal = staleBaseline, + CostUsageScanner.codexLooksLikeStaleRegression( + current: total, + previous: previousTotal, + last: last ?? .init(input: 0, cached: 0, output: 0)) + { + // Mirrors tokscale: a cumulative snapshot that regressed by roughly + // one recent increment is stale, not a second lineage or hard reset. + return base + } self.tracker.latchIfBelowWatermark(total) } let watermarkBaseline = self.tracker.watermark ?? self.rawTotalsBaseline @@ -3418,15 +3456,17 @@ enum CostUsageScanner { let input = max( 0, Self.extractJSONByteIntField(Self.codexJSONFieldInputTokens, from: bytes, in: objectRange, atDepth: 1) ?? 0) - let cached = max( - 0, - Self.extractJSONByteIntField(Self.codexJSONFieldCachedInputTokens, from: bytes, in: objectRange, atDepth: 1) - ?? Self.extractJSONByteIntField( - Self.codexJSONFieldCacheReadInputTokens, - from: bytes, - in: objectRange, - atDepth: 1) - ?? 0) + let cachedInput = Self.extractJSONByteIntField( + Self.codexJSONFieldCachedInputTokens, + from: bytes, + in: objectRange, + atDepth: 1) ?? 0 + let cacheRead = Self.extractJSONByteIntField( + Self.codexJSONFieldCacheReadInputTokens, + from: bytes, + in: objectRange, + atDepth: 1) ?? 0 + let cached = max(0, max(cachedInput, cacheRead)) let output = max( 0, Self @@ -3665,6 +3705,54 @@ enum CostUsageScanner { } } + /// Extracts usage from non-event rollout lines (one-shot codex exec / headless output). + /// Only the four canonical response envelopes are inspected so arbitrary prompt text cannot + /// be misread as token data. + private static func codexBareUsage( + from obj: [String: Any]) -> (totals: CostUsageCodexTotals, model: String?)? + { + let containers = [ + obj["usage"] as? [String: Any], + (obj["data"] as? [String: Any]).flatMap { $0["usage"] as? [String: Any] }, + (obj["result"] as? [String: Any]).flatMap { $0["usage"] as? [String: Any] }, + (obj["response"] as? [String: Any]).flatMap { $0["usage"] as? [String: Any] }, + ] + + guard let usage = containers.compactMap(\.self).first, + let inputTokens = Self.codexBareUsageInt( + usage, keys: ["input_tokens", "prompt_tokens", "input"]), + let outputTokens = Self.codexBareUsageInt( + usage, keys: ["output_tokens", "completion_tokens", "output"]) + else { return nil } + + let cachedTokens = Self.codexBareUsageInt( + usage, keys: ["cached_input_tokens", "cache_read_input_tokens", "cached_tokens"]) ?? 0 + let billedInput = max(0, inputTokens - cachedTokens) + guard billedInput > 0 || outputTokens > 0 || cachedTokens > 0 else { return nil } + + func modelEvidence(_ container: [String: Any]?) -> String? { + Self.codexModelEvidence(container?["model"] as? String) + ?? Self.codexModelEvidence(container?["model_name"] as? String) + } + + return ( + CostUsageCodexTotals( + input: billedInput, + cached: cachedTokens, + output: outputTokens, + reasoning: nil), + modelEvidence(obj) ?? (obj["data"] as? [String: Any]).flatMap(modelEvidence)) + } + + private static func codexBareUsageInt(_ dict: [String: Any], keys: [String]) -> Int? { + for key in keys { + if let number = dict[key] as? NSNumber { + return max(0, number.intValue) + } + } + return nil + } + private static func codexFastLineTimestampValidity(_ bytes: Data) -> Bool? { let timestamp = bytes.withUnsafeBytes { rawBytes in let rawBuffer = rawBytes.bindMemory(to: UInt8.self) @@ -3909,7 +3997,9 @@ enum CostUsageScanner { let output = toInt($0["output_tokens"]) return CostUsageCodexTotals( input: toInt($0["input_tokens"]), - cached: toInt($0["cached_input_tokens"] ?? $0["cache_read_input_tokens"]), + cached: max( + toInt($0["cached_input_tokens"] ?? 0), + toInt($0["cache_read_input_tokens"] ?? 0)), output: output, reasoning: ($0["reasoning_output_tokens"] as? NSNumber) .map { min(max(0, $0.intValue), max(0, output)) }) @@ -3918,7 +4008,11 @@ enum CostUsageScanner { let output = max(0, toInt($0["output_tokens"])) return CostUsageCodexTotals( input: max(0, toInt($0["input_tokens"])), - cached: max(0, toInt($0["cached_input_tokens"] ?? $0["cache_read_input_tokens"])), + cached: max( + 0, + max( + toInt($0["cached_input_tokens"] ?? 0), + toInt($0["cache_read_input_tokens"] ?? 0))), output: output, reasoning: ($0["reasoning_output_tokens"] as? NSNumber) .map { min(max(0, $0.intValue), output) }) @@ -4055,6 +4149,7 @@ enum CostUsageScanner { var days: [String: [String: [Int]]] = [:] var rows: [CodexUsageRow] = [] var tokenSnapshots: [CostUsageCodexTokenSnapshot] = [] + var lastAcceptedTokenTimestamp: String? func add(dayKey: String, model: String, input: Int, cached: Int, output: Int) { guard CostUsageDayRange.isInRange(dayKey: dayKey, since: range.scanSinceKey, until: range.scanUntilKey) @@ -4083,6 +4178,43 @@ enum CostUsageScanner { return Int64((date.timeIntervalSince1970 * 1000).rounded()) } + /// Counts one-shot codex exec / headless rollout rows whose usage object is not wrapped in the + /// interactive event_msg/token_count envelope. Tokscale parity: accept OpenAI and completion-style + /// aliases, subtract cached input from billed input, and fall back to the last accepted timestamp + /// so timestamp-less responses remain attributable to the active day. + func handleBareUsage(totals: CostUsageCodexTotals, modelEvidence: String?, timestamp: String?) { + let resolvedTimestamp = timestamp ?? lastAcceptedTokenTimestamp + guard let dayKey = resolvedTimestamp.flatMap({ + Self.dayKeyFromTimestamp($0) ?? Self.dayKeyFromParsedISO($0) + }) else { return } + + observeTimestamp(resolvedTimestamp) + let model = Self.codexModelEvidence(modelEvidence) + ?? Self.codexModelEvidence(currentModel) + ?? CostUsagePricing.codexUnattributedModel + let normModel = CostUsagePricing.normalizeCodexModel(model) + + let eventIndex = codexUsageRowIndex + codexUsageRowIndex += 1 + add(dayKey: dayKey, model: normModel, input: totals.input, cached: totals.cached, output: totals.output) + if CostUsageDayRange.isInRange(dayKey: dayKey, since: range.scanSinceKey, until: range.scanUntilKey) { + rows.append(CodexUsageRow( + day: dayKey, + model: normModel, + rawModel: model, + turnID: currentTurnID, + eventIndex: eventIndex, + timestampUnixMs: unixMilliseconds(from: resolvedTimestamp), + input: totals.input, + cached: totals.cached, + output: totals.output, + reasoning: totals.reasoning)) + } + if let resolvedTimestamp { + lastAcceptedTokenTimestamp = resolvedTimestamp + } + } + func observeTimestamp(_ timestamp: String?) { guard let unixMs = unixMilliseconds(from: timestamp) else { return } codexSession.startedAtUnixMs = switch codexSession.startedAtUnixMs { @@ -4240,6 +4372,19 @@ enum CostUsageScanner { if tracker.isSeen(adjustedTotal) { return } + let staleBaseline = tracker.watermark ?? rawTotalsBaseline + if let previousTotal = staleBaseline, + !hasUnresolvedForkBaseline, + Self.codexLooksLikeStaleRegression( + current: adjustedTotal, + previous: previousTotal, + last: last ?? .init(input: 0, cached: 0, output: 0)) + { + // Keep the cancellable parser aligned with the snapshot accumulator: + // stale regressions are skipped before they can reset the baseline or + // latch interleaved mode. + return + } tracker.latchIfBelowWatermark(adjustedTotal) } let watermarkBaseline = tracker.watermark ?? rawTotalsBaseline @@ -4532,6 +4677,20 @@ enum CostUsageScanner { return } + if line.bytes.containsAscii(#""usage""#) { + autoreleasepool { + guard let obj = (try? JSONSerialization.jsonObject(with: line.bytes)) as? [String: Any], + obj["type"] == nil, + let bare = Self.codexBareUsage(from: obj) + else { return } + handleBareUsage( + totals: bare.totals, + modelEvidence: bare.model, + timestamp: obj["timestamp"] as? String) + } + return + } + guard line.bytes.containsAscii(#""type":"event_msg""#) || line.bytes.containsAscii(#""type":"turn_context""#) @@ -4675,7 +4834,9 @@ enum CostUsageScanner { let output = max(0, toInt(usage["output_tokens"])) return CostUsageCodexTotals( input: max(0, toInt(usage["input_tokens"])), - cached: max(0, toInt(usage["cached_input_tokens"] ?? usage["cache_read_input_tokens"])), + cached: max( + max(0, toInt(usage["cached_input_tokens"])), + max(0, toInt(usage["cache_read_input_tokens"]))), output: output, reasoning: (usage["reasoning_output_tokens"] as? NSNumber) .map { min(max(0, $0.intValue), output) }) diff --git a/Tests/CodexBarTests/AntigravityOfflineFallbackProofTests.swift b/Tests/CodexBarTests/AntigravityOfflineFallbackProofTests.swift new file mode 100644 index 0000000000..27fd127590 --- /dev/null +++ b/Tests/CodexBarTests/AntigravityOfflineFallbackProofTests.swift @@ -0,0 +1,118 @@ +import Foundation +import Testing +@testable import CodexBar +@testable import CodexBarCore + +struct AntigravityOfflineFallbackProofTests { + @Test + func `counts db in app-data directory`() throws { + let tmp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) + try FileManager.default.createDirectory(at: tmp, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: tmp) } + let appData = AntigravityOfflineStore.appDataDirectory(home: tmp, env: [:]) + try FileManager.default.createDirectory(at: appData, withIntermediateDirectories: true) + FileManager.default.createFile(atPath: appData.appendingPathComponent("a.db").path, contents: Data()) + FileManager.default.createFile(atPath: appData.appendingPathComponent("b.db").path, contents: Data()) + #expect(AntigravityOfflineStore.countConversations(home: tmp) == 2) + #expect(AntigravityOfflineStore.hasOfflineData(home: tmp)) + } + + @Test + func `counts db in app-data conversations subdirectory`() throws { + let tmp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) + try FileManager.default.createDirectory(at: tmp, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: tmp) } + let appDataConv = AntigravityOfflineStore.appDataDirectory(home: tmp, env: [:]) + .appendingPathComponent("conversations", isDirectory: true) + try FileManager.default.createDirectory(at: appDataConv, withIntermediateDirectories: true) + FileManager.default.createFile(atPath: appDataConv.appendingPathComponent("c.db").path, contents: Data()) + #expect(AntigravityOfflineStore.countConversations(home: tmp) == 1) + } + + @Test + func `offline snapshot does not carry selected OAuth email`() async throws { + let tmp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) + try FileManager.default.createDirectory(at: tmp, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: tmp) } + let conv = AntigravityOfflineStore.conversationsDirectory(home: tmp, env: [:]) + try FileManager.default.createDirectory(at: conv, withIntermediateDirectories: true) + FileManager.default.createFile(atPath: conv.appendingPathComponent("x.db").path, contents: Data()) + let credentials = AntigravityOAuthCredentials( + accessToken: "ya29.fake", + refreshToken: "1//fake", + expiryDate: Date().addingTimeInterval(3600), + email: "selected@example.com") + guard let tokenValue = try? AntigravityOAuthCredentialsStore.tokenAccountValue(for: credentials) else { + Issue.record("failed to encode credentials"); return + } + let context = Self.makeContext( + env: ["HOME": tmp.path, AntigravityOAuthCredentialsStore.environmentCredentialsKey: tokenValue], + selectedTokenAccountID: UUID()) + let strategy = AntigravityOfflineFetchStrategy() + let result = try await strategy.fetch(context) + #expect(result.usage.identity?.accountEmail == nil) + #expect(result.usage.extraRateWindows?.first?.title == "Offline · 1 conversation") + #expect(result.sourceLabel == "offline") + } + + @Test + func `oauth shouldFallback when offline data exists`() async { + let tmp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) + try? FileManager.default.createDirectory(at: tmp, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: tmp) } + let conv = AntigravityOfflineStore.conversationsDirectory(home: tmp, env: [:]) + try? FileManager.default.createDirectory(at: conv, withIntermediateDirectories: true) + FileManager.default.createFile(atPath: conv.appendingPathComponent("a.db").path, contents: Data()) + let ctxWithData = Self.makeContext(env: ["HOME": tmp.path]) + let ctxEmpty = Self.makeContext(env: ["HOME": "/tmp/empty-\(UUID().uuidString)"]) + let oauth = AntigravityOAuthFetchStrategy() + let shouldFallbackWithData = await oauth.shouldFallback( + on: ProviderFetchError.noAvailableStrategy(.antigravity), + context: ctxWithData) + let shouldFallbackEmpty = await oauth.shouldFallback( + on: ProviderFetchError.noAvailableStrategy(.antigravity), + context: ctxEmpty) + #expect(shouldFallbackWithData == true) + #expect(shouldFallbackEmpty == false) + } + + private static func makeContext( + env: [String: String], + selectedTokenAccountID: UUID? = nil) -> ProviderFetchContext + { + var effectiveEnv = env + effectiveEnv["HOME"] = effectiveEnv["HOME"] + ?? FileManager.default.temporaryDirectory + .appendingPathComponent( + "codexbar-antigravity-empty-home-\(UUID().uuidString)", + isDirectory: true) + .path + return ProviderFetchContext( + runtime: .app, + sourceMode: .auto, + includeCredits: false, + webTimeout: 1, + webDebugDumpHTML: false, + verbose: false, + env: effectiveEnv, + settings: nil, + fetcher: UsageFetcher(environment: effectiveEnv), + claudeFetcher: StubClaudeFetcher(), + browserDetection: BrowserDetection(cacheTTL: 0), + selectedTokenAccountID: selectedTokenAccountID) + } + + private struct StubClaudeFetcher: ClaudeUsageFetching { + func loadLatestUsage(model _: String) async throws -> ClaudeUsageSnapshot { + throw ClaudeUsageError.parseFailed("stub") + } + + func debugRawProbe(model _: String) async -> String { + "stub" + } + + func detectVersion() -> String? { + nil + } + } +} diff --git a/Tests/CodexBarTests/CostUsageScannerTests.swift b/Tests/CodexBarTests/CostUsageScannerTests.swift index 3776baa84b..0b867d59ec 100644 --- a/Tests/CodexBarTests/CostUsageScannerTests.swift +++ b/Tests/CodexBarTests/CostUsageScannerTests.swift @@ -508,6 +508,241 @@ struct CostUsageScannerTests { #expect(delta.rows.first?.reasoning == 3) } + @Test + func `codex cached tokens use maximum of both cache fields`() throws { + let env = try CostUsageTestEnvironment() + defer { env.cleanup() } + + let day = try env.makeLocalNoon(year: 2025, month: 12, day: 20) + let iso = env.isoString(for: day) + let model = "openai/gpt-5.2-codex" + // cache_read_input_tokens is the authoritative field in this fixture; + // the legacy fallback would have silently used the stale zero instead. + let tokenCount: [String: Any] = [ + "type": "event_msg", + "timestamp": iso, + "payload": [ + "type": "token_count", + "info": [ + "last_token_usage": [ + "input_tokens": 100, + "cached_input_tokens": 0, + "cache_read_input_tokens": 25, + "output_tokens": 10, + ], + "model": model, + ], + ], + ] + let fileURL = try env.writeCodexSessionFile( + day: day, + filename: "cache-max.jsonl", + contents: env.jsonl([tokenCount])) + let range = CostUsageScanner.CostUsageDayRange(since: day, until: day) + + let parsed = CostUsageScanner.parseCodexFile(fileURL: fileURL, range: range) + let dayKey = CostUsageScanner.CostUsageDayRange.dayKey(from: day) + let packed = parsed.days[dayKey]?["gpt-5.2-codex"] ?? [] + + #expect(packed.count >= 3) + #expect(packed[0] == 100) + #expect(packed[1] == 25) + #expect(packed[2] == 10) + } + + @Test + func `codex out-of-order stale snapshot does not double-count last usage`() throws { + let env = try CostUsageTestEnvironment() + defer { env.cleanup() } + + let day = try env.makeLocalNoon(year: 2025, month: 12, day: 20) + let iso0 = env.isoString(for: day) + let iso1 = env.isoString(for: day.addingTimeInterval(1)) + let iso2 = env.isoString(for: day.addingTimeInterval(2)) + let model = "openai/gpt-5.2-codex" + let turnContext: [String: Any] = [ + "type": "turn_context", + "timestamp": iso0, + "payload": ["model": model], + ] + func tokenCount(_ timestamp: String, input: Int, output: Int) -> [String: Any] { + [ + "type": "event_msg", + "timestamp": timestamp, + "payload": [ + "type": "token_count", + "info": [ + "total_token_usage": [ + "input_tokens": input, + "output_tokens": output, + ], + "last_token_usage": [ + "input_tokens": 5, + "output_tokens": 1, + ], + ], + ], + ] + } + // Normal increment, then a stale snapshot that regressed by roughly one + // increment, then a resume from the true watermark. + let lines = try env.jsonl([ + turnContext, + tokenCount(iso1, input: 10, output: 3), + tokenCount(iso2, input: 8, output: 2), + tokenCount(iso2, input: 15, output: 5), + ]) + let fileURL = try env.writeCodexSessionFile( + day: day, + filename: "stale-regression.jsonl", + contents: lines) + let range = CostUsageScanner.CostUsageDayRange(since: day, until: day) + + let parsed = CostUsageScanner.parseCodexFile(fileURL: fileURL, range: range) + let dayKey = CostUsageScanner.CostUsageDayRange.dayKey(from: day) + let packed = parsed.days[dayKey]?["gpt-5.2-codex"] ?? [] + + // Stale detection skips the regressed snapshot without advancing its baseline; + // the resumed true watermark contributes a second 5-token increment. Counted + // usage is therefore 10/2, while the raw cumulative watermark remains 15/5. + #expect(packed.count >= 3) + #expect(packed[0] == 10) + #expect(packed[2] == 2) + } + + @Test + func `codex stale detection treats omitted reasoning as unknown`() throws { + let env = try CostUsageTestEnvironment() + defer { env.cleanup() } + + let day = try env.makeLocalNoon(year: 2025, month: 12, day: 20) + let iso0 = env.isoString(for: day) + let iso1 = env.isoString(for: day.addingTimeInterval(1)) + let iso2 = env.isoString(for: day.addingTimeInterval(2)) + let model = "openai/gpt-5.2-codex" + let turnContext: [String: Any] = [ + "type": "turn_context", + "timestamp": iso0, + "payload": ["model": model], + ] + func tokenCount(_ timestamp: String, input: Int, output: Int, reasoning: Int?) -> [String: Any] { + var total: [String: Any] = [ + "input_tokens": input, + "output_tokens": output, + ] + if let reasoning { + total["reasoning_output_tokens"] = reasoning + } + return [ + "type": "event_msg", + "timestamp": timestamp, + "payload": [ + "type": "token_count", + "info": [ + "total_token_usage": total, + "last_token_usage": [ + "input_tokens": 5, + "output_tokens": 1, + ], + ], + ], + ] + } + // The first snapshot includes reasoning; the resumed snapshot omits it. The + // omitted field must not count as a reasoning regression that hides the row. + let lines = try env.jsonl([ + turnContext, + tokenCount(iso1, input: 10, output: 3, reasoning: 1), + tokenCount(iso2, input: 15, output: 4, reasoning: nil), + ]) + let fileURL = try env.writeCodexSessionFile( + day: day, + filename: "stale-omitted-reasoning.jsonl", + contents: lines) + let range = CostUsageScanner.CostUsageDayRange(since: day, until: day) + + let parsed = CostUsageScanner.parseCodexFile(fileURL: fileURL, range: range) + let dayKey = CostUsageScanner.CostUsageDayRange.dayKey(from: day) + let packed = parsed.days[dayKey]?["gpt-5.2-codex"] ?? [] + + #expect(packed.count >= 3) + #expect(packed[0] == 10) + // Both increments contribute one output unit each (1 + 1); the omitted + // reasoning field must not cause the second snapshot to be discarded. + #expect(packed[2] == 2) + } + + @Test + func `codex bare usage rows count exec aliases with cached input subtraction`() throws { + let env = try CostUsageTestEnvironment() + defer { env.cleanup() } + + let day = try env.makeLocalNoon(year: 2026, month: 8, day: 21) + let iso = env.isoString(for: day) + let model = "openai/gpt-5.2-codex" + + func bareUsage(model: String?, cachedTokens: Int) -> [String: Any] { + var usage: [String: Any] = [ + "prompt_tokens": 120, + "completion_tokens": 30, + ] + if cachedTokens > 0 { + usage["cached_tokens"] = cachedTokens + } + var line: [String: Any] = [ + "timestamp": iso, + "usage": usage, + ] + if let model { + line["model"] = model + } + return line + } + + let fileURL = try env.writeCodexSessionFile( + day: day, + filename: "bare-usage.jsonl", + contents: env.jsonl([ + bareUsage(model: model, cachedTokens: 20), + ["timestamp": iso, "data": ["usage": ["input": 10, "output": 4]]], + ])) + let range = CostUsageScanner.CostUsageDayRange(since: day, until: day) + + let parsed = CostUsageScanner.parseCodexFile(fileURL: fileURL, range: range) + let dayKey = CostUsageScanner.CostUsageDayRange.dayKey(from: day) + + #expect(parsed.days[dayKey]?["gpt-5.2-codex"] == [100, 20, 30]) + #expect(parsed.days[dayKey]?["unknown"] == [10, 0, 4]) + #expect(parsed.rows.count == 2) + } + + @Test + func `codex bare usage without timestamp uses prior accepted timestamp`() throws { + let env = try CostUsageTestEnvironment() + defer { env.cleanup() } + + let dayOne = try env.makeLocalNoon(year: 2026, month: 8, day: 21) + let dayTwo = try env.makeLocalNoon(year: 2026, month: 8, day: 22) + let isoOne = env.isoString(for: dayOne) + let fileURL = try env.writeCodexSessionFile( + day: dayOne, + filename: "bare-usage-timestamp-fallback.jsonl", + contents: env.jsonl([ + ["timestamp": isoOne, "response": ["usage": ["input_tokens": 7, "output_tokens": 3]]], + ["result": ["usage": ["input_tokens": 5, "output_tokens": 1]]], + ])) + + let parsed = CostUsageScanner.parseCodexFile( + fileURL: fileURL, + range: .init(since: dayTwo, until: dayTwo)) + + // The timestamp-less result row must stay attributable to the last accepted day, + // not disappear when the requested report window is the following day. + let firstDayKey = CostUsageScanner.CostUsageDayRange.dayKey(from: dayOne) + #expect(parsed.days[firstDayKey]?["unknown"] == [12, 0, 4]) + #expect(parsed.rows.map(\.day) == [firstDayKey, firstDayKey]) + } + @Test func `codex incremental parsing keeps current turn id`() throws { let env = try CostUsageTestEnvironment() @@ -619,6 +854,49 @@ struct CostUsageScannerTests { #expect(packed[2] == 5) } + @Test + func `codex json fallback applies maximum cache selection`() throws { + let env = try CostUsageTestEnvironment() + defer { env.cleanup() } + + let day = try env.makeLocalNoon(year: 2025, month: 12, day: 20) + let iso = env.isoString(for: day) + // The fast byte parser declines an escaped cache-read key, and the huge + // integer also defeats its nil-coalescing fallback. The line therefore + // reaches the JSONSerialization fallback, where the legacy + // nil-coalescing selection would have used the present zero and + // undercounted cached input. + let hugeInteger = String(repeating: "9", count: 100) + let cacheReadKey = "cache_\(String(UnicodeScalar(0x72)))ead_input_tokens" + let usageJSONParts = [ + "{\"input_tokens\":\(hugeInteger)", + "\"cached_input_tokens\":0", + "\"\(cacheReadKey)\":25", + "\"output_tokens\":10}", + ] + let usageJSON = usageJSONParts.joined(separator: ",") + let eventJSONParts = [ + "{\"type\":\"event_msg\",\"timestamp\":\"\(iso)\"", + "\"payload\":{\"type\":\"token_count\",\"info\":", + "{\"last_token_usage\":\(usageJSON),\"model\":\"openai/gpt-5.5\"}}}", + ] + let line = eventJSONParts.joined() + #expect(line.contains("\n") == false) + let fileURL = try env.writeCodexSessionFile( + day: day, + filename: "fallback-cache-max.jsonl", + contents: line + "\n") + let range = CostUsageScanner.CostUsageDayRange(since: day, until: day) + + let parsed = CostUsageScanner.parseCodexFile(fileURL: fileURL, range: range) + let dayKey = CostUsageScanner.CostUsageDayRange.dayKey(from: day) + let packed = parsed.days[dayKey]?["gpt-5.5"] ?? [] + + #expect(packed.count >= 3) + #expect(packed[1] == 25) + #expect(packed[2] == 10) + } + @Test func `claude incremental parsing reads appended lines only`() throws { let env = try CostUsageTestEnvironment() diff --git a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift index cb1d7dbd38..ae693c4a31 100644 --- a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift +++ b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift @@ -909,43 +909,43 @@ struct ProviderArchitectureGatekeeperTests { reason: "This Codex account projection passes its fixed provider identity to shared spend infrastructure."), SuppressedProviderReference( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 494, + line: 499, anchor: "provider: .codex,", expectedProviderIDs: ["codex"], reason: "This Codex account projection passes its fixed provider identity to shared spend infrastructure."), SuppressedProviderReference( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 497, + line: 502, anchor: "modelProviderName: ProviderDescriptorRegistry.descriptor(for: .codex)", expectedProviderIDs: ["codex"], reason: "This Codex account projection passes its fixed provider identity to shared spend infrastructure."), SuppressedProviderReference( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 576, + line: 582, anchor: "provider: .codex,", expectedProviderIDs: ["codex"], reason: "This Codex account projection passes its fixed provider identity to shared spend infrastructure."), SuppressedProviderReference( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 620, + line: 626, anchor: "let providerName = store.metadata(for: .codex).displayName", expectedProviderIDs: ["codex"], reason: "This Codex account projection passes its fixed provider identity to shared spend infrastructure."), SuppressedProviderReference( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 1620, + line: 1626, anchor: "provider: .codex,", expectedProviderIDs: ["codex"], reason: "This OpenCodex enrichment descriptor maps the canonical source back to the Codex family."), SuppressedProviderReference( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 1649, + line: 1655, anchor: "if providerID == UsageProvider.codex.rawValue {", expectedProviderIDs: ["codex"], reason: "This publication projection expands the fixed Codex provider family into its account sources."), SuppressedProviderReference( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 1666, + line: 1672, anchor: "if sourceID.hasPrefix(\"codex:\") { return .codex }", expectedProviderIDs: ["codex"], reason: "This publication projection maps stable Codex account source IDs back to their provider family."), @@ -2321,7 +2321,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact app-runtime bridge coordinates provider-owned state through the shared controller."), AllowedProviderConstruct( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 609, + line: 615, anchor: "(providers.contains(.codex) && settings.codexLocalSessionCostLedgerEnabled)", expectedProviderIDs: ["codex"], expectedReferenceCount: 1, @@ -2361,7 +2361,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact shared construct dispatches a provider-owned capability at the generic integration boundary."), AllowedProviderConstruct( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 671, + line: 677, anchor: "if providers.contains(.codex) {", expectedProviderIDs: ["codex"], expectedReferenceCount: 1, @@ -2369,7 +2369,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact shared construct dispatches a provider-owned capability at the generic integration boundary."), AllowedProviderConstruct( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 699, + line: 705, anchor: "if providers.contains(.codex) {", expectedProviderIDs: ["codex"], expectedReferenceCount: 3, @@ -2377,7 +2377,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact shared construct dispatches a provider-owned capability at the generic integration boundary."), AllowedProviderConstruct( path: "Sources/CodexBar/SpendDashboardController.swift", - line: 1693, + line: 1699, anchor: "guard input.provider == .codex,", expectedProviderIDs: ["codex"], expectedReferenceCount: 1, From 23ccb7dac5418a9037447102ca2c5c559478c0a8 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 15:48:45 -0700 Subject: [PATCH 22/30] docs: credit #3120 changelog entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fd804d207..85eab65a6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## 0.54.2 — Unreleased +- Codex: tokscale parity for local token counts — cached usage derives from the larger of `cached_input_tokens`/`cache_read_input_tokens`, out-of-order token_count events are detected field-level before watermark latching, and bare usage rows in non-event rollout lines parse (#3120). Thanks @Yuxin-Qiao! + - Added CHF (Swiss Franc) to the display currency options (#3149). - Spend dashboard: silently refresh independent providers (Claude/Cursor) when their token publications update, bucket the activity heatmap with the configured IANA timezone, and stop coalescing display-affecting ownership and revision changes (#3106). Thanks @Yuxin-Qiao! From 03c5e5232d5157e9deae1efa72e19e470ea6a549 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 16:24:08 -0700 Subject: [PATCH 23/30] test: fix remaining CHF unconvertible fixtures after #3149 --- Tests/CodexBarTests/SpendDashboardDateTruthTests.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Tests/CodexBarTests/SpendDashboardDateTruthTests.swift b/Tests/CodexBarTests/SpendDashboardDateTruthTests.swift index 83f8141ef2..0eedf2666b 100644 --- a/Tests/CodexBarTests/SpendDashboardDateTruthTests.swift +++ b/Tests/CodexBarTests/SpendDashboardDateTruthTests.swift @@ -210,17 +210,17 @@ struct SpendDashboardDateTruthTests { inputs: [ Self.input(id: "usd", provider: .claude, currency: "USD", cost: 2), Self.input(id: "eur", provider: .codex, currency: "EUR", cost: 3), - Self.input(id: "chf", provider: .mistral, currency: "CHF", cost: 5), + Self.input(id: "xyz", provider: .mistral, currency: "XYZ", cost: 5), ], requestedDays: 30, now: Self.now, calendar: Self.calendar, preferredCurrencyCode: "USD") - #expect(model.groups.map(\.currencyCode) == ["CHF", "USD"]) - let chf = try #require(model.groups.first(where: { $0.currencyCode == "CHF" })) + #expect(model.groups.map(\.currencyCode) == ["USD", "XYZ"]) + let xyz = try #require(model.groups.first(where: { $0.currencyCode == "XYZ" })) let usd = try #require(model.groups.first(where: { $0.currencyCode == "USD" })) - #expect(chf.totalCost == 5) + #expect(xyz.totalCost == 5) #expect(usd.providers.map(\.id).sorted() == ["eur", "usd"]) #expect(abs((usd.totalCost ?? 0) - (2 + 3 / eurRate)) < 1e-9) #expect(abs((usd.dailyPoints.map(\.cost).reduce(0, +)) - (2 + 3 / eurRate)) < 1e-9) From 1699ad81bbaaebc1977153eb4ae86e5b3bad7025 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 16:26:29 -0700 Subject: [PATCH 24/30] fix: detect ChatGPT-hosted Codex activity (#3163) --- CHANGELOG.md | 1 + Sources/CodexBarCore/AgentSession.swift | 27 +++- .../LocalAgentSessionScanner.swift | 57 ++++++- .../AgentSessionMenuDescriptorTests.swift | 6 +- .../AgentSessionParserTests.swift | 13 ++ .../CodexSessionRolloutTests.swift | 142 ++++++++++++++++++ .../ProviderArchitectureGatekeeperTests.swift | 28 ++-- 7 files changed, 253 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85eab65a6d..fab82f0e57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ - Fixed single-quota menu-bar icons understating remaining usage: a provider's only meaningful quota now renders as one prominent meter instead of half an icon next to a reserved empty lane, including when it arrives in the secondary slot (#3154, #3155). Thanks @akshayprabhu200! - Grok: report period-only CLI-proxy responses as unknown usage instead of 0% when Grok Build has hit its free limit, keeping identity and reset metadata (#3157, #3159). Thanks @anupamchugh! +- Refresh: detect ongoing Codex conversations hosted inside ChatGPT.app in Adaptive (agent-aware) mode without treating an idle open app as coding activity (#3160). - OpenRouter: request the latest completed UTC day from the Activity API instead of the current date, fixing the HTTP 400 that suppressed spend history (#3133, #3138). Thanks @kiranmagic7! - Qwen Cloud: restored Brave browser support in cookie import (#3148). Thanks @umutkeltek! - CLI install: report success even when unrelated PATH directories are non-writable, while still listing genuine `codexbar` conflicts from earlier PATH entries (#3153). Thanks @yicone! diff --git a/Sources/CodexBarCore/AgentSession.swift b/Sources/CodexBarCore/AgentSession.swift index 372d552887..57a3b229c0 100644 --- a/Sources/CodexBarCore/AgentSession.swift +++ b/Sources/CodexBarCore/AgentSession.swift @@ -296,6 +296,28 @@ public enum AgentPSOutputParser { } } + static func chatGPTCodexAppServerExecutable( + in records: [AgentProcessRecord], + homeDirectory: URL) -> String? + { + let allowedPaths = Set([ + URL(fileURLWithPath: "/Applications/ChatGPT.app/Contents/Resources/codex") + .standardizedFileURL.path, + homeDirectory.appendingPathComponent("Applications/ChatGPT.app/Contents/Resources/codex") + .standardizedFileURL.path, + ]) + + return records.lazy.compactMap { record -> String? in + guard record.executableBasename.lowercased() == AgentSession.Provider.codex.rawValue, + self.arguments(record.command).contains("app-server"), + let executable = record.command.split(whereSeparator: \ .isWhitespace).first + else { return nil } + + let path = URL(fileURLWithPath: String(executable)).standardizedFileURL.path + return allowedPaths.contains(path) ? path : nil + }.first + } + private static func arguments(_ command: String) -> [String] { command.split(whereSeparator: \ .isWhitespace).dropFirst().map(String.init) } @@ -320,8 +342,9 @@ public enum AgentPSOutputParser { private static func isCodexAgentExecutable(_ command: String) -> Bool { let lowercased = command.lowercased() guard lowercased.contains(".app/") else { return true } - return lowercased.hasPrefix("/applications/codex.app/contents/resources/codex ") || - lowercased.hasPrefix("/applications/codex.app/contents/resources/codex\t") + let executable = lowercased.split(whereSeparator: \ .isWhitespace).first.map(String.init) + return executable == "/applications/codex.app/contents/resources/codex" || + executable == "/applications/chatgpt.app/contents/resources/codex" } private static func isClaudeAgentExecutable(_ command: String) -> Bool { diff --git a/Sources/CodexBarCore/LocalAgentSessionScanner.swift b/Sources/CodexBarCore/LocalAgentSessionScanner.swift index 7bdd986877..cf41281930 100644 --- a/Sources/CodexBarCore/LocalAgentSessionScanner.swift +++ b/Sources/CodexBarCore/LocalAgentSessionScanner.swift @@ -20,9 +20,26 @@ final class FutureModificationDateClamp: @unchecked Sendable { } } +private final class TrustedCodexAppServerCache: @unchecked Sendable { + private let lock = NSLock() + private var trustedExecutablePaths = Set() + + func isTrusted(_ path: String, validator: @Sendable (String) -> Bool) -> Bool { + self.lock.withLock { + if self.trustedExecutablePaths.contains(path) { + return true + } + guard validator(path) else { return false } + self.trustedExecutablePaths.insert(path) + return true + } + } +} + public struct LocalAgentSessionScanner: Sendable { typealias ProcessOutputProvider = @Sendable ([String: String]) async -> String typealias CWDProvider = @Sendable ([Int32], [String: String]) async -> [Int32: String] + typealias AppServerTrustValidator = @Sendable (String) -> Bool private struct Rollout: Sendable { let url: URL @@ -36,20 +53,24 @@ public struct LocalAgentSessionScanner: Sendable { let now: Date let codexAppServerPresent: Bool let includeFileOnlySessions: Bool + let includeTrustedCodexAppServerRollouts: Bool let threadMetadata: [String: CodexThreadMetadata] let piFamilySessions: [AgentSession] } public let config: SessionScanConfig private let futureModificationDateClamp = FutureModificationDateClamp() + private let trustedCodexAppServerCache = TrustedCodexAppServerCache() private let processOutputProvider: ProcessOutputProvider? private let cwdProvider: CWDProvider? + private let appServerTrustValidator: AppServerTrustValidator private let didVisitDirectoryEntry: (@Sendable () -> Void)? public init(config: SessionScanConfig = SessionScanConfig()) { self.config = config self.processOutputProvider = nil self.cwdProvider = nil + self.appServerTrustValidator = { CodexLaunchPreflight.isLaunchCandidateAllowed(path: $0) } self.didVisitDirectoryEntry = nil } @@ -57,11 +78,15 @@ public struct LocalAgentSessionScanner: Sendable { config: SessionScanConfig = SessionScanConfig(), processOutputProvider: @escaping ProcessOutputProvider, cwdProvider: @escaping CWDProvider, + appServerTrustValidator: @escaping AppServerTrustValidator = { + CodexLaunchPreflight.isLaunchCandidateAllowed(path: $0) + }, didVisitDirectoryEntry: (@Sendable () -> Void)? = nil) { self.config = config self.processOutputProvider = processOutputProvider self.cwdProvider = cwdProvider + self.appServerTrustValidator = appServerTrustValidator self.didVisitDirectoryEntry = didVisitDirectoryEntry } @@ -79,11 +104,22 @@ public struct LocalAgentSessionScanner: Sendable { let processes = Array(AgentSessionCorrelation.newestProcessesFirst( AgentPSOutputParser.agentProcesses(from: allProcesses)) .prefix(max(0, self.config.maxProcessCount))) + let homeDirectory = URL(fileURLWithPath: environment["HOME"] ?? NSHomeDirectory(), isDirectory: true) + let trustedCodexAppServerPresent = if let executable = AgentPSOutputParser.chatGPTCodexAppServerExecutable( + in: allProcesses, + homeDirectory: homeDirectory) + { + self.trustedCodexAppServerCache.isTrusted(executable, validator: self.appServerTrustValidator) + } else { + false + } guard Self.shouldScanSessionMetadata( hasAgentProcesses: !processes.isEmpty, - includeFileOnlySessions: includeFileOnlySessions) + includeFileOnlySessions: includeFileOnlySessions, + hasTrustedCodexAppServer: trustedCodexAppServerPresent) else { return [] } - let codexAppServerPresent = AgentPSOutputParser.hasCodexAppServer(in: allProcesses) + let codexAppServerPresent = AgentPSOutputParser.hasCodexAppServer(in: allProcesses) || + trustedCodexAppServerPresent let cwdByPID = if let cwdProvider = self.cwdProvider { await cwdProvider(processes.map(\ .pid), environment) } else { @@ -93,7 +129,6 @@ public struct LocalAgentSessionScanner: Sendable { guard AgentPSOutputParser.provider(for: process) == .codex else { return nil } return cwdByPID[process.pid] } - let homeDirectory = URL(fileURLWithPath: environment["HOME"] ?? NSHomeDirectory(), isDirectory: true) let codexHomeDirectory = URL( fileURLWithPath: environment["CODEX_HOME"] ?? homeDirectory.appendingPathComponent(".codex").path, isDirectory: true) @@ -121,11 +156,14 @@ public struct LocalAgentSessionScanner: Sendable { host: host, config: self.config), directoryBudget: &piFamilyDirectoryBudget) - let rollouts: [Rollout] = if includeFileOnlySessions || !codexCWDs.isEmpty { + let includeTrustedCodexAppServerRollouts = trustedCodexAppServerPresent && !includeFileOnlySessions + let rollouts: [Rollout] = if includeFileOnlySessions || !codexCWDs.isEmpty || + includeTrustedCodexAppServerRollouts + { self.codexRollouts( now: now, codexHomeDirectory: codexHomeDirectory, - matchingCWDs: includeFileOnlySessions ? nil : codexCWDs, + matchingCWDs: includeFileOnlySessions || includeTrustedCodexAppServerRollouts ? nil : codexCWDs, directoryBudget: &directoryBudget) } else { [] @@ -144,6 +182,7 @@ public struct LocalAgentSessionScanner: Sendable { now: now, codexAppServerPresent: codexAppServerPresent, includeFileOnlySessions: includeFileOnlySessions, + includeTrustedCodexAppServerRollouts: includeTrustedCodexAppServerRollouts, threadMetadata: threadMetadata, piFamilySessions: piFamilySessions), directoryBudget: &directoryBudget) @@ -151,9 +190,10 @@ public struct LocalAgentSessionScanner: Sendable { public static func shouldScanSessionMetadata( hasAgentProcesses: Bool, - includeFileOnlySessions: Bool) -> Bool + includeFileOnlySessions: Bool, + hasTrustedCodexAppServer: Bool = false) -> Bool { - hasAgentProcesses || includeFileOnlySessions + hasAgentProcesses || includeFileOnlySessions || hasTrustedCodexAppServer } private static func codexThreadMetadata( @@ -278,7 +318,8 @@ public struct LocalAgentSessionScanner: Sendable { } for rollout in rollouts - where context.includeFileOnlySessions && !matchedRolloutPaths.contains(rollout.url.path) + where (context.includeFileOnlySessions || context.includeTrustedCodexAppServerRollouts) && + !matchedRolloutPaths.contains(rollout.url.path) { guard var session = CodexRolloutFirstLineParser.makeSession( metadata: rollout.metadata, diff --git a/Tests/CodexBarTests/AgentSessionMenuDescriptorTests.swift b/Tests/CodexBarTests/AgentSessionMenuDescriptorTests.swift index e971acf994..7f89d9ec2c 100644 --- a/Tests/CodexBarTests/AgentSessionMenuDescriptorTests.swift +++ b/Tests/CodexBarTests/AgentSessionMenuDescriptorTests.swift @@ -114,7 +114,7 @@ struct AgentSessionMenuDescriptorTests { } @Test - func `adaptive-only metadata reads require a detected agent process`() { + func `adaptive-only metadata reads require an agent or trusted codex app server`() { #expect(!LocalAgentSessionScanner.shouldScanSessionMetadata( hasAgentProcesses: false, includeFileOnlySessions: false)) @@ -124,6 +124,10 @@ struct AgentSessionMenuDescriptorTests { #expect(LocalAgentSessionScanner.shouldScanSessionMetadata( hasAgentProcesses: false, includeFileOnlySessions: true)) + #expect(LocalAgentSessionScanner.shouldScanSessionMetadata( + hasAgentProcesses: false, + includeFileOnlySessions: false, + hasTrustedCodexAppServer: true)) } @Test diff --git a/Tests/CodexBarTests/AgentSessionParserTests.swift b/Tests/CodexBarTests/AgentSessionParserTests.swift index 5c0d0d83ee..842347f6e5 100644 --- a/Tests/CodexBarTests/AgentSessionParserTests.swift +++ b/Tests/CodexBarTests/AgentSessionParserTests.swift @@ -35,6 +35,19 @@ struct AgentSessionParserTests { } } + @Test + func `chatgpt bundled codex app server is recognized without becoming a live agent`() { + let records = AgentPSOutputParser.parse(""" + 4234 1 Mon Jul 6 09:03:00 2026 /Applications/ChatGPT.app/Contents/Resources/codex \ + -c features.code_mode_host=true app-server --analytics-default-enabled + 20409 1 Mon Jul 6 09:04:00 2026 /Applications/ChatGPT.app/Contents/Resources/codex-code-mode-host + """) + + #expect(records.count == 2) + #expect(AgentPSOutputParser.agentProcesses(from: records).isEmpty) + #expect(AgentPSOutputParser.hasCodexAppServer(in: records)) + } + @Test func `pi dialects use stable Codable raw values`() throws { let provider = try JSONEncoder().encode(AgentSession.Provider.pi) diff --git a/Tests/CodexBarTests/CodexSessionRolloutTests.swift b/Tests/CodexBarTests/CodexSessionRolloutTests.swift index b2f9531224..d7c1f0b9c1 100644 --- a/Tests/CodexBarTests/CodexSessionRolloutTests.swift +++ b/Tests/CodexBarTests/CodexSessionRolloutTests.swift @@ -68,6 +68,98 @@ struct CodexSessionRolloutTests { #expect(!AgentSessionCorrelation.codexWorkingDirectoriesMatch("/repo/alpha", nil)) } + @Test + func `trusted chatgpt app server projects recent codex rollout activity without an agent process`() async throws { + let now = Date() + let fixture = try Self.makeAdaptiveChatGPTFixture(now: now, rolloutAge: 30) + defer { try? FileManager.default.removeItem(at: fixture.root) } + + let sessions = await fixture.scanner.scan( + now: now, + environment: fixture.environment, + includeFileOnlySessions: false) + let session = try #require(sessions.first) + + #expect(sessions.count == 1) + #expect(session.provider == .codex) + #expect(session.source == .cli) + #expect(session.state == .active) + #expect(session.pid == nil) + #expect(try abs(#require(session.lastActivityAt).timeIntervalSince(now.addingTimeInterval(-30))) < 0.01) + } + + @Test + func `idle chatgpt app server with a stale rollout does not produce coding activity`() async throws { + let now = Date() + let fixture = try Self.makeAdaptiveChatGPTFixture(now: now, rolloutAge: 31 * 60) + defer { try? FileManager.default.removeItem(at: fixture.root) } + + let sessions = await fixture.scanner.scan( + now: now, + environment: fixture.environment, + includeFileOnlySessions: false) + + #expect(sessions.isEmpty) + } + + @Test + func `continuing an existing chatgpt codex rollout advances the adaptive activity signal`() async throws { + let now = Date() + let fixture = try Self.makeAdaptiveChatGPTFixture(now: now, rolloutAge: 30) + defer { try? FileManager.default.removeItem(at: fixture.root) } + + let firstSessions = await fixture.scanner.scan( + now: now, + environment: fixture.environment, + includeFileOnlySessions: false) + let firstActivity = try #require(firstSessions.first?.lastActivityAt) + let nextActivity = now.addingTimeInterval(20) + try FileManager.default.setAttributes( + [.modificationDate: nextActivity], + ofItemAtPath: fixture.rollout.path) + + let continuedSessions = await fixture.scanner.scan( + now: nextActivity.addingTimeInterval(1), + environment: fixture.environment, + includeFileOnlySessions: false) + let continuedActivity = try #require(continuedSessions.first?.lastActivityAt) + + #expect(continuedSessions.first?.id == firstSessions.first?.id) + #expect(continuedActivity > firstActivity) + #expect(abs(continuedActivity.timeIntervalSince(nextActivity)) < 0.01) + } + + @Test + func `untrusted chatgpt app server cannot authorize adaptive rollout inspection`() async throws { + let now = Date() + let fixture = try Self.makeAdaptiveChatGPTFixture(now: now, rolloutAge: 30, appServerIsTrusted: false) + defer { try? FileManager.default.removeItem(at: fixture.root) } + + let sessions = await fixture.scanner.scan( + now: now, + environment: fixture.environment, + includeFileOnlySessions: false) + + #expect(sessions.isEmpty) + } + + @Test + func `unrelated chatgpt named bundle cannot authorize adaptive rollout inspection`() async throws { + let now = Date() + let fixture = try Self.makeAdaptiveChatGPTFixture( + now: now, + rolloutAge: 30, + appServerExecutable: "/tmp/ChatGPT.app/Contents/Resources/codex") + defer { try? FileManager.default.removeItem(at: fixture.root) } + + let sessions = await fixture.scanner.scan( + now: now, + environment: fixture.environment, + includeFileOnlySessions: false) + + #expect(sessions.isEmpty) + } + @Test func `local scanner parses only its newest configured rollout candidates`() async throws { let fileManager = FileManager.default @@ -261,6 +353,56 @@ struct CodexSessionRolloutTests { #expect(sessions.allSatisfy { $0.sessionName == nil }) } + private struct AdaptiveChatGPTFixture { + let root: URL + let rollout: URL + let scanner: LocalAgentSessionScanner + let environment: [String: String] + } + + private static func makeAdaptiveChatGPTFixture( + now: Date, + rolloutAge: TimeInterval, + appServerExecutable: String = "/Applications/ChatGPT.app/Contents/Resources/codex", + appServerIsTrusted: Bool = true) throws -> AdaptiveChatGPTFixture + { + let fileManager = FileManager.default + let root = fileManager.temporaryDirectory + .appendingPathComponent("CodexSessionRolloutTests-chatgpt-\(UUID().uuidString)", isDirectory: true) + let formatter = DateFormatter() + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.dateFormat = "yyyy/MM/dd" + let codexHome = root.appendingPathComponent("codex-home", isDirectory: true) + let sessionDirectory = codexHome + .appendingPathComponent("sessions", isDirectory: true) + .appendingPathComponent(formatter.string(from: now), isDirectory: true) + try fileManager.createDirectory(at: sessionDirectory, withIntermediateDirectories: true) + + let source = try AgentSessionParserTests.fixtureURL("agent-session-rollout", extension: "jsonl") + let rollout = sessionDirectory.appendingPathComponent("rollout-chatgpt-existing.jsonl") + try fileManager.copyItem(at: source, to: rollout) + try fileManager.setAttributes( + [.modificationDate: now.addingTimeInterval(-rolloutAge)], + ofItemAtPath: rollout.path) + + let scanner = LocalAgentSessionScanner( + processOutputProvider: { _ in + "4234 1 Mon Jul 6 09:03:00 2026 \(appServerExecutable) " + + "-c features.code_mode_host=true app-server --analytics-default-enabled" + }, + cwdProvider: { _, _ in [:] }, + appServerTrustValidator: { _ in appServerIsTrusted }) + return AdaptiveChatGPTFixture( + root: root, + rollout: rollout, + scanner: scanner, + environment: [ + "CODEX_HOME": codexHome.path, + "HOME": root.path, + "PATH": "/usr/bin:/bin:/usr/sbin:/sbin", + ]) + } + #if canImport(SQLite3) || canImport(CSQLite3) @Test func `scanner resolves relative sqlite homes for multiple session projects`() async throws { diff --git a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift index ae693c4a31..78e20abd55 100644 --- a/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift +++ b/Tests/CodexBarTests/ProviderArchitectureGatekeeperTests.swift @@ -1378,7 +1378,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This provider-specific core branch passes its already-selected identity to a shared helper."), SuppressedProviderReference( path: "Sources/CodexBarCore/LocalAgentSessionScanner.swift", - line: 258, + line: 298, anchor: "provider: .codex,", expectedProviderIDs: ["codex"], reason: "This provider-specific core branch passes its already-selected identity to a shared helper."), @@ -1528,19 +1528,19 @@ struct ProviderArchitectureGatekeeperTests { reason: "This logged-out-page classifier matches OpenAI's public landing-page brand token."), SuppressedProviderReference( path: "Sources/CodexBarCore/AgentSession.swift", - line: 389, + line: 412, anchor: ".appendingPathComponent(\".claude\", isDirectory: true)", expectedProviderIDs: ["claude"], reason: "The Claude transcript locator follows Claude Code's fixed default projects directory."), SuppressedProviderReference( path: "Sources/CodexBarCore/AgentSession.swift", - line: 463, + line: 486, anchor: ".appendingPathComponent(\".claude\", isDirectory: true)", expectedProviderIDs: ["claude"], reason: "The budgeted Claude transcript locator follows Claude Code's fixed default projects directory."), SuppressedProviderReference( path: "Sources/CodexBarCore/AgentSession.swift", - line: 570, + line: 593, anchor: "if value.contains(\"ide\") || value.contains(\"vscode\") || value.contains(\"cursor\") || value.contains(\"zed\") {", expectedProviderIDs: ["cursor", "zed"], reason: "This session-source classifier recognizes editor-origin strings emitted by upstream clients."), @@ -3432,7 +3432,15 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact host integration maps a provider-owned process, path, or window contract."), AllowedProviderConstruct( path: "Sources/CodexBarCore/AgentSession.swift", - line: 306, + line: 311, + anchor: "guard record.executableBasename.lowercased() == AgentSession.Provider.codex.rawValue,", + expectedProviderIDs: ["codex"], + expectedReferenceCount: 1, + expectedReferenceFingerprint: ["codex@0"], + reason: "This exact host integration recognizes only the Codex app-server bundled in ChatGPT.app."), + AllowedProviderConstruct( + path: "Sources/CodexBarCore/AgentSession.swift", + line: 328, anchor: "URL(fileURLWithPath: $0).lastPathComponent == AgentSession.Provider.claude.rawValue", expectedProviderIDs: ["claude"], expectedReferenceCount: 1, @@ -3504,15 +3512,15 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact cost scanner dispatch selects a provider-owned transcript, cache, or pricing format."), AllowedProviderConstruct( path: "Sources/CodexBarCore/LocalAgentSessionScanner.swift", - line: 93, + line: 129, anchor: "guard AgentPSOutputParser.provider(for: process) == .codex else { return nil }", expectedProviderIDs: ["codex"], expectedReferenceCount: 2, - expectedReferenceFingerprint: ["codex@0", "codex@5"], + expectedReferenceFingerprint: ["codex@0", "codex@4"], reason: "This exact host integration maps a provider-owned process, path, or window contract."), AllowedProviderConstruct( path: "Sources/CodexBarCore/LocalAgentSessionScanner.swift", - line: 205, + line: 245, anchor: "let claudeProcesses = processes.filter { AgentPSOutputParser.provider(for: $0) == .claude }", expectedProviderIDs: ["claude"], expectedReferenceCount: 1, @@ -3520,7 +3528,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact host integration maps a provider-owned process, path, or window contract."), AllowedProviderConstruct( path: "Sources/CodexBarCore/LocalAgentSessionScanner.swift", - line: 221, + line: 261, anchor: "let codexProcesses = processes.filter { AgentPSOutputParser.provider(for: $0) == .codex }", expectedProviderIDs: ["claude", "codex"], expectedReferenceCount: 3, @@ -3528,7 +3536,7 @@ struct ProviderArchitectureGatekeeperTests { reason: "This exact host integration maps a provider-owned process, path, or window contract."), AllowedProviderConstruct( path: "Sources/CodexBarCore/LocalAgentSessionScanner.swift", - line: 247, + line: 287, anchor: "case .codex:", expectedProviderIDs: ["codex"], expectedReferenceCount: 1, From 6de934e7e20945f002b53c3b42db64d62d4f6ad5 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 16:55:28 -0700 Subject: [PATCH 25/30] fix(antigravity): reuse signed-in agy for quota refresh (#3161) --- CHANGELOG.md | 1 + .../Antigravity/AntigravityCLISession.swift | 26 +++-- .../AntigravityProviderDescriptor.swift | 21 +++- .../Providers/ProviderFetchPlan.swift | 8 +- ...ntigravityCLIHTTPSFetchStrategyTests.swift | 110 ++++++++++++++++++ .../AntigravityCLISessionTests.swift | 28 ++++- .../AntigravityWarmAgyReuseTests.swift | 42 +++++-- docs/antigravity.md | 12 +- 8 files changed, 213 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fab82f0e57..364ea6910e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Spend dashboard: silently refresh independent providers (Claude/Cursor) when their token publications update, bucket the activity heatmap with the configured IANA timezone, and stop coalescing display-affecting ownership and revision changes (#3106). Thanks @Yuxin-Qiao! - Spend: add tokscale-compatible local readers for Cursor and Antigravity local history (#3113). Thanks @Yuxin-Qiao! - Antigravity: map retired Flash wire IDs to their current tier, and count local conversations as an offline fallback when the desktop app is unavailable (#3119). Thanks @Yuxin-Qiao! +- Antigravity: reuse a signed-in `agy` for menu-bar quota refreshes without the desktop app, and report CLI sign-in failures instead of asking users to launch an unavailable app (#3146). - Fixed single-quota menu-bar icons understating remaining usage: a provider's only meaningful quota now renders as one prominent meter instead of half an icon next to a reserved empty lane, including when it arrives in the secondary slot (#3154, #3155). Thanks @akshayprabhu200! - Grok: report period-only CLI-proxy responses as unknown usage instead of 0% when Grok Build has hit its free limit, keeping identity and reset metadata (#3157, #3159). Thanks @anupamchugh! diff --git a/Sources/CodexBarCore/Providers/Antigravity/AntigravityCLISession.swift b/Sources/CodexBarCore/Providers/Antigravity/AntigravityCLISession.swift index 47526c8871..4acdbd5f9c 100644 --- a/Sources/CodexBarCore/Providers/Antigravity/AntigravityCLISession.swift +++ b/Sources/CodexBarCore/Providers/Antigravity/AntigravityCLISession.swift @@ -31,21 +31,25 @@ protocol AntigravityCLIProcessLaunching: Sendable { enum AntigravityCLIAuthenticationPrompt { static let evidence = Data("Select login method:".utf8) - private static let promptPattern = #"select\s+login\s+method\s*:?"# + private static let authenticationPatterns = [ + #"select\s+login\s+method\s*:?"#, + #"you\s+are\s+not\s+logged\s+into\s+antigravity"#, + #"keyring\s*auth\s*:\s*timed\s+out\b"#, + ] static func contains(_ output: Data) -> Bool { // `agy` briefly prints "You are currently not signed in" before it - // auto-refreshes an existing login. The actual blocking state is the - // interactive login-method prompt. The exact prompt is a CLI-owned TUI - // string, so keep matching tolerant to casing and whitespace changes. + // auto-refreshes an existing login. Only a blocking login prompt, an + // explicit Antigravity logout, or exhausted keyring authentication + // establishes that the managed session cannot recover its credentials. if output.range(of: self.evidence) != nil { return true } let asciiBytes = output.map { $0 < 0x80 ? $0 : 0x20 } let text = String(bytes: asciiBytes, encoding: .utf8) ?? "" - return text.range( - of: self.promptPattern, - options: [.regularExpression, .caseInsensitive]) != nil + return self.authenticationPatterns.contains { pattern in + text.range(of: pattern, options: [.regularExpression, .caseInsensitive]) != nil + } } } @@ -1087,12 +1091,16 @@ final class AntigravitySpawnedPTYProcessHandle: AntigravityCLIProcessHandle, @un retries = 0 continue } - if written == 0 { break } + if written == 0 { + break + } let err = errno if err == EINTR || err == EAGAIN || err == EWOULDBLOCK { retries += 1 - if retries > 200 { return } + if retries > 200 { + return + } usleep(5000) continue } diff --git a/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift b/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift index 06a70e2894..467a15ccd2 100644 --- a/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift +++ b/Sources/CodexBarCore/Providers/Antigravity/AntigravityProviderDescriptor.swift @@ -76,7 +76,9 @@ public enum AntigravityProviderDescriptor { }), fetchPlan: ProviderFetchPlan( sourceModes: [.auto, .cli, .oauth], - pipeline: ProviderFetchPipeline(resolveStrategies: self.resolveStrategies)), + pipeline: ProviderFetchPipeline( + resolveStrategies: self.resolveStrategies, + resolveFallbackError: self.resolveFallbackError)), cli: ProviderCLIConfig( name: "antigravity", versionDetector: nil)) @@ -205,6 +207,15 @@ public enum AntigravityProviderDescriptor { let fileURL = AntigravityOAuthCredentialsStore.defaultURL(home: homeURL) return FileManager.default.fileExists(atPath: fileURL.path) } + + static func resolveFallbackError(_ previous: Error?, _ current: Error) -> Error { + if (previous as? AntigravityStatusProbeError) == .authenticationRequired, + (current as? AntigravityStatusProbeError) == .notRunning + { + return previous ?? current + } + return current + } } struct AntigravityStatusFetchStrategy: ProviderFetchStrategy { @@ -553,10 +564,10 @@ struct AntigravityCLIHTTPSFetchStrategy: ProviderFetchStrategy { // CodexBar must not manage its lifecycle, idle timeout, or // `resetAfterFetch` teardown. Those apply only to processes CodexBar // itself spawns on the fallback path below. - // Long-lived hosts already keep a managed session warm. Restrict external - // process reuse to one-shot CLI calls so app/server lifecycle accounting - // stays entirely inside AntigravityCLISession. - if resetAfterFetch, let warmSnapshot = try await Self.tryWarmAgyFetch( + // Persistent hosts also need the external path: a user-owned, signed-in + // `agy` may have credentials a newly spawned managed session cannot read. + // Owned pids remain excluded, so their lifecycle accounting is unchanged. + if let warmSnapshot = try await Self.tryWarmAgyFetch( timeout: 2.0, expectedBinaryPath: binary, expectedAccountEmail: expectedAccountEmail, diff --git a/Sources/CodexBarCore/Providers/ProviderFetchPlan.swift b/Sources/CodexBarCore/Providers/ProviderFetchPlan.swift index 0f564194d7..4df482fb2c 100644 --- a/Sources/CodexBarCore/Providers/ProviderFetchPlan.swift +++ b/Sources/CodexBarCore/Providers/ProviderFetchPlan.swift @@ -306,19 +306,23 @@ extension ProviderFetchStrategy { public struct ProviderFetchPipeline: Sendable { public typealias RetrySleeper = @Sendable (TimeInterval) async throws -> Void + public typealias FallbackErrorResolver = @Sendable (Error?, Error) -> Error public let resolveStrategies: @Sendable (ProviderFetchContext) async -> [any ProviderFetchStrategy] private let retrySleeper: RetrySleeper + private let resolveFallbackError: FallbackErrorResolver public init( resolveStrategies: @escaping @Sendable (ProviderFetchContext) async -> [any ProviderFetchStrategy], retrySleeper: @escaping RetrySleeper = { seconds in guard seconds > 0 else { return } try await Task.sleep(nanoseconds: UInt64(seconds * 1_000_000_000)) - }) + }, + resolveFallbackError: @escaping FallbackErrorResolver = { _, error in error }) { self.resolveStrategies = resolveStrategies self.retrySleeper = retrySleeper + self.resolveFallbackError = resolveFallbackError } public func fetch(context: ProviderFetchContext, provider: UsageProvider) async -> ProviderFetchOutcome { @@ -361,7 +365,7 @@ public struct ProviderFetchPipeline: Sendable { errorDescription: nil)) return ProviderFetchOutcome(result: .success(result), attempts: attempts) } catch { - lastAvailableError = error + lastAvailableError = self.resolveFallbackError(lastAvailableError, error) attempts.append(ProviderFetchAttempt( strategyID: strategy.id, kind: strategy.kind, diff --git a/Tests/CodexBarTests/AntigravityCLIHTTPSFetchStrategyTests.swift b/Tests/CodexBarTests/AntigravityCLIHTTPSFetchStrategyTests.swift index d5b5fb6539..2ca34e9496 100644 --- a/Tests/CodexBarTests/AntigravityCLIHTTPSFetchStrategyTests.swift +++ b/Tests/CodexBarTests/AntigravityCLIHTTPSFetchStrategyTests.swift @@ -645,6 +645,37 @@ struct AntigravityCLIHTTPSFetchStrategyTests { #expect(snapshot.accountEmail == "user@example.com") } + @Test + func `cli HTTPS stops when managed agy reports exhausted keyring authentication`() async { + let output = AntigravityCLIOutputSequence([ + Data("You are currently not signed in.\nSigning in...".utf8), + Data("keyringAuth: timed out after 10s, skipping keyring auth".utf8), + ]) + let portPolls = AntigravityCLICounter() + + do { + _ = try await AntigravityCLIHTTPSFetchStrategy.waitForSnapshot( + pid: 123, + deadline: Date().addingTimeInterval(2), + dependencies: AntigravityCLIHTTPSFetchStrategy.SnapshotWaitDependencies( + pollIntervalNanoseconds: 0, + listeningPorts: { _, _ in + portPolls.increment() + return [] + }, + drainOutput: { output.next() }, + fetchSnapshot: { _ in + Issue.record("An unauthenticated helper must not fetch a snapshot") + throw AntigravityStatusProbeError.notRunning + })) + Issue.record("Expected authentication failure") + } catch AntigravityStatusProbeError.authenticationRequired { + #expect(portPolls.value == 1) + } catch { + Issue.record("Expected authenticationRequired, got \(error)") + } + } + @Test func `cli HTTPS rechecks signed out prompt after snapshot readiness`() async { let output = AntigravityCLIOutputSequence([ @@ -952,3 +983,82 @@ struct AntigravityCLIHTTPSFetchStrategyTests { } } } + +extension AntigravityCLIHTTPSFetchStrategyTests { + @Test + func `missing IDE cannot replace actionable signed out CLI error`() async { + let pipeline = ProviderFetchPipeline( + resolveStrategies: { _ in + [ + AntigravityFallbackFixtureStrategy( + id: "antigravity.cli-https", + error: .authenticationRequired), + AntigravityFallbackFixtureStrategy( + id: "antigravity.ide-local", + error: .notRunning), + ] + }, + resolveFallbackError: AntigravityProviderDescriptor.resolveFallbackError) + + let outcome = await pipeline.fetch(context: self.makeFetchContext(), provider: .antigravity) + + #expect(outcome.attempts.map(\.strategyID) == ["antigravity.cli-https", "antigravity.ide-local"]) + do { + _ = try outcome.result.get() + Issue.record("Expected the signed-out CLI failure") + } catch { + #expect((error as? AntigravityStatusProbeError) == .authenticationRequired) + } + } + + @Test + func `signed out CLI still allows a usable IDE fallback`() async throws { + let pipeline = ProviderFetchPipeline( + resolveStrategies: { _ in + [ + AntigravityFallbackFixtureStrategy( + id: "antigravity.cli-https", + error: .authenticationRequired), + AntigravityFallbackFixtureStrategy(id: "antigravity.ide-local", error: nil), + ] + }, + resolveFallbackError: AntigravityProviderDescriptor.resolveFallbackError) + + let outcome = await pipeline.fetch(context: self.makeFetchContext(), provider: .antigravity) + + #expect(try outcome.result.get().sourceLabel == "ide") + #expect(outcome.attempts.count == 2) + } + + @Test + func `specific later fallback error replaces signed out CLI error`() { + let result = AntigravityProviderDescriptor.resolveFallbackError( + AntigravityStatusProbeError.authenticationRequired, + AntigravityStatusProbeError.apiError("OAuth credentials expired")) + + #expect((result as? AntigravityStatusProbeError) == .apiError("OAuth credentials expired")) + } +} + +private struct AntigravityFallbackFixtureStrategy: ProviderFetchStrategy { + let id: String + let error: AntigravityStatusProbeError? + let kind: ProviderFetchKind = .localProbe + + func isAvailable(_: ProviderFetchContext) async -> Bool { + true + } + + func fetch(_: ProviderFetchContext) async throws -> ProviderFetchResult { + if let error { + throw error + } + return self.makeResult( + usage: UsageSnapshot(primary: nil, secondary: nil, updatedAt: Date()), + sourceLabel: "ide") + } + + func shouldFallback(on _: Error, context _: ProviderFetchContext) -> Bool { + true + } +} diff --git a/Tests/CodexBarTests/AntigravityCLISessionTests.swift b/Tests/CodexBarTests/AntigravityCLISessionTests.swift index 9b5ca353cb..a743d803f7 100644 --- a/Tests/CodexBarTests/AntigravityCLISessionTests.swift +++ b/Tests/CodexBarTests/AntigravityCLISessionTests.swift @@ -418,7 +418,9 @@ private final class AntigravityManualSleeper: @unchecked Sendable { func waitForSleeps(_ expectedCount: Int) async { for _ in 0..<200 { - if self.pendingSleepCount >= expectedCount { return } + if self.pendingSleepCount >= expectedCount { + return + } try? await Task.sleep(nanoseconds: 1_000_000) } Issue.record("Timed out waiting for \(expectedCount) sleep continuation(s)") @@ -703,7 +705,9 @@ struct AntigravityCLISessionTests { let lines = output .split(separator: "\n") .map(String.init) - if lines.count >= 2, output.hasSuffix("\n") { break } + if lines.count >= 2, output.hasSuffix("\n") { + break + } } Thread.sleep(forTimeInterval: 0.01) } @@ -776,6 +780,18 @@ struct AntigravityCLISessionTests { Data("You are currently not signed in".utf8))) } + @Test + func `authentication prompt matcher recognizes logged out and exhausted keyring states`() { + #expect(AntigravityCLIHTTPSFetchStrategy.containsAuthenticationPrompt( + Data("You are not logged into Antigravity.".utf8))) + #expect(AntigravityCLIHTTPSFetchStrategy.containsAuthenticationPrompt( + Data("keyringAuth: timed out after 10s, skipping keyring auth".utf8))) + #expect(AntigravityCLIHTTPSFetchStrategy.containsAuthenticationPrompt( + Data("KEYRING auth : timed out after 10s".utf8))) + #expect(!AntigravityCLIHTTPSFetchStrategy.containsAuthenticationPrompt( + Data("Welcome. You are currently not signed in.\nSigning in...".utf8))) + } + @Test func `session returns complete new output before retaining only its tail`() async throws { let fixture = self.makeFixture() @@ -1454,7 +1470,9 @@ extension AntigravityCLISessionTests { private func waitForLaunches(_ launcher: FakeAntigravityProcessLauncher, count: Int) async -> Bool { for _ in 0..<200 { - if launcher.launchedBinarySnapshot().count >= count { return true } + if launcher.launchedBinarySnapshot().count >= count { + return true + } try? await Task.sleep(nanoseconds: 1_000_000) } return false @@ -1463,7 +1481,9 @@ extension AntigravityCLISessionTests { private func waitUntilStopped(_ session: AntigravityCLISession) async { for _ in 0..<200 { let running = await session.isRunning - if !running { return } + if !running { + return + } await Task.yield() } Issue.record("Timed out waiting for Antigravity CLI session to stop") diff --git a/Tests/CodexBarTests/AntigravityWarmAgyReuseTests.swift b/Tests/CodexBarTests/AntigravityWarmAgyReuseTests.swift index e8958c29cb..bb0314557f 100644 --- a/Tests/CodexBarTests/AntigravityWarmAgyReuseTests.swift +++ b/Tests/CodexBarTests/AntigravityWarmAgyReuseTests.swift @@ -345,7 +345,7 @@ struct AntigravityWarmAgyReuseTests { } @Test - func `long lived session skips external warm scan`() async throws { + func `long lived session reuses signed in external agy without spawning`() async throws { let spawnCallCount = AntigravityWarmLockedCounter() let strategy = AntigravityCLIHTTPSFetchStrategy() @@ -354,21 +354,43 @@ struct AntigravityWarmAgyReuseTests { idleWindow: 60, resetAfterFetch: false, warmDependencies: AntigravityCLIHTTPSFetchStrategy.WarmAgyDependencies( - processInfos: { _ in - Issue.record("long-lived hosts must use their managed session") - return [Self.cliProcessInfo(pid: 6301)] - }, - listeningPorts: { _, _ in [] }, - fetchSnapshot: { _, _ in throw AntigravityStatusProbeError.notRunning }), - spawnFetch: { _, _, resetAfterFetch in + processInfos: { _ in [Self.cliProcessInfo(pid: 6301)] }, + listeningPorts: { _, _ in [50080] }, + fetchSnapshot: { _, _ in Self.usableSnapshot(email: "terminal@example.com") }), + spawnFetch: { _, _, _ in + spawnCallCount.increment() + Issue.record("persistent hosts must reuse an authenticated user-owned agy") + throw AntigravityStatusProbeError.notRunning + }) + + #expect(result.usage.identity?.accountEmail == "terminal@example.com") + #expect(spawnCallCount.value == 0) + } + + @Test + func `long lived session falls back to managed agy when external account mismatches`() async throws { + let spawnCallCount = AntigravityWarmLockedCounter() + let strategy = AntigravityCLIHTTPSFetchStrategy() + + let result = try await strategy.fetchUsingWarmSession( + binary: "/usr/local/bin/agy", + idleWindow: 60, + resetAfterFetch: false, + expectedAccountEmail: "selected@example.com", + warmDependencies: AntigravityCLIHTTPSFetchStrategy.WarmAgyDependencies( + processInfos: { _ in [Self.cliProcessInfo(pid: 6301)] }, + listeningPorts: { _, _ in [50080] }, + fetchSnapshot: { _, _ in Self.usableSnapshot(email: "other@example.com") }), + spawnFetch: { _, idleWindow, resetAfterFetch in spawnCallCount.increment() + #expect(idleWindow == 60) #expect(!resetAfterFetch) return strategy.makeResult( - usage: Self.usableUsage(email: "managed@example.com"), + usage: Self.usableUsage(email: "selected@example.com"), sourceLabel: AntigravityCLIHTTPSFetchStrategy.sourceLabel) }) - #expect(result.usage.identity?.accountEmail == "managed@example.com") + #expect(result.usage.identity?.accountEmail == "selected@example.com") #expect(spawnCallCount.value == 1) } diff --git a/docs/antigravity.md b/docs/antigravity.md index 2db0db98c2..9dac09e2bc 100644 --- a/docs/antigravity.md +++ b/docs/antigravity.md @@ -18,7 +18,8 @@ signal and never enables or falls back to Antigravity automatically. To use the `agy` CLI source without keeping the desktop app open, install the CLI first (`brew install --cask antigravity-cli`; use `ANTIGRAVITY_CLI_PATH` when it is not on PATH), then run `agy` once and sign in. CodexBar keeps the signed-in `agy` local HTTPS server alive briefly -after each refresh and stops it when idle. +after each refresh and stops it when idle, or reuses a signed-in `agy` you already have running +without taking ownership of that process. Antigravity supports four usage data sources: @@ -159,10 +160,11 @@ The fallback can return quota without the account email or plan fields from `Get Differences from the desktop local probe: - The CLI HTTPS endpoint does **not** require `X-Codeium-Csrf-Token`. -- Before a one-shot CLI invocation launches `agy`, CodexBar spends at most two seconds looking for an already-running, - same-user `agy` at the selected binary path and reuses its tokenless local HTTPS endpoint when it returns parseable - usage for the selected account. Long-lived app/server refreshes keep using CodexBar's managed session, and - CodexBar-owned pids are excluded from external reuse so probe/idle lifecycle accounting stays balanced. +- Before launching `agy`, both menu-bar refreshes and one-shot CLI invocations spend at most two seconds looking for + an already-running, same-user `agy` at the selected binary path and reuse its tokenless local HTTPS endpoint when it + returns parseable usage for the selected account. CodexBar-owned pids are excluded from external reuse so managed + probe/idle lifecycle accounting stays balanced; if no eligible external server answers, CodexBar uses its managed + session as before. - Readiness is endpoint-based: CodexBar retries until one of the quota endpoints parses, because fresh `agy` processes can bind a port before the quota service is initialized. - App runtime uses a bounded warm session: `agy` is kept alive briefly after a refresh, then stopped on idle. CLI runtime From 100deb6faeeaa97f179845ef0591cb9b1102639e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 17:16:04 -0700 Subject: [PATCH 26/30] docs: credit #3161 and #3163 changelog entries --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 364ea6910e..bfc9329b8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 0.54.2 — Unreleased +- Adaptive (agent-aware) refresh now detects ongoing Codex activity from the unified ChatGPT.app: the ChatGPT-bundled Codex is recognized at approved locations (signing-validated) and recent rollout writes hold the 5-minute active cadence (#3160, #3163). +- Antigravity: menu-bar quota refresh reuses an already signed-in `agy` CLI without requiring the desktop app, and logged-out/keyring-timeout states show sign-in guidance instead of "Launch Antigravity" (#3146, #3161). + - Codex: tokscale parity for local token counts — cached usage derives from the larger of `cached_input_tokens`/`cache_read_input_tokens`, out-of-order token_count events are detected field-level before watermark latching, and bare usage rows in non-event rollout lines parse (#3120). Thanks @Yuxin-Qiao! - Added CHF (Swiss Franc) to the display currency options (#3149). From 146f47316dca1ba68b278ab5c7dd0e7784eb60d4 Mon Sep 17 00:00:00 2001 From: Zihao Qi <35388022+Zihao-Qi@users.noreply.github.com> Date: Sun, 23 Aug 2026 21:12:22 -0400 Subject: [PATCH 27/30] Fix Claude web cookie refresh (#3162) --- .../BrowserCookieAccessGate.swift | 19 +++++ .../BrowserCookieImportOrder.swift | 10 ++- Sources/CodexBarCore/KeychainAccessGate.swift | 26 ++++++ .../KeychainAccessPreflight.swift | 48 ++++++++++- .../KeychainCacheStore+ApplicationPaths.swift | 63 ++++++++++++++ Sources/CodexBarCore/KeychainCacheStore.swift | 15 ++-- .../Claude/ClaudeProviderDescriptor.swift | 11 ++- .../ClaudeWeb/ClaudeWebAPIFetcher.swift | 67 ++++++++++----- .../BrowserCookieOrderLabelTests.swift | 9 ++ .../CodexBarTests/BrowserDetectionTests.swift | 60 +++++++++++-- .../ClaudeWebBrowserFallbackTests.swift | 61 ++++++++++++++ .../KeychainCacheStoreTests.swift | 84 +++++++++++++++++++ .../KeychainNoUIQueryTests.swift | 19 +++++ 13 files changed, 453 insertions(+), 39 deletions(-) create mode 100644 Tests/CodexBarTests/ClaudeWebBrowserFallbackTests.swift diff --git a/Sources/CodexBarCore/BrowserCookieAccessGate.swift b/Sources/CodexBarCore/BrowserCookieAccessGate.swift index e6e732cb5a..80d19846c0 100644 --- a/Sources/CodexBarCore/BrowserCookieAccessGate.swift +++ b/Sources/CodexBarCore/BrowserCookieAccessGate.swift @@ -60,6 +60,9 @@ public enum BrowserCookieAccessGate { private static let log = CodexBarLog.logger(LogCategories.browserCookieGate) @TaskLocal private static var explicitRetryScope: ExplicitRetryScope? @TaskLocal private static var deniedBrowsersForTesting: [Browser]? + #if DEBUG + @TaskLocal private static var shouldAttemptOverrideForTesting: Bool? + #endif static let allowTestCookieAccessEnvironmentKey = "CODEXBAR_ALLOW_TEST_BROWSER_COOKIE_ACCESS" @@ -84,6 +87,11 @@ public enum BrowserCookieAccessGate { } public static func shouldAttempt(_ browser: Browser, now: Date = Date()) -> Bool { + #if DEBUG + if let shouldAttemptOverrideForTesting { + return shouldAttemptOverrideForTesting + } + #endif guard browser.usesKeychainForCookieDecryption else { return true } guard !KeychainAccessGate.isDisabled else { return false } guard ProviderInteractionContext.current == .userInitiated else { @@ -167,6 +175,17 @@ public enum BrowserCookieAccessGate { } } + #if DEBUG + static func withShouldAttemptOverrideForTesting( + _ result: Bool?, + operation: () throws -> T) rethrows -> T + { + try self.$shouldAttemptOverrideForTesting.withValue(result) { + try operation() + } + } + #endif + static func operationPreservingAccessContext( _ operation: @escaping @Sendable () throws -> T) -> @Sendable () throws -> T { diff --git a/Sources/CodexBarCore/BrowserCookieImportOrder.swift b/Sources/CodexBarCore/BrowserCookieImportOrder.swift index 7419dffbde..3ff6a465d0 100644 --- a/Sources/CodexBarCore/BrowserCookieImportOrder.swift +++ b/Sources/CodexBarCore/BrowserCookieImportOrder.swift @@ -15,13 +15,17 @@ extension [Browser] { /// /// This is intentionally stricter than "app installed": it aims to avoid unnecessary Keychain prompts. public func cookieImportCandidates(using detection: BrowserDetection) -> [Browser] { - let candidates = self.filter { browser in + Array(self.lazyCookieImportCandidates(using: detection)) + } + + /// Lazily filters browser sources so callers can stop after the first successful cookie import. + func lazyCookieImportCandidates(using detection: BrowserDetection) -> some Sequence { + self.lazy.filter { browser in if KeychainAccessGate.isDisabled, browser.usesKeychainForCookieDecryption { return false } - return detection.isCookieSourceAvailable(browser) + return detection.isCookieSourceAvailable(browser) && BrowserCookieAccessGate.shouldAttempt(browser) } - return candidates.filter { BrowserCookieAccessGate.shouldAttempt($0) } } /// Filters a browser list to sources with usable profile data on disk. diff --git a/Sources/CodexBarCore/KeychainAccessGate.swift b/Sources/CodexBarCore/KeychainAccessGate.swift index 3fa2c505a8..ffd6462d2c 100644 --- a/Sources/CodexBarCore/KeychainAccessGate.swift +++ b/Sources/CodexBarCore/KeychainAccessGate.swift @@ -7,6 +7,9 @@ public enum KeychainAccessGate { private static let flagKey = "debugDisableKeychainAccess" static let disableAccessEnvironmentKey = "CODEXBAR_DISABLE_KEYCHAIN_ACCESS" @TaskLocal private static var taskOverrideValue: Bool? + #if DEBUG + @TaskLocal private static var storedOverrideForTesting: Bool? + #endif // All mutable gate state and mirror writes share this lock. Resolve the effective value with // `isDisabledLocked()` instead of recursively entering through the public getter. private static let stateLock = NSLock() @@ -38,6 +41,9 @@ public enum KeychainAccessGate { if Self.forcesDisabledUnderTests { return true } #endif if self.processForceDisabledReason != nil { return true } + #if DEBUG + if let storedOverrideForTesting { return storedOverrideForTesting } + #endif if let overrideValue { return overrideValue } if UserDefaults.standard.bool(forKey: Self.flagKey) { return true } if let shared = AppGroupSupport.sharedDefaults(), shared.bool(forKey: Self.flagKey) { return true } @@ -55,6 +61,9 @@ public enum KeychainAccessGate { if let taskOverrideValue { return taskOverrideValue } if self.isDisabledByEnvironment() { return true } if self.processForceDisabledReason != nil { return true } + #if DEBUG + if let storedOverrideForTesting { return storedOverrideForTesting } + #endif if let overrideValue { return overrideValue } if UserDefaults.standard.bool(forKey: Self.flagKey) { return true } if let shared = AppGroupSupport.sharedDefaults(), shared.bool(forKey: Self.flagKey) { return true } @@ -115,8 +124,25 @@ public enum KeychainAccessGate { } } + #if DEBUG + static func withStoredOverrideForTesting( + _ disabled: Bool?, + operation: () throws -> T) rethrows -> T + { + try self.$storedOverrideForTesting.withValue(disabled) { + try operation() + } + } + #endif + static var currentOverrideForTesting: Bool? { + #if DEBUG + self.taskOverrideValue + ?? self.storedOverrideForTesting + ?? self.stateLock.withLock { self.overrideValue } + #else self.taskOverrideValue ?? self.stateLock.withLock { self.overrideValue } + #endif } #if DEBUG diff --git a/Sources/CodexBarCore/KeychainAccessPreflight.swift b/Sources/CodexBarCore/KeychainAccessPreflight.swift index f9c78fa1d1..577da059eb 100644 --- a/Sources/CodexBarCore/KeychainAccessPreflight.swift +++ b/Sources/CodexBarCore/KeychainAccessPreflight.swift @@ -1,6 +1,7 @@ +import Foundation + #if os(macOS) import Darwin -import Foundation import LocalAuthentication import Security #endif @@ -90,7 +91,32 @@ public enum KeychainAccessPreflight { case failure(Int) } + private struct GenericPasswordKey: Hashable { + let service: String + let account: String? + } + + private final class GenericPasswordCheckMemo: @unchecked Sendable { + private let lock = NSLock() + private var outcomes: [GenericPasswordKey: Outcome] = [:] + + func outcome( + for key: GenericPasswordKey, + check: () -> Outcome) -> Outcome + { + self.lock.lock() + defer { self.lock.unlock() } + if let outcome = self.outcomes[key] { + return outcome + } + let outcome = check() + self.outcomes[key] = outcome + return outcome + } + } + private static let log = CodexBarLog.logger(LogCategories.keychainPreflight) + @TaskLocal private static var genericPasswordCheckMemo: GenericPasswordCheckMemo? #if DEBUG final class CheckGenericPasswordOverrideStore: @unchecked Sendable { @@ -131,7 +157,27 @@ public enum KeychainAccessPreflight { } #endif + /// Reuses identical no-UI generic-password preflights within one synchronous operation. + /// The scope is deliberately short-lived because Keychain items and their ACLs can change. + public static func withMemoizedGenericPasswordChecks( + _ operation: () throws -> T) rethrows -> T + { + try self.$genericPasswordCheckMemo.withValue(GenericPasswordCheckMemo()) { + try operation() + } + } + public static func checkGenericPassword(service: String, account: String?) -> Outcome { + let key = GenericPasswordKey(service: service, account: account) + if let memo = self.genericPasswordCheckMemo { + return memo.outcome(for: key) { + self.checkGenericPasswordUncached(service: service, account: account) + } + } + return self.checkGenericPasswordUncached(service: service, account: account) + } + + private static func checkGenericPasswordUncached(service: String, account: String?) -> Outcome { #if os(macOS) #if DEBUG if let override = self.taskCheckGenericPasswordOverrideStore { diff --git a/Sources/CodexBarCore/KeychainCacheStore+ApplicationPaths.swift b/Sources/CodexBarCore/KeychainCacheStore+ApplicationPaths.swift index e5617c5e29..202e2ec8ae 100644 --- a/Sources/CodexBarCore/KeychainCacheStore+ApplicationPaths.swift +++ b/Sources/CodexBarCore/KeychainCacheStore+ApplicationPaths.swift @@ -1,6 +1,47 @@ import Foundation +#if os(macOS) +import Security +#endif extension KeychainCacheStore { + #if DEBUG + @TaskLocal static var bundledAdHocProcessOverrideForTesting: Bool? + #endif + + /// Ad-hoc app rebuilds cannot satisfy legacy Keychain ACLs created by an earlier executable identity. + /// Keep cookie caches process-local for those builds; certificate-signed development and release apps + /// retain the persistent Keychain cache. + static var isBundledAdHocProcess: Bool { + #if DEBUG + if let override = self.bundledAdHocProcessOverrideForTesting { + return override + } + #endif + return self.detectedBundledAdHocProcess + } + + private static let detectedBundledAdHocProcess: Bool = { + #if os(macOS) + guard let appBundle = Self.appBundleURL(containing: Bundle.main.bundleURL) + ?? Bundle.main.executableURL.flatMap(Self.appBundleURL(containing:)) + else { return false } + return !Self.hasCodeSigningCertificate(at: appBundle) + #else + return false + #endif + }() + + #if DEBUG + static func withBundledAdHocProcessForTesting( + _ enabled: Bool, + operation: () throws -> T) rethrows -> T + { + try self.$bundledAdHocProcessOverrideForTesting.withValue(enabled) { + try operation() + } + } + #endif + static func trustedApplicationPathsForCacheAccess( bundleURL: URL = Bundle.main.bundleURL, executableURL: URL? = Bundle.main.executableURL, @@ -48,4 +89,26 @@ extension KeychainCacheStore { } return nil } + + static func hasCodeSigningCertificate(at bundleURL: URL) -> Bool { + #if os(macOS) + var staticCode: SecStaticCode? + guard SecStaticCodeCreateWithPath(bundleURL as CFURL, SecCSFlags(), &staticCode) == errSecSuccess, + let staticCode + else { return false } + + var information: CFDictionary? + guard SecCodeCopySigningInformation( + staticCode, + SecCSFlags(rawValue: kSecCSSigningInformation), + &information) == errSecSuccess, + let values = information as? [String: Any], + let certificates = values[kSecCodeInfoCertificates as String] as? [SecCertificate] + else { return false } + return !certificates.isEmpty + #else + _ = bundleURL + return false + #endif + } } diff --git a/Sources/CodexBarCore/KeychainCacheStore.swift b/Sources/CodexBarCore/KeychainCacheStore.swift index c01b3eb935..6d7b8e496b 100644 --- a/Sources/CodexBarCore/KeychainCacheStore.swift +++ b/Sources/CodexBarCore/KeychainCacheStore.swift @@ -513,12 +513,14 @@ public enum KeychainCacheStore { !KeychainAccessGate.isDisabled } - /// When the user disables Keychain access, keep an in-process cache so cookie/session + /// When persistent cookie-cache access is unavailable, keep an in-process cache so session /// reconciliation can still succeed without treating every refresh as a session change. /// Unit tests keep using the isolated test stores instead, unless a test explicitly opts in. private static func shouldUseDisabledAccessMemoryStore(for category: String) -> Bool { #if DEBUG - if self.disabledAccessMemoryStoreEnabledForTesting == true { + if self.disabledAccessMemoryStoreEnabledForTesting == true || + self.bundledAdHocProcessOverrideForTesting == true + { return category == "cookie" } if KeychainTestSafety.isRunningUnderTests( @@ -538,7 +540,7 @@ public enum KeychainCacheStore { return true } guard category == "cookie" else { return false } - return KeychainAccessGate.isExplicitlyDisabled + return KeychainAccessGate.isExplicitlyDisabled || self.isBundledAdHocProcess } /// True when the running executable has no `.app` bundle ancestor. @@ -587,7 +589,7 @@ public enum KeychainCacheStore { } #endif - /// Drops the in-process fallback used while Keychain access is explicitly disabled. + /// Drops the in-process fallback used when persistent cookie-cache access is unavailable. static func clearDisabledAccessMemoryStore() { self.disabledAccessMemoryLock.lock() self.disabledAccessMemoryStore.removeAll() @@ -599,7 +601,8 @@ public enum KeychainCacheStore { private static var prefersDisabledAccessMemoryStoreOverTestStore: Bool { #if DEBUG - self.disabledAccessMemoryStoreEnabledForTesting == true + self.disabledAccessMemoryStoreEnabledForTesting == true || + self.bundledAdHocProcessOverrideForTesting == true #else false #endif @@ -846,7 +849,7 @@ public enum KeychainCacheStore { defer { self.disabledAccessMemoryLock.unlock() } let memoryKey = TestStoreKey(service: self.serviceName, account: key.account) self.disabledAccessMemoryStore[memoryKey] = data - self.log.debug("Keychain cache stored in memory (Keychain access disabled)", metadata: [ + self.log.debug("Cookie cache stored in process memory", metadata: [ "account": key.account, ]) return true diff --git a/Sources/CodexBarCore/Providers/Claude/ClaudeProviderDescriptor.swift b/Sources/CodexBarCore/Providers/Claude/ClaudeProviderDescriptor.swift index 6a4bb1314b..cb1052d2ac 100644 --- a/Sources/CodexBarCore/Providers/Claude/ClaudeProviderDescriptor.swift +++ b/Sources/CodexBarCore/Providers/Claude/ClaudeProviderDescriptor.swift @@ -1,7 +1,16 @@ import Foundation +import SweetCookieKit public enum ClaudeProviderDescriptor { public static let descriptor: ProviderDescriptor = Self.makeDescriptor() + private static var browserCookieOrder: BrowserCookieImportOrder? { + #if os(macOS) + [.chrome] + Browser.defaultImportOrder.filter { $0 != .chrome } + #else + nil + #endif + } + private static let ttyLaunch = ProviderTTYLaunchConfig( executableOverrideEnvironmentKey: "CLAUDE_CLI_PATH", bundledWatchdogHelperName: "CodexBarClaudeWatchdog", @@ -123,7 +132,7 @@ public enum ClaudeProviderDescriptor { probeLogOrder: 1, notificationSimulationOrder: 1, errorSimulationOrder: 1), - browserCookieOrder: ProviderBrowserCookieDefaults.defaultImportOrder, + browserCookieOrder: self.browserCookieOrder, dashboardURL: "https://console.anthropic.com/settings/billing", subscriptionDashboardURL: "https://claude.ai/settings/usage", changelogURL: "https://github.com/anthropics/claude-code/releases", diff --git a/Sources/CodexBarCore/Providers/Claude/ClaudeWeb/ClaudeWebAPIFetcher.swift b/Sources/CodexBarCore/Providers/Claude/ClaudeWeb/ClaudeWebAPIFetcher.swift index 6f7a47d86f..f3793edba6 100644 --- a/Sources/CodexBarCore/Providers/Claude/ClaudeWeb/ClaudeWebAPIFetcher.swift +++ b/Sources/CodexBarCore/Providers/Claude/ClaudeWeb/ClaudeWebAPIFetcher.swift @@ -37,6 +37,8 @@ enum ClaudeWebPrepaidCreditsRequest { enum ClaudeWebSessionKeyImport { #if DEBUG @TaskLocal static var overrideForTesting: ClaudeWebAPIFetcher.SessionKeyInfo? + @TaskLocal static var browserOverrideForTesting: + (@Sendable (Browser) throws -> ClaudeWebAPIFetcher.SessionKeyInfo?)? #endif static var currentOverride: ClaudeWebAPIFetcher.SessionKeyInfo? { @@ -46,6 +48,16 @@ enum ClaudeWebSessionKeyImport { nil #endif } + + static var currentBrowserOverride: + (@Sendable (Browser) throws -> ClaudeWebAPIFetcher.SessionKeyInfo?)? + { + #if DEBUG + self.browserOverrideForTesting + #else + nil + #endif + } } private actor ClaudeWebBrowserFetchGate { @@ -535,33 +547,42 @@ extension ClaudeWebAPIFetcher { let cookieDomains = ["claude.ai"] - // Filter to cookie-eligible browsers to avoid unnecessary keychain prompts - let installedBrowsers = Self.cookieImportOrder.cookieImportCandidates(using: browserDetection) - for browserSource in installedBrowsers { - do { - let query = BrowserCookieQuery(domains: cookieDomains) - let sources = try Self.cookieClient.codexBarRecords( - matching: query, - in: browserSource, - logger: log) - for source in sources { - if let sessionKey = findSessionKey(in: source.records.map { record in - (name: record.name, value: record.value) - }) { - log("Found sessionKey in \(source.label)") - return SessionKeyInfo( - key: sessionKey, - sourceLabel: source.label, - cookieCount: source.records.count) + return try KeychainAccessPreflight.withMemoizedGenericPasswordChecks { + // Evaluate sources on demand so a successful preferred browser avoids later Keychain preflights. + let installedBrowsers = Self.cookieImportOrder.lazyCookieImportCandidates(using: browserDetection) + for browserSource in installedBrowsers { + do { + if let override = ClaudeWebSessionKeyImport.currentBrowserOverride { + if let sessionInfo = try override(browserSource) { + log("Found sessionKey in \(sessionInfo.sourceLabel)") + return sessionInfo + } + continue } + let query = BrowserCookieQuery(domains: cookieDomains) + let sources = try Self.cookieClient.codexBarRecords( + matching: query, + in: browserSource, + logger: log) + for source in sources { + if let sessionKey = findSessionKey(in: source.records.map { record in + (name: record.name, value: record.value) + }) { + log("Found sessionKey in \(source.label)") + return SessionKeyInfo( + key: sessionKey, + sourceLabel: source.label, + cookieCount: source.records.count) + } + } + } catch { + BrowserCookieAccessGate.recordIfNeeded(error) + log("\(browserSource.displayName) cookie load failed: \(error.localizedDescription)") } - } catch { - BrowserCookieAccessGate.recordIfNeeded(error) - log("\(browserSource.displayName) cookie load failed: \(error.localizedDescription)") } - } - throw FetchError.noSessionKeyFound + throw FetchError.noSessionKeyFound + } } private static func findSessionKey(in cookies: [(name: String, value: String)]) -> String? { diff --git a/Tests/CodexBarTests/BrowserCookieOrderLabelTests.swift b/Tests/CodexBarTests/BrowserCookieOrderLabelTests.swift index 9081a0ac2b..1a0cc684da 100644 --- a/Tests/CodexBarTests/BrowserCookieOrderLabelTests.swift +++ b/Tests/CodexBarTests/BrowserCookieOrderLabelTests.swift @@ -16,6 +16,15 @@ struct BrowserCookieOrderStatusStringTests { #expect(Browser.defaultImportOrder.contains(.yandex)) } + @Test + func `claude cookie import prefers chrome without dropping fallback browsers`() throws { + let order = try #require(ProviderDefaults.metadata[.claude]?.browserCookieOrder) + + #expect(order.first == .chrome) + #expect(order.count == Browser.defaultImportOrder.count) + #expect(Set(order) == Set(Browser.defaultImportOrder)) + } + @Test func `cursor no session includes browser login hint`() { let order = ProviderDefaults.metadata[.cursor]?.browserCookieOrder ?? Browser.defaultImportOrder diff --git a/Tests/CodexBarTests/BrowserDetectionTests.swift b/Tests/CodexBarTests/BrowserDetectionTests.swift index 1410c1aef2..c1501e4de3 100644 --- a/Tests/CodexBarTests/BrowserDetectionTests.swift +++ b/Tests/CodexBarTests/BrowserDetectionTests.swift @@ -163,6 +163,57 @@ struct BrowserDetectionTests { #expect(browsers.cookieImportCandidates(using: detection) == [.firefox, .safari]) } + @Test + func `lazy cookie candidates stop before probing later browsers`() throws { + BrowserCookieAccessGate.resetForTesting() + defer { BrowserCookieAccessGate.resetForTesting() } + + let temp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) + let chromeCookies = temp + .appendingPathComponent("Library/Application Support/Google/Chrome/Default/Network/Cookies") + try FileManager.default.createDirectory( + at: chromeCookies.deletingLastPathComponent(), + withIntermediateDirectories: true) + FileManager.default.createFile(atPath: chromeCookies.path, contents: Data()) + defer { try? FileManager.default.removeItem(at: temp) } + + let edgeProbeCount = OSAllocatedUnfairLock(initialState: 0) + let detection = BrowserDetection( + homeDirectory: temp.path, + cacheTTL: 0, + fileExists: { path in + if path == "/Applications/Google Chrome.app" { + return true + } + if path == "/Applications/Microsoft Edge.app" { + edgeProbeCount.withLock { $0 += 1 } + return true + } + return FileManager.default.fileExists(atPath: path) + }, + directoryContents: { path in + try? FileManager.default.contentsOfDirectory(atPath: path) + }) + var preflightCount = 0 + + let firstCandidate = KeychainAccessGate.withTaskOverrideForTesting(false) { + KeychainAccessPreflight.withCheckGenericPasswordOverrideForTesting { _, _ in + preflightCount += 1 + return .allowed + } operation: { + ProviderInteractionContext.$current.withValue(.background) { + Array([Browser.chrome, .edge] + .lazyCookieImportCandidates(using: detection) + .prefix(1)) + } + } + } + + #expect(firstCandidate == [.chrome]) + #expect(preflightCount == 1) + #expect(edgeProbeCount.withLock { $0 } == 0) + } + @Test func `chrome requires profile data`() throws { let temp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) @@ -210,10 +261,6 @@ struct BrowserDetectionTests { @Test func `process filters chromium candidates despite false global keychain override`() throws { guard ProcessInfo.processInfo.environment["CODEXBAR_ALLOW_TEST_KEYCHAIN_ACCESS"] != "1" else { return } - KeychainAccessGate.resetOverrideForTesting() - defer { KeychainAccessGate.resetOverrideForTesting() } - - KeychainAccessGate.isDisabled = false let temp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) try FileManager.default.createDirectory(at: temp, withIntermediateDirectories: true) @@ -232,7 +279,10 @@ struct BrowserDetectionTests { let detection = self.detection(homeDirectory: temp.path, installedBrowsers: [.chrome]) let browsers: [Browser] = [.chrome, .safari] - #expect(browsers.cookieImportCandidates(using: detection) == [.safari]) + let candidates = KeychainAccessGate.withStoredOverrideForTesting(false) { + browsers.cookieImportCandidates(using: detection) + } + #expect(candidates == [.safari]) } @Test diff --git a/Tests/CodexBarTests/ClaudeWebBrowserFallbackTests.swift b/Tests/CodexBarTests/ClaudeWebBrowserFallbackTests.swift new file mode 100644 index 0000000000..f664ca2505 --- /dev/null +++ b/Tests/CodexBarTests/ClaudeWebBrowserFallbackTests.swift @@ -0,0 +1,61 @@ +import Foundation +import os.lock +import SweetCookieKit +import Testing +@testable import CodexBarCore + +#if os(macOS) +@Suite(.serialized) +struct ClaudeWebBrowserFallbackTests { + @Test + func `chrome without a Claude session falls through to Safari`() throws { + let temp = FileManager.default.temporaryDirectory + .appendingPathComponent("claude-browser-fallback-\(UUID().uuidString)", isDirectory: true) + let chromeCookies = temp + .appendingPathComponent("Library/Application Support/Google/Chrome/Default/Network/Cookies") + try FileManager.default.createDirectory( + at: chromeCookies.deletingLastPathComponent(), + withIntermediateDirectories: true) + FileManager.default.createFile(atPath: chromeCookies.path, contents: Data()) + defer { try? FileManager.default.removeItem(at: temp) } + + let detection = BrowserDetection( + homeDirectory: temp.path, + cacheTTL: 0, + fileExists: { path in + if path == "/Applications/Google Chrome.app" { + return true + } + return FileManager.default.fileExists(atPath: path) + }, + directoryContents: { path in + try? FileManager.default.contentsOfDirectory(atPath: path) + }) + let attempts = OSAllocatedUnfairLock(initialState: [Browser]()) + let browserOverride: @Sendable (Browser) throws -> ClaudeWebAPIFetcher.SessionKeyInfo? = { browser in + attempts.withLock { $0.append(browser) } + guard browser == .safari else { return nil } + return ClaudeWebAPIFetcher.SessionKeyInfo( + key: "sk-ant-safari-fallback", + sourceLabel: "Safari", + cookieCount: 1) + } + + let sessionInfo = try BrowserCookieAccessGate.withShouldAttemptOverrideForTesting(true) { + try KeychainAccessGate.withTaskOverrideForTesting(false) { + try KeychainAccessPreflight.withCheckGenericPasswordOverrideForTesting { _, _ in .allowed } operation: { + try ProviderInteractionContext.$current.withValue(.background) { + try ClaudeWebSessionKeyImport.$browserOverrideForTesting.withValue(browserOverride) { + try ClaudeWebAPIFetcher.sessionKeyInfo(browserDetection: detection) + } + } + } + } + } + + #expect(attempts.withLock { $0 } == [.chrome, .safari]) + #expect(sessionInfo.key == "sk-ant-safari-fallback") + #expect(sessionInfo.sourceLabel == "Safari") + } +} +#endif diff --git a/Tests/CodexBarTests/KeychainCacheStoreTests.swift b/Tests/CodexBarTests/KeychainCacheStoreTests.swift index 000b551bbf..d3e8d01c91 100644 --- a/Tests/CodexBarTests/KeychainCacheStoreTests.swift +++ b/Tests/CodexBarTests/KeychainCacheStoreTests.swift @@ -324,6 +324,90 @@ struct KeychainCacheStoreTests { } } + @Test + func `bundled ad hoc builds keep cookie cache in process memory`() { + KeychainCacheStore.resetDisabledAccessMemoryStoreForTesting() + defer { KeychainCacheStore.resetDisabledAccessMemoryStoreForTesting() } + + let service = "adhoc-memory-\(UUID().uuidString)" + let key = KeychainCacheStore.Key.cookie(provider: .claude) + let entry = TestEntry(value: "sessionKey=memory", storedAt: Date(timeIntervalSince1970: 4)) + + KeychainCacheStore.withBundledAdHocProcessForTesting(true) { + KeychainCacheStore.withServiceOverrideForTesting(service) { + #expect(KeychainCacheStore.storeResult(key: key, entry: entry)) + #expect(self.loadedEntry(for: key) == entry) + #expect(KeychainCacheStore.keys(category: "cookie") == [key]) + #expect(KeychainCacheStore.clearResult(key: key) == .removed) + #expect(self.loadedEntry(for: key) == nil) + } + } + } + + @Test + func `certificate signed builds keep cookie cache in persistent store`() { + KeychainCacheStore.resetDisabledAccessMemoryStoreForTesting() + KeychainCacheStore.setTestStoreForTesting(true) + defer { + KeychainCacheStore.setTestStoreForTesting(false) + KeychainCacheStore.resetDisabledAccessMemoryStoreForTesting() + } + + let service = "signed-persistent-\(UUID().uuidString)" + let key = KeychainCacheStore.Key.cookie(provider: .claude) + let entry = TestEntry(value: "sessionKey=persistent", storedAt: Date(timeIntervalSince1970: 5)) + + KeychainCacheStore.withBundledAdHocProcessForTesting(false) { + KeychainCacheStore.withServiceOverrideForTesting(service) { + #expect(KeychainCacheStore.storeResult(key: key, entry: entry)) + #expect(self.loadedEntry(for: key) == entry) + } + } + + KeychainCacheStore.withBundledAdHocProcessForTesting(true) { + KeychainCacheStore.withServiceOverrideForTesting(service) { + #expect(self.loadedEntry(for: key) == nil) + } + } + + KeychainCacheStore.withBundledAdHocProcessForTesting(false) { + KeychainCacheStore.withServiceOverrideForTesting(service) { + #expect(self.loadedEntry(for: key) == entry) + #expect(KeychainCacheStore.clearResult(key: key) == .removed) + } + } + } + + @Test + func `code signing certificate detection recognizes signed system code`() { + #expect(KeychainCacheStore.hasCodeSigningCertificate(at: URL(fileURLWithPath: "/usr/bin/security"))) + #expect(!KeychainCacheStore.hasCodeSigningCertificate( + at: URL(fileURLWithPath: "/path/that/does/not/exist"))) + } + + @Test + func `bundled ad hoc builds do not move OAuth credentials into memory`() { + KeychainCacheStore.resetDisabledAccessMemoryStoreForTesting() + defer { + KeychainCacheStore.resetDisabledAccessMemoryStoreForTesting() + KeychainAccessGate.resetOverrideForTesting() + } + + let service = "adhoc-memory-oauth-\(UUID().uuidString)" + let key = KeychainCacheStore.Key.oauth(provider: .claude) + let entry = TestEntry(value: "synthetic-oauth-credential", storedAt: Date(timeIntervalSince1970: 5)) + + KeychainAccessGate.withTaskOverrideForTesting(true) { + KeychainCacheStore.withBundledAdHocProcessForTesting(true) { + KeychainCacheStore.withServiceOverrideForTesting(service) { + #expect(!KeychainCacheStore.storeResult(key: key, entry: entry)) + #expect(self.loadedEntry(for: key) == nil) + #expect(KeychainCacheStore.keysResult(category: "oauth") == .failed) + } + } + } + } + @Test func `disabled keychain access does not retain OAuth entries in memory`() { KeychainCacheStore.resetDisabledAccessMemoryStoreForTesting() diff --git a/Tests/CodexBarTests/KeychainNoUIQueryTests.swift b/Tests/CodexBarTests/KeychainNoUIQueryTests.swift index 7df8b2ea60..77e9fbc40c 100644 --- a/Tests/CodexBarTests/KeychainNoUIQueryTests.swift +++ b/Tests/CodexBarTests/KeychainNoUIQueryTests.swift @@ -50,6 +50,25 @@ struct KeychainNoUIQueryTests { #expect((query[kSecUseAuthenticationUI as String] as? String) == self.resolveSecurityUIFailValue()) } + @Test + func `generic password preflight memo is scoped to one operation`() { + var checkCount = 0 + + KeychainAccessPreflight.withCheckGenericPasswordOverrideForTesting { _, _ in + checkCount += 1 + return .allowed + } operation: { + KeychainAccessPreflight.withMemoizedGenericPasswordChecks { + _ = KeychainAccessPreflight.checkGenericPassword(service: "Chrome Safe Storage", account: "Chrome") + _ = KeychainAccessPreflight.checkGenericPassword(service: "Chrome Safe Storage", account: "Chrome") + _ = KeychainAccessPreflight.checkGenericPassword(service: "Chrome Safe Storage", account: "Canary") + } + _ = KeychainAccessPreflight.checkGenericPassword(service: "Chrome Safe Storage", account: "Chrome") + } + + #expect(checkCount == 3) + } + @Test func `decrypt ACL requires successful code signature validation without a prompt selector`() { #expect(KeychainAccessPreflight.decryptACLAllowsCurrentProcess( From 971ba9d8c4808fdda3c3dbbea7834fb6fe329765 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 18:13:00 -0700 Subject: [PATCH 28/30] docs: credit #3162 changelog entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bfc9329b8b..c1dcccb959 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## 0.54.2 — Unreleased +- Claude: web-cookie refresh works in ad-hoc development builds by routing cookie cache entries to process memory, keeping persistent Keychain storage for signed builds and OAuth credentials; cookie imports prefer Chrome and evaluate other browsers lazily (#3162). Thanks @Zihao-Qi! + - Adaptive (agent-aware) refresh now detects ongoing Codex activity from the unified ChatGPT.app: the ChatGPT-bundled Codex is recognized at approved locations (signing-validated) and recent rollout writes hold the 5-minute active cadence (#3160, #3163). - Antigravity: menu-bar quota refresh reuses an already signed-in `agy` CLI without requiring the desktop app, and logged-out/keyring-timeout states show sign-in guidance instead of "Launch Antigravity" (#3146, #3161). From 338cc2d726a1e81da55b7e25449d5d4a214ada18 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 18:13:42 -0700 Subject: [PATCH 29/30] chore: regenerate parser hash on merged tree --- Sources/CodexBarCore/Generated/CodexParserHash.generated.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift b/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift index 324050b2e7..580ca61bca 100644 --- a/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift +++ b/Sources/CodexBarCore/Generated/CodexParserHash.generated.swift @@ -1,5 +1,5 @@ // Generated by Scripts/regenerate-codex-parser-hash.sh. Do not edit by hand. enum CodexParserHash { - static let value = "5f8507161b23757c" + static let value = "cfd84d13ad7d4cfa" } From a5d2d217b1ac76c09c60fc228ad9c200e202f6e5 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 23 Aug 2026 18:18:28 -0700 Subject: [PATCH 30/30] test: include 0.54.2 parity hash in predecessor list --- Tests/CodexBarTests/CostUsageStoreTests.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Tests/CodexBarTests/CostUsageStoreTests.swift b/Tests/CodexBarTests/CostUsageStoreTests.swift index 0b64255256..103f094112 100644 --- a/Tests/CodexBarTests/CostUsageStoreTests.swift +++ b/Tests/CodexBarTests/CostUsageStoreTests.swift @@ -1011,6 +1011,7 @@ extension CostUsageStoreTests { "47144baa8daccf52", "2d17f4981b78d07f", "3c984b655688593f", + "5f8507161b23757c", ]) let predecessorHash = "43609cc56f76a003" let predecessorVersion = CostUsageStore.combinedSchemaVersion(

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 literal 0 HcmV?d00001 diff --git a/docs/screenshots/cli-install-write-failure-before.png b/docs/screenshots/cli-install-write-failure-before.png new file mode 100644 index 0000000000000000000000000000000000000000..0bc18eab6211c56b15e59f0d4a11ddd583215c60 GIT binary patch literal 268382 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�o<@DaVFZ4?H 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 sR3X3n?n1#VCiFMAnDYgW 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