on main help sign in
chore: add thinking/reasoning indicator
6b8aecaKujtim Hoxha
internal/tui/components/chat/sidebar/sidebar.go+24−1
@@ -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"
@@ -880,8 +881,13 @@ func formatTokensAndCost(tokens, contextWindow int64, cost float64) string {
880}
881}
881
882
882func (s *sidebarCmp) currentModelBlock() string {
883func (s *sidebarCmp) currentModelBlock() string {
883− agentCfg := config.Get().Agents["coder"]
884+ cfg := config.Get()
885+ agentCfg := cfg.Agents["coder"]
886+
887+ selectedModel := cfg.Models[agentCfg.Model]
888+
884 model := config.Get().GetModelByType(agentCfg.Model)
889 model := config.Get().GetModelByType(agentCfg.Model)
890+ modelProvider := config.Get().GetProviderForModel(agentCfg.Model)
885
891
886 t := styles.CurrentTheme()
892 t := styles.CurrentTheme()
887
893
@@ -891,6 +897,23 @@ func (s *sidebarCmp) currentModelBlock() string {
891 parts := []string{
897 parts := []string{
892 modelInfo,
898 modelInfo,
893 }
899 }
900+ if model.CanReason {
901+ reasoningInfoStyle := t.S().Subtle.PaddingLeft(2)
902+ switch modelProvider.Type {
903+ case provider.TypeOpenAI:
904+ reasoningEffort := model.DefaultReasoningEffort
905+ if selectedModel.ReasoningEffort != "" {
906+ reasoningEffort = selectedModel.ReasoningEffort
907+ }
908+ parts = append(parts, reasoningInfoStyle.Render(fmt.Sprintf("Reasoning %s", reasoningEffort)))
909+ case provider.TypeAnthropic:
910+ if selectedModel.Think {
911+ parts = append(parts, reasoningInfoStyle.Render("Thinking on"))
912+ } else {
913+ parts = append(parts, reasoningInfoStyle.Render("Thinking off"))
914+ }
915+ }
916+ }
894 if s.session.ID != "" {
917 if s.session.ID != "" {
895 parts = append(
918 parts = append(
896 parts,
919 parts,