@@ -16,7 +16,7 @@ interface BottomStatusLineProps {
1616
1717/**
1818 * Bottom status line component - shows below the input box
19- * Currently displays Claude subscription status when connected
19+ * Displays Claude subscription status and/or Codebuff Strong status
2020 */
2121export const BottomStatusLine : React . FC < BottomStatusLineProps > = ( {
2222 isClaudeConnected,
@@ -25,28 +25,28 @@ export const BottomStatusLine: React.FC<BottomStatusLineProps> = ({
2525} ) => {
2626 const theme = useTheme ( )
2727
28- // Don't render if there's nothing to show
29- if ( ! isClaudeConnected ) {
30- return null
31- }
32-
3328 // Use the more restrictive of the two quotas (5-hour window is usually the limiting factor)
34- const displayRemaining = claudeQuota
29+ const claudeDisplayRemaining = claudeQuota
3530 ? Math . min ( claudeQuota . fiveHourRemaining , claudeQuota . sevenDayRemaining )
3631 : null
3732
38- // Check if quota is exhausted (0%)
39- const isExhausted = displayRemaining !== null && displayRemaining <= 0
33+ // Check if Claude quota is exhausted (0%)
34+ const isClaudeExhausted = claudeDisplayRemaining !== null && claudeDisplayRemaining <= 0
4035
41- // Get the reset time for the limiting quota window
42- const resetTime = claudeQuota
36+ // Get the reset time for the limiting Claude quota window
37+ const claudeResetTime = claudeQuota
4338 ? claudeQuota . fiveHourRemaining <= claudeQuota . sevenDayRemaining
4439 ? claudeQuota . fiveHourResetsAt
4540 : claudeQuota . sevenDayResetsAt
4641 : null
4742
48- // Determine dot color: red if exhausted, green if active, muted otherwise
49- const dotColor = isExhausted
43+ // Only show when Claude is connected
44+ if ( ! isClaudeConnected ) {
45+ return null
46+ }
47+
48+ // Determine dot color for Claude: red if exhausted, green if active, muted otherwise
49+ const claudeDotColor = isClaudeExhausted
5050 ? theme . error
5151 : isClaudeActive
5252 ? theme . success
@@ -59,23 +59,42 @@ export const BottomStatusLine: React.FC<BottomStatusLineProps> = ({
5959 flexDirection : 'row' ,
6060 justifyContent : 'flex-end' ,
6161 paddingRight : 1 ,
62+ gap : 2 ,
6263 } }
6364 >
64- < box
65- style = { {
66- flexDirection : 'row' ,
67- alignItems : 'center' ,
68- gap : 0 ,
69- } }
70- >
71- < text style = { { fg : dotColor } } > ●</ text >
72- < text style = { { fg : theme . muted } } > Claude subscription</ text >
73- { isExhausted && resetTime ? (
74- < text style = { { fg : theme . muted } } > { ` · resets in ${ formatResetTime ( resetTime ) } ` } </ text >
75- ) : displayRemaining !== null ? (
76- < BatteryIndicator value = { displayRemaining } theme = { theme } />
77- ) : null }
78- </ box >
65+ { /* Show Claude subscription when connected and not depleted */ }
66+ { ! isClaudeExhausted && (
67+ < box
68+ style = { {
69+ flexDirection : 'row' ,
70+ alignItems : 'center' ,
71+ gap : 0 ,
72+ } }
73+ >
74+ < text style = { { fg : claudeDotColor } } > ●</ text >
75+ < text style = { { fg : theme . muted } } > Claude subscription</ text >
76+ { claudeDisplayRemaining !== null ? (
77+ < BatteryIndicator value = { claudeDisplayRemaining } theme = { theme } />
78+ ) : null }
79+ </ box >
80+ ) }
81+
82+ { /* Show Claude as depleted when exhausted */ }
83+ { isClaudeExhausted && (
84+ < box
85+ style = { {
86+ flexDirection : 'row' ,
87+ alignItems : 'center' ,
88+ gap : 0 ,
89+ } }
90+ >
91+ < text style = { { fg : theme . error } } > ●</ text >
92+ < text style = { { fg : theme . muted } } > Claude</ text >
93+ { claudeResetTime && (
94+ < text style = { { fg : theme . muted } } > { ` · resets in ${ formatResetTime ( claudeResetTime ) } ` } </ text >
95+ ) }
96+ </ box >
97+ ) }
7998 </ box >
8099 )
81100}
0 commit comments