From 09074dc6394c910f22ca690e24336be6ebb2fc6d Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 30 Jul 2025 11:43:34 -0500 Subject: [PATCH] fix: attachment highlighting (#1427) --- .../tui/internal/components/chat/message.go | 21 ++++++++----------- .../tui/internal/components/chat/messages.go | 3 +++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/tui/internal/components/chat/message.go b/packages/tui/internal/components/chat/message.go index ff361e76..5c92dee5 100644 --- a/packages/tui/internal/components/chat/message.go +++ b/packages/tui/internal/components/chat/message.go @@ -182,6 +182,7 @@ func renderText( showToolDetails bool, width int, extra string, + fileParts []opencode.FilePart, toolCalls ...opencode.ToolPart, ) string { t := theme.CurrentTheme() @@ -197,19 +198,15 @@ func renderText( ts = time.UnixMilli(int64(casted.Time.Created)) base := styles.NewStyle().Foreground(t.Text()).Background(backgroundColor) text = ansi.WordwrapWc(text, width-6, " -") - lines := strings.Split(text, "\n") - for i, line := range lines { - words := strings.Fields(line) - for i, word := range words { - if strings.HasPrefix(word, "@") { - words[i] = base.Foreground(t.Secondary()).Render(word + " ") - } else { - words[i] = base.Render(word + " ") - } - } - lines[i] = strings.Join(words, "") + + // Build list of attachment filenames for highlighting + for _, filePart := range fileParts { + atFilename := "@" + filePart.Filename + // Find and highlight complete @filename references + highlightStyle := base.Foreground(t.Secondary()) + text = strings.ReplaceAll(text, atFilename, highlightStyle.Render(atFilename)) } - text = strings.Join(lines, "\n") + content = base.Width(width - 6).Render(text) } diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index 23de97ed..e675a35d 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/packages/tui/internal/components/chat/messages.go @@ -347,6 +347,7 @@ func (m *messagesComponent) renderView() tea.Cmd { m.showToolDetails, width, files, + fileParts, ) content = lipgloss.PlaceHorizontal( m.width, @@ -424,6 +425,7 @@ func (m *messagesComponent) renderView() tea.Cmd { m.showToolDetails, width, "", + []opencode.FilePart{}, toolCallParts..., ) content = lipgloss.PlaceHorizontal( @@ -443,6 +445,7 @@ func (m *messagesComponent) renderView() tea.Cmd { m.showToolDetails, width, "", + []opencode.FilePart{}, toolCallParts..., ) content = lipgloss.PlaceHorizontal(