on master help sign in
feat: use clock emoji for z.ai instead of robot

Replace ๐Ÿค– with ๐Ÿ•‘ for z.ai 5-hour to keep all time-based windows using clock/calendar emojis: ๐Ÿ• ๐Ÿ“… (Claude) ยท ๐Ÿ•‘ ๐Ÿ“† (z.ai).

commita655a7c40a9c3da7f4ea1a0c1b1c05174ef27c35 authoriko <mail@iko.soy> dateFri 17 Jul 2026, 13:58 (3 months ago) parenta4745cd
3 files changed+10โˆ’10
UsageMenubar/MenuView.swift+1โˆ’1 UsageMenubar/ViewModel.swift+2โˆ’2 UsageMenubarTests/StatusBarTextTests.swift+7โˆ’7
UsageMenubar/MenuView.swift+1โˆ’1
@@ -379,7 +379,7 @@ struct MenuView: View {
379379 VStack(spacing: 8) {
380380 HStack(alignment: .firstTextBaseline, spacing: 8) {
381381 headlineNumber(
382โˆ’ text: "๐Ÿค– \(fiveHour)%",
382+ text: "๐Ÿ•‘ \(fiveHour)%",
383383 color: Self.usageColor(fiveHour),
384384 trend: viewModel.zaiTrend,
385385 copiedConfirmation: viewModel.copiedZaiConfirmation,
UsageMenubar/ViewModel.swift+2โˆ’2
@@ -242,7 +242,7 @@ final class ViewModel: ObservableObject {
242242 /// windows are separated by a space. An unconfigured service produces no
243243 /// segment โ€” no placeholder, no icon.
244244 ///
245โˆ’ /// Example: `โšก42 ยท ๐Ÿ•62% ๐Ÿ“…8% ยท ๐Ÿค–12% ๐Ÿ“†3%`
245+ /// Example: `โšก42 ยท ๐Ÿ•62% ๐Ÿ“…8% ยท ๐Ÿ•‘12% ๐Ÿ“†3%`
246246 ///
247247 /// Takes its values as parameters rather than reading the properties: `@Published`
248248 /// publishes in `willSet`, so a Combine subscriber that called back into the view
@@ -278,7 +278,7 @@ final class ViewModel: ObservableObject {
278278 // z.ai โ€” windows joined by space within the segment
279279 var zaiWindows: [String] = []
280280 if let zaiFiveHour = zaiFiveHourPercent, zaiFiveHour > 0 {
281โˆ’ zaiWindows.append("๐Ÿค–\(zaiFiveHour)%")
281+ zaiWindows.append("๐Ÿ•‘\(zaiFiveHour)%")
282282 }
283283 if let zaiWeekly = zaiWeeklyPercent, zaiWeekly > 0 {
284284 zaiWindows.append("๐Ÿ“†\(zaiWeekly)%")
UsageMenubarTests/StatusBarTextTests.swift+7โˆ’7
@@ -166,7 +166,7 @@ final class StatusBarTextTests: XCTestCase {
166166 claudeFiveHourPercent: nil, claudeSevenDayPercent: nil,
167167 zaiFiveHourPercent: 12, zaiWeeklyPercent: nil
168168 )
169โˆ’ XCTAssertEqual(title, "๐Ÿค–12%")
169+ XCTAssertEqual(title, "๐Ÿ•‘12%")
170170 }
171171
172172 func testZaiWithHyper() {
@@ -176,7 +176,7 @@ final class StatusBarTextTests: XCTestCase {
176176 claudeFiveHourPercent: nil, claudeSevenDayPercent: nil,
177177 zaiFiveHourPercent: 12, zaiWeeklyPercent: nil
178178 )
179โˆ’ XCTAssertEqual(title, "โšก42 ยท ๐Ÿค–12%")
179+ XCTAssertEqual(title, "โšก42 ยท ๐Ÿ•‘12%")
180180 }
181181
182182 func testZaiWithClaude() {
@@ -186,7 +186,7 @@ final class StatusBarTextTests: XCTestCase {
186186 claudeFiveHourPercent: 62, claudeSevenDayPercent: 8,
187187 zaiFiveHourPercent: 12, zaiWeeklyPercent: nil
188188 )
189โˆ’ XCTAssertEqual(title, "๐Ÿ•62% ๐Ÿ“…8% ยท ๐Ÿค–12%")
189+ XCTAssertEqual(title, "๐Ÿ•62% ๐Ÿ“…8% ยท ๐Ÿ•‘12%")
190190 }
191191
192192 func testAllThreeServices() {
@@ -196,7 +196,7 @@ final class StatusBarTextTests: XCTestCase {
196196 claudeFiveHourPercent: 62, claudeSevenDayPercent: 8,
197197 zaiFiveHourPercent: 12, zaiWeeklyPercent: 3
198198 )
199โˆ’ XCTAssertEqual(title, "โšก42 ยท ๐Ÿ•62% ๐Ÿ“…8% ยท ๐Ÿค–12% ๐Ÿ“†3%")
199+ XCTAssertEqual(title, "โšก42 ยท ๐Ÿ•62% ๐Ÿ“…8% ยท ๐Ÿ•‘12% ๐Ÿ“†3%")
200200 }
201201
202202 func testZaiZeroIsOmitted() {
@@ -216,7 +216,7 @@ final class StatusBarTextTests: XCTestCase {
216216 claudeFiveHourPercent: nil, claudeSevenDayPercent: nil,
217217 zaiFiveHourPercent: 12, zaiWeeklyPercent: nil
218218 )
219โˆ’ XCTAssertEqual(title, "๐Ÿค–12%")
219+ XCTAssertEqual(title, "๐Ÿ•‘12%")
220220 }
221221
222222 // MARK: - z.ai Weekly
@@ -238,7 +238,7 @@ final class StatusBarTextTests: XCTestCase {
238238 claudeFiveHourPercent: nil, claudeSevenDayPercent: nil,
239239 zaiFiveHourPercent: 12, zaiWeeklyPercent: 3
240240 )
241โˆ’ XCTAssertEqual(title, "๐Ÿค–12% ๐Ÿ“†3%")
241+ XCTAssertEqual(title, "๐Ÿ•‘12% ๐Ÿ“†3%")
242242 }
243243
244244 func testZaiWeeklyZeroIsOmitted() {
@@ -248,7 +248,7 @@ final class StatusBarTextTests: XCTestCase {
248248 claudeFiveHourPercent: nil, claudeSevenDayPercent: nil,
249249 zaiFiveHourPercent: 12, zaiWeeklyPercent: 0
250250 )
251โˆ’ XCTAssertEqual(title, "๐Ÿค–12%")
251+ XCTAssertEqual(title, "๐Ÿ•‘12%")
252252 }
253253
254254 func testLoadingKeepsZaiWeeklyOnScreen() {