1. 21 10月, 2025 2 次提交
    • Will Chen's avatar
      glm 4.6 (#1559) · 431b247e
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Adds `z-ai/glm-4.6` (GLM 4.6) to OpenRouter model options.
      > 
      > - **Models**:
      > - **OpenRouter**: Add `z-ai/glm-4.6` ("GLM 4.6") with
      `maxOutputTokens: 32_000`, `contextWindow: 200_000`, `temperature: 0`,
      `dollarSigns: 2`.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      5e434b7d049c839504c726b096bf5fa4c22f162b. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      431b247e
    • Will Chen's avatar
      Tweak setup banner (#1567) · b60b0a09
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Refines the setup banner UI (copy, layout, and badges), updates
      SetupProviderCard to support a chip and typed subtitle, and adjusts e2e
      to new OpenRouter button label.
      > 
      > - **UI/Setup Banner (`src/components/SetupBanner.tsx`)**:
      >   - Rename step title to `2. Setup AI Access` and update helper copy.
      > - Layout: show `google` and `openrouter` cards side-by-side; increase
      title font sizes.
      > - Add badges: `chip={Free}` on Google/OpenRouter; `chip={Recommended}`
      on Dyad Pro.
      > - Simplify Dyad Pro `subtitle` to a string; remove `GlobeIcon` usage.
      > - "Other providers" card: tweak heading size and copy (remove
      `OpenRouter`).
      > - `OpenRouterSetupBanner`: use `chip` for "Free models available"
      instead of `subtitle`.
      > - **Component API (`src/components/SetupProviderCard.tsx`)**:
      >   - Add optional `chip` prop and render top-right badge.
      > - Change `subtitle` type to `string`; adjust styles (relative
      container, font sizes).
      > - **E2E (`e2e-tests/setup.spec.ts`)**:
      > - Update button selector to `Setup OpenRouter API Key` (remove
      `Free`).
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      991807b2edd4baa7a8ec7f4d47f867ba058ebf36. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      b60b0a09
  2. 17 10月, 2025 4 次提交
    • Will Chen's avatar
      Selected component engine (#1562) · d571d303
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Enable the Dyad Engine to prioritize a user-selected component by
      flagging the file as focused and sending codebase files per request.
      Keeps full context when the engine is on; falls back to path-scoped
      context when it’s off.
      
      - **New Features**
      - Mark the selected component file as focused when the engine is
      enabled.
      - Send codebase files to the engine via dyadFiles, applied to
      dyad_options unless disabled.
      - Maintain full chatContext with engine; restrict to the selected file
      path only when engine is off.
      
      - **Refactors**
      - Removed files from getModelClient and provider APIs; file transport
      moved into request payload.
      - Stream handlers now pass files to model calls and include
      dyadDisableFiles/dyadFiles in the request.
        - Added focused flag to CodebaseFile.
      
      <!-- End of auto-generated description by cubic. -->
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Sends codebase files per request to the Dyad Engine, focuses the
      selected component when smart context is enabled, and refactors model
      client/provider APIs to remove file parameters.
      > 
      > - **Engine integration**:
      > - Send codebase files per request via `dyadFiles` in provider options;
      propagate through `simpleStreamText` and `dyad-engine` options.
      > - Add `isSmartContextEnabled` from `get_model_client` and gate context
      behavior accordingly.
      > - **Selected component focus**:
      > - When smart context is on and a component is selected, mark its file
      as `focused` in `CodebaseFile` and avoid broad smart context includes;
      allow on-demand reads.
      > - When smart context is off, restrict `chatContext` to the selected
      file path.
      > - **Refactors**:
      > - Remove `files` parameter from `getModelClient` and Dyad provider;
      move file transport into request body.
      > - Update `llm_engine_provider` to read `dyadFiles` from request and
      populate `dyad_options.files` unless `dyadDisableFiles`.
      > - Extend `CodebaseFile` with optional `focused` flag; thread `files`
      through `chat_stream_handlers` calls.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      022b26d0197ab5b5d4f5b589f45bc230de36e0e5. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      d571d303
    • Will Chen's avatar
      glm 4.6 (#1557) · eae22bed
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      5e434b7d049c839504c726b096bf5fa4c22f162b. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      eae22bed
    • Will Chen's avatar
      Bump to 0.25.0-beta.1 (#1552) · 146e083d
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      017c00d0737f024182557e09bcd4df70fcd0fd2c. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      146e083d
    • Will Chen's avatar
      Support deep linking MCP (#1550) · 744e413e
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Adds support for `dyad://add-mcp-server` deep links that prefill MCP
      server settings, and updates deep link context/consumers to use
      timestamp-based effects and clearing to avoid repeat handling.
      > 
      > - **Deep Link Infrastructure**:
      > - Introduce `src/ipc/deep_link_data.ts` with zod schema
      (`AddMcpServerConfigSchema`) and typed `DeepLinkData`.
      > - Extend `DeepLinkContext` with `clearLastDeepLink`, timestamped
      events, and auto-navigate to `/settings#tools-mcp` on `add-mcp-server`.
      > - **Main Process**:
      >   - Handle `dyad://add-mcp-server?name=...&config=...`:
      > - Base64-decode and validate `config`; send `deep-link-received` with
      typed payload or show error.
      > - **Settings UI (MCP)**:
      > - In `ToolsMcpSettings`, prefill form from `add-mcp-server` payload
      (supports `stdio` command/args and `http` url) and show info toast;
      clear deep link after handling.
      > - **Connectors/UI**:
      >   - Update `TitleBar`, `NeonConnector`, `SupabaseConnector` to:
      > - Depend on `lastDeepLink?.timestamp` and call `clearLastDeepLink()`
      after handling (`dyad-pro-return`, `neon-oauth-return`,
      `supabase-oauth-return`).
      > - **IPC Renderer**:
      >   - Use centralized `DeepLinkData` types in `ipc_client.ts`.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      294a9c6f38442241b54e9bcbe19a7a772d338ee0. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      744e413e
  3. 15 10月, 2025 3 次提交
    • Adeniji Adekunle James's avatar
      UI improvement: make edit and delete buttons visible for custom AI provider (#1535) · d76f4284
      Adeniji Adekunle James 提交于
      - Move edit and delete actions from hidden popover to visible buttons
      - Restructure card layout: status badge and action buttons at top, title
      below
      
      <img width="1029" height="414" alt="image"
      src="https://github.com/user-attachments/assets/60497f87-254e-4f4d-9f8c-ea73b8f2526e"
      />
      
      closes #1358
      
      
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Made edit and delete always visible on custom provider cards and
      restructured the card layout for clearer actions and status. Improves
      discoverability and aligns with #1358.
      
      - **Refactors**
      - Replaced popover menu with visible Edit and Delete icon buttons
      (data-testid: edit-custom-provider, delete-custom-provider).
      - Moved status badge and actions to the top; title now sits below;
      badges don’t wrap.
      - Updated e2e tests to use new buttons and adjusted selectors for the
      updated heading.
      
      <!-- End of auto-generated description by cubic. -->
      d76f4284
    • Will Chen's avatar
      dyad pro: do not show upgrade banner (#1537) · 0c4aef6f
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Hide the “Upgrade to Dyad Pro” link in `ChatErrorBox` when
      `isDyadProEnabled` is true.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      424cd04f85385f923548b3fc54b4c83625992ade. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      0c4aef6f
    • Will Chen's avatar
      Support Supabase branches (#1394) · 133ca576
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Adds Supabase database branch selection per app, with a new schema field
      and UI to choose a branch after connecting a project. Resets branch when
      changing or disconnecting the project to keep state consistent.
      
      - **New Features**
        - Added apps.supabase_branch_id column.
      - Branch dropdown in SupabaseConnector shown after a project is
      connected; selection persists and triggers app refresh.
      - New state and hooks: supabaseBranchesAtom, loadBranches(projectId),
      setAppBranch(branchId).
      - IPC endpoints: supabase:list-branches and supabase:set-app-branch;
      setting/unsetting project also clears the branch.
      
      - **Migration**
      - Apply drizzle migration 0013_supabase_branch.sql to add the
      supabase_branch_id column (defaults to null).
      
      <!-- End of auto-generated description by cubic. -->
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Adds Supabase database branch selection per app, including parent
      project tracking, new IPC endpoints, UI dropdown, and an accompanying DB
      migration with e2e tests.
      > 
      > - **Database**:
      > - Add `apps.supabase_parent_project_id` via migration
      `drizzle/0015_complete_old_lace.sql`; snapshot and journal updated.
      > - **IPC/Main**:
      > - New `supabase:list-branches` handler and management client
      `listSupabaseBranches` (real API + test stubs).
      > - Update `supabase:set-app-project` to accept `{ projectId,
      parentProjectId?, appId }`; unset clears both IDs.
      > - `get-app` resolves `supabaseProjectName` using
      `supabase_parent_project_id` when present.
      > - **Types & Client**:
      > - Add `SupabaseBranch`, `SetSupabaseAppProjectParams`, and
      `App.supabaseParentProjectId`; expose `listSupabaseBranches` and updated
      `setSupabaseAppProject` in `ipc_client` and preload whitelist.
      > - **UI/Hooks**:
      > - Supabase UI: branch dropdown in `SupabaseConnector` with
      `loadBranches`, selection persists via updated `setAppProject`.
      > - State: add `supabaseBranchesAtom`; `useSupabase` gets `branches`,
      `loadBranches`, new param shape for `setAppProject`.
      >   - TokenBar/ChatInput: add `data-testid` for token bar and toggle.
      > - **Supabase Context (tests)**:
      > - Test build returns large context for `test-branch-project-id` to
      validate branch selection.
      > - **E2E Tests**:
      > - Add `supabase_branch.spec.ts` and snapshot verifying branch
      selection affects token usage.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      33054278db8396b4371ed6e8224105cb5684b7ac. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      133ca576
  4. 14 10月, 2025 7 次提交
    • Will Chen's avatar
      Electron 38 (#1526) · 0a1ef3cc
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      48563edb9143b6a53957e7ac8901fac3408e444c. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      0a1ef3cc
    • Will Chen's avatar
      always use engine (#1525) · 4926a01a
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Always route Dyad Pro through the Dyad engine (no gateway), simplify
      logging/flags, and remove DYAD_GATEWAY usage and staging gateway script.
      > 
      > - **Engine/Model client (`src/ipc/utils/get_model_client.ts`)**:
      > - Always use `createDyadEngine` when Dyad Pro is enabled; remove
      gateway fallback and `DYAD_GATEWAY_URL` usage.
      > - Simplify logs to engine-only; drop conditional gateway/engine
      logging.
      > - Always set `isEngineEnabled: true`; pass `{ files }` to the provider
      unconditionally; strip `:free` from model names.
      > - **Scripts (`package.json`)**:
      >   - Remove `staging:gateway` script.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      5fdbbb703c47de4623ceeb82e6678ace34dc268e. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      4926a01a
    • Adeniji Adekunle James's avatar
      GitHub Import Feature: Import repositories/projects from GitHub (#1424) (#1454) · 348521ce
      Adeniji Adekunle James 提交于
      ## Summary
      Adds the ability to import GitHub repositories directly into Dyad from
      the home screen, complementing the existing local folder import feature.
      - GitHub Import Modal: New modal accessible from home screen via "Import
      from Github" button with two Import methods
      - Select project from GitHub repositories list
      - Clone from any GitHub URL
      - Advanced Options: Optional custom install/start commands (defaults to
      project's package.json scripts)
      - Auto AI_RULES Generation: Automatically generates AI_RULES.md if not
      present in imported repo
      
      closes #1424
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Adds a GitHub import flow from the home screen so users can clone repos
      via their list or any URL, with optional install/start commands and
      automatic AI_RULES.md generation. Addresses Linear #1424 by enabling
      seamless project setup from GitHub.
      
      - **New Features**
        - Import modal with two tabs: Your Repositories and From URL.
      - Advanced options for install/start commands with validation; defaults
      used when both are empty.
      - After cloning, navigate to chat and auto-generate AI_RULES.md if
      missing.
      - New IPC handler github:clone-repo-from-url with token auth support,
      plus IpcClient method and preload channel.
      - E2E tests cover modal open, auth, import via URL/repo list, and
      advanced options.
      
      - **Dependencies**
        - Added @radix-ui/react-tabs for the modal tab UI.
      
      <!-- End of auto-generated description by cubic. -->
      348521ce
    • Will Chen's avatar
      Improve links/buttons for AI errors (#1524) · 7acbe73c
      Will Chen 提交于
      drive-by: update links for pro banners
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Revamps ChatErrorBox with styled CTA buttons, UTM-tracked links,
      broader error matching, and adds default help CTAs; updates Pro banners
      to point to /pro URLs.
      > 
      > - **Chat**:
      > - **Error handling/UI**: Expands rate-limit matching to include
      `"Provider returned error"` and appends default CTAs on generic errors.
      > - **CTAs**: Replaces underlined links with styled buttons via
      `ExternalLink` (supports `primary|secondary` variants and icons), and
      adds upgrade/docs buttons across error states.
      > - **Links**: Adds UTM parameters to Pro/Docs links; updates exceeded
      budget CTA to `"Reload or upgrade your subscription"` with new
      subscription URL.
      > - **Pro Banners**:
      > - Adjusts banner click-through URLs in `AiAccessBanner`,
      `SmartContextBanner`, and `TurboBanner` to `https://www.dyad.sh/pro?...`
      (removes `#ai`).
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      2111954ac9a98dd66f5b3b9e628270ac19713a2d. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      7acbe73c
    • Will Chen's avatar
      Copy request id (for Dyad Pro) (#1523) · ffa4c3ad
      Will Chen 提交于
      Based on #1488 by [vedantbhatotia](https://github.com/vedantbhatotia)
      
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      cc504f6d56ff72407dd5d0135befbf5d9cc695b5. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      ---------
      Co-authored-by: 's avatarvedantbhatotia <vedantbhatotia@gmail.com>
      ffa4c3ad
    • Mohamed Aziz Mejri's avatar
      feat: add spell check suggestions to context menu (#1509) · e99e19e8
      Mohamed Aziz Mejri 提交于
      This PR implements spelling correction feature requested in issue #271 
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Add spell check suggestions to the context menu in editable fields.
      Right-clicking a misspelled word shows up to five suggestions for
      one-click replacement.
      
      - **New Features**
      - Shows a “Correct "<misspelled>"” submenu when a misspelled word is
      detected.
      - Provides up to 5 dictionary suggestions; clicking replaces the word
      via replaceMisspelling.
      - Keeps standard edit actions and tidies menu order with separators;
      logs errors on failure.
      
      <!-- End of auto-generated description by cubic. -->
      e99e19e8
    • Will Chen's avatar
      0.24.0 stable (#1522) · fe801462
      Will Chen 提交于
      fe801462
  5. 10 10月, 2025 9 次提交
    • Will Chen's avatar
      Bump to v0.24.0-beta.1 (#1495) · 6a5958f5
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Update package.json version from 0.23.0-beta.1 to 0.24.0-beta.1 to
      prepare the 0.24 beta release. This unblocks tagging and publishing for
      the bump-beta-0-24 branch.
      
      <!-- End of auto-generated description by cubic. -->
      6a5958f5
    • Will Chen's avatar
      Make provider flow more obvious (#1493) · 185f0927
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Improved the provider setup flow by adding a clipboard paste-and-save
      action and a clearer “Get API key” prompt when a provider isn’t
      configured.
      
      - **New Features**
      - Added a clipboard “Paste and Save” button with tooltip and error
      handling.
      - Highlighted the “Get API key” button with a popover prompt and visual
      emphasis when not configured.
      
      - **Refactors**
      - Changed onSaveKey to accept the key value (string) and updated usage
      to save the provided value.
      
      <!-- End of auto-generated description by cubic. -->
      185f0927
    • Will Chen's avatar
      add buttons for dyad pro (#1494) · 92b65741
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Added Dyad Pro access buttons in ProBanner to manage a subscription or
      add an existing key. Show the manage button when Dyad Pro is enabled or
      a user budget exists; otherwise show the setup button, both linking to
      academy.dyad.sh.
      
      <!-- End of auto-generated description by cubic. -->
      92b65741
    • Will Chen's avatar
      Context menu (right-click copy, paste, etc.) (#1492) · 2def841f
      Will Chen 提交于
      2def841f
    • Will Chen's avatar
      Reset scroll when navigating to provider (#1489) · 4180b5b6
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Resets main content scroll to top when switching providers by adding a
      container id and scrolling it on provider change.
      > 
      > - **Frontend**:
      > - **Layout**: Add `id="layout-main-content-container"` to the main
      content wrapper in `src/app/layout.tsx`.
      > - **Provider Settings**: In `ProviderSettingsPage.tsx`, add an effect
      to `scrollTo(0, 0)` on `#layout-main-content-container` when
      `providerData` changes, resetting scroll on navigation.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      520758a3cf45f8438bc5089c3c427176eeefb306. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      4180b5b6
    • Will Chen's avatar
      Allow passthrough for provider schemas (#1487) · e318ec25
      Will Chen 提交于
      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 -->
      e318ec25
    • Will Chen's avatar
      Show onboarding banner to link to YT video & do not show release note on first-time (#1490) · 916d6fdb
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      
      ## Summary by cubic
      Adds an onboarding banner in Setup that links to a 3-minute YouTube
      intro and dismisses after click. Also avoids showing release notes on a
      user’s first launch.
      
      - **New Features**
      - Added OnboardingBanner component with YouTube thumbnail and play icon.
        - Opens the video via IpcClient and hides the banner after click.
        - Integrated into SetupBanner with local visibility state.
      
      - **Bug Fixes**
        - Don’t show release notes on first run to prevent spam.
      
      <!-- End of auto-generated description by cubic. -->
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Adds a dismissible onboarding banner linking to a YouTube intro and
      changes release notes to appear only on app updates, not first run.
      > 
      > - **UI/Onboarding**:
      > - **`src/components/home/OnboardingBanner.tsx`**: New banner component
      with YouTube thumbnail/play icon; opens intro video via
      `IpcClient.openExternalUrl`; hides itself on click.
      > - **`src/components/SetupBanner.tsx`**: Integrates `OnboardingBanner`
      with `isOnboardingVisible` state; tweaks header typography
      (`font-medium`).
      > - **Release Notes Behavior**:
      > - **`src/pages/home.tsx`**: Only shows release notes when upgrading
      (checks existing `settings.lastShownReleaseNotesVersion` before opening
      modal); preserves themed URL handling.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      832e70f87b3b6a7e8b8b921fe8c6ceb15198cce0. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      916d6fdb
    • Will Chen's avatar
      Add scroll to bottom button (#1484) · 83126a7e
      Will Chen 提交于
      Based on #1425 
      
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Adds a floating scroll-to-bottom button and refines scroll/auto-scroll
      behavior with layout tweaks to support an overlay.
      > 
      > - **Chat UI**:
      > - **Scroll-to-bottom button**: Adds floating button in `ChatPanel`
      (uses `Button` and `ArrowDown`) that appears when scrolled away and
      scrolls smoothly to the latest message.
      > - **Scroll logic**: Introduces `getDistanceFromBottom`,
      `isNearBottom`, and a `scrollAwayThreshold`; auto-scroll now triggers
      only when near the bottom; refactors `handleScroll` with `useCallback`
      and longer idle timeout.
      > - **Layout**: Wraps `MessagesList` in a `relative` container and
      renders a centered absolute button overlay; adjusts `MessagesList` root
      to `absolute inset-0` for proper overlay behavior.
      > - **Misc**: Updates effect dependencies and console log message
      related to streaming/scrolling.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      2e1b844830ae26cfc40840b9e8216fefad112a5e. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      Co-authored-by: 's avatarMd Rakibul Islam Rocky <mdrirocky08@outlook.com>
      83126a7e
    • Will Chen's avatar
      Support concurrent chats (#1478) · 9691c983
      Will Chen 提交于
      Fixes #212 
      
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Add concurrent chat support with per-chat state, chat activity UI, IPC
      per-chat handling, and accompanying tests.
      > 
      > - **Frontend (Chat concurrency)**
      > - Replace global chat atoms with per-chat maps:
      `chatMessagesByIdAtom`, `isStreamingByIdAtom`, `chatErrorByIdAtom`,
      `chatStreamCountByIdAtom`, `recentStreamChatIdsAtom`.
      > - Update `ChatPanel`, `ChatInput`, `MessagesList`,
      `DyadMarkdownParser`, and `useVersions` to read/write per-chat state.
      > - Add `useSelectChat` to centralize selecting/navigating chats; wire
      into `ChatList`.
      > - **UI**
      > - Add chat activity popover: `ChatActivityButton` and list; integrate
      into `preview_panel/ActionHeader` (renamed from `PreviewHeader`) and
      swap in `TitleBar`.
      > - **IPC/Main**
      > - Send error payloads with `chatId` on `chat:response:error`; update
      `ipc_client` to route errors per chat.
      > - Persist streaming partial assistant content periodically; improve
      cancellation/end handling.
      > - Make `FileUploadsState` per-chat (`addFileUpload({chatId,fileId},
      ...)`, `clear(chatId)`, `getFileUploadsForChat(chatId)`); update
      handlers/processors accordingly.
      > - **Testing**
      > - Add e2e `concurrent_chat.spec.ts` and snapshots; extend helpers
      (`snapshotMessages` timeout, chat activity helpers).
      > - Fake LLM server: support `tc=` with options, optional sleep delay to
      simulate concurrency.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      9035f30b73a1f2e5a366a0cac1c63411742b16f3. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      9691c983
  6. 09 10月, 2025 1 次提交
    • Will Chen's avatar
      Fix DyadThink react hook usage (#1467) · 263f4011
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Reorders the collapse useEffect to run before the token-savings early
      return so hooks are always called unconditionally.
      > 
      > - **Frontend**
      >   - **`src/components/chat/DyadThink.tsx`**:
      > - Move collapse `useEffect` above the token-savings early return to
      ensure hooks are called unconditionally.
      > - Maintains collapse behavior when `inProgress` transitions to false.
      >     - `DyadTokenSavings` rendering path remains unchanged.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      a6c7d20ab037043bff26deec1364f2d9008fbf33. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      263f4011
  7. 08 10月, 2025 3 次提交
    • Will Chen's avatar
      fix app width to be 190px (#1465) · 81052104
      Will Chen 提交于
      81052104
    • Will Chen's avatar
      Better spawn error message (#1434) · b1e82ba5
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Structure preview errors with source-aware messaging/UI and enhance
      local/Docker spawn error diagnostics and logging.
      > 
      > - **Frontend**:
      > - **Error model**: Change `previewErrorMessageAtom` from `string` to
      `{ message, source }` to distinguish `preview-app` vs `dyad-app` errors.
      > - **Preview UI**: Update `ErrorBanner` in
      `components/preview_panel/PreviewIframe.tsx` to use `error.message`,
      show an "Internal Dyad error" chip for `dyad-app`, conditional tip text,
      and hide AI fix for non-`preview-app` errors; use `cn` helper.
      > - **Error propagation**: Wrap iframe and build errors via
      `setErrorMessage({ message, source: "preview-app" })`; adjust AI prompt
      to use `errorMessage.message`.
      > - **Hooks**:
      > - `useRunApp`: On run/stop/restart failures, set `{ message, source:
      "dyad-app" }` in `previewErrorMessageAtom`.
      > - **Backend**:
      > - `ipc/handlers/app_handlers.ts`: Improve spawn failure handling for
      local node and Docker: capture stderr as strings, collect error details
      (`message`, `code`, `errno`, `syscall`, `path`, `spawnargs`), log with
      context, and throw enriched error messages.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      4135b04e19431dd53848c3266e5211e4c9df6aa2. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      ---------
      Co-authored-by: 's avatargraphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
      b1e82ba5
    • Will Chen's avatar
      Max step count is 20 for toolcalls (#1464) · 390d20ae
      Will Chen 提交于
      getting user feedback that the max of 3 is not enough and it's ending
      abruptly
      390d20ae
  8. 07 10月, 2025 2 次提交
    • Adeniji Adekunle James's avatar
      fix: show dyad-command buttons within assistant responses instead of hiding tags (#1421) (#1432) · d83f5fec
      Adeniji Adekunle James 提交于
      ### Problem
      Users were confused because `<dyad-command>` tags were being hidden,
      making it unclear what actions were available.
      
      ### Solution
      Render dyad-command tags as visible buttons, so users can see and
      interact with available commands (e.g., "restart").
      
      Closes #1421
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Show dyad-command tags as visible buttons in assistant responses so
      users can see and trigger actions (e.g., restart). Closes #1421.
      
      - **Bug Fixes**
        - Render dyad-command tags to buttons in DyadMarkdownParser.
        - Export mapActionToButton from ChatInput for reuse.
        - Support id/action/path attributes; safely no-op if parsing fails.
      
      <!-- End of auto-generated description by cubic. -->
      d83f5fec
    • Mohamed Aziz Mejri's avatar
      implementing favorite apps feature (#1410) · 423a95ed
      Mohamed Aziz Mejri 提交于
      This PR implements favorite apps feature and addresses issue #827 
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Adds a favorite apps feature with a star toggle in the sidebar.
      Favorites are grouped separately and persisted, with optimistic UI
      updates and e2e tests.
      
      - **New Features**
      - Added isFavorite to the apps schema and an IPC handler
      (add-to-favorite) to toggle and persist the state.
        - Updated AppList to show “Favorite apps” and “Other apps” sections.
      - Introduced AppItem component with a star button; uses
      useAddAppToFavorite for optimistic updates and toasts.
        - Added Playwright tests to verify favoriting and unfavoriting.
      
      - **Migration**
      - Run DB migrations to add the apps.is_favorite column (defaults to 0).
      
      <!-- End of auto-generated description by cubic. -->
      423a95ed
  9. 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
  10. 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
  11. 02 10月, 2025 1 次提交
  12. 01 10月, 2025 5 次提交
    • 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