diff options
| author | adamdotdevin <[email protected]> | 2025-07-15 19:09:16 -0500 |
|---|---|---|
| committer | adamdotdevin <[email protected]> | 2025-07-16 06:09:27 -0500 |
| commit | 9f5b59f3362cdfe42173cdf38bcba3ba6b935b94 (patch) | |
| tree | 8426c8b33c17e90a9c91716b283f3f812b5dbd07 | |
| parent | 01c125b05830fa7df4f04ec24a51fc2bf53c9965 (diff) | |
| download | opencode-9f5b59f3362cdfe42173cdf38bcba3ba6b935b94.tar.gz opencode-9f5b59f3362cdfe42173cdf38bcba3ba6b935b94.zip | |
chore: messages cleanup
| -rw-r--r-- | packages/tui/internal/components/chat/cache.go | 20 | ||||
| -rw-r--r-- | packages/tui/internal/components/chat/messages.go | 10 |
2 files changed, 15 insertions, 15 deletions
diff --git a/packages/tui/internal/components/chat/cache.go b/packages/tui/internal/components/chat/cache.go index ab034c411..454f1a5a9 100644 --- a/packages/tui/internal/components/chat/cache.go +++ b/packages/tui/internal/components/chat/cache.go @@ -7,21 +7,21 @@ import ( "sync" ) -// MessageCache caches rendered messages to avoid re-rendering -type MessageCache struct { +// PartCache caches rendered messages to avoid re-rendering +type PartCache struct { mu sync.RWMutex cache map[string]string } -// NewMessageCache creates a new message cache -func NewMessageCache() *MessageCache { - return &MessageCache{ +// NewPartCache creates a new message cache +func NewPartCache() *PartCache { + return &PartCache{ cache: make(map[string]string), } } // generateKey creates a unique key for a message based on its content and rendering parameters -func (c *MessageCache) GenerateKey(params ...any) string { +func (c *PartCache) GenerateKey(params ...any) string { h := fnv.New64a() for _, param := range params { h.Write(fmt.Appendf(nil, ":%v", param)) @@ -30,7 +30,7 @@ func (c *MessageCache) GenerateKey(params ...any) string { } // Get retrieves a cached rendered message -func (c *MessageCache) Get(key string) (string, bool) { +func (c *PartCache) Get(key string) (string, bool) { c.mu.RLock() defer c.mu.RUnlock() @@ -39,14 +39,14 @@ func (c *MessageCache) Get(key string) (string, bool) { } // Set stores a rendered message in the cache -func (c *MessageCache) Set(key string, content string) { +func (c *PartCache) Set(key string, content string) { c.mu.Lock() defer c.mu.Unlock() c.cache[key] = content } // Clear removes all entries from the cache -func (c *MessageCache) Clear() { +func (c *PartCache) Clear() { c.mu.Lock() defer c.mu.Unlock() @@ -54,7 +54,7 @@ func (c *MessageCache) Clear() { } // Size returns the number of cached entries -func (c *MessageCache) Size() int { +func (c *PartCache) Size() int { c.mu.RLock() defer c.mu.RUnlock() diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index 9ee0a348a..436bf7107 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/packages/tui/internal/components/chat/messages.go @@ -35,7 +35,7 @@ type messagesComponent struct { width int app *app.App viewport viewport.Model - cache *MessageCache + cache *PartCache rendering bool showToolDetails bool tail bool @@ -128,10 +128,12 @@ func (m *messagesComponent) renderView(width int) { switch casted := message.Info.(type) { case opencode.UserMessage: - userLoop: for partIndex, part := range message.Parts { switch part := part.(type) { case opencode.TextPart: + if part.Synthetic { + continue + } remainingParts := message.Parts[partIndex+1:] fileParts := make([]opencode.FilePart, 0) for _, part := range remainingParts { @@ -190,8 +192,6 @@ func (m *messagesComponent) renderView(width int) { m.lineCount += lipgloss.Height(content) + 1 blocks = append(blocks, content) } - // Only render the first text part - break userLoop } } @@ -574,7 +574,7 @@ func NewMessagesComponent(app *app.App) MessagesComponent { app: app, viewport: vp, showToolDetails: true, - cache: NewMessageCache(), + cache: NewPartCache(), tail: true, } } |
