1. 29 10月, 2025 2 次提交
    • Will Chen's avatar
      Turbo edits v2 (#1653) · a8f3c973
      Will Chen 提交于
      Fixes #1222 #1646 
      
      TODOs
      - [x] description?
      - [x] collect errors across all files for turbo edits
      - [x] be forgiving around whitespaces
      - [x] write e2e tests
      - [x] do more manual testing across different models
      
      
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Adds Turbo Edits v2 search-replace flow with settings/UI selector,
      parser/renderer, dry-run validation + fallback, proposal integration,
      and comprehensive tests; updates licensing.
      > 
      > - **Engine/Processing**:
      > - Add `dyad-search-replace` end-to-end: parsing
      (`getDyadSearchReplaceTags`), markdown rendering (`DyadSearchReplace`),
      and application (`applySearchReplace`) with dry-run validation and
      fallback to `dyad-write`.
      > - Inject Turbo Edits v2 system prompt; toggle via
      `isTurboEditsV2Enabled`; disable classic lazy edits when v2 is on.
      > - Include search-replace edits in proposals and full-response
      processing.
      > - **Settings/UI**:
      > - Introduce `proLazyEditsMode` (`off`|`v1`|`v2`) and helper selectors;
      update `ProModeSelector` with Turbo Edits and Smart Context selectors
      (`data-testid`s).
      > - **LLM/token flow**:
      > - Construct system prompt conditionally; update token counting and
      chat stream to validate and repair search-replace responses.
      > - **Tests**:
      > - Add unit tests for search-replace processor; e2e tests for Turbo
      Edits v2 and options; fixtures and snapshots.
      > - **Licensing/Docs**:
      > - Add `src/pro/LICENSE` (FSL 1.1 ALv2 future), update root `LICENSE`
      and README license section.
      > - **Tooling**:
      > - Update `.prettierignore`; enhance test helpers (selectors, path
      normalization, snapshot filtering).
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      7aefa02bfae2fe22a25c7d87f3c4c326f820f1e6. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      a8f3c973
    • Will Chen's avatar
      Make action header more horizontally dense (#1629) · 8a3bc538
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Make preview header buttons more horizontally dense by stacking
      label/badge under smaller icons and standardizing icon size.
      > 
      > - **UI (ActionHeader)**:
      >   - **Button layout**:
      > - Replace shared `BUTTON_CLASS_NAME` with inline classes to reduce
      padding, gap, and font size; use `flex-col` for stacked icon/label.
      > - Wrap label and badge in a single `span` for tighter vertical
      grouping.
      >   - **Icons**:
      > - Introduce `iconSize = 15` and apply to `Eye`, `AlertTriangle`,
      `Code`, `Wrench`, `Globe` for consistent sizing.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      9cfe3ba52b79c9176289d077ffcbaf57b1613f44. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      8a3bc538
  2. 25 10月, 2025 3 次提交
    • Olyno's avatar
      fix: unaligned settings (#1618) · f7132d0d
      Olyno 提交于
      # Description
      
      This is a small fix to make the settings aligned with the sidebar. It
      closes #1375
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Aligned the Settings page with the sidebar. The page now sets the active
      section to "general-settings" on mount, so the content matches the
      selected sidebar on first load.
      
      <!-- End of auto-generated description by cubic. -->
      f7132d0d
    • Olyno's avatar
      chore: ignore venv dirs (#1617) · b22928dd
      Olyno 提交于
      # Description
      
      This pull request ignore `venv` directories and closes #1415
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Exclude Python virtual environment directories (.venv, venv) from
      codebase scanning to reduce noise and avoid indexing dependencies. This
      aligns with existing excludes like node_modules and build outputs.
      
      <!-- End of auto-generated description by cubic. -->
      b22928dd
    • Will Chen's avatar
      Inject proxy script in all routes (#1623) · d837abe5
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Broaden injection to extensionless and .html routes, gate by
      Content-Type, and conditionally strip caching/compression headers only
      when injecting.
      > 
      > - **Proxy HTML injection**:
      > - Update `needsInjection(pathname)` to inject for routes without
      extensions and `.html` files (e.g., `/`, `/foo`, `/foo/bar`, `*.html`).
      > - Only request uncompressed content and remove `if-none-match` when
      `needsInjection(target.pathname)` is true.
      > - During upstream response, inject only if `Content-Type` includes
      `text/html`; otherwise pass through without modification.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      2986ceccea64e7881a2197a2a0b202216f21d27d. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      d837abe5
  3. 24 10月, 2025 5 次提交
    • Will Chen's avatar
      Hub issue template (#1622) · ab85c4be
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      b2949af5e7b03ee7a78456840a6296f2d861a5a7. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      ab85c4be
    • Will Chen's avatar
      Skip flaky test dyad write - edit and save flow (#1616) · 8c7745d8
      Will Chen 提交于
      @princeaden1 can you take a look at why this test is flaking often
      later? for now, i think we can just skip it since it's not a super
      critical feature (users can always edit the file using the regular code
      panel)
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      12de571a1a5d2f9c6c98e90ae19fd67a3fb2e6b5. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      8c7745d8
    • Will Chen's avatar
      remove smart auto (#1613) · af58d06a
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Removes Smart Auto labels/tooltip and related checks from the model
      picker, showing standard model names and descriptions only.
      > 
      > - **UI (Model Picker)**: `src/components/ModelPicker.tsx`
      > - Remove Smart Auto-specific labeling and tooltip logic for `auto`
      models.
      >   - Drop "Pro only" badge tied to Smart Auto state.
      > - Always render `model.displayName` and `model.description` without
      Smart Auto overrides.
      > - Remove Smart Auto enablement check previously derived from settings.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      211be087933f3f240a78c017b26a37633f1228d6. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      af58d06a
    • Will Chen's avatar
      v0.26 beta 1 (#1612) · cc52ecae
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Bumps `package.json` version from `0.25.0-beta.1` to `0.26.0-beta.1`.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      6433fcc2777bee825db6e330a0d135e8477d7d8f. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      cc52ecae
    • Will Chen's avatar
      Allow selecting problems (#1568) · 7bed92f7
      Will Chen 提交于
      Fixes #672 
      
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Add selectable problem rows with Select all/Clear all and Fix N
      selected, and update tests to cover selection behavior.
      > 
      > - **UI (Problems panel)**:
      > - Add checkbox selection for each problem row (`ProblemItem`) with row
      click-to-toggle, `data-testid="problem-row"`, and accessibility
      attributes.
      > - Introduce selection state in `_Problems` with auto-select-all on
      report load; provide Select all / Clear all controls.
      > - Change Fix button to operate on selected problems only, showing
      dynamic label `Fix N problem(s)` and disabled when none selected.
      > - Wire `RecheckButton` to clear selection before rechecking; minor
      hover style tweaks; add `Checkbox` component.
      > - **E2E Tests**:
      > - New test: selecting specific problems and fixing only selected; add
      snapshots for prompt content.
      > - Update manual edit tests (React/Vite, Next.js) to assert Fix button
      enabled/disabled and counts; remove old ARIA snapshots.
      >   - Minor import addition for `Timeout` and related expectations.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      8324e26f9d2d265e7e0d1f1b7538e2a8db40f674. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      7bed92f7
  4. 23 10月, 2025 1 次提交
  5. 21 10月, 2025 5 次提交
    • Adeniji Adekunle James's avatar
      feat: allow manual Node.js path configuration (#1577) · b1095b79
      Adeniji Adekunle James 提交于
      Add ability to manually configure Node.js path for users who have
      Node.js
      installed but not in their system PATH.
      
      Features:
      - Browse and select custom Node.js installation folder
      - Visual status indicator showing Node.js version or "Not found"
      - Reset to system default PATH option
      - Manual configuration option in setup banner
      - Real-time Node.js status checking
      
      closes #1050
      
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Adds manual Node.js path configuration so the app works even when Node
      isn’t on PATH, fulfilling #1050. Users can browse to their install,
      reset to default, and see real-time status in Settings and during setup.
      
      - New Features
      - Settings: NodePathSelector to browse a Node.js folder, show
      version/“Not found” status, and reset to system PATH (persists
      customNodePath).
      - Setup banner: manual config flow with a folder picker if Node is
      already installed.
      - IPC: select-node-folder, set-node-path, get-node-path; reloads env and
      prepends custom path to PATH.
      - Real-time Node.js status check with visual indicator (CheckCircle on
      valid).
        - E2E tests for browse, reset, and valid-status display.
      
      <!-- End of auto-generated description by cubic. -->
      b1095b79
    • Will Chen's avatar
      Bump better better-sqlite (#1595) · cc435d1e
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Bumps app to 0.25.0-beta.1 and upgrades better-sqlite3 to 12.4.1 with
      updated engine constraints.
      > 
      > - **Versioning**: Set `package.json` and lockfile version to
      `0.25.0-beta.1`.
      > - **Dependencies**:
      > - Upgrade `better-sqlite3` from `^11.9.1` to `^12.4.1` (lockfile
      resolves to `12.4.1`).
      > - Add/update `better-sqlite3` engine constraints to `node: 20.x ||
      22.x || 23.x || 24.x`.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      e45156ac3a3340c68ef61200416860a0175eb4b6. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      cc435d1e
    • Will Chen's avatar
      Fix auto-scroll to only trigger during streaming (#1593) · 55d37b5a
      Will Chen 提交于
      Previously, the chat auto-scrolled whenever messages changed, even when
      not streaming. This caused unwanted scrolling when switching chats or
      loading messages from the database.
      
      Now auto-scroll only triggers when:
      - Messages are actively streaming (isStreaming is true)
      - User hasn't manually scrolled away
      - User is near the bottom of the chat
      
      Changes:
      - Added isStreamingByIdAtom to track streaming state
      - Modified auto-scroll useEffect to check isStreaming before scrolling
      - Preserved streamCount effect for initial scroll on stream start
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
          
      <!-- This is an auto-generated description by cubic. -->
      ---
      
      ## Summary by cubic
      Fixes chat auto-scroll so it only runs during active streaming,
      preventing jumps when switching chats or loading message history.
      
      - **Bug Fixes**
      - Added isStreamingByIdAtom and gated the auto-scroll effect by per-chat
      streaming state (updated effect deps).
        - Preserved the initial scroll on stream start via streamCount.
      
      <!-- End of auto-generated description by cubic. -->
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Limits chat auto-scroll to when a conversation is actively streaming
      and the user is near the bottom.
      > 
      > - **Frontend**
      > - **Chat auto-scroll behavior**: Only auto-scrolls during active
      streaming.
      > - Adds `isStreamingByIdAtom` and reads per-chat `isStreaming` state.
      > - Updates auto-scroll `useEffect` to require `isStreaming` and adds it
      to dependencies.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      6580601cd974c2c01ddffdef78ed0ddbb2b2fa8d. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      Co-authored-by: 's avatarClaude <noreply@anthropic.com>
      55d37b5a
    • 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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