Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ let package = Package(
.executable(name: "AgentBar", targets: ["AgentBar"]),
],
dependencies: [
.package(url: "https://github.com/sparkle-project/Sparkle", from: "2.9.4"),
.package(url: "https://github.com/sparkle-project/Sparkle", exact: "2.9.4"),
],
targets: [
.executableTarget(
Expand Down
12 changes: 2 additions & 10 deletions Sources/AgentBar/App/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import SwiftUI

@MainActor
final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
private static let statusItemWidth: CGFloat = 168
private static let statusItemWidth: CGFloat = 76

private let store = QuotaStore()
private var statusItem: NSStatusItem?
Expand Down Expand Up @@ -72,7 +72,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
let popover = NSPopover()
popover.behavior = .transient
popover.delegate = self
popover.contentSize = NSSize(width: 320, height: 660)
popover.contentSize = NSSize(width: 320, height: 520)
popover.contentViewController = VisualEffectHostingController(
rootView: QuotaPopoverView(
store: store,
Expand Down Expand Up @@ -106,13 +106,6 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
}
.store(in: &cancellables)

store.$modelReasonSnapshot
.receive(on: RunLoop.main)
.sink { [weak self] _ in
self?.updateMenuBarTitle()
}
.store(in: &cancellables)

store.$cliUpgradeAlertMessage
.receive(on: RunLoop.main)
.sink { [weak self] message in
Expand All @@ -124,7 +117,6 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSPopoverDelegate {
private func updateMenuBarTitle() {
menuBarView?.update(
snapshot: store.snapshot,
modelReasonSnapshot: store.modelReasonSnapshot,
statusMessage: store.statusMessage
)
}
Expand Down
15 changes: 5 additions & 10 deletions Sources/AgentBar/Localization/I18n.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ enum I18n {
let refreshNow: String
let aboutUs: String
let quit: String
let currentSession: String
let recentWeek: String
let resetTimeUnavailable: String
let resetSoon: String
Expand All @@ -37,7 +36,7 @@ enum I18n {
let missingAccountResult: String
let missingRateLimitResult: String
let missingTokenUsageResult: String
let expectedQuotaWindows: String
let missingWeeklyQuotaWindow: String
let availableResetCredits: String
let resetCreditDefaultTitle: String
let resetCreditNeverExpires: String
Expand Down Expand Up @@ -169,8 +168,6 @@ enum I18n {

func durationTitle(minutes: Int) -> String {
switch minutes {
case 300:
return currentSession
case 10080:
return recentWeek
case ..<1440:
Expand Down Expand Up @@ -235,7 +232,6 @@ enum I18n {
refreshNow: "Refresh now",
aboutUs: "About us",
quit: "Quit",
currentSession: "Current session",
recentWeek: "Past 1 week",
resetTimeUnavailable: "Reset time unavailable",
resetSoon: "Reset soon",
Expand All @@ -255,9 +251,9 @@ enum I18n {
missingAccountResult: "Missing account result.",
missingRateLimitResult: "Missing rate limit result.",
missingTokenUsageResult: "Missing token usage result.",
expectedQuotaWindows: "Expected primary and secondary quota windows.",
missingWeeklyQuotaWindow: "The weekly quota window was not returned.",
availableResetCredits: "Available resets:",
resetCreditDefaultTitle: "Full reset (Weekly + 5 hr)",
resetCreditDefaultTitle: "Rate-limit reset",
resetCreditNeverExpires: "Does not expire",
resetCreditDetailsUnavailable: "Details unavailable",
noAvailableResetCredits: "No reset credits available",
Expand All @@ -281,7 +277,6 @@ enum I18n {
refreshNow: "立即刷新",
aboutUs: "关于我们",
quit: "退出",
currentSession: "当前会话",
recentWeek: "近 1 周",
resetTimeUnavailable: "刷新时间不可用",
resetSoon: "即将刷新",
Expand All @@ -301,9 +296,9 @@ enum I18n {
missingAccountResult: "缺少账户结果。",
missingRateLimitResult: "缺少额度结果。",
missingTokenUsageResult: "缺少 token 消耗结果。",
expectedQuotaWindows: "需要 primary 和 secondary 两个额度窗口。",
missingWeeklyQuotaWindow: "未返回周额度窗口。",
availableResetCredits: "可用重置次数:",
resetCreditDefaultTitle: "完整重置(周 + 5 小时)",
resetCreditDefaultTitle: "额度重置",
resetCreditNeverExpires: "不会到期",
resetCreditDetailsUnavailable: "暂无重置详情",
noAvailableResetCredits: "暂无可用重置次数",
Expand Down
27 changes: 1 addition & 26 deletions Sources/AgentBar/Models/QuotaModels.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ struct RateLimitResetCredit: Identifiable, Sendable {
}

struct QuotaSnapshot: Sendable {
var primary: QuotaWindow
var secondary: QuotaWindow
var weekly: QuotaWindow
var availableResetCredits: Int?
var resetCredits: [RateLimitResetCredit]?
var lastUpdated: Date
Expand Down Expand Up @@ -62,30 +61,6 @@ struct TokenUsageSnapshot: Sendable {
let lastUpdated: Date
}

struct ModelReasonEntry: Sendable {
let model: String
let reasoningEffort: String
let score: Double
let date: String?

var displayModel: String {
model
.replacingOccurrences(of: "gpt-", with: "GPT ")
.replacingOccurrences(of: "GPT-", with: "GPT ")
}

var displayReasoningEffort: String {
reasoningEffort.lowercased()
}
}

struct ModelReasonSnapshot: Sendable {
let selected: ModelReasonEntry
let entries: [ModelReasonEntry]
let sourceURL: URL
let lastUpdated: Date
}

struct CodexCLIVersion: Comparable, Sendable {
let major: Int
let minor: Int
Expand Down
Loading