summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/tui/internal/components/chat/messages.go21
-rw-r--r--packages/tui/internal/tui/tui.go7
2 files changed, 26 insertions, 2 deletions
diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go
index 034f2c4f0..77a9b8100 100644
--- a/packages/tui/internal/components/chat/messages.go
+++ b/packages/tui/internal/components/chat/messages.go
@@ -171,7 +171,11 @@ func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.showThinkingBlocks = !m.showThinkingBlocks
m.app.State.ShowThinkingBlocks = &m.showThinkingBlocks
return m, tea.Batch(m.renderView(), m.app.SaveState())
- case app.SessionLoadedMsg, app.SessionClearedMsg:
+ case app.SessionLoadedMsg:
+ m.tail = true
+ m.loading = true
+ return m, m.renderView()
+ case app.SessionClearedMsg:
m.cache.Clear()
m.tail = true
m.loading = true
@@ -183,6 +187,21 @@ func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, m.renderView()
}
case app.SessionSelectedMsg:
+ currentParent := m.app.Session.ParentID
+ if currentParent == "" {
+ currentParent = m.app.Session.ID
+ }
+
+ targetParent := msg.ParentID
+ if targetParent == "" {
+ targetParent = msg.ID
+ }
+
+ // Clear cache only if switching between different session families
+ if currentParent != targetParent {
+ m.cache.Clear()
+ }
+
m.viewport.GotoBottom()
case app.MessageRevertedMsg:
if msg.Session.ID == m.app.Session.ID {
diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go
index f730cbdf4..e797e2882 100644
--- a/packages/tui/internal/tui/tui.go
+++ b/packages/tui/internal/tui/tui.go
@@ -621,6 +621,10 @@ func (a Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
},
}
case app.SessionSelectedMsg:
+ updated, cmd := a.messages.Update(msg)
+ a.messages = updated.(chat.MessagesComponent)
+ cmds = append(cmds, cmd)
+
messages, err := a.app.ListMessages(context.Background(), msg.ID)
if err != nil {
slog.Error("Failed to list messages", "error", err.Error())
@@ -628,7 +632,8 @@ func (a Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
}
a.app.Session = msg
a.app.Messages = messages
- return a, util.CmdHandler(app.SessionLoadedMsg{})
+ cmds = append(cmds, util.CmdHandler(app.SessionLoadedMsg{}))
+ return a, tea.Batch(cmds...)
case app.SessionCreatedMsg:
a.app.Session = msg.Session
case dialog.ScrollToMessageMsg: