on main help sign in
fix(ui): preserve estimated usage percentage color
4fc17ddGreg Slepak
internal/ui/common/elements.go+1−1
@@ -118,7 +118,7 @@ func formatTokensAndCost(t *styles.Styles, tokens, contextWindow int64, cost flo
118 formattedTokens = t.ModelInfo.TokenCount.Render(fmt.Sprintf("(%s)", formattedTokens))
118 formattedTokens = t.ModelInfo.TokenCount.Render(fmt.Sprintf("(%s)", formattedTokens))
119 percentageText := fmt.Sprintf("%d%%", int(percentage))
119 percentageText := fmt.Sprintf("%d%%", int(percentage))
120 if estimated {
120 if estimated {
121− percentageText = t.ModelInfo.EstimatedUsagePrefix.Render("~") + percentageText
121+ percentageText = "~" + percentageText
122 }
122 }
123 formattedPercentage := t.ModelInfo.TokenPercentage.Render(percentageText)
123 formattedPercentage := t.ModelInfo.TokenPercentage.Render(percentageText)
124 formattedTokens = fmt.Sprintf("%s %s", formattedPercentage, formattedTokens)
124 formattedTokens = fmt.Sprintf("%s %s", formattedPercentage, formattedTokens)
internal/ui/common/elements_test.go+4−1
@@ -1,6 +1,7 @@
1package common
1package common
2
2
3import (
3import (
4+ "strings"
4 "testing"
5 "testing"
5
6
6 "github.com/charmbracelet/crush/internal/ui/styles"
7 "github.com/charmbracelet/crush/internal/ui/styles"
@@ -13,11 +14,13 @@ func TestFormatTokensAndCostPrefixesEstimatedUsage(t *testing.T) {
13
14
14 sty := styles.CharmtonePantera()
15 sty := styles.CharmtonePantera()
15
16
16− actual := ansi.Strip(formatTokensAndCost(&sty, 120, 1000, 0, true))
17+ rendered := formatTokensAndCost(&sty, 120, 1000, 0, true)
18+ actual := ansi.Strip(rendered)
17
19
18 require.Contains(t, actual, "~12%")
20 require.Contains(t, actual, "~12%")
19 require.Contains(t, actual, "(120)")
21 require.Contains(t, actual, "(120)")
20 require.Contains(t, actual, "$0.00")
22 require.Contains(t, actual, "$0.00")
23+ require.True(t, strings.Contains(rendered, sty.ModelInfo.TokenPercentage.Render("~12%")))
21}
24}
22
25
23func TestFormatTokensAndCostOmitsEstimatedPrefix(t *testing.T) {
26func TestFormatTokensAndCostOmitsEstimatedPrefix(t *testing.T) {
internal/ui/model/header.go+1−1
@@ -150,7 +150,7 @@ func renderHeaderDetails(
150 percentage := (float64(session.CompletionTokens+session.PromptTokens) / float64(model.ContextWindow)) * 100
150 percentage := (float64(session.CompletionTokens+session.PromptTokens) / float64(model.ContextWindow)) * 100
151 percentageText := fmt.Sprintf("%d%%", int(percentage))
151 percentageText := fmt.Sprintf("%d%%", int(percentage))
152 if session.EstimatedUsage {
152 if session.EstimatedUsage {
153− percentageText = t.ModelInfo.EstimatedUsagePrefix.Render("~") + percentageText
153+ percentageText = "~" + percentageText
154 }
154 }
155 formattedPercentage := t.Header.Percentage.Render(percentageText)
155 formattedPercentage := t.Header.Percentage.Render(percentageText)
156 parts = append(parts, formattedPercentage)
156 parts = append(parts, formattedPercentage)