diff options
| author | Yihui Khuu <[email protected]> | 2025-08-16 23:58:13 +1000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-08-16 08:58:13 -0500 |
| commit | b3885d1614a5bdfdb55b690d7039dfa05f2bab5c (patch) | |
| tree | ba477b7195f91cba696eefd9857e37126fef9b7f /packages/tui/internal/components/chat | |
| parent | ca3769b7fa6df07631124f133ce18a63662a44ea (diff) | |
| download | opencode-b3885d1614a5bdfdb55b690d7039dfa05f2bab5c.tar.gz opencode-b3885d1614a5bdfdb55b690d7039dfa05f2bab5c.zip | |
feat(tui): retain cache when cycling between subagent/parent sessions for perf (#1981)
Diffstat (limited to 'packages/tui/internal/components/chat')
| -rw-r--r-- | packages/tui/internal/components/chat/messages.go | 21 |
1 files changed, 20 insertions, 1 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 { |
