Add ability to manually configure Node.js path for users who have
Node.js
installed but not in their system PATH.
Features:
- Browse and select custom Node.js installation folder
- Visual status indicator showing Node.js version or "Not found"
- Reset to system default PATH option
- Manual configuration option in setup banner
- Real-time Node.js status checking
closes#1050
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds manual Node.js path configuration so the app works even when Node
isn’t on PATH, fulfilling #1050. Users can browse to their install,
reset to default, and see real-time status in Settings and during setup.
- New Features
- Settings: NodePathSelector to browse a Node.js folder, show
version/“Not found” status, and reset to system PATH (persists
customNodePath).
- Setup banner: manual config flow with a folder picker if Node is
already installed.
- IPC: select-node-folder, set-node-path, get-node-path; reloads env and
prepends custom path to PATH.
- Real-time Node.js status check with visual indicator (CheckCircle on
valid).
- E2E tests for browse, reset, and valid-status display.
<!-- End of auto-generated description by cubic. -->
Fixes#1472
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Switches `ProviderSettingSchema` union to `.passthrough()` variants to
accept extra fields and avoid overlapping schema conflicts.
>
> - **Schemas**:
> - **`src/lib/schemas.ts`**: Update `ProviderSettingSchema` to use
`.passthrough()` on `AzureProviderSettingSchema`,
`VertexProviderSettingSchema`, and `RegularProviderSettingSchema` so
unknown fields are preserved and overlapping required fields don’t cause
mis-matches.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
7afa4b83d713b9eb433d4cce28c7fee73cd7545b. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
# Changes
- Update Azure configuration components to manage API key and resource
name settings.
- Improve visibility of conThis pull request introduces a redesigned
Azure provider settings UI and refactors the logic for configuring Azure
OpenAI credentials, both in the frontend and supporting hooks. The main
changes focus on making the Azure configuration experience clearer and
more robust by supporting both environment variable and saved settings,
improving status indicators, and updating the logic for determining
provider readiness.
**Azure Provider UI and Logic Improvements**
* Added a new `AzureConfiguration` component that provides a dedicated
form for entering and saving Azure resource name and API key, with clear
status indicators and error handling. The UI now explains precedence
between saved settings and environment variables, and guides users
through configuration.
(`src/components/settings/AzureConfiguration.tsx`)
* Updated the main provider settings page and API key configuration
logic to pass Azure-specific settings and update functions to the new
component, ensuring seamless integration and correct state management.
(`src/components/settings/ApiKeyConfiguration.tsx`,
`src/components/settings/ProviderSettingsPage.tsx`)
[[1]](diffhunk://#diff-2104fb487cda3768cc5777889100e882f51e7fb3e13abe3cc89cf8ed1444300aR35)
[[2]](diffhunk://#diff-2104fb487cda3768cc5777889100e882f51e7fb3e13abe3cc89cf8ed1444300aR51-R61)
[[3]](diffhunk://#diff-9140e707ebb56ffed3272b4661ea1e6d8388ee604a8535c58e8a1564d280057cR297)
* Refactored the logic for determining whether Azure is configured to
check both saved settings and environment variables, ensuring accurate
status display and enabling fallback to environment variables if no
settings are saved. (`src/components/settings/ProviderSettingsPage.tsx`,
`src/hooks/useLanguageModelProviders.ts`)
[[1]](diffhunk://#diff-9140e707ebb56ffed3272b4661ea1e6d8388ee604a8535c58e8a1564d280057cL72-R99)
[[2]](diffhunk://#diff-9ac9e279a0cda34a0bc519348d5474b2e355b0828a678495be3af1e8984b5be5R35-R48)
* Updated the Azure provider E2E test to verify the new UI elements,
status indicators, and guidance, ensuring the test matches the new
configuration flow and messaging.
(`e2e-tests/azure_provider_settings.spec.ts`)
**Supporting Type and Import Updates**
* Added and updated type imports for `AzureProviderSetting` and
`VertexProviderSetting` where needed to support the new logic and UI.
(`src/components/settings/ProviderSettingsPage.tsx`,
`src/hooks/useLanguageModelProviders.ts`,
`src/ipc/utils/get_model_client.ts`)
[[1]](diffhunk://#diff-9140e707ebb56ffed3272b4661ea1e6d8388ee604a8535c58e8a1564d280057cL14-R14)
[[2]](diffhunk://#diff-9ac9e279a0cda34a0bc519348d5474b2e355b0828a678495be3af1e8984b5be5L5-R5)
[[3]](diffhunk://#diff-3cd526c6c10413c1387bfef450e48b880ba6f54865e96046044586ff4192bcceR15)
* Changed Azure model client import to use `createAzure` for consistency
and future extensibility. (`src/ipc/utils/get_model_client.ts`)
[Copilot is generating a summary...]figuration status and error handling
in the UI.
- Refactor environment variable checks to prioritize saved settings.
- Add support for Azure provider settings in the schema.
- Modify tests to reflect changes in Azure configuration requirements.
# Changes in short
- **Azure settings panel**
- Replaced with a full form that:
- Persists API key and resource name
- Surfaces save state
- Keeps the environment-variable helper
- *(src/components/settings/AzureConfiguration.tsx:23-214)*
- **Settings stack workflow**
- Threaded the new Azure workflow:
- Config shim now passes `updateSettings`
- Provider status checks prefer saved Azure values before env vars
- *(src/components/settings/ApiKeyConfiguration.tsx:40-55,
src/components/settings/ProviderSettingsPage.tsx:60-105)*
- **Provider detection**
- Azure treated like other saved credentials by:
- Looking for both stored fields, or
- The pair of env vars
- *(src/hooks/useLanguageModelProviders.ts:5-57)*
- **Back-end model creation**
- Reads saved Azure credentials (falling back to env vars)
- Builds the client via `createAzure`
- *(src/ipc/utils/get_model_client.ts:316-369)*
- **Provider schema support**
- Extended so Azure can store its resource name alongside the secret
- *(src/lib/schemas.ts:82-109)*
- **E2E tests**
- Updated Azure Playwright spec to cover the new UI
- *(e2e-tests/azure_provider_settings.spec.ts:4-50)*
Issues resolved: #1275
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds web search to Dyad Pro chats with a new UI, tag parsing, and a Pro
Mode toggle that wires through to the engine.
- **New Features**
- Pro Mode toggle: “Web Search” (settings.enableProWebSearch).
- New custom tags: dyad-web-search, dyad-web-search-result, dyad-read.
- Collapsible Web Search Result UI with in-progress badge and markdown
rendering.
- Engine integration: passes enable_web_search and activates DyadEngine
when web search is on.
<!-- End of auto-generated description by cubic. -->
This PR implements app search feature and addresses the issue #1182.
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds a fast app search with a command-style dialog so users can find
apps by name or chat content and jump to them quickly. Implements the
search experience requested in #1182.
- New Features
- Search dialog (Ctrl+K or “Search Apps” button) with result snippets
from matching chat titles/messages.
- Searches across app names, chat titles, and message content;
case-insensitive; supports partial matches; empty query lists all apps.
- Selecting a result navigates to the app and closes the dialog.
- New IPC endpoint search-app with Zod-validated results, debounced
React Query hook, and preload allowlist update.
- Added E2E tests for dialog open/close, shortcuts, matching behavior,
empty state, and navigation.
<!-- End of auto-generated description by cubic. -->
Based on https://github.com/dyad-sh/dyad/pull/1116
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds a fast chat search dialog (Command Palette) to find and jump
between chats. Open via the sidebar button or Ctrl/Cmd+K, with title and
message text search plus inline snippets.
- New Features
- Command palette using cmdk with keyboard shortcut (Ctrl/Cmd+K).
- Searches within the selected app across chat titles and message
content via a new IPC route (search-chats).
- Debounced queries (150ms) with React Query; results de-duplicated and
sorted by newest.
- Snippet preview with highlighted matches and custom ranking; selecting
a result navigates and closes the dialog.
- Search button added to ChatList; basic e2e tests added (currently
skipped).
- Dependencies
- Added cmdk@1.1.1.
- Bumped @radix-ui/react-dialog to ^1.1.15 and updated Dialog to support
an optional close button.
<!-- End of auto-generated description by cubic. -->
---------
Co-authored-by: Evans Obeng <iamevansobeng@outlook.com>
Co-authored-by: Evans Obeng <60653146+iamevansobeng@users.noreply.github.com>
# Add xAI (Grok) Provider Support
## Overview
This PR adds support for xAI's Grok models as an AI provider, focusing
on coding-optimized models.
## Changes Made
### Provider Configuration (`language_model_helpers.ts`)
- Added xAI to `MODEL_OPTIONS` with 3 coding-focused models:
- `grok-code-fast-1`: Fast, economical coding model (256k context)
- `grok-4`: Most capable flagship model (256k context)
- `grok-3`: Powerful coding model (131k context)
<img width="805" height="592" alt="image"
src="https://github.com/user-attachments/assets/a99b9495-e90e-40f3-a772-be9807b24501"
/>
<img width="805" height="653" alt="image"
src="https://github.com/user-attachments/assets/aad7b333-ee74-457a-b5b7-5d20bd54d7e0"
/>
## Dependencies
- Requires `@ai-sdk/xai` package (already imported)
- Uses existing provider pattern and infrastructure
## Why xAI for Coding?
xAI's Grok models have shown impressive results in coding benchmarks:
- Trained on high-quality programming datasets reflecting real-world
tasks
- Excels at agentic coding workflows with fast reasoning capabilities
- Strong performance across multiple programming languages (TypeScript,
Python, Java, Rust, C++, Go)
- Achieved 70.8% on SWE-Bench-Verified using internal evaluation
- Optimized for rapid iteration in development environments
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds xAI (Grok) as a provider so users can pick Grok coding models in
the app. Integrates provider config, client wiring, and schema updates.
- **New Features**
- Added xAI provider with env var mapping (XAI_API_KEY) and provider
metadata.
- Exposed models: grok-code-fast-1 (256k), grok-4 (256k), grok-3 (131k).
- Hooked up get_model_client to use @ai-sdk/xai (createXai).
- Included "xai" in validation schemas and model options.
- **Migration**
- Set XAI_API_KEY to enable xAI.
<!-- End of auto-generated description by cubic. -->
---------
Co-authored-by: Will Chen <willchen90@gmail.com>
- follows existing patterns for AI SDK to provide Bedrock integration
- Uses Bedrock's API token feature for authentication which provides a
standard experience
- bedrock provided models match the Anthropic provided models (for now)
**Disclaimer**: The contributing docs are extremely sparse. I don't
actually know how to build this and get this running in Electron
## Testing
- AWS Bedrock provider is available for selection
<img width="994" height="496" alt="image"
src="https://github.com/user-attachments/assets/3cb21fed-9826-40e5-8019-b2b5df5e873b"
/>
- The provider settings also show the right models and offer the right
env variable to use
<img width="949" height="862" alt="image"
src="https://github.com/user-attachments/assets/8c23d5c8-d84d-4bf7-856a-8dc8d9d6c4b4"
/>
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds AWS Bedrock as a provider so users can run Claude models via
Bedrock with API token authentication. The settings now list Bedrock
with supported models and a new env var.
- New Features
- New provider: bedrock using @ai-sdk/amazon-bedrock, wired into model
client and schemas.
- Models: Claude 4 Sonnet, Claude 3.7 Sonnet, Claude 3.5 Sonnet (Bedrock
model IDs).
- Settings: shows AWS Bedrock with correct models and env var
AWS_BEARER_TOKEN_BEDROCK.
- Default region: us-east-1.
- Migration
- Set AWS_BEARER_TOKEN_BEDROCK with your Bedrock API token.
- Select AWS Bedrock in settings and pick a model.
<!-- End of auto-generated description by cubic. -->
Co-authored-by: Samrat Jha <samratj@amazon.com>
Co-authored-by: Will Chen <willchen90@gmail.com>
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Set “balanced” as the default smart context mode. Users now get balanced
when Smart Files Context is enabled and no mode is set; “conservative”
must be explicitly selected.
- **Refactors**
- Default fallback to balanced in UI and engine (proSmartContextOption
undefined -> "balanced").
- ProModeSelector saves "conservative" explicitly; selector reads
undefined as balanced.
- Updated schema and types to allow "balanced" | "conservative".
- Engine payload now includes smart_context_mode with "balanced" by
default; e2e tests and snapshots updated.
- **Migration**
- No action needed. Existing users without an explicit mode will use
balanced by default; selecting conservative persists.
<!-- End of auto-generated description by cubic. -->
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>
<!-- 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. -->
TODOs:
- [x] Do restart when checkout / restore if there is a DB
- [x] List all branches (branch id, name, date)
- [x] Allow checking out versions with no DB
- [x] safeguard to never delete main branches
- [x] create app hook for neon template
- [x] weird UX with connector on configure panel
- [x] tiny neon logo in connector
- [x] deploy to vercel
- [x] build forgot password page
- [x] what about email setup
- [x] lots of imgix errors
- [x] edit file - db snapshot
- [x] DYAD_DISABLE_DB_PUSH
- [ ] update portal doc
- [x] switch preview branch to be read-only endpoint
- [x] disable supabase sys prompt if neon is enabled
- [ ] https://payloadcms.com/docs/upload/storage-adapters
- [x] need to use main branch...
Phase 2?
- [x] generate DB migrations
Test cases:
- [x] create-ts-errors
- [x] with auto-fix
- [x] without auto-fix
- [x] create-unfixable-ts-errors
- [x] manually edit file & click recheck
- [x] fix all
- [x] delete and rename case
THINGS
- [x] error handling for checkProblems isn't working as expected
- [x] make sure it works for both default templates (add tests)
- [x] fix bad animation
- [x] change file context (prompt/files)
IF everything passes in Windows AND defensive try catch... then enable
by default
- [x] enable auto-fix by default
This code was quite complex and hairy and resulted in very opaque errors
(for both free and pro users). There's not much benefit to budget saver
because Google removed 2.5 Pro free quota a while ago (after it
graduated the model from experimental to preview). Dyad Pro users can
still use 2.5 Flash free quota by disabling Dyad Pro by clicking on the
Dyad Pro button at the top.