Adeniji Adekunle James 2597d50529 feat: add copy functionality for ai responses with Dyad tag formatting (#1290) (#1315)
## Summary
Adds AI response copy functionality to chat messages that preserves
formatting and converts Dyad-specific tags to clean, readable markdown.

## Changes
- **New `useCopyToClipboard` hook**: Parses Dyad tags and converts them
to professional markdown format
- **Updated `ChatMessage` component**: Positions copy button on left
side of approval status
- **Dyad tag conversion**: Transforms custom tags to readable format:
  - `<dyad-write>` → `### File: path/to/file.js` + code block
  - `<dyad-edit>` → `### Edit: path/to/file.js` + code block  
  - `<dyad-execute-sql>` → `### Execute SQL` + ```sql block
  - `<think>` → `### Thinking` + content

## Features
-  Automatic programming language detection from file extensions  
-  Professional markdown formatting with proper headings and code
blocks
-  Tooltip showing "Copied" confirmation
-  Reuses existing DyadMarkdownParser logic for consistency

closes (#1290)
    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Adds a Copy button to assistant messages that copies a clean Markdown
version of the response by converting Dyad tags and preserving code
blocks. Improves shareability and removes Dyad-only markup; addresses
Linear #1290.

- **New Features**
- Added useCopyToClipboard hook that parses Dyad tags to Markdown,
auto-detects code language, and cleans spacing.
- Updated ChatMessage to show a Copy button (with Copy/Copied tooltip)
to the left of approval status; disabled while streaming.
- Tag conversions: think → "### Thinking"; dyad-write/edit → "###
File/Edit: path" + fenced code; dyad-execute-sql → "### Execute SQL" +
sql block; other Dyad tags map to concise headings; chat-summary/command
are omitted.
- Added e2e tests for clipboard copy, Dyad tag stripping/formatting, and
tooltip states.

<!-- End of auto-generated description by cubic. -->
2025-09-22 23:32:55 -07:00
2025-08-29 21:35:09 -07:00
2025-09-16 22:51:46 -07:00
2025-08-22 22:51:16 -07:00
2025-09-19 15:43:39 -07:00
2025-06-11 13:05:27 -07:00
2025-07-23 21:02:43 -07:00
2025-09-19 15:43:39 -07:00
2025-04-14 23:56:11 -07:00
2025-04-11 09:38:16 -07:00
2025-04-11 09:38:16 -07:00
2025-05-28 22:55:54 -07:00
2025-05-28 22:55:54 -07:00
2025-05-06 23:02:28 -07:00
2025-05-06 23:02:28 -07:00
2025-04-11 10:21:05 -07:00
2025-04-11 09:38:16 -07:00
2025-05-27 15:59:13 -07:00
2025-04-15 16:19:29 -07:00
2025-08-14 13:48:27 -07:00
2025-09-19 22:05:36 -07:00
2025-09-19 16:33:20 -07:00
2025-09-19 15:43:39 -07:00
2025-08-11 15:37:34 -07:00
2025-04-11 09:38:16 -07:00
2025-04-11 09:38:16 -07:00
2025-04-11 09:38:16 -07:00

Dyad

Dyad is a local, open-source AI app builder. It's fast, private, and fully under your control — like Lovable, v0, or Bolt, but running right on your machine.

Image

More info at: http://dyad.sh/

🚀 Features

  • Local: Fast, private and no lock-in.
  • 🛠 Bring your own keys: Use your own AI API keys — no vendor lock-in.
  • 🖥️ Cross-platform: Easy to run on Mac or Windows.

📦 Download

No sign-up required. Just download and go.

👉 Download for your platform

🤝 Community

Join our growing community of AI app builders on Reddit: r/dyadbuilders - share your projects and get help from the community!

🛠️ Contributing

Dyad is open-source (Apache 2.0 licensed).

If you're interested in contributing to dyad, please read our contributing doc.

Description
No description provided
Readme Apache-2.0 27 MiB
Languages
TypeScript 97.4%
JavaScript 1.6%
CSS 0.6%
Shell 0.2%