Skip to content

[Feature]: Add one-click copy action for assistant responses #1164

@dpshade

Description

@dpshade

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions