1. 04 10月, 2025 1 次提交
    • Will Chen's avatar
      Label pro (#1440) · e8b93e32
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Conditionally appends the `pro` label to prefilled GitHub issue URLs
      for Dyad Pro users.
      > 
      > - **Help dialog issue links**:
      > - For `Report a Bug`: build `labels` array starting with `bug`, append
      `pro` when `isDyadProUser` is true; pass labels via `labels=${labels}`.
      > - For `Session Report`: build `labels` array starting with `support`,
      append `pro` when `isDyadProUser` is true; pass labels via
      `labels=${labels}`.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      1b0928f201ff9f38284445ee2f29ae2966a59403. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      e8b93e32
  2. 03 10月, 2025 2 次提交
    • Will Chen's avatar
      fix supabase prompt (#1435) · 2272c6d2
      Will Chen 提交于
      Fixes #1364
      
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Refreshes the Supabase prompt’s login state example to use the latest
      onAuthStateChange event handling and unsubscribe pattern.
      > 
      > - **Prompts**:
      >   - **Supabase system prompt (`src/prompts/supabase_prompt.ts`)**:
      > - Revise login state management example to use
      `supabase.auth.onAuthStateChange` with explicit events:
      `INITIAL_SESSION`, `SIGNED_IN`, `SIGNED_OUT`, `PASSWORD_RECOVERY`,
      `TOKEN_REFRESHED`, `USER_UPDATED`.
      > - Update unsubscribe usage to `data.subscription.unsubscribe()` and
      remove outdated async/getSession snippet.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      239d20769a02d102d168126f973a6cb4bf6d9e48. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      2272c6d2
    • Adeniji Adekunle James's avatar
      2f138312
  3. 02 10月, 2025 1 次提交
  4. 01 10月, 2025 7 次提交
    • Will Chen's avatar
      Speculative: use sonnet 4 for triage bots (#1419) · bc79a3f0
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      13f4cb7d6c59816719a09ae68572e489b05d4820. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      bc79a3f0
    • Will Chen's avatar
      Triage bot (#1417) · aa6a0649
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Adds an issue triage workflow and upgrades the duplicate-detection
      workflow to a newer Anthropic model.
      > 
      > - **CI Workflows**:
      >   - **New `triage-issues.yml`**:
      > - Runs on new issues; installs `opencode` and labels non-English
      (`issue/lang`) and incomplete (`issue/incomplete`) reports, posting
      guidance comments.
      >   - **`duplicate-issues.yml`**:
      > - Updates `opencode` model to `anthropic/claude-sonnet-4-5-20250929`
      for duplicate detection.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      11a89c6cfec1691c68837d599b8e3fc6888df09e. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      aa6a0649
    • Will Chen's avatar
      Handle mentioned apps via smart context (#1412) · 75b4b7c2
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Send mentioned apps (names + files) to the engine through
      dyad_options, omit inline other-apps prefix when engine is enabled, and
      adjust e2e to snapshot request payload.
      > 
      > - **Engine/Backend**:
      > - Pass mentioned apps to engine via
      `providerOptions['dyad-engine'].dyadMentionedApps` and forward as
      `dyad_options.mentioned_apps` in `llm_engine_provider`.
      > - Gate inline other-apps context: only include `otherCodebasePrefix`
      when `isEngineEnabled` is false.
      > - Enhance `extractMentionedAppsCodebases` to return `files` alongside
      `codebaseInfo`.
      > - **Tests**:
      > - e2e: change `mention app (with pro)` snapshot to
      `snapshotServerDump("request")` and update snapshot to assert request
      payload contents.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      7ddddf6c16c53cd36b4c7e4ec6a57da0616d1bb0. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      75b4b7c2
    • Md Rakibul Islam Rocky's avatar
      Enhance Azure configuration handling and UI updates (#1289) · 29d8421c
      Md Rakibul Islam Rocky 提交于
      # 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
      29d8421c
    • Will Chen's avatar
      Add GPT 5 Codex and Sonnet 4.5 (#1398) · 39266416
      Will Chen 提交于
      Fixes #1405 
          
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Adds GPT-5 Codex (OpenAI and Azure) and Claude 4.5 Sonnet to the model
      options to enable newer coding models and larger contexts. Also
      increases Claude 4 Sonnet max output tokens to 32k.
      
      <!-- End of auto-generated description by cubic. -->
      
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Adds GPT‑5 Codex (OpenAI/Azure) and Claude 4.5 Sonnet, and increases
      Claude 4 Sonnet max output tokens to 32k across providers and tests.
      > 
      > - **Models**:
      >   - **OpenAI**: add `gpt-5-codex` (400k context, default temp 1).
      >   - **Anthropic**:
      > - add `claude-sonnet-4-5-20250929` (1M context, `maxOutputTokens:
      32_000`).
      > - update `claude-sonnet-4-20250514` `maxOutputTokens` from `16_000` to
      `32_000`.
      > - **Azure**: add `gpt-5-codex` (400k context, `maxOutputTokens:
      128_000`).
      >   - **Bedrock**:
      > - add `us.anthropic.claude-sonnet-4-5-20250929-v1:0` (1M context,
      `maxOutputTokens: 32_000`).
      > - update `us.anthropic.claude-sonnet-4-20250514-v1:0`
      `maxOutputTokens` to `32_000`.
      > - **E2E tests**:
      > - Update snapshots to reflect `max_tokens` increased to `32000` for
      `anthropic/claude-sonnet-4-20250514` in engine and gateway tests.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      73298d2da0c833468f957bb436f1e33400307483. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      39266416
    • Adeniji Adekunle James's avatar
      feat: add hotkey to toggle chat modes (#1274) (#995) (#1284) · 3b68fb4e
      Adeniji Adekunle James 提交于
      Adds Ctrl+Shift+A (Cmd+Shift+A on Mac) keyboard shortcut to toggle
      between Ask and Build chat modes.
      
      **Changes:**
      - Created `useChatModeToggle` hook for shared logic
      - Added shortcut to ChatInput and HomeChatInput components
      
      **Usage:**
      Press Ctrl+Shift+A (or Cmd+Shift+A on Mac) to quickly switch between
      chat modes without using the UI.
      
      <img width="434" height="123" alt="image"
      src="https://github.com/user-attachments/assets/a8c167b6-2b54-46f5-8191-5019991fc8e5"
      />
      
      Closes (#995)
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Add a global hotkey to toggle between Ask and Build modes: Ctrl+Shift+A
      (Cmd+Shift+A on Mac). Makes switching faster without touching the UI and
      fulfills Linear #995.
      
      - **New Features**
      - Added useChatModeToggle hook to flip selectedChatMode, detect
      platform, and track PostHog event chat:mode_toggle.
      - Wired the hotkey into ChatInput and HomeChatInput via
      useChatModeToggle.
        - Updated ChatModeSelector tooltip to show the shortcut.
      
      <!-- End of auto-generated description by cubic. -->
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Adds Cmd/Ctrl + . shortcut to cycle chat modes via a new hook, and
      updates the mode selector tooltip to show the shortcut.
      > 
      > - **UX/Hotkey**:
      > - Introduces `useChatModeToggle` to cycle `settings.selectedChatMode`
      (captures `chat:mode_toggle`), with platform detection
      (`detectIsMac`/`useIsMac`) and `useShortcut` binding for `Cmd/Ctrl + .`.
      > - **Integrations**:
      > - Wires `useChatModeToggle()` into `components/chat/ChatInput.tsx` and
      `components/chat/HomeChatInput.tsx` to enable the shortcut in chat
      inputs.
      > - **UI**:
      > - Enhances `components/ChatModeSelector.tsx` tooltip to display the
      platform-specific shortcut hint (`⌘ + .` or `Ctrl + .`).
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      d8cc3fff43b6eb3227623f1c084410f42392c0b3. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      ---------
      Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
      3b68fb4e
    • Will Chen's avatar
      super value (#1408) · 8f318214
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Introduces a new `auto` model `value` (Super Value Pro), adds
      configurable tag colors across model types, and updates Model Picker
      filtering and badges.
      > 
      > - **Models and Types**:
      > - Add new auto model `value` ("Super Value (Pro)") with `tag: Budget`
      and `tagColor`.
      >   - Enhance `turbo` auto model with `tag: Fast` and `tagColor`.
      >   - Extend `LanguageModel` and `ModelOption` with optional `tagColor`.
      > - **Model Picker UI**:
      > - Render model tags with configurable colors via `tagColor` and `cn`
      utility.
      > - Update "Pro only" badge logic (hide when display name already
      includes "(Pro)"); adjust badge text size.
      > - Refine auto model visibility: non‑Pro hides `turbo` and `value`; Pro
      hides `free`.
      >   - Minor styling/labeling tweaks in tag and badge rendering.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      4485fddad502237d4bceb43732043d3eaa60eaa0. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      8f318214
  5. 30 9月, 2025 1 次提交
    • Mohamed Aziz Mejri's avatar
      Disable send button while approval is pending (#1368) · 582793eb
      Mohamed Aziz Mejri 提交于
      Fixes #912 
      
      This PR implements disabling send button while approval is pending and
      addresses issue #912
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Disable the chat send button while a proposal is awaiting approval, and
      re-enable it after approve or reject. Prevents accidental messages
      during pending changes. Addresses issue #912.
      
      - **New Features**
      - Track pending changes with isChangesPending based on the last
      assistant message’s approvalState.
      - Disable the send button when a proposal is pending (in addition to the
      existing empty input check).
      - Re-enable after approve/reject by refreshing the proposal and
      messages.
        - Added Playwright e2e tests for both approve and reject flows.
      
      <!-- End of auto-generated description by cubic. -->
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Disable the chat send button when a code proposal is pending approval
      and re-enable after approve/reject; add e2e coverage and update MCP
      flow.
      > 
      > - **Frontend**
      > - `ChatInput.tsx`: Read `messages` from `chatMessagesAtom` and derive
      `disableSendButton` when the last assistant message (matching
      `proposal.messageId`) has no `approvalState` and `proposal.type ===
      "code-proposal"`.
      > - Apply `disableSendButton` to the send button’s `disabled` condition
      (in addition to empty input/attachments).
      >   - Ensure proposal/messages refresh after approve/reject.
      > - **Tests**
      > - Add Playwright tests `e2e-tests/chat_input.spec.ts` to verify send
      button disabled during pending proposal and re-enabled after approve or
      reject.
      > - Update `e2e-tests/mcp.spec.ts` to click "Approve" after granting
      consent.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      b9b47bd6f547449cc5cf1d39a00e4e7fb5de1bcd. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      ---------
      Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
      582793eb
  6. 25 9月, 2025 1 次提交
    • Will Chen's avatar
      Support web search (#1370) · d96e95c1
      Will Chen 提交于
      <!-- 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. -->
      d96e95c1
  7. 24 9月, 2025 1 次提交
    • Will Chen's avatar
      Update setup banner: navigate to settings#ai & Dyad Pro option (#1361) · 42a406e3
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Updated the setup banner to navigate to Settings and auto-scroll to the
      AI Providers section, and added a Dyad Pro setup option to streamline
      onboarding.
      
      - **New Features**
        - Added “Setup Dyad Pro” card with logo; opens Dyad Pro signup.
      - “Other providers” now jumps to Settings → Provider section with smooth
      scroll.
        - OpenRouter setup card updated with new teal styling.
      
      - **Refactors**
      - Introduced useScrollAndNavigateTo hook to navigate, scroll, and set
      active section.
      - Centralized active section state via activeSettingsSectionAtom (used
      by SettingsList).
        - SetupProviderCard supports a new “dyad” variant styling.
      
      <!-- End of auto-generated description by cubic. -->
      42a406e3
  8. 23 9月, 2025 2 次提交
    • Adeniji Adekunle James's avatar
      feat: add copy functionality for ai responses with Dyad tag formatting (#1290) (#1315) · 2597d505
      Adeniji Adekunle James 提交于
      ## 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. -->
      2597d505
    • Will Chen's avatar
      Fix MCP & title bar (#1348) · 9cca1d2a
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Fixes MCP handoff by detecting an edit-code tool call and stopping
      generation. Simplifies the title bar credit tooltip; also blocks dyad-*
      tags in the system prompt and updates tests.
      
      - **Bug Fixes**
      - Stop generation on edit-code via hasToolCall; add a no-op edit-code
      tool to signal handoff.
        - Combine tool-call stop with existing step limit for reliability.
        - Forbid <dyad-*> tags in the system prompt to prevent misuse.
      - Remove credit usage/reset details from the title bar tooltip; keep the
      delay note.
        - Update e2e snapshot to reflect the new prompt rule.
      
      <!-- End of auto-generated description by cubic. -->
      9cca1d2a
  9. 20 9月, 2025 4 次提交
    • Will Chen's avatar
      Fix package lock (#1335) · a0606996
      Will Chen 提交于
      #1028 caused some issues in the package-lock.json. This should fix that
      a0606996
    • Will Chen's avatar
      bump to v0.22 beta 1 (#1334) · 7949ef7c
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Bump version from 0.21.0 to 0.22.0-beta.1 to prepare the v0.22 beta
      release. Enables packaging and distribution under the new beta tag.
      
      <!-- End of auto-generated description by cubic. -->
      7949ef7c
    • Will Chen's avatar
      Add MCP support (#1028) · 6d3c397d
      Will Chen 提交于
      6d3c397d
    • Will Chen's avatar
      fix pro banners (#1331) · 7b160b7d
      Will Chen 提交于
      7b160b7d
  10. 19 9月, 2025 1 次提交
    • Adeniji Adekunle James's avatar
      fix(ui): add scrolling to model dropdown when list is long (#1279) (#1323) · de2cc2b4
      Adeniji Adekunle James 提交于
      ## Problem
      The model selection dropdown doesn't scroll when there are many models
      available, causing the list to extend beyond the viewport and become
      unusable.
      
      ## Solution
      - Added `max-h-100 overflow-y-auto` classes to the DropdownMenuContent
      
      This closes (#1279)
      
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Adds vertical scrolling to the model selection dropdown so long lists
      don’t overflow the viewport. Applies max height and overflow-y auto to
      DropdownMenuSubContent across provider, Ollama, and LM Studio menus to
      keep the list usable.
      
      <!-- End of auto-generated description by cubic. -->
      de2cc2b4
  11. 18 9月, 2025 1 次提交
    • Mohamed Aziz Mejri's avatar
      Implementing app search feature (#1302) · a547aa3a
      Mohamed Aziz Mejri 提交于
      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. -->
      a547aa3a
  12. 17 9月, 2025 3 次提交
    • Adeniji Adekunle James's avatar
      Feat: Add inline code editor (#1156) (#1232) (#1220) (#1235) · 2edd122d
      Adeniji Adekunle James 提交于
      ## 🚀 Feature: Inline Code Editor
      
      This PR adds a comprehensive inline code editing experience to the
      DyadWrite component.
      
      ###  What's New
      
      - **Inline Monaco Editor**: Edit code directly within the component
      using Monaco Editor
      - **Cancel/Revert**: Cancel changes and revert to original code state
      - **Language Detection**: Automatic syntax highlighting based on file
      extensions
      - **Theme Support**: Proper dark/light mode theming integration
      
      
      
      https://github.com/user-attachments/assets/c44ab622-6b86-403c-904d-3f327f9719e8
      
      
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Adds an inline Monaco-based code editor to DyadWrite so users can edit
      code blocks in place, then save or cancel changes. Saves stream edits
      back to the chat as a dyad-edit block.
      
      - **New Features**
      - Inline editor with Edit, Save, and Cancel; preserves original code and
      auto-expands when editing.
        - Language detection from file extension and dark/light theme support.
      - Save streams edits via useStreamChat as <dyad-edit
      path="...">...</dyad-edit> tied to the selected chat.
      - Non-edit view still uses CodeHighlight; visibility toggle and
      in-progress state respected.
      
      - **Refactors**
      - ChatMessage now uses DyadMarkdownParser instead of
      VanillaMarkdownParser.
      
      <!-- End of auto-generated description by cubic. -->
      2edd122d
    • Adeniji Adekunle James's avatar
      feat: add edit functionality for custom AI providers (#1232) (#1171) (#1250) · 8c3fdb0a
      Adeniji Adekunle James 提交于
      ## Summary
      Adds the ability to edit existing custom AI providers through the
      settings UI.
      
      ## Changes Made
      - **UI Changes:**
        - Added "Edit Provider" button to custom provider dropdown menu
        - Modified `CreateCustomProviderDialog` to support edit mode
      
      
      - **Backend Changes:**
      - Implemented `editCustomLanguageModelProvider` handler in
      `language_model_handlers.ts`
        - Added corresponding IPC client method
      - Database transaction ensures atomicity when updating provider and
      associated models
      
      
      - **Testing:**
        - Added comprehensive e2e test covering edit functionality
        - Tests verify form pre-population, field updates, and UI persistence
        
        
      
      
      https://github.com/user-attachments/assets/e8c8600e-4fb7-4816-be95-993ede1224d4
      
      
      
      ## Closes
      Fixes #1232 and #1171
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Adds edit support for custom language model providers in Settings. Users
      can update provider ID, name, API base URL, and API key env var, with
      safe backend updates that also retarget associated models if the ID
      changes.
      
      - New Features
        - Added “Edit Provider” option in the custom provider menu.
      - Dialog supports edit mode with pre-filled fields, unified loading
      state, and update button text.
      - New IPC handler to edit providers with validation and a transaction;
      updates linked models when IDs change.
      - IPC client and preload channel updated; React hook exposes
      editProvider mutation with cache invalidation.
        - Added e2e test covering the full edit flow.
      
      <!-- End of auto-generated description by cubic. -->
      8c3fdb0a
    • Will Chen's avatar
      add pro banners (#1269) · decd05e7
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Adds rotating Pro banners on the home page to promote Dyad Pro (AI
      access, Smart Context savings, Turbo speed). Also tightens the home
      layout and centers the setup headline.
      
      - New Features
      - Added ProBanner with three variants (AI Access, Smart Context, Turbo).
      One shows at random and links to dyad.sh/pro with UTM tags.
      - Banners are hidden when Pro is enabled or the user has a budget
      (settings.enableDyadPro or userBudget).
      - Added OpenAI, Google, and Anthropic logo assets for the AI Access
      banner.
      - Home updates: show 3 inspiration prompts (was 5), center and constrain
      layout, and render ProBanner below content.
        - SetupBanner heading is centered and slightly smaller (text-5xl).
      
      <!-- End of auto-generated description by cubic. -->
      decd05e7
  13. 16 9月, 2025 1 次提交
  14. 12 9月, 2025 1 次提交
  15. 11 9月, 2025 5 次提交
    • Will Chen's avatar
      Bump to 0.21.0-beta.1 (#1251) · 6e7e86bb
      Will Chen 提交于
      6e7e86bb
    • Will Chen's avatar
      Turbo models (#1249) · a8e9caf7
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Adds “Dyad Turbo” models for Pro users and centralizes model/provider
      constants. Pro users can pick fast, cost‑effective models directly from
      the ModelPicker, with clearer labels and gating.
      
      - **New Features**
      - Added Dyad Turbo provider in ModelPicker with Qwen3 Coder and Kimi K2
      (Pro only).
      - Turbo options are hidden for non‑Pro users; “Pro only” badge shown
      where applicable.
      - “Smart Auto” label now applies only to the Auto model to avoid
      confusion.
      
      - **Refactors**
      - Moved all model/provider constants into language_model_constants.ts
      and updated imports (helpers, client, thinking utils).
      
      <!-- End of auto-generated description by cubic. -->
      a8e9caf7
    • Will Chen's avatar
      Fix Azure e2e test so it doesn't leak (#1248) · 9bc5e138
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Scoped Azure e2e test env setup to prevent leaking variables across
      tests. Added testWithConfigSkipIfWindows and moved Azure env vars into a
      per-test preLaunchHook; the Azure test now skips on Windows.
      
      <!-- End of auto-generated description by cubic. -->
      9bc5e138
    • Will Chen's avatar
      More free models (#1244) · 72acb31d
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Adds support for free OpenRouter models and a new “Free (OpenRouter)”
      auto option that fails over across free models for reliability. Improves
      setup flow and UI with provider cards, a “Free” price badge, and an
      OpenRouter setup prompt in chat.
      
      - **New Features**
      - Added OpenRouter free models: Qwen3 Coder (free), DeepSeek v3 (free),
      DeepSeek v3.1 (free), marked with dollarSigns=0 and a “Free” badge.
      - New auto model: “Free (OpenRouter)” that uses a fallback client to
      cycle through free models with smart retry on transient errors.
      - New SetupProviderCard component and updated SetupBanner with dedicated
      Google and OpenRouter setup cards.
      - Chat shows an OpenRouter setup prompt when “Free (OpenRouter)” is
      selected and OpenRouter isn’t configured.
      - New PriceBadge component in ModelPicker to display “Free” or price
      tier.
      - E2E: added setup flow test and option to show the setup screen in
      tests.
      - Model updates: added DeepSeek v3.1, updated Kimi K2 to kimi-k2-0905,
      migrated providers to LanguageModelV2.
      
      <!-- End of auto-generated description by cubic. -->
      72acb31d
    • Will Chen's avatar
      Add OpenRouter to setup banner (#1242) · 7150082f
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Added OpenRouter as a first-class option in the setup banner and
      introduced a reusable provider card component. This streamlines provider
      selection and adds E2E coverage for the setup flow.
      
      - **New Features**
      - Added SetupProviderCard and used it for Google and OpenRouter in
      SetupBanner.
      - Clicking Google or OpenRouter routes to the correct provider settings
      and logs PostHog events.
        - Kept “Other providers” link to Settings.
      - Added setup.spec.ts E2E test to verify Google, OpenRouter, and Other
      navigation; introduced test config flag showSetupScreen to control the
      OPENAI_API_KEY shortcut.
      
      <!-- End of auto-generated description by cubic. -->
      7150082f
  16. 10 9月, 2025 2 次提交
    • Will Chen's avatar
      include php (#1234) · b9672004
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Added .php to ALLOWED_EXTENSIONS so codebase scanning and related
      features include PHP files.
      
      <!-- End of auto-generated description by cubic. -->
      
      Fixes #1221
      b9672004
    • Will Chen's avatar
      Support 1M tokens for anthropic (drive-by: make aws bedrock secondary… (#1233) · 74edefcb
      Will Chen 提交于
      … provider)
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Enables 1M-token context for Anthropic Claude 4 Sonnet and marks AWS
      Bedrock as a secondary provider. Adds the required Anthropic beta header
      and updates model metadata and pricing indicator.
      
      - **New Features**
      - Send header anthropic-beta: context-1m-2025-08-07 when using the
      Anthropic provider.
      - Update Claude 4 Sonnet configs: contextWindow to 1,000,000; add cost
      warning; increase pricing tier to 5 (applies to Anthropic and Bedrock
      model IDs).
        - Set AWS Bedrock as a secondary provider.
      
      <!-- End of auto-generated description by cubic. -->
      74edefcb
  17. 09 9月, 2025 6 次提交
    • Will Chen's avatar
      Chat search (#1224) · 7818f295
      Will Chen 提交于
      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: 's avatarEvans Obeng <iamevansobeng@outlook.com>
      Co-authored-by: 's avatarEvans Obeng <60653146+iamevansobeng@users.noreply.github.com>
      7818f295
    • Will Chen's avatar
      Fix package-lock.json & merges (#1227) · d2149765
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Regenerated package-lock.json to fix inconsistencies and align with
      package.json. This restores reproducible installs locally and in CI.
      
      - **Migration**
        - Run npm ci to install with the updated lockfile.
        - If install issues persist, delete node_modules and retry.
      
      <!-- End of auto-generated description by cubic. -->
      d2149765
    • Adeniji Adekunle James's avatar
      feat: add xAI (Grok) as AI provider (#1209) · f8ec10ec
      Adeniji Adekunle James 提交于
      # 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: 's avatarWill Chen <willchen90@gmail.com>
      f8ec10ec
    • Samrat Jha's avatar
      Add support for Amazon Bedrock provider (#1185) · 938595aa
      Samrat Jha 提交于
      - 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: 's avatarSamrat Jha <samratj@amazon.com>
      Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
      938595aa
    • Md Rakibul Islam Rocky's avatar
      Add Google Vertex AI provider (#1163) · 4db6d63b
      Md Rakibul Islam Rocky 提交于
      # Summary
      
      * Adds first-class **Google Vertex AI provider** using
      `@ai-sdk/google-vertex`.
      * Supports **Gemini 2.5** models and partner **MaaS (Model Garden)**
      models via full publisher IDs.
      * New **Vertex-specific settings UI** for Project, Location, and Service
      Account JSON.
      * Implements a **“thinking” toggle** for Gemini 2.5 Flash
      
        * Pro: always on
        * Flash: toggleable
        * Flash Lite: none
      * Fixes *“AI not found”* for Vertex built-ins by mapping to
      `publishers/google` paths.
      * Hardens **cross-platform file ops** and ensures all tests pass.
      
      ---
      
      # What’s New
      
      ### Vertex AI Provider
      
      * Uses `@ai-sdk/google-vertex` with `googleAuthOptions.credentials` from
      pasted Service Account JSON.
      * Configurable **project** and **location**.
      * Base URL → `/projects/{project}/locations/{location}`
      
        * Built-ins: `publishers/google/models/<id>`
        * Partner MaaS: `publishers/<partner>/models/...`
      
      ### Built-in Vertex Models
      
      * `gemini-2.5-pro`
      * `gemini-2.5-flash`
      * `gemini-2.5-flash-lite`
      
      ### Thinking Behavior
      
      * Vertex + Google marked as thinking-capable.
      * Pro: always thinking
      * Flash: toggle in UI
      * Flash Lite: none
      
      ### Vertex Settings UI
      
      * New **Google Vertex AI panel** for Project ID, Location, Service
      Account JSON.
      * Keys encrypted like other secrets.
      
      ---
      
      # Fixes
      
      * **Model resolution:** built-ins auto-map to
      `publishers/google/models/<id>`.
      * **Partner MaaS support:** full publisher IDs work directly (e.g.
      DeepSeek).
      * **Cross-platform paths:** normalize file ops with `toPosixPath`,
      preserve `safeJoin` semantics.
      
      ---
      
      # Why This Is Better
      
      * Users can select **Vertex alongside other providers**.
      * **More models** available through Model Garden.
      * **Dedicated setup UI** reduces misconfig.
      * **Thinking toggle** gives control over cost vs. reasoning depth.
      
      ---
      
      # Files Changed
      
      * **Provider & Models**: `language_model_helpers.ts`,
      `get_model_client.ts`
      * **Streaming**: `chat_stream_handlers.ts`
      * **Schemas & Encryption**: `schemas.ts`, `settings.ts`
      * **Settings UI**: `VertexConfiguration.tsx`, `ApiKeyConfiguration.tsx`
      * **Models UI**: `ModelsSection.tsx` (Flash toggle)
      * **Setup Detection**: `useLanguageModelProviders.ts`
      * **Path Utils**: `path_utils.ts`, `response_processor.ts`
      * **Deps**: `package.json` → `@ai-sdk/google-vertex@3.0.16`
      
      ---
      
      # Tests & Validation
      
      * **TypeScript**: `npm run ts` → 
      * **Lint**: `npm run lint` → 
      * **Unit tests**: `npm test` →  231 passed, 0 failed
      
      ---
      
      # Migration / Notes
      
      * No breaking changes.
      * For Vertex usage:
      
        * Ensure Vertex AI API is enabled.
        * Service Account needs `roles/aiplatform.user`.
        * Region must support model (e.g. `us-central1`).
      * Thinking toggle currently affects **only** Gemini 2.5 Flash.
      
      ---
      
      # Manual QA
      
      1. Configure Vertex with Project/Location/Service Account JSON.
      2. Test built-ins:
      
         * `gemini-2.5-pro`
         * `gemini-2.5-flash` (toggle on/off)
         * `gemini-2.5-flash-lite`
      3. Test MaaS partner model (e.g., DeepSeek) via full publisher ID.
      4. Verify other providers remain unaffected.
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Adds a first-class Google Vertex AI provider with Gemini 2.5 models, a
      Vertex settings panel, and a “thinking” toggle for Gemini 2.5 Flash.
      Also fixes model resolution for Vertex and hardens cross-platform file
      operations.
      
      - **New Features**
      - Vertex AI provider via @ai-sdk/google-vertex with project, location,
      and service account JSON.
      - Built-in models: gemini-2.5-pro, gemini-2.5-flash,
      gemini-2.5-flash-lite.
      - “Thinking” support: Pro always on; Flash toggle in Models UI; Flash
      Lite none.
      - MaaS partners supported via full publisher paths (e.g.,
      publishers/<partner>/models/...).
        - Vertex settings UI with encrypted service account key storage.
      
      - **Bug Fixes**
        - Built-in Vertex models auto-map to publishers/google/models/<id>.
        - Consistent file ops across platforms using toPosixPath.
      - Vertex readiness detection requires project/location/service account
      JSON.
      - Streaming “thinking” behavior respects Vertex Flash toggle and Pro
      always-on.
      
      <!-- End of auto-generated description by cubic. -->
      
      ---------
      Co-authored-by: 's avatarMd Rakibul Islam Rocky <mdrirocky08@gmail.com>
      Co-authored-by: 's avatargraphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
      Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
      4db6d63b
    • Will Chen's avatar
      bump to v0.20 stable (#1223) · e962964a
      Will Chen 提交于
      e962964a