package utils // Truncate returns a truncated version of s with at most maxLen runes. // Handles multi-byte Unicode characters properly. // If the string is truncated, "..." is appended to indicate truncation. func Truncate(s string, maxLen int) string { runes := []rune(s) if len(runes) <= maxLen { return s } // Reserve 3 chars for "..." if maxLen <= 3 { return string(runes[:maxLen]) } return string(runes[:maxLen-3]) + "..." }