on main help sign in
fix(ui): format xhigh as XHigh (not Xhigh) (#2369)
commit7f2e9f88ea2285c212abfba4996f7e4db7a54d54 authorChristian Rocha <christian@rocha.is> dateFri 6 Mar 2026, 16:00 (7 months ago) parenta0a0040
3 files changed+12−8
internal/ui/common/elements.go+10 internal/ui/dialog/reasoning.go+1−4 internal/ui/model/sidebar.go+1−4
internal/ui/common/elements.go+10
@@ -10,6 +10,8 @@ import (
1010 "github.com/charmbracelet/crush/internal/home"
1111 "github.com/charmbracelet/crush/internal/ui/styles"
1212 "github.com/charmbracelet/x/ansi"
13+ "golang.org/x/text/cases"
14+ "golang.org/x/text/language"
1315)
1416
1517// PrettyPath formats a file path with home directory shortening and applies
@@ -19,6 +21,14 @@ func PrettyPath(t *styles.Styles, path string, width int) string {
1921 return t.Muted.Width(width).Render(formatted)
2022}
2123
24+// FormatReasoningEffort formats a reasoning effort level for display.
25+func FormatReasoningEffort(effort string) string {
26+ if effort == "xhigh" {
27+ return "X-High"
28+ }
29+ return cases.Title(language.English).String(effort)
30+}
31+
2232// ModelContextInfo contains token usage and cost information for a model.
2333type ModelContextInfo struct {
2434 ContextUsed int64
internal/ui/dialog/reasoning.go+1−4
@@ -13,8 +13,6 @@ import (
1313 "github.com/charmbracelet/crush/internal/ui/styles"
1414 uv "github.com/charmbracelet/ultraviolet"
1515 "github.com/sahilm/fuzzy"
16− "golang.org/x/text/cases"
17− "golang.org/x/text/language"
1816)
1917
2018const (
@@ -241,13 +239,12 @@ func (r *Reasoning) setReasoningItems() error {
241239 currentEffort = model.DefaultReasoningEffort
242240 }
243241
244− caser := cases.Title(language.English)
245242 items := make([]list.FilterableItem, 0, len(model.ReasoningLevels))
246243 selectedIndex := 0
247244 for i, effort := range model.ReasoningLevels {
248245 item := &ReasoningItem{
249246 effort: effort,
250− title: caser.String(effort),
247+ title: common.FormatReasoningEffort(effort),
251248 isCurrent: effort == currentEffort,
252249 t: r.com.Styles,
253250 }
internal/ui/model/sidebar.go+1−4
@@ -9,8 +9,6 @@ import (
99 "github.com/charmbracelet/crush/internal/ui/logo"
1010 uv "github.com/charmbracelet/ultraviolet"
1111 "github.com/charmbracelet/ultraviolet/layout"
12− "golang.org/x/text/cases"
13− "golang.org/x/text/language"
1412)
1513
1614// modelInfo renders the current model information including reasoning
@@ -35,9 +33,8 @@ func (m *UI) modelInfo(width int) string {
3533 reasoningInfo = "Thinking Off"
3634 }
3735 } else {
38− formatter := cases.Title(language.English, cases.NoLower)
3936 reasoningEffort := cmp.Or(model.ModelCfg.ReasoningEffort, model.CatwalkCfg.DefaultReasoningEffort)
40− reasoningInfo = formatter.String(fmt.Sprintf("Reasoning %s", reasoningEffort))
37+ reasoningInfo = fmt.Sprintf("Reasoning %s", common.FormatReasoningEffort(reasoningEffort))
4138 }
4239 }
4340 }