Skip to content

Commit 80026a9

Browse files
authored
Merge pull request #225 from shelltime/claude/fix-statusline-quota-linux-Mkdt2
Restrict quota display to macOS due to Keychain OAuth dependency
2 parents 24c2f00 + 8f89d55 commit 80026a9

2 files changed

Lines changed: 24 additions & 8 deletions

File tree

commands/cc_statusline.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"fmt"
88
"io"
99
"os"
10+
"runtime"
1011
"strings"
1112
"time"
1213

@@ -164,8 +165,10 @@ func formatStatuslineOutput(modelName string, sessionCost, dailyCost float64, se
164165
parts = append(parts, color.Gray.Sprint("📊 -"))
165166
}
166167

167-
// Quota utilization
168-
parts = append(parts, formatQuotaPart(fiveHourUtil, sevenDayUtil))
168+
// Quota utilization (macOS only - requires Keychain for OAuth token)
169+
if runtime.GOOS == "darwin" {
170+
parts = append(parts, formatQuotaPart(fiveHourUtil, sevenDayUtil))
171+
}
169172

170173
// AI agent time (magenta) - clickable link to user profile
171174
if sessionSeconds > 0 {
@@ -224,8 +227,12 @@ func formatQuotaPart(fiveHourUtil, sevenDayUtil *float64) string {
224227
}
225228

226229
func outputFallback() {
227-
quotaPart := wrapOSC8Link(claudeUsageURL, "🚦 -")
228-
fmt.Println(color.Gray.Sprint("🌿 - | 🤖 - | 💰 - | 📊 - | " + quotaPart + " | ⏱️ - | 📈 -%"))
230+
if runtime.GOOS == "darwin" {
231+
quotaPart := wrapOSC8Link(claudeUsageURL, "🚦 -")
232+
fmt.Println(color.Gray.Sprint("🌿 - | 🤖 - | 💰 - | 📊 - | " + quotaPart + " | ⏱️ - | 📈 -%"))
233+
} else {
234+
fmt.Println(color.Gray.Sprint("🌿 - | 🤖 - | 💰 - | 📊 - | ⏱️ - | 📈 -%"))
235+
}
229236
}
230237

231238
// formatSessionDuration formats seconds into a human-readable duration

commands/cc_statusline_test.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"net"
77
"os"
88
"path/filepath"
9+
"runtime"
910
"testing"
1011
"time"
1112

@@ -380,15 +381,23 @@ func (s *CCStatuslineTestSuite) TestFormatStatuslineOutput_WithQuota() {
380381
sd := 23.0
381382
output := formatStatuslineOutput("claude-opus-4", 1.23, 4.56, 3661, 75.0, "main", false, &fh, &sd, "", "", "")
382383

383-
assert.Contains(s.T(), output, "5h:45%")
384-
assert.Contains(s.T(), output, "7d:23%")
385-
assert.Contains(s.T(), output, "🚦")
384+
if runtime.GOOS == "darwin" {
385+
assert.Contains(s.T(), output, "5h:45%")
386+
assert.Contains(s.T(), output, "7d:23%")
387+
assert.Contains(s.T(), output, "🚦")
388+
} else {
389+
assert.NotContains(s.T(), output, "🚦")
390+
}
386391
}
387392

388393
func (s *CCStatuslineTestSuite) TestFormatStatuslineOutput_WithoutQuota() {
389394
output := formatStatuslineOutput("claude-opus-4", 1.23, 4.56, 3661, 75.0, "main", false, nil, nil, "", "", "")
390395

391-
assert.Contains(s.T(), output, "🚦 -")
396+
if runtime.GOOS == "darwin" {
397+
assert.Contains(s.T(), output, "🚦 -")
398+
} else {
399+
assert.NotContains(s.T(), output, "🚦")
400+
}
392401
}
393402

394403
func (s *CCStatuslineTestSuite) TestGetDaemonInfo_PropagatesRateLimitFields() {

0 commit comments

Comments
 (0)