diff --git a/pkg/tui/views/chat/chat.go b/pkg/tui/views/chat/chat.go index cbace1e..f18a577 100644 --- a/pkg/tui/views/chat/chat.go +++ b/pkg/tui/views/chat/chat.go @@ -35,6 +35,7 @@ type ( msgMessagesLoaded []models.Message // sent when the conversation has been persisted, triggers a reload of contents msgConversationPersisted struct { + isNew bool conversation *models.Conversation messages []models.Message } diff --git a/pkg/tui/views/chat/conversation.go b/pkg/tui/views/chat/conversation.go index f53e717..deade01 100644 --- a/pkg/tui/views/chat/conversation.go +++ b/pkg/tui/views/chat/conversation.go @@ -203,14 +203,14 @@ func (m *Model) persistConversation() tea.Cmd { messages := m.messages var err error - if m.conversation.ID == 0 { + if conversation.ID == 0 { return func() tea.Msg { // Start a new conversation with all messages so far conversation, messages, err = m.Shared.Ctx.Store.StartConversation(messages...) if err != nil { return shared.MsgError(fmt.Errorf("Could not start new conversation: %v", err)) } - return msgConversationPersisted{conversation, messages} + return msgConversationPersisted{true, conversation, messages} } } @@ -239,7 +239,7 @@ func (m *Model) persistConversation() tea.Cmd { return fmt.Errorf("Error: no messages to reply to") } } - return msgConversationPersisted{conversation, messages} + return msgConversationPersisted{false, conversation, messages} } } diff --git a/pkg/tui/views/chat/update.go b/pkg/tui/views/chat/update.go index 19ee29f..6d40ef6 100644 --- a/pkg/tui/views/chat/update.go +++ b/pkg/tui/views/chat/update.go @@ -166,6 +166,9 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) { case msgConversationPersisted: m.conversation = msg.conversation m.messages = msg.messages + if msg.isNew { + m.rootMessages = []models.Message{m.messages[0]} + } m.rebuildMessageCache() m.updateContent() case msgMessageCloned: