Bartok
289865b392
fix(matrix): truncate thread starter body on code-point boundaries ( #97121 )
...
Matrix thread-starter previews truncated long bodies by raw UTF-16
slice, which could cut an astral character (e.g. emoji) and leave a lone
surrogate, rendering mojibake in the agent's thread context.
Reuse the existing sliceUtf16Safe helper so the cut backs up to a valid
surrogate boundary, preserving the 500-code-unit limit and '...' suffix.
Adds a regression test that fails against the raw-slice implementation.
Salvages the original fix from #96407 (auto-closed by the active-PR
queue cap). Preserves @ly-wang19's authorship; rebased clean onto main
by @Bartok9.
Co-authored-by: ly-wang19 <ly-wang19@users.noreply.github.com >
2026-06-27 07:27:38 +08:00
..
2026-06-27 07:27:38 +08:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-05 08:49:35 -07:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-14 07:16:39 +08:00
2026-06-22 02:45:56 -07:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-06 23:57:10 -07:00
2026-06-06 23:57:10 -07:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-10 15:35:10 +09:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-06 23:57:10 -07:00
2026-06-06 23:57:10 -07:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-05-31 07:17:57 +01:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-10 15:35:10 +09:00
2026-06-24 12:19:53 -07:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-06 22:17:41 -07:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-04 22:03:15 -04:00
2026-06-05 08:49:35 -07:00
2026-06-04 22:03:15 -04:00