on master help sign in
fix: show 0% usage in menu bar

Zero usage is valid data — removing the > 0 filter so 0% values appear in the menu bar. Tests updated accordingly.

commit8e40b44fc91a246f5dd4abd72cb7288f5fa529a6 authoriko <mail@iko.soy> dateFri 17 Jul 2026, 14:23 (3 months ago) parent440eca7
2 files changed+11−11
UsageMenubar/ViewModel.swift+4−4 UsageMenubarTests/StatusBarTextTests.swift+7−7
UsageMenubar/ViewModel.swift+4−4
@@ -267,10 +267,10 @@ final class ViewModel: ObservableObject {
267267
268268 // Claude — provider emoji + bare percentages
269269 var claudeWindows: [String] = []
270− if let fiveHour = claudeFiveHourPercent, fiveHour > 0 {
270+ if let fiveHour = claudeFiveHourPercent {
271271 claudeWindows.append("\(fiveHour)%")
272272 }
273− if let sevenDay = claudeSevenDayPercent, sevenDay > 0 {
273+ if let sevenDay = claudeSevenDayPercent {
274274 claudeWindows.append("\(sevenDay)%")
275275 }
276276 if !claudeWindows.isEmpty {
@@ -279,10 +279,10 @@ final class ViewModel: ObservableObject {
279279
280280 // z.ai — provider emoji + bare percentages
281281 var zaiWindows: [String] = []
282− if let zaiFiveHour = zaiFiveHourPercent, zaiFiveHour > 0 {
282+ if let zaiFiveHour = zaiFiveHourPercent {
283283 zaiWindows.append("\(zaiFiveHour)%")
284284 }
285− if let zaiWeekly = zaiWeeklyPercent, zaiWeekly > 0 {
285+ if let zaiWeekly = zaiWeeklyPercent {
286286 zaiWindows.append("\(zaiWeekly)%")
287287 }
288288 if !zaiWindows.isEmpty {
UsageMenubarTests/StatusBarTextTests.swift+7−7
@@ -90,7 +90,7 @@ final class StatusBarTextTests: XCTestCase {
9090 XCTAssertEqual(title, "⚡42 · \u{1F172}62% 8%")
9191 }
9292
93− func testZeroPercentIsShownRatherThanOmitted() {
93+ func testZeroPercentIsShown() {
9494 let title = ViewModel.statusBarText(
9595 balance: 42, isLoading: false,
9696 hyperConfigured: true,
@@ -98,7 +98,7 @@ final class StatusBarTextTests: XCTestCase {
9898 zaiFiveHourPercent: nil, zaiWeeklyPercent: nil,
9999 zaiInPeakHours: false
100100 )
101− XCTAssertEqual(title, "⚡42 · \u{1F172}8%")
101+ XCTAssertEqual(title, "⚡42 · \u{1F172}0% 8%")
102102 }
103103
104104 func testBothClaudeWindowsZero() {
@@ -109,7 +109,7 @@ final class StatusBarTextTests: XCTestCase {
109109 zaiFiveHourPercent: nil, zaiWeeklyPercent: nil,
110110 zaiInPeakHours: false
111111 )
112− XCTAssertEqual(title, "⚡42")
112+ XCTAssertEqual(title, "⚡42 · \u{1F172}0% 0%")
113113 }
114114
115115 func testFiveHourOnly() {
@@ -217,7 +217,7 @@ final class StatusBarTextTests: XCTestCase {
217217 XCTAssertEqual(title, "⚡42 · \u{1F172}62% 8% · \u{1F149}12% 3%")
218218 }
219219
220− func testZaiZeroIsOmitted() {
220+ func testZaiZeroIsShown() {
221221 let title = ViewModel.statusBarText(
222222 balance: 42, isLoading: false,
223223 hyperConfigured: true,
@@ -225,7 +225,7 @@ final class StatusBarTextTests: XCTestCase {
225225 zaiFiveHourPercent: 0, zaiWeeklyPercent: 0,
226226 zaiInPeakHours: false
227227 )
228− XCTAssertEqual(title, "⚡42")
228+ XCTAssertEqual(title, "⚡42 · \u{1F149}0% 0%")
229229 }
230230
231231 func testLoadingKeepsZaiPercentOnScreen() {
@@ -263,7 +263,7 @@ final class StatusBarTextTests: XCTestCase {
263263 XCTAssertEqual(title, "\u{1F149}12% 3%")
264264 }
265265
266− func testZaiWeeklyZeroIsOmitted() {
266+ func testZaiWeeklyZeroIsShown() {
267267 let title = ViewModel.statusBarText(
268268 balance: nil, isLoading: false,
269269 hyperConfigured: false,
@@ -271,7 +271,7 @@ final class StatusBarTextTests: XCTestCase {
271271 zaiFiveHourPercent: 12, zaiWeeklyPercent: 0,
272272 zaiInPeakHours: false
273273 )
274− XCTAssertEqual(title, "\u{1F149}12%")
274+ XCTAssertEqual(title, "\u{1F149}12% 0%")
275275 }
276276
277277 func testLoadingKeepsZaiWeeklyOnScreen() {