Summary
Add a one-click copy action on assistant messages in the chat timeline so users can copy the full assistant response without selecting text manually.
Problem
T3 Code already has clipboard affordances for some surfaces, such as code blocks, but there is no obvious single-action way to copy an entire assistant response. That makes it slower to move answers into GitHub comments, docs, Slack, commit descriptions, or a follow-up prompt.
Proposed behavior
- Show a
Copy action on assistant messages alongside the existing hover actions.
- Copy the full rendered assistant response text for that message.
- Keep code-block-level copy in place; this feature is for the full assistant message.
- Disable or hide the action while the assistant message is still streaming.
- Show clear success feedback, consistent with the app's existing toast or copied-state patterns.
Scope
- Assistant messages only.
- Do not add the action to user messages in this issue.
- Do not combine this with full-thread export; that should stay separate.
Acceptance criteria
- Every completed assistant response has a visible, discoverable one-click copy action.
- Clicking the action copies the full message content to the clipboard.
- Streaming messages cannot be copied until the response is complete.
- Success and failure states are surfaced in the UI.
- The action works consistently on macOS, Linux, and Windows desktop builds.
Implementation notes
Likely web surface areas:
apps/web/src/components/ChatView.tsx
apps/web/src/components/ChatMarkdown.tsx
There is already clipboard usage in the chat UI, so this should follow the same interaction and feedback pattern rather than introducing a new one.