From e2733f896c5a9daf3952307e2b0b72c954ce2f35 Mon Sep 17 00:00:00 2001 From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> Date: Tue, 14 Jul 2026 14:54:15 -0700 Subject: [PATCH] fix(status-bar): single-line sign-in row + review dedup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-out roster rows now read as one line (name · "not signed in" · right-aligned Sign in) instead of a floating button over an orphaned second line. Review follow-ups: the non-submenu ProviderDetailsMenu branch reuses the extracted panelBody, and the icon-only letter badge is one shared component so its has-data dot condition can't drift. --- .../src/components/status-bar/StatusBar.tsx | 55 +++++++------------ .../status-bar/UsageRosterPanel.tsx | 39 +++++++------ 2 files changed, 41 insertions(+), 53 deletions(-) diff --git a/src/renderer/src/components/status-bar/StatusBar.tsx b/src/renderer/src/components/status-bar/StatusBar.tsx index e93bd9e6bbc..55c5eb30f87 100644 --- a/src/renderer/src/components/status-bar/StatusBar.tsx +++ b/src/renderer/src/components/status-bar/StatusBar.tsx @@ -1107,7 +1107,21 @@ function WindowLabel({ ) } -// Single-letter provider badge for the icon-only (narrow) status bar. +// Single-letter provider badge for the icon-only (narrow) status bar. Shared by +// the roster trigger and ProviderDetailsMenu so the dot's has-data condition +// and markup can't drift between the two. +function ProviderLetterBadge({ p }: { p: ProviderRateLimits }): React.JSX.Element { + const hasData = Boolean(p.session || p.weekly || p.fableWeekly || p.monthly || p.buckets?.length) + return ( + + + {getProviderLetter(p.provider)} + + ) +} + function getProviderLetter(provider: ProviderRateLimits['provider']): string { switch (provider) { case 'claude': @@ -1822,6 +1836,7 @@ export function ProviderDetailsMenu({ <> {topContent}