feat: add /clear command to TUI

This commit is contained in:
Luxferre
2026-03-22 17:09:13 +02:00
parent 47f32a09f2
commit 939ebc8a83
+28 -2
View File
@@ -58,6 +58,7 @@ type model struct {
transientSteps []string
currentStream string
currentReasoning string
cancel context.CancelFunc
isThinking bool
err error
ready bool
@@ -66,6 +67,17 @@ type model struct {
renderer *glamour.TermRenderer
}
func (m model) formatReasoning(reasoning string) string {
if reasoning == "" {
return ""
}
lines := strings.Split(strings.TrimSpace(reasoning), "\n")
for i, line := range lines {
lines[i] = "> " + line
}
return "> *Thinking:*\n>\n" + strings.Join(lines, "\n") + "\n"
}
type agentResponseMsg struct {
response string
err error
@@ -211,7 +223,7 @@ func (m model) renderMessage(msg sidekick.Message) string {
if m.renderer != nil {
if reasoning != "" {
if r, err := m.renderer.Render("> *Thinking:*\n>\n> " + reasoning); err == nil {
if r, err := m.renderer.Render(m.formatReasoning(reasoning)); err == nil {
reasoning = strings.TrimSpace(r) + "\n"
}
}
@@ -247,7 +259,7 @@ func (m *model) updateViewportContent() {
reasoning := m.currentReasoning
if m.renderer != nil {
if reasoning != "" {
if r, err := m.renderer.Render("> *Thinking:*\n>\n> " + reasoning); err == nil {
if r, err := m.renderer.Render(m.formatReasoning(reasoning)); err == nil {
reasoning = strings.TrimSpace(r) + "\n"
}
}
@@ -320,6 +332,20 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, nil
}
trimmed := strings.TrimSpace(v)
if trimmed == "/clear" {
m.history = []sidekick.Message{
{Role: sidekick.MessageRoleSystem, Content: "Context cleared."},
}
m.currentStream = ""
m.currentReasoning = ""
m.transientSteps = nil
m.textarea.Reset()
m.updateViewportContent()
m.viewport.GotoBottom()
return m, nil
}
m.history = append(m.history, sidekick.Message{
Role: sidekick.MessageRoleUser,
Content: v,