feat(app): copy messages via bubble context menu + selection toolbar #9

Merged
Pakobbix merged 1 commits from feat/message-copy-context-menu into master 2026-08-23 11:10:32 +00:00
Owner

What

Adds a way to copy agent (and user) message text — previously only code blocks and inline code were copyable.

  • Per-bubble context menu: long-press (touch) / right-click (desktop) on a finalized message opens a menu anchored to the bubble: Copy / Select messages / Delete.
  • Selection toolbar: gains a Copy button next to Delete; multi-select copy joins the selected messages in display order with a blank line.
  • Copies the raw markdown (msg.text) so formatting survives pasting into other markdown-aware apps; shows a "Copied" toast.
  • Streaming/pending/system messages stay menu-less (no final id yet); long-press inside selection mode still toggles selection as before.

Review fixes included

  • Cancelling a menu-opened delete confirm clears the staged selectedIds (flag deleteConfirmFromMenu) so the bubble doesn't stay highlighted; the toolbar path keeps its selection.
  • copyText is a no-op for blank text (media-only messages) — no empty clipboard write, no toast.

Testing

  • :shared:desktopTest passes.
  • Installed on the phone (:androidApp:installDebug); long-press → Copy / Select / Delete verified manually.

Note: long-press now opens the menu instead of entering selection mode directly (one extra tap via "Select messages") — deliberate UX change.

## What Adds a way to copy agent (and user) message text — previously only code blocks and inline code were copyable. - **Per-bubble context menu**: long-press (touch) / right-click (desktop) on a finalized message opens a menu anchored to the bubble: **Copy** / **Select messages** / **Delete**. - **Selection toolbar**: gains a **Copy** button next to Delete; multi-select copy joins the selected messages in display order with a blank line. - Copies the **raw markdown** (`msg.text`) so formatting survives pasting into other markdown-aware apps; shows a "Copied" toast. - Streaming/pending/system messages stay menu-less (no final id yet); long-press inside selection mode still toggles selection as before. ## Review fixes included - Cancelling a menu-opened delete confirm clears the staged `selectedIds` (flag `deleteConfirmFromMenu`) so the bubble doesn't stay highlighted; the toolbar path keeps its selection. - `copyText` is a no-op for blank text (media-only messages) — no empty clipboard write, no toast. ## Testing - `:shared:desktopTest` passes. - Installed on the phone (`:androidApp:installDebug`); long-press → Copy / Select / Delete verified manually. Note: long-press now opens the menu instead of entering selection mode directly (one extra tap via "Select messages") — deliberate UX change.
ARIA added 1 commit 2026-08-23 11:08:51 +00:00
feat(app): copy messages via bubble context menu + selection toolbar
CI / Kotlin tests (android host + desktop) (pull_request) Successful in 8m18s
CI / Gateway plugin tests (pull_request) Failing after 9m55s
32db7fc4e8
Long-press (touch) / right-click (desktop) on a finalized message now
opens a context menu anchored to the bubble: Copy / Select messages /
Delete. The multi-select toolbar gains a Copy button that joins the
selected messages in display order. Copies raw markdown so formatting
survives pasting into other markdown apps; blank text is a no-op.
Cancelling a menu-opened delete confirm clears the staged selection so
the bubble doesn't stay highlighted.
Collaborator

✅ No issues found — changes look consistent with the stated intent. Ready to be merged.

✅ No issues found — changes look consistent with the stated intent. Ready to be merged.
Pakobbix merged commit 560d9c19b3 into master 2026-08-23 11:10:32 +00:00
Pakobbix deleted branch feat/message-copy-context-menu 2026-08-23 11:10:32 +00:00
Sign in to join this conversation.