diff --git a/internal/ui/common/elements.go b/internal/ui/common/elements.go index de32645f2806b6c1790f10d4d0be2532cfdbea67..2cdb9993b611cba768b99ee528b41a7634c7ef61 100644 --- a/internal/ui/common/elements.go +++ b/internal/ui/common/elements.go @@ -118,7 +118,7 @@ func formatTokensAndCost(t *styles.Styles, tokens, contextWindow int64, cost flo formattedTokens = t.ModelInfo.TokenCount.Render(fmt.Sprintf("(%s)", formattedTokens)) percentageText := fmt.Sprintf("%d%%", int(percentage)) if estimated { - percentageText = t.ModelInfo.EstimatedUsagePrefix.Render("~") + percentageText + percentageText = "~" + percentageText } formattedPercentage := t.ModelInfo.TokenPercentage.Render(percentageText) formattedTokens = fmt.Sprintf("%s %s", formattedPercentage, formattedTokens) diff --git a/internal/ui/common/elements_test.go b/internal/ui/common/elements_test.go index 801e4e52100fb6ed2d6960039da42b66fd609da6..eabe1046b1e96a4e4713f7cb9da9aa430ad372fb 100644 --- a/internal/ui/common/elements_test.go +++ b/internal/ui/common/elements_test.go @@ -1,6 +1,7 @@ package common import ( + "strings" "testing" "github.com/charmbracelet/crush/internal/ui/styles" @@ -13,11 +14,13 @@ func TestFormatTokensAndCostPrefixesEstimatedUsage(t *testing.T) { sty := styles.CharmtonePantera() - actual := ansi.Strip(formatTokensAndCost(&sty, 120, 1000, 0, true)) + rendered := formatTokensAndCost(&sty, 120, 1000, 0, true) + actual := ansi.Strip(rendered) require.Contains(t, actual, "~12%") require.Contains(t, actual, "(120)") require.Contains(t, actual, "$0.00") + require.True(t, strings.Contains(rendered, sty.ModelInfo.TokenPercentage.Render("~12%"))) } func TestFormatTokensAndCostOmitsEstimatedPrefix(t *testing.T) { diff --git a/internal/ui/model/header.go b/internal/ui/model/header.go index 0d012f67ae9a6b8b1ef7d26d85d26b90a9e1c624..f030910566a84a47d1abf570bf05e734932388d9 100644 --- a/internal/ui/model/header.go +++ b/internal/ui/model/header.go @@ -150,7 +150,7 @@ func renderHeaderDetails( percentage := (float64(session.CompletionTokens+session.PromptTokens) / float64(model.ContextWindow)) * 100 percentageText := fmt.Sprintf("%d%%", int(percentage)) if session.EstimatedUsage { - percentageText = t.ModelInfo.EstimatedUsagePrefix.Render("~") + percentageText + percentageText = "~" + percentageText } formattedPercentage := t.Header.Percentage.Render(percentageText) parts = append(parts, formattedPercentage)