Kalvin C
25a9cf1be6
feat: paste composer text without formatting (#4801)
## Summary
- handle Cmd+Shift+V on macOS and Ctrl+Shift+V on Windows/Linux in the
message composer
- read plain text through the native Tauri/arboard clipboard path in
packaged builds, with a browser-only Clipboard API fallback
- re-enter ProseMirror's paste pipeline with populated `text/plain`
clipboard data so selection, undo, multiline behavior, and paste
observers remain intact
- cover both platform mappings with rendered composer E2E tests that
assert the native command path
## Testing
- `pnpm test` — 4,286 passed
- `pnpm check`
- `pnpm typecheck`
- `pnpm exec playwright test composer-selection-formatting.spec.ts
--project=smoke` — 26 passed
- `cargo check --manifest-path desktop/src-tauri/Cargo.toml --workspace
--all-targets --target aarch64-apple-darwin`
- `just desktop-tauri-test` — 2,206 core tests plus integration and
doc-test groups passed
- full pre-push hooks passed
## Manual verification
Physical packaged-app clipboard verification remains recommended on
macOS, Windows, and Linux. The automated E2E uses mocked Tauri IPC but
asserts the native `read_clipboard_text` command is invoked.
Signed-off-by: npub1dccv64krpcpse5cmkzfeh998cftungyatw3djt8jwdw6g43f7fyqzzmrf7 <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@buzz.block.builderlab.xyz>
Co-authored-by: npub1dccv64krpcpse5cmkzfeh998cftungyatw3djt8jwdw6g43f7fyqzzmrf7 <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@buzz.block.builderlab.xyz>
2026-08-04 16:16:14 -07:00
..
2026-07-22 13:24:46 -07:00
2026-07-30 11:25:08 -07:00
2026-07-30 12:34:35 -07:00
2026-07-24 19:30:33 -07:00
2026-07-30 13:32:40 +00:00
2026-07-24 01:23:31 +01:00
2026-08-03 18:09:24 -04:00
2026-07-24 01:23:31 +01:00
2026-07-28 15:01:03 -04:00
2026-07-28 15:01:03 -04:00
2026-07-22 13:24:46 -07:00
2026-07-30 11:38:28 -04:00
2026-07-19 11:14:06 -07:00
2026-08-04 15:39:45 +00:00
2026-07-17 11:40:05 +00:00
2026-08-04 15:39:45 +00:00
2026-07-20 14:44:08 -07:00
2026-07-27 15:47:04 -07:00
2026-07-23 13:50:29 -06:00
2026-08-04 15:39:45 +00:00
2026-08-04 15:39:45 +00:00
2026-08-03 21:51:17 -04:00
2026-07-19 15:37:23 -07:00
2026-08-04 16:16:14 -07:00
2026-08-04 20:38:19 +00:00
2026-07-24 19:30:33 -07:00
2026-07-18 23:16:00 -04:00
2026-07-19 19:01:38 +00:00
2026-07-30 17:07:22 -04:00
2026-07-28 19:37:12 +01:00
2026-07-27 16:45:34 -04:00
2026-08-03 12:08:29 -04:00
2026-07-24 01:23:31 +01:00
2026-08-04 17:08:29 -04:00
2026-08-04 06:59:43 -07:00
2026-08-03 14:12:21 -07:00
2026-07-27 11:01:42 -07:00
2026-07-30 20:58:03 -04:00
2026-07-20 00:53:53 +02:00
2026-07-24 19:30:33 -07:00
2026-08-04 13:07:50 -07:00
2026-07-20 08:58:48 -07:00
2026-07-20 15:35:40 +00:00
2026-07-27 09:47:02 -07:00
2026-07-19 11:42:35 -07:00
2026-07-17 10:27:41 -04:00
2026-07-18 00:01:24 +00:00
2026-07-20 00:53:53 +02:00
2026-07-28 14:01:18 -04:00
2026-07-28 16:01:41 -04:00
2026-07-27 16:45:34 -04:00
2026-08-04 10:39:09 -07:00
2026-08-04 10:39:09 -07:00
2026-07-18 15:45:41 +00:00
2026-08-04 07:11:16 -07:00
2026-08-03 14:12:21 -07:00
2026-07-30 07:46:56 -07:00
2026-08-04 07:11:16 -07:00
2026-07-26 13:20:26 -07:00
2026-08-02 14:53:01 -04:00
2026-08-04 12:21:59 -04:00
2026-07-16 12:44:14 -07:00
2026-08-04 16:02:34 -04:00
2026-07-24 12:10:09 -04:00
2026-08-03 13:05:47 -07:00
2026-07-18 15:31:17 -07:00
2026-07-30 20:58:03 -04:00
2026-07-30 20:58:03 -04:00
2026-08-04 07:14:09 -07:00
2026-08-03 21:51:17 -04:00
2026-07-16 16:18:07 -07:00
2026-08-03 11:12:34 -04:00
2026-07-28 15:01:03 -04:00
2026-07-28 15:01:03 -04:00
2026-07-30 11:15:39 -07:00
2026-08-03 09:30:15 -07:00
2026-08-04 17:30:12 -04:00
2026-08-04 17:30:12 -04:00
2026-08-04 17:30:12 -04:00
2026-08-04 17:30:12 -04:00
2026-07-19 14:39:59 -04:00
2026-08-03 14:09:46 -07:00
2026-08-04 18:33:42 +00:00
2026-07-30 11:25:08 -07:00
2026-07-27 16:45:34 -04:00
2026-07-25 16:49:56 -07:00
2026-07-29 15:48:06 -04:00
2026-07-27 17:52:36 -04:00
2026-07-30 20:58:03 -04:00
2026-07-30 15:47:35 -07:00
2026-07-28 15:01:03 -04:00
2026-07-28 15:01:03 -04:00
2026-08-04 11:10:47 -07:00
2026-07-23 23:06:14 -07:00
2026-08-03 09:26:06 -07:00
2026-07-25 16:49:56 -07:00
2026-07-17 11:40:05 +00:00
2026-07-18 00:01:24 +00:00
2026-08-04 15:39:45 +00:00
2026-07-30 11:36:30 -07:00
2026-07-25 17:22:15 -07:00
2026-07-31 11:15:09 -04:00
2026-07-23 13:50:29 -06:00
2026-08-03 07:36:13 -04:00