Change summary
internal/tui/components/chat/messages/messages.go | 3 +++
internal/tui/components/chat/sidebar/sidebar.go | 5 ++++-
2 files changed, 7 insertions(+), 1 deletion(-)
Detailed changes
@@ -252,6 +252,7 @@ func (m *messageCmp) renderThinkingContent() string {
m.thinkingViewport.SetWidth(m.textWidth())
m.thinkingViewport.SetContent(fullContent)
m.thinkingViewport.GotoBottom()
+ finishReason := m.message.FinishPart()
var footer string
if reasoningContent.StartedAt > 0 {
duration := m.message.ThinkingDuration()
@@ -263,6 +264,8 @@ func (m *messageCmp) renderThinkingContent() string {
NoIcon: true,
}
footer = t.S().Base.PaddingLeft(1).Render(core.Status(opts, m.textWidth()-1))
+ } else if finishReason != nil && finishReason.Reason == message.FinishReasonCanceled {
+ footer = t.S().Base.PaddingLeft(1).Render(m.toMarkdown("*Canceled*"))
} else {
footer = m.anim.View()
}
@@ -27,6 +27,8 @@ import (
"github.com/charmbracelet/crush/internal/version"
"github.com/charmbracelet/lipgloss/v2"
"github.com/charmbracelet/x/ansi"
+ "golang.org/x/text/cases"
+ "golang.org/x/text/language"
)
type FileHistory struct {
@@ -905,7 +907,8 @@ func (s *sidebarCmp) currentModelBlock() string {
if selectedModel.ReasoningEffort != "" {
reasoningEffort = selectedModel.ReasoningEffort
}
- parts = append(parts, reasoningInfoStyle.Render(fmt.Sprintf("Reasoning %s", reasoningEffort)))
+ formatter := cases.Title(language.English)
+ parts = append(parts, reasoningInfoStyle.Render(formatter.String(fmt.Sprintf("Reasoning %s", reasoningEffort))))
case provider.TypeAnthropic:
if selectedModel.Think {
parts = append(parts, reasoningInfoStyle.Render("Thinking on"))