diff --git a/apps/desktop-shell/scripts/check-config.mjs b/apps/desktop-shell/scripts/check-config.mjs index af15eb823..d1ffd3d7a 100644 --- a/apps/desktop-shell/scripts/check-config.mjs +++ b/apps/desktop-shell/scripts/check-config.mjs @@ -1882,6 +1882,7 @@ for (const snippet of [ 'read_desktop_clipboard_text(app)', 'normalize_clipboard_text(&text)', 'required_string_payload(request, "text")', + 'truncated.chars().count()', '"text": text', ]) { if (!desktopHostBridgeClipboardSource.includes(snippet)) { diff --git a/apps/desktop-shell/src-tauri/src/host_bridge/clipboard.rs b/apps/desktop-shell/src-tauri/src/host_bridge/clipboard.rs index e7569416d..3658e251a 100644 --- a/apps/desktop-shell/src-tauri/src/host_bridge/clipboard.rs +++ b/apps/desktop-shell/src-tauri/src/host_bridge/clipboard.rs @@ -68,6 +68,11 @@ mod tests { normalize_clipboard_text(&"a".repeat(CLIPBOARD_TEXT_MAX_LENGTH + 10)).len(), CLIPBOARD_TEXT_MAX_LENGTH ); + + let unicode_text = "猫".repeat(CLIPBOARD_TEXT_MAX_LENGTH + 10); + let truncated = normalize_clipboard_text(&unicode_text); + assert_eq!(truncated.chars().count(), CLIPBOARD_TEXT_MAX_LENGTH); + assert!(truncated.ends_with('猫')); } #[test]