fix(messages): truncate attachment paths by rune, not by byte

Christian Rocha created

Change summary

internal/tui/components/chat/messages/messages.go | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

Detailed changes

internal/tui/components/chat/messages/messages.go 🔗

@@ -209,11 +209,15 @@ func (m *messageCmp) renderUserMessage() string {
 	for _, attachment := range m.message.BinaryContent() {
 		file := filepath.Base(attachment.Path)
 		var filename string
-		if len(file) > 10 {
-			filename = fmt.Sprintf(" %s %s... ", styles.DocumentIcon, file[0:7])
+		runes := []rune(file)
+
+		const truncatePathAt = 7
+		if len(runes) > truncatePathAt {
+			filename = fmt.Sprintf(" %s %s... ", styles.DocumentIcon, string(runes[0:truncatePathAt]))
 		} else {
 			filename = fmt.Sprintf(" %s %s ", styles.DocumentIcon, file)
 		}
+
 		attachments = append(attachments, attachmentStyles.Render(filename))
 	}