Commit Graph

609 Commits

Author SHA1 Message Date
Will Chen
1e655e1c10 Use new dyad icons (#1157)
<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Updates app branding to icon set v2 and switches the in-app logo to SVG
for sharper rendering.

- **Refactors**
  - Use assets/logo.svg in TitleBar instead of logo_transparent.png.
- Add assets/logo.svg; remove legacy PNGs (logo.png,
logo_transparent.png).
- Refresh platform icon files (logo.icns, logo.ico,
assets/icon/logo.png).

<!-- End of auto-generated description by cubic. -->
2025-09-01 21:33:44 -07:00
Toluwap
78b69ae508 Update missing direction creation (#1146)
Update the doc for missing userData for the database.
    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Add a setup step in CONTRIBUTING.md to create the userData directory
required by the database. This prevents migration commands from failing
on fresh installs.

<!-- End of auto-generated description by cubic. -->
2025-09-01 21:24:46 -07:00
Tanner-Maasen
2ffbbbca8f Add Azure OpenAI Custom Model Integration (#1001)
Fixes #710 

This PR implements comprehensive Azure OpenAI integration for Dyad,
enabling users to leverage Azure
OpenAI models through proper environment variable configuration. The
implementation adds Azure as a
supported provider with full integration into the existing language
model architecture, including support
  for GPT-5 models. Key features include environment-based
configuration using `AZURE_API_KEY` and `AZURE_RESOURCE_NAME`,
specialized UI components that provide clear
setup instructions and status indicators, and seamless integration with
Dyad's existing provider system.
The Azure provider leverages the @ai-sdk/azure package (v1.3.25) for
compatibility with the current
  TypeScript language model interfaces.

The implementation includes robust error handling for missing
configuration, comprehensive test coverage
with 9 new unit tests covering critical functionality like model client
creation and error scenarios, and
  an E2E test for the Azure-specific settings UI. 

<img width="1510" height="908" alt="Screenshot 2025-08-18 at 9 14 32 PM"
src="https://github.com/user-attachments/assets/04aa99e1-1590-4bb0-86c9-a67b97bc7500"
/>

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Will Chen <willchen90@gmail.com>
2025-08-30 20:47:25 -07:00
Will Chen
86cc50c50c Switch back to anthropic (#1135) 2025-08-29 21:35:09 -07:00
Will Chen
acda9e2e5b gh prompt v2 (#1133) 2025-08-29 21:29:59 -07:00
Will Chen
227d7340bf improve prompt (#1131) 2025-08-29 21:26:38 -07:00
Will Chen
45ff05c7fc Switch to OpenAI GPT-5 bot (cheaper) (#1129)
<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Switches the duplicate-issues GitHub Action from
anthropic/claude-sonnet-4-20250514 to openai/gpt-5 to reduce cost.
Updates the workflow to use OPENAI_API_KEY instead of ANTHROPIC_API_KEY.

<!-- End of auto-generated description by cubic. -->
2025-08-29 21:17:35 -07:00
Will Chen
c6342350b4 Add dupe issue bot (#1120)
<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Adds a GitHub Action to detect and comment on potential duplicate issues
when a new issue is opened. This reduces triage time and keeps issue
lists clean.

- **New Features**
- Adds .github/workflows/duplicate-issues.yml triggered on issues:
opened.
- Uses opencode with Anthropic Claude Sonnet 4 to scan existing issues
and comment with links if duplicates are likely; stays silent otherwise.
- Runs with minimal permissions; allows gh issue commands and denies
webfetch.

- **Migration**
- Create the ai-bots environment and add the ANTHROPIC_API_KEY secret
(GITHUB_TOKEN is provided by GitHub).

<!-- End of auto-generated description by cubic. -->
2025-08-28 22:07:45 -07:00
Will Chen
3d6e683f5e pre commit (#1119)
<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Adds an explicit Husky pre-commit setup to run the formatter and linter
before each commit. Replaces the auto-run prepare hook with a manual npm
run init-precommit command.

- **Migration**
- Run npm run init-precommit once in your repo to install the pre-commit
hook.

<!-- End of auto-generated description by cubic. -->
2025-08-28 21:19:03 -07:00
顾颢
6e4eb7c46b fix: error on first custom provider deletion (#1110)
fixes #1109 


https://github.com/WiseLibs/better-sqlite3/blob/master/docs/api.md#transactionfunction---function

> Transaction functions do not work with async functions. Technically
speaking, async functions always return after the first await, which
means the transaction will already be committed before any async code
executes.

    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Fixes a runtime error when deleting the first custom provider by using a
synchronous DB transaction. Ensures associated models and the provider
are removed atomically without failing.

- **Bug Fixes**
- Replace async transaction callback with a synchronous one and remove
awaits on tx operations to match the DB API and prevent the first-delete
error.

<!-- End of auto-generated description by cubic. -->

Co-authored-by: 顾颢 <hao.gu@factchina.com>
2025-08-27 14:49:14 -07:00
Will Chen
8211db71c9 bump to beta v0.19 1 (#1094) 2025-08-26 11:09:17 -07:00
Will Chen
9869fefbcb Support dyad docker (#674)
TODOs:
- [ ] clean-up docker images

https://claude.ai/chat/13b2c5d3-0d46-49e3-a771-d10edf1e29f4
2025-08-26 11:07:40 -07:00
Toni Alatalo
e6c92a24ed Prompts: align examples to TypeScript (.tsx/.ts) to avoid .jsx drift (#1076)
The prompt text says:

> - Use TypeScript.

But in the examples there are .jsx files.

I got errors sometimes (in my fork with other changes too) that JSX got
generated instead of TSX. This seems to have fixed it for me.
    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Updated system prompt examples to use .tsx/.ts instead of .jsx/.js,
matching the “Use TypeScript” instruction. This prevents JSX drift and
reduces cases where generated code uses JSX instead of TSX.

<!-- End of auto-generated description by cubic. -->
2025-08-26 09:59:05 -07:00
Will Chen
53bbfc9813 Read JSON (#1081)
Fixes #1037 
    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Enable JSON file support in codebase scanning so common configs and data
(e.g., package.json, vercel.json, translations) are included. Adds .json
to the allowed extensions and removes special-casing for
package.json/vercel.json.

<!-- End of auto-generated description by cubic. -->
2025-08-26 09:57:19 -07:00
Will Chen
1dfa0d1004 Fix package.json (#1080)
Fixes #554 #1049 
    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Stop mutating package.json when reading files. readFileWithCache now
returns raw content so all fields are preserved (e.g., packageManager).
Fixes #554 and #1049.

- **Bug Fixes**
  - Removed package.json "cleaning" logic and the cleanContent helper.
- Return and cache unmodified file content from both fs and
virtualFileSystem.

<!-- End of auto-generated description by cubic. -->
2025-08-25 21:11:27 -07:00
Will Chen
72be54e6c5 verify jwt to false (#1085)
fixes #1010 
    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Disable automatic JWT verification for Supabase Edge Functions and
update prompts/templates to require and demonstrate manual auth
handling. Fixes #1010.

- **Bug Fixes**
  - Set verify_jwt: false in function deployment.
- Updated Supabase prompt with an Authentication section and guidance to
manually verify tokens.
- Adjusted the hello function template to check the Authorization header
and return 401 when missing.

<!-- End of auto-generated description by cubic. -->
2025-08-25 21:10:22 -07:00
Will Chen
d8e54d9a10 Parameterize sys prompt (#1082)
<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Parameterized the system prompt and tokenized it in e2e dumps to make
snapshots smaller and stable. No runtime behavior changes; future prompt
edits won’t churn tests.

- **Refactors**
- Exported BUILD_SYSTEM_PREFIX and BUILD_SYSTEM_POSTFIX from
system_prompt.ts.
- Updated test_helper to replace the full prompt with
${BUILD_SYSTEM_PREFIX}/${BUILD_SYSTEM_POSTFIX} tokens in message dumps.
- Regenerated e2e snapshots to use tokens, reducing ~270 lines per
snapshot.

<!-- End of auto-generated description by cubic. -->
2025-08-25 17:56:14 -07:00
Will Chen
b14177b049 fix contrib format (#1083) 2025-08-25 17:25:39 -07:00
顾颢
2d5aa7e711 style(chat): solve the issue where the SetupBanner is cut off (#1078)
Fixes #1077 
    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Fix the SetupBanner being cut off in the empty chat state. The
placeholder message now uses flex-1 instead of h-full so the banner
renders fully.

<!-- End of auto-generated description by cubic. -->

Co-authored-by: 顾颢 <guhao@dayee.com>
2025-08-25 17:24:19 -07:00
Mohamed Aziz Mejri
7adffc7576 fix text overflow in chat messages (#1073)
This PR fixes the issue #1072 where long words in chat messages overflow
outside the message container.
The fix applies Tailwind’s `break-words` utility to ensure that overly
long words wrap properly within the chat bubble.
    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Fixes text overflow in chat messages by adding Tailwind’s break-words to
the message content. Long words and URLs now wrap inside the bubble
instead of spilling out.

<!-- End of auto-generated description by cubic. -->
2025-08-25 16:57:57 -07:00
Mohamed Aziz Mejri
c23e0ae434 update contributing.md so that it refers to the architecture doc (#1057)
This PR adds a reference to the architecture doc in contributing.md .
    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Added a link to the Architecture Guide in CONTRIBUTING.md to give
contributors a high-level overview and ensure changes align with the
project architecture.

<!-- End of auto-generated description by cubic. -->
2025-08-25 16:57:13 -07:00
Will Chen
2a90d2af5f architecture (#1052)
<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Add a high-level Architecture doc for Dyad in docs/architecture.md. It
explains the Electron renderer/main model, the life of a request
(streaming, parsing, applying Dyad tags), and the reasoning behind our
context and agentic choices to improve onboarding and clarity.

<!-- End of auto-generated description by cubic. -->
2025-08-22 22:51:16 -07:00
Will Chen
2285b5ebdf Disable encryption for e2e tests (#1024)
<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Disable Electron safeStorage encryption in test builds so e2e runs are
consistent and don’t require the OS keychain. Added an IS_TEST_BUILD
guard in encrypt() to force the unencrypted fallback during tests.

<!-- End of auto-generated description by cubic. -->
2025-08-20 17:19:57 -07:00
Will Chen
a66ac3c4a4 Bump to v0.18.0 (#1026)
<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Bump version from 0.18.0-beta.1 to the stable 0.18.0. Updates
package.json to finalize the v0.18.0 release for publishing.

<!-- End of auto-generated description by cubic. -->
2025-08-20 17:19:18 -07:00
Will Chen
ef4871bfdb Bump to 0.18.0-beta.2 (#1023)
<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Bumped the package version from 0.18.0-beta.1 to 0.18.0-beta.2 to
prepare the next beta release.

<!-- End of auto-generated description by cubic. -->
2025-08-20 15:35:54 -07:00
Will Chen
4e9a927a7b smart context v3 (#1022)
<!-- This is an auto-generated description by cubic. -->

## Summary by cubic
Adds Smart Context v3 with selectable modes (Off, Conservative,
Balanced) and surfaces token savings in chat. Also improves token
estimation by counting per-file tokens when Smart Context is enabled.

- **New Features**
- Smart Context selector in Pro settings with three options.
Conservative is the default when enabled without an explicit choice.
- New setting: proSmartContextOption ("balanced"); undefined implies
Conservative.
- Engine now receives enable_smart_files_context and smart_context_mode.
- Chat shows a DyadTokenSavings card when the message contains
token-savings?original-tokens=...&smart-context-tokens=..., with percent
saved and a tooltip for exact tokens.
- Token estimation uses extracted file contents for accuracy when Pro +
Smart Context is on; otherwise falls back to formatted codebase output.

<!-- End of auto-generated description by cubic. -->
2025-08-20 14:16:07 -07:00
Will Chen
34215db141 Help chat (#1007) 2025-08-19 15:31:17 -07:00
Adeniji Adekunle James
0cdd13dcbe feat: add timestamp and message version to prompt (#944) (#959)
### Summary

This PR implements a timestamp feature for messages in the prompt
window, responding to feature request #944.

**What this does:**
- Prefixes each sent message with a timestamp and message version.
### Screenshot

<img width="530" height="116" alt="image"
src="https://github.com/user-attachments/assets/62a86890-b120-42dd-ab48-8eeb4515a292"
/>

---------

Co-authored-by: Will Chen <willchen90@gmail.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-08-18 22:27:19 -07:00
Will Chen
d535db6251 Upgrade to AI sdk with codemod (#1000) 2025-08-18 22:21:27 -07:00
Will Chen
573642ae5f Prompt gallery (#957)
- [x] show prompt instead of app in autocomplete
- [x] use proper array/list for db (tags)
- [x] don't do <dyad-prompt> - replace inline
2025-08-18 13:25:11 -07:00
Will Chen
a547735714 Skip delete for windows (#992) 2025-08-18 11:00:03 -07:00
Olyno
237017acd9 feat: allow custom install and start commands (#892)
# Description

Gives the ability to define an `install` and `startup` command when
importing a project, so we can work on a project locally without any
issue.

# Preview

<img width="2256" height="1422" alt="image"
src="https://github.com/user-attachments/assets/2132b1cb-5f71-4b88-84db-8ecc81cf1f66"
/>

---------

Co-authored-by: Will Chen <willchen90@gmail.com>
2025-08-18 10:41:22 -07:00
Will Chen
f72157a443 bump to v0.18.0 beta 1 (#991) 2025-08-18 10:36:43 -07:00
Will Chen
55cc5460e3 Support next.js for routes and handle long width address bar (#958) 2025-08-15 17:56:44 -07:00
Adeniji Adekunle James
e554fd962b feat: add copy to clipboard functionality for code blocks (#934)
## 🚀 Feature: Copy to Clipboard for Code Blocks

### What's Changed
- Added a copy button to all code blocks that allows users to easily
copy code snippets
- Implemented visual feedback showing a checkmark when code is
successfully copied
- Copy button automatically reverts back after 2 seconds

### Technical Details
- Uses `navigator.clipboard.writeText()` for modern clipboard API
- Positioned copy button in the top-right corner alongside language
label
- Maintains existing code highlighting functionality

### UI/UX Improvements
- Clean, minimal copy button design that doesn't interfere with code
readability
- Clear visual feedback with copy and check icon transition
- Consistent styling with existing theme system

### Video



https://github.com/user-attachments/assets/8f388217-da8a-422e-9087-42cce8df68ad

---------

Co-authored-by: Will Chen <willchen90@gmail.com>
2025-08-15 16:52:37 -07:00
Will Chen
b06f658fc5 Add link for rate limit errors (#956) 2025-08-15 14:29:28 -07:00
Will Chen
60b1f509e6 increase mem size to avoid OOM (#942) 2025-08-14 14:21:28 -07:00
Will Chen
8ef84285fc Shard E2E tests (#941) 2025-08-14 13:48:27 -07:00
Will Chen
cc72990f0d Bump to v0.17.0 (#940) 2025-08-14 10:17:35 -07:00
Will Chen
4bc961ffb4 Fix preset value (#933) 2025-08-13 17:25:21 -07:00
Will Chen
b8362a74a7 bump to v0.17.0 beta 2 (#932) 2025-08-13 16:24:15 -07:00
Will Chen
a6dca76d29 Allow referencing other apps (#692)
- [x] Update chat_stream_handlers
- [x] Update token handlers
- [x] Update HomeChatInput
- [x] update lexical chat input: do not allow referencing same app
(current app, or other already selected apps)
- [x] I don't think smart context will work on this...
- [x] Enter doesn't clear...
2025-08-13 16:22:49 -07:00
Adeniji Adekunle James
76054c6db7 fix(ui): prevent content click from toggling accordion and improve UX with cursor-text in Codeblock (#930)
Hovering over the code block previously showed a pointer cursor, and
clicking inside would collapse/expand the accordion. This PR updates the
DyadWrite component to use `cursor-text` and adds `e.stopPropagation()`
so clicks inside the code block no longer toggle the accordion, making
it behave like other AI tools and improving user friendliness.


Before


https://github.com/user-attachments/assets/7b6983fd-91a0-4f30-9337-d444cbfcc110

After


https://github.com/user-attachments/assets/07d0d765-7206-4552-b0b4-2665d87df4a1
2025-08-13 15:34:11 -07:00
Olyno
c4420a56e2 docs(contribute): add explainations about SQL migration (#893)
# Description

This pull request adds some explanations on how to do the SQL
migrations, required to contribute to the project, when required.
2025-08-12 21:54:29 -07:00
BlueRaw
2c208e3ace add editable custom model (#794)
Now users can free to edit their custom models by double clicking any
custom models created in each provider.
Before this, they have to delete -> create a new one.
I simply add an edit panel (which looks the same as 'Add Custom Model')
and integrate that process into the "update" button.

There is one more issue that if a user deletes a model that he was using
in chat, then back to chat, that model would still appear (and work)
unless user chooses a new one.
Tried to modify "delete-custom-model" in language_model_handlers.ts by
the logic that if the name of that model matches the latest using one ->
switch to auto (or default) model. Yet I failed, maybe need more
explanation for this :)
2025-08-12 21:53:44 -07:00
Will Chen
ac948412dc Clearer help instructions (#919) 2025-08-12 11:31:06 -07:00
Will Chen
c6eb3975f3 Rebase GPT 4.1 engine (#909) 2025-08-11 15:53:31 -07:00
Will Chen
09efb7e10e Update README.md (#908) 2025-08-11 15:37:34 -07:00
Will Chen
c54635d834 Read .py files (#907)
Fixes #880
2025-08-11 15:03:50 -07:00
Will Chen
599f4c214c bump to v0.17.0-beta.1 (#906) 2025-08-11 15:01:28 -07:00