diff --git a/internal/engine/engine_test.go b/internal/engine/engine_test.go index af0888f..14931d0 100644 --- a/internal/engine/engine_test.go +++ b/internal/engine/engine_test.go @@ -1892,6 +1892,13 @@ func TestReportOverviewTextShowsIncidentAndAuthorityCues(t *testing.T) { } } +func TestTextCellCollapsesWhitespaceAndTruncatesUTF8(t *testing.T) { + got := textCell("命令\n执行 失败 😅", 8) + if got != "命令 执行..." { + t.Fatalf("unexpected UTF-8 safe text cell: %q", got) + } +} + func TestReportOverviewCostLabelUsesEstimatedTotalCost(t *testing.T) { sessions := []Session{{ Name: "demo", diff --git a/internal/engine/report.go b/internal/engine/report.go index b385517..94902b6 100644 --- a/internal/engine/report.go +++ b/internal/engine/report.go @@ -1238,8 +1238,9 @@ func textAuthorityCounts(items []authorityCount) string { func textCell(value string, limit int) string { value = strings.Join(strings.Fields(value), " ") - if limit > 3 && len(value) > limit { - return value[:limit-3] + "..." + runes := []rune(value) + if limit > 3 && len(runes) > limit { + return string(runes[:limit-3]) + "..." } return value }