diff --git a/apps/macos/Sources/Clawdbot/MenuSessionsInjector.swift b/apps/macos/Sources/Clawdbot/MenuSessionsInjector.swift index f5c449775..8490e8312 100644 --- a/apps/macos/Sources/Clawdbot/MenuSessionsInjector.swift +++ b/apps/macos/Sources/Clawdbot/MenuSessionsInjector.swift @@ -454,7 +454,7 @@ final class MenuSessionsInjector: NSObject, NSMenuDelegate { return item } - private func makeMessageItem(text: String, symbolName: String, width: CGFloat, maxLines: Int? = nil) -> NSMenuItem { + private func makeMessageItem(text: String, symbolName: String, width: CGFloat, maxLines: Int? = 2) -> NSMenuItem { let view = AnyView( Label(text, systemImage: symbolName) .font(.caption) @@ -466,7 +466,7 @@ final class MenuSessionsInjector: NSObject, NSMenuDelegate { .padding(.leading, 18) .padding(.trailing, 12) .padding(.vertical, 6) - .frame(minWidth: 300, alignment: .leading)) + .frame(width: max(1, width), alignment: .leading)) let item = NSMenuItem() item.tag = self.tag diff --git a/apps/macos/Sources/Clawdbot/UsageData.swift b/apps/macos/Sources/Clawdbot/UsageData.swift index 4a181418e..c291519b6 100644 --- a/apps/macos/Sources/Clawdbot/UsageData.swift +++ b/apps/macos/Sources/Clawdbot/UsageData.swift @@ -29,6 +29,11 @@ struct UsageRow: Identifiable { let resetAt: Date? let error: String? + var hasError: Bool { + if let error, !error.isEmpty { return true } + return false + } + var titleText: String { if let plan, !plan.isEmpty { return "\(self.displayName) (\(plan))" } return self.displayName @@ -41,7 +46,6 @@ struct UsageRow: Identifiable { } func detailText(now: Date = .init()) -> String { - if let error, !error.isEmpty { return error } guard let remaining = self.remainingPercent else { return "No data" } var parts = ["\(remaining)% left"] if let windowLabel, !windowLabel.isEmpty { parts.append(windowLabel) } diff --git a/apps/macos/Sources/Clawdbot/UsageMenuLabelView.swift b/apps/macos/Sources/Clawdbot/UsageMenuLabelView.swift index 5d32bf26d..5e3a52687 100644 --- a/apps/macos/Sources/Clawdbot/UsageMenuLabelView.swift +++ b/apps/macos/Sources/Clawdbot/UsageMenuLabelView.swift @@ -37,12 +37,14 @@ struct UsageMenuLabelView: View { Spacer(minLength: 4) - Text(self.row.detailText()) - .font(.caption.monospacedDigit()) - .foregroundStyle(self.secondaryTextColor) - .lineLimit(1) - .fixedSize(horizontal: true, vertical: false) - .layoutPriority(2) + if !self.row.hasError { + Text(self.row.detailText()) + .font(.caption.monospacedDigit()) + .foregroundStyle(self.secondaryTextColor) + .lineLimit(1) + .truncationMode(.tail) + .layoutPriority(2) + } if self.showsChevron { Image(systemName: "chevron.right") @@ -51,6 +53,16 @@ struct UsageMenuLabelView: View { .padding(.leading, 2) } } + + if let error = self.row.error?.nonEmpty { + Text(error) + .font(.caption) + .foregroundStyle(self.secondaryTextColor) + .multilineTextAlignment(.leading) + .lineLimit(2) + .truncationMode(.tail) + .fixedSize(horizontal: false, vertical: true) + } } .padding(.vertical, 10) .padding(.leading, self.paddingLeading)