diff --git a/apps/macos/Sources/Clawdbot/MenuSessionsInjector.swift b/apps/macos/Sources/Clawdbot/MenuSessionsInjector.swift index e51c52aef..f5c449775 100644 --- a/apps/macos/Sources/Clawdbot/MenuSessionsInjector.swift +++ b/apps/macos/Sources/Clawdbot/MenuSessionsInjector.swift @@ -285,13 +285,23 @@ final class MenuSessionsInjector: NSObject, NSMenuDelegate { headerItem.isEnabled = false headerItem.view = self.makeHostedView( rootView: AnyView(MenuUsageHeaderView( - count: rows.count, - statusText: errorText)), + count: rows.count)), width: width, highlighted: false) menu.insertItem(headerItem, at: cursor) cursor += 1 + if let errorText = errorText?.nonEmpty, !rows.isEmpty { + menu.insertItem( + self.makeMessageItem( + text: errorText, + symbolName: "exclamationmark.triangle", + width: width, + maxLines: 2), + at: cursor) + cursor += 1 + } + if rows.isEmpty { menu.insertItem( self.makeMessageItem(text: errorText ?? "No usage available", symbolName: "minus", width: width), @@ -444,13 +454,14 @@ final class MenuSessionsInjector: NSObject, NSMenuDelegate { return item } - private func makeMessageItem(text: String, symbolName: String, width: CGFloat) -> NSMenuItem { + private func makeMessageItem(text: String, symbolName: String, width: CGFloat, maxLines: Int? = nil) -> NSMenuItem { let view = AnyView( Label(text, systemImage: symbolName) .font(.caption) .foregroundStyle(.secondary) .multilineTextAlignment(.leading) - .lineLimit(nil) + .lineLimit(maxLines) + .truncationMode(.tail) .fixedSize(horizontal: false, vertical: true) .padding(.leading, 18) .padding(.trailing, 12) diff --git a/apps/macos/Sources/Clawdbot/MenuUsageHeaderView.swift b/apps/macos/Sources/Clawdbot/MenuUsageHeaderView.swift index 73152143d..dbb717d69 100644 --- a/apps/macos/Sources/Clawdbot/MenuUsageHeaderView.swift +++ b/apps/macos/Sources/Clawdbot/MenuUsageHeaderView.swift @@ -2,7 +2,6 @@ import SwiftUI struct MenuUsageHeaderView: View { let count: Int - let statusText: String? private let paddingTop: CGFloat = 8 private let paddingBottom: CGFloat = 6 @@ -20,14 +19,6 @@ struct MenuUsageHeaderView: View { .font(.caption) .foregroundStyle(.secondary) } - - if let statusText, !statusText.isEmpty { - Text(statusText) - .font(.caption) - .foregroundStyle(.secondary) - .lineLimit(1) - .truncationMode(.tail) - } } .padding(.top, self.paddingTop) .padding(.bottom, self.paddingBottom)