pub fn truncate_string(input: &str, max_chars: usize) -> String
Truncates a string to a maximum character count, adding an ellipsis if truncated. Handles multi-byte characters correctly.