diff --git a/Sources/CodexBar/Providers/OpenCodeGo/OpenCodeGoSettingsStore.swift b/Sources/CodexBar/Providers/OpenCodeGo/OpenCodeGoSettingsStore.swift index 30b645e86..aa6bcef8b 100644 --- a/Sources/CodexBar/Providers/OpenCodeGo/OpenCodeGoSettingsStore.swift +++ b/Sources/CodexBar/Providers/OpenCodeGo/OpenCodeGoSettingsStore.swift @@ -33,6 +33,14 @@ extension SettingsStore { } } + var opencodegoDashboardURL: URL? { + let workspaceID = OpenCodeGoUsageFetcher.normalizeWorkspaceID(self.opencodegoWorkspaceID) + if let workspaceID { + return URL(string: "https://opencode.ai/workspace/\(workspaceID)/go") + } + return URL(string: "https://opencode.ai") + } + func ensureOpenCodeGoCookieLoaded() {} } diff --git a/Sources/CodexBar/StatusItemController+Actions.swift b/Sources/CodexBar/StatusItemController+Actions.swift index b470e049c..ef592ae6d 100644 --- a/Sources/CodexBar/StatusItemController+Actions.swift +++ b/Sources/CodexBar/StatusItemController+Actions.swift @@ -44,6 +44,10 @@ extension StatusItemController { return self.settings.alibabaCodingPlanAPIRegion.dashboardURL } + if provider == .opencodego { + return self.settings.opencodegoDashboardURL + } + let meta = self.store.metadata(for: provider) let urlString: String? = if provider == .claude, self.store.isClaudeSubscription() { meta.subscriptionDashboardURL ?? meta.dashboardURL diff --git a/Sources/CodexBarCore/Providers/OpenCodeGo/OpenCodeGoUsageFetcher.swift b/Sources/CodexBarCore/Providers/OpenCodeGo/OpenCodeGoUsageFetcher.swift index 4183eb853..6b152c552 100644 --- a/Sources/CodexBarCore/Providers/OpenCodeGo/OpenCodeGoUsageFetcher.swift +++ b/Sources/CodexBarCore/Providers/OpenCodeGo/OpenCodeGoUsageFetcher.swift @@ -147,7 +147,7 @@ public struct OpenCodeGoUsageFetcher: Sendable { return ids[0] } - private static func normalizeWorkspaceID(_ raw: String?) -> String? { + public static func normalizeWorkspaceID(_ raw: String?) -> String? { guard let raw else { return nil } let trimmed = raw.trimmingCharacters(in: .whitespacesAndNewlines) if trimmed.hasPrefix("wrk_"), trimmed.count > 4 {