@@ -12,6 +12,7 @@ import (
12 "github.com/charmbracelet/crush/internal/config"
12 "github.com/charmbracelet/crush/internal/config"
13 "github.com/charmbracelet/crush/internal/diff"
13 "github.com/charmbracelet/crush/internal/diff"
14 "github.com/charmbracelet/crush/internal/fsext"
14 "github.com/charmbracelet/crush/internal/fsext"
15+ "github.com/charmbracelet/crush/internal/fur/provider"
15 "github.com/charmbracelet/crush/internal/history"
16 "github.com/charmbracelet/crush/internal/history"
16 "github.com/charmbracelet/crush/internal/lsp"
17 "github.com/charmbracelet/crush/internal/lsp"
17 "github.com/charmbracelet/crush/internal/lsp/protocol"
18 "github.com/charmbracelet/crush/internal/lsp/protocol"
@@ -26,6 +27,8 @@ import (
26 "github.com/charmbracelet/crush/internal/version"
27 "github.com/charmbracelet/crush/internal/version"
27 "github.com/charmbracelet/lipgloss/v2"
28 "github.com/charmbracelet/lipgloss/v2"
28 "github.com/charmbracelet/x/ansi"
29 "github.com/charmbracelet/x/ansi"
30+ "golang.org/x/text/cases"
31+ "golang.org/x/text/language"
31type FileHistory struct {
34type FileHistory struct {
@@ -880,8 +883,13 @@ func formatTokensAndCost(tokens, contextWindow int64, cost float64) string {
882func (s *sidebarCmp) currentModelBlock() string {
885func (s *sidebarCmp) currentModelBlock() string {
883− agentCfg := config.Get().Agents["coder"]
886+ cfg := config.Get()
887+ agentCfg := cfg.Agents["coder"]
889+ selectedModel := cfg.Models[agentCfg.Model]
884 model := config.Get().GetModelByType(agentCfg.Model)
891 model := config.Get().GetModelByType(agentCfg.Model)
892+ modelProvider := config.Get().GetProviderForModel(agentCfg.Model)
886 t := styles.CurrentTheme()
894 t := styles.CurrentTheme()
@@ -891,6 +899,25 @@ func (s *sidebarCmp) currentModelBlock() string {
891 parts := []string{
899 parts := []string{
892 modelInfo,
900 modelInfo,
902+ if model.CanReason {
903+ reasoningInfoStyle := t.S().Subtle.PaddingLeft(2)
904+ switch modelProvider.Type {
905+ case provider.TypeOpenAI:
906+ reasoningEffort := model.DefaultReasoningEffort
907+ if selectedModel.ReasoningEffort != "" {
908+ reasoningEffort = selectedModel.ReasoningEffort
910+ formatter := cases.Title(language.English, cases.NoLower)
911+ parts = append(parts, reasoningInfoStyle.Render(formatter.String(fmt.Sprintf("Reasoning %s", reasoningEffort))))
912+ case provider.TypeAnthropic:
913+ formatter := cases.Title(language.English, cases.NoLower)
914+ if selectedModel.Think {
915+ parts = append(parts, reasoningInfoStyle.Render(formatter.String("Thinking on")))
917+ parts = append(parts, reasoningInfoStyle.Render(formatter.String("Thinking off")))
894 if s.session.ID != "" {
921 if s.session.ID != "" {
895 parts = append(
922 parts = append(