1. 17 1月, 2026 3 次提交
    • Will Chen's avatar
      Auto-set defaults for Dyad Pro 'add to dyad app' flow (#2185) · ae737d48
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > - In `pro.ts`, on Dyad Pro enable: saves API key to
      `providerSettings.auto`, sets `enableDyadPro`, and defaults
      `selectedChatMode` to `local-agent` with `selectedModel` `{ name:
      "auto", provider: "auto" }`.
      > - In `DyadProSuccessDialog`, refreshes UI copy and visuals (new
      gradient icon, `Sparkles`, `Zap`, `Bot`), explains default settings, and
      replaces footer action with a full-width `Get Started` button.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      dde6aa9e62453fb93223cb35beeb881e4a07c045. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Automatically set Dyad Pro defaults to local-agent mode and the auto
      model when users connect via “Add to Dyad app,” and refreshed the
      success dialog to explain these settings for a smoother start.
      
      - **New Features**
      - Set selectedChatMode to local-agent and selectedModel to auto by
      default.
      - Updated success dialog copy and design with clearer defaults and a
      “Get Started” action.
      
      <sup>Written for commit dde6aa9e62453fb93223cb35beeb881e4a07c045.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      ae737d48
    • Will Chen's avatar
      Support import app inplace (#2189) · e3f9c348
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Enables importing apps in-place without copying into `dyad-apps`.
      > 
      > - UI: `ImportAppDialog` adds a "Copy to the dyad-apps folder" checkbox
      (checked by default), wires `skipCopy` through name checks, import
      action, and re-checks on toggle; resets on clear
      > - IPC: Extends `ImportAppParams` and `check-app-name` to accept
      `skipCopy`; `import-app` handler respects in-place import (skips copy,
      stores absolute path, initializes git if needed) and keeps existing
      copy/duplicate checks when copying
      > - Types/Client: Updates `ipc_types` and
      `IpcClient.checkAppName/importApp` to include optional `skipCopy`
      > - Tests: Adds e2e test and snapshot for importing without copying
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      33f58b060664ab10906dfdbf8815839d787f909d. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Add in-place app import. Users can now register an existing folder
      without copying it into dyad-apps, reducing disk usage and speeding up
      import.
      
      - **New Features**
      - Import dialog: added “Copy to the dyad-apps folder” checkbox (on by
      default). When unchecked, we import in place and pass skipCopy to the
      backend. Control resets on dialog close.
      - Import handler: if skipCopy is true, do not copy; store the absolute
      source path; initialize a git repo in the chosen path if missing. If
      copying, keep existing duplicate-name checks and copy behavior. Updated
      ImportAppParams to include optional skipCopy.
        - Added e2e test and snapshot for importing without copying.
      
      <sup>Written for commit 7df1df626fc4f2a2c6e58c667496590ac68da922.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      e3f9c348
    • Will Chen's avatar
      Add a bit of visual feedback when clicking Refresh Deployments for Vercel (#2184) · ea229c75
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Enhances Vercel deployments refresh UX to provide consistent visual
      feedback.
      > 
      > - Introduces `isRefreshing` and wraps `getDeployments` to enforce a
      750ms minimum loading time
      > - Disables the "Refresh Deployments" button during load and shows a
      spinner with "Refreshing..."
      > - Combines states into `isLoadingOrRefreshing` for button/label
      control; minor label text change
      > - package-lock version bump to `0.33.0-beta.3`
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      e65e3a06d7fe761e183bf1acaee88d40e9197895. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Adds clear, consistent feedback when refreshing Vercel deployments to
      prevent flicker and show progress. The button now shows a spinner and
      "Refreshing..." and is disabled during the fetch.
      
      - **New Features**
        - Ensures visible feedback with a 750ms minimum loading time.
      - Disables the button while loading and updates the label to
      "Refreshing...".
      
      <sup>Written for commit e65e3a06d7fe761e183bf1acaee88d40e9197895.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      ea229c75
  2. 16 1月, 2026 5 次提交
    • Will Chen's avatar
      d4072907
    • Will Chen's avatar
      env github token (#2203) · 96ad6a72
      Will Chen 提交于
      96ad6a72
    • Will Chen's avatar
      Triage inline prompt (#2201) · ccea1e6e
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      d19804b8ed095b980c17272a27b925d03f973e84. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      ccea1e6e
    • Will Chen's avatar
      triage bot: claude base action (#2199) · 9b7a5851
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Updates the issue triage workflow to use Anthropic’s new base action
      and input format.
      > 
      > - Replace `anthropics/claude-code-action@v1` with
      `anthropics/claude-code-base-action@beta` in `claude-triage.yml`
      > - Move from `claude_args` flags to explicit `model` and
      `allowed_tools` inputs; retain `prompt_file` and
      `claude_code_oauth_token`
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      e0afa14937dcb473c58bd129d5692c2ef65d53c2. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Switch the triage workflow to the Claude base action and migrate inputs
      to the new schema for clearer config and future compatibility.
      
      - **Dependencies**
      - Replaced anthropics/claude-code-action@v1 with
      anthropics/claude-code-base-action@beta.
      - Split claude_args into explicit inputs: model and allowed_tools (same
      values as before).
      
      <sup>Written for commit e0afa14937dcb473c58bd129d5692c2ef65d53c2.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      9b7a5851
    • Will Chen's avatar
      Triage bot v2 & update issue templates (#2196) · 81e96b49
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Consolidates issue triage and streamlines bug reporting across GitHub
      and the app.
      > 
      > - **CI**: Add `Issue Triage` workflow
      (`.github/workflows/claude-triage.yml`) using
      `anthropics/claude-code-action` with a new prompt
      (`.github/prompts/triage.md`) to auto-label issues, check duplicates
      with confidence ratings, and post brief helper comments (restricted `gh`
      commands).
      > - **Cleanup**: Remove legacy workflows `duplicate-issues.yml` and
      `triage-issues.yml` in favor of the unified triage job.
      > - **Templates**: Update `bug_report.md` to recommend filing from the
      app, link help docs, and request English-only reports.
      > - **App**: Simplify `HelpDialog` prefilled GitHub issue bodies
      (combine description + repro, mark screenshot as recommended, keep
      English note) while retaining auto-included system info/logs.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      736a12b69d2d474a59acf33a3867af092c41aa42. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Add a single, smarter triage bot that auto-labels new issues, checks for
      duplicates, and leaves short, friendly guidance. Also simplify our bug
      report template and in‑app “Report a bug” text to get better reports.
      
      - **New Features**
        - Triage agent prompt that:
      - Labels issues (bug/feature/ux) and adds language/incomplete/pro tags
      with friendly comments.
      - Searches for duplicates with confidence ratings and links helpful
      prior comments when highly confident.
      - New GitHub Action runs on issue creation using claude-code with
      restricted gh commands.
      
      - **Refactors**
      - Replace the two legacy workflows (duplicate-issues, triage-issues)
      with the new unified triage workflow.
      - Update bug_report.md to recommend reporting from the app, link help
      docs, and ask for English.
      - Simplify HelpDialog issue template: combine description + repro, mark
      screenshot as recommended, keep the “fill in English” note.
      
      <sup>Written for commit 736a12b69d2d474a59acf33a3867af092c41aa42.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      ---------
      Co-authored-by: 's avatargreptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
      81e96b49
  3. 15 1月, 2026 6 次提交
    • Will Chen's avatar
      Don't throw error when no folder selected for import (#2188) · 8e0a16cb
      Will Chen 提交于
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Stop throwing an error when the user cancels folder selection in the
      import dialog. The mutation now returns null, so cancelling the picker
      doesn’t show an error or disrupt the flow.
      
      <sup>Written for commit 3c2e61bc723a3ff72cc269c31f715b440fc3695b.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Prevents erroneous failures when the user cancels the folder picker.
      > 
      > - In `ImportAppDialog`, `selectFolderMutation` now returns `null` when
      no `path`/`name` is provided (user canceled) instead of throwing,
      avoiding error toasts and treating cancel as a no-op.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      3c2e61bc723a3ff72cc269c31f715b440fc3695b. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      8e0a16cb
    • Will Chen's avatar
      Passthrough settings so downgrading Dyad doesn't cause issues (#2183) · 0a286015
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > **Behavior change: preserve unknown settings fields**
      > 
      > - Apply `.passthrough()` to `UserSettingsSchema` so unknown properties
      are retained instead of stripped
      > - Update `readSettings.test.ts` to assert extra fields (e.g.,
      `unknownField`, `deprecatedSetting`, nested objects) are preserved while
      defaults still apply
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      d7bd0311a14cb4b501c698c987706efe069ab975. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Preserves unknown settings fields during validation to prevent data loss
      when downgrading Dyad. Switches the user settings schema to passthrough
      and updates tests to match.
      
      - **Bug Fixes**
      - UserSettingsSchema now uses Zod .passthrough() to keep unrecognized
      fields.
        - Updated readSettings test to assert extra fields are preserved.
      
      <sup>Written for commit d7bd0311a14cb4b501c698c987706efe069ab975.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      0a286015
    • Will Chen's avatar
      Send dyad request id to engine fetch calls (#2181) · 25ddf69d
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Implements request-level tracing for local-agent by threading
      `dyadRequestId` through handlers and tool calls, and consolidates engine
      API requests.
      > 
      > - Pass `dyadRequestId` from `chat_stream_handlers.ts` into
      `handleLocalAgentStream` and include in `providerOptions`
      > - Update `handleLocalAgentStream` signature and `AgentContext` to
      include `dyadRequestId`; propagate to `streamText` and tool execution
      context
      > - Introduce `pro/main/ipc/handlers/local_agent/tools/engine_fetch.ts`
      to centralize Dyad engine requests, automatically adding `Authorization`
      and `X-Dyad-Request-Id` headers
      > - Refactor tools (`code_search.ts`, `edit_file.ts`, `web_crawl.ts`,
      `web_search.ts`) to use `engineFetch` and remove per-file API key/URL
      handling
      > - Adjust tests to supply `dyadRequestId` and validate unchanged
      behaviors (errors, streaming, abort, commits, approvals)
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      6a90d98fef23e459a0679c46b8eace8d907e0be9. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Pass the Dyad request ID through the local agent and include it on all
      engine tool calls to enable end-to-end request tracing. Centralizes
      engine API calls with a shared fetch wrapper.
      
      - **Refactors**
      - Added engine_fetch wrapper that sets Authorization and
      X-Dyad-Request-Id headers.
      - handleLocalAgentStream now accepts dyadRequestId and forwards it to
      AgentContext and provider options.
      - Updated tools (code_search, edit_file, web_search, web_crawl) to use
      engineFetch and removed duplicate URL/API key handling.
      - chat_stream_handlers forwards dyadRequestId (fallback:
      “[no-request-id]”).
        - Tests updated to include dyadRequestId in handler calls.
      
      <sup>Written for commit 6a90d98fef23e459a0679c46b8eace8d907e0be9.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      25ddf69d
    • Will Chen's avatar
      Add a refresh button for supabase projects (#2180) · 8d28d508
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Enhances the Supabase projects selector with a manual refresh and
      improved states.
      > 
      > - Adds `RefreshCw` icon button to `SupabaseConnector` to
      `refetchProjects()`; shows spinner while `isFetchingProjects` and
      disables the button
      > - Displays error state from `projectsError` with a `Retry` button to
      refetch
      > - Adjusts header layout to place refresh control alongside "Add
      Organization"
      > - Updates imports to include `RefreshCw`
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      ce452519cd5a90fec693969c559247e068d795f5. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Added a refresh button to the Supabase Projects header to reload the
      project list on demand. The button disables while fetching and shows a
      spinning icon during refresh.
      
      <sup>Written for commit ce452519cd5a90fec693969c559247e068d795f5.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      8d28d508
    • Will Chen's avatar
      Add bugbot trigger & update claude PR review for all (#2186) · 1dd83e33
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > - **Add** `bugbot-trigger.yml` workflow to auto-comment `"@BugBot
      run"` on `pull_request_target` events using a PAT, enabling BugBot on
      new/updated PRs.
      > - **Update** `claude-pr-review.yml` by removing the contributor `if`
      filter so Claude reviews run for all PRs; existing environment,
      permissions, and checkout behavior maintained.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      6fc76ece796cf1f8bd7fc45e6e97c4f86a94b12b. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      1dd83e33
    • Mohamed Aziz Mejri's avatar
      Initial ui theming (#2145) · 22f25ef5
      Mohamed Aziz Mejri 提交于
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Introduces initial UI theming with per-app theme selection and a default
      theme in settings. Theme rules are added to prompts so generated UIs
      follow the chosen design.
      
      - **New Features**
      - Theme picker in AuxiliaryActionsMenu with app-specific selection and
      visual check.
      - New hooks: useThemes and useAppTheme (React Query) with IPC get/set
      handlers.
      - Themes data and prompts added (includes “No Theme” and “Default
      Theme”).
      - Theme prompt appended to system and local-agent prompts; included in
      token counting.
      - Settings now support a default theme (selectedThemeId) applied to new
      apps.
      
      - **Migration**
        - Adds apps.theme_id (NULL means no theme).
      
      <sup>Written for commit f4ef96ccd02a3d9148bd4e570d2204c7b5a12c10.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Introduces initial theming with persistence and prompt influence.
      > 
      > - UI: Adds Themes submenu in `AuxiliaryActionsMenu` (supports "No
      Theme" and `default`, app-specific or global via settings)
      > - Data/IPC: New `apps.theme_id` column (nullable), hooks
      `useThemes`/`useAppTheme`, IPC handlers (`get-themes`, `set-app-theme`,
      `get-app-theme`) wired through `ipc_client`, `ipc_host`, and `preload`
      > - Settings: Adds `selectedThemeId` with default applied to newly
      created apps
      > - Prompting: Appends theme prompt (`getThemePrompt`) to
      system/local-agent prompts and token counting
      > - Integration: `ChatInput` passes `appId` to menu; `schema.ts` updated
      > - Tests: E2E verifies default and per-app theme persistence
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      ee9ba34aad48f8dc49013e01247cfdcff1b77fad. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      22f25ef5
  4. 14 1月, 2026 12 次提交
    • Mohamed Aziz Mejri's avatar
      Improve image attachement e2e test (#2168) · 3b66d4de
      Mohamed Aziz Mejri 提交于
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Switched image attachment e2e tests to use Playwright’s native file
      chooser instead of setting hidden inputs. This reduces flakiness and
      matches real user behavior.
      
      - **Bug Fixes**
      - Wait for the file chooser before clicking the menu item, then set
      files via the dialog.
        - Removed hidden input selectors and Escape key handling.
        - Updated home chat, chat, and upload-to-codebase tests.
      
      <sup>Written for commit 7afe922fa377ad29f0af880ed466a9ed31e0c602.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      3b66d4de
    • Will Chen's avatar
      Bump to v0.33 Beta 3 (#2174) · 398f6afa
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      7a0792c4c481510e0153cc120efe901855289825. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      398f6afa
    • Will Chen's avatar
      Graduate local agent from experiment (#2173) · d67d5a0d
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Graduates the local agent feature from experiment and simplifies
      related settings and tests.
      > 
      > - Agent v2 (local-agent) is now available to all Pro users by removing
      `experiments.enableLocalAgent` gating in `ChatModeSelector`
      > - Always render the "Agent Permissions (Pro)" section in Settings and
      remove the "Enable Agent v2" experiment toggle
      > - `SettingsList` no longer filters sections by settings; always
      includes `agent-permissions`
      > - Mark `experiments.enableLocalAgent` as DEPRECATED in the schema
      > - E2E: stop toggling local agent in setup; retain model selection
      logic for local-agent scenarios
      > - Minor: adjust test fixture name regex in fake LLM responses handler
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      39bdf8ef4bea64909bb5cd623e1fdd559d156692. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Graduate the Local Agent (Agent v2) from the experiments flag. It’s now
      available to Pro users by default and the settings reflect this.
      
      - **Refactors**
      - Show Local Agent in ChatModeSelector for Pro without experiment
      gating.
      - Always show the Agent Permissions section; label updated to “Agent
      Permissions (Pro)”.
        - Removed the “Enable Agent v2” toggle from Experiments.
        - Marked experiments.enableLocalAgent as DEPRECATED in the schema.
      - Cleaned up e2e helper to stop toggling local agent mode; minor test
      regex fix.
      
      - **Migration**
      - No action needed. The old experiments.enableLocalAgent flag is
      ignored.
      
      <sup>Written for commit 39bdf8ef4bea64909bb5cd623e1fdd559d156692.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      d67d5a0d
    • Adeniji Adekunle James's avatar
      feat: Git collaboration tools with branch management (#2139) · ec9b5ede
      Adeniji Adekunle James 提交于
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Add Git collaboration with branch management and collaborator controls.
      Improves GitHub sync with conflict handling, fetch/pull/rebase/merge
      support, and safer push options.
      
      - **New Features**
      - Branch management: create, switch, rename, delete, and merge branches;
      list local/remote; detect conflicts; rebase continue/abort and merge
      abort.
      - Collaborators: list, invite, and remove collaborators in Publish and
      App Details when connected.
      - Sync improvements: fetch/pull (with optional rebase), merge, conflict
      inspection, branch rename, and reset; push supports force and
      force-with-lease.
      - UI updates: branch combobox with refresh/create actions; integrated
      Branch and Collaborator managers; clearer push success feedback.
      
      - **Tests**
      - New e2e: covers creating, switching, renaming, merging, and deleting
      branches.
      - Updated GitHub e2e and snapshots for branch UI and push success
      message.
      - Test helper adds “publish” mode; fake GitHub server adds collaborator
      endpoints and seed data.
      
      <sup>Written for commit a9a3166d3742b0fe3e672d69a12531b443b653f9.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Introduces comprehensive Git collaboration features with UI, IPC, and
      test coverage.
      > 
      > - **Branch management UI**: `GithubBranchManager` for
      create/switch/rename/delete/merge, refresh, source branch selection,
      conflict banners; integrated into `GitHubConnector` and Publish/App
      Details panels
      > - **Collaborator management UI**: `GithubCollaboratorManager` to
      list/invite/remove collaborators when connected
      > - **Enhanced sync flow**: `GitHubConnector` supports rebase status,
      abort/continue, “Rebase and Sync”, safe force push (`force-with-lease`),
      structured errors, auto-sync deduping
      > - **New IPC/git ops**: handlers and client methods for `fetch`,
      `pull`, `rebase` (abort/continue), `merge` (abort), `branch` CRUD, list
      local/remote branches, conflict listing, git state checks; `git_utils`
      adds native/isomorphic implementations and conflict/state detection
      > - **Testing & mocks**: New e2e `git_collaboration.spec.ts` (branch
      lifecycle, collaborators), updated GitHub specs/snapshots; fake GitHub
      server adds collaborator endpoints and push event tweaks
      > - **Plumbing**: Preload exposes new GitHub IPC channels; types
      extended (`GithubSyncOptions`, git param types)
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      210af660701490139d75b1be86c55e9782056ade. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      ec9b5ede
    • Will Chen's avatar
      List files: recursive (#2169) · 59b721b1
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > **Enhancements**
      > - `list_files` now accepts `recursive` (default: false); non-recursive
      uses `/*`, recursive uses `/**`; consent preview/XML reflect recursion
      and UI title shows "(recursive)".
      > - UI: `dyad-list-files` renders as a collapsible panel with chevron
      toggle and abbreviated file list with total count; wired through
      `DyadMarkdownParser`.
      > 
      > **Safety/Infra**
      > - Validates directory input via `resolveDirectoryWithinAppPath` to
      prevent traversal (Windows/POSIX cases covered) with unit tests.
      > - Fake LLM server resets fixture turn counting per prompt (counts tool
      results after last user message) for stable multi-prompt E2E.
      > - E2E: adds fixtures and snapshots for recursive and non-recursive
      modes; shorter toast duration in test mode to speed tests.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      3f366934b050a583ae66168e4c924a97a5529f51. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Add recursive support to the local agent list_files tool and make
      results collapsible in the chat UI. Includes E2E coverage and a fix to
      fixture turn counting for stable multi-prompt runs.
      
      - **New Features**
      - list_files accepts recursive (default: false); uses "/*" for
      non-recursive and "/**" for recursive.
      - Consent preview/XML and UI reflect recursion; collapsible panel shows
      abbreviated list with total count.
      - Recursive attribute wired through the markdown parser; added E2E tests
      and snapshots for both modes.
      
      - **Bug Fixes**
      - Validate directory paths to prevent path traversal outside the app
      directory.
      - Fake LLM server counts tool results after the last user message to
      reset turns per prompt.
        - Shorter toast duration in test mode to speed up E2E runs.
      
      <sup>Written for commit 3f366934b050a583ae66168e4c924a97a5529f51.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      59b721b1
    • Will Chen's avatar
      Fix auto model for engine (#2170) · 759c60f2
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Fixes auto/local-agent model routing and provider-specific behavior.
      > 
      > - Refactors `llm_engine_provider` to require `chatParams { providerId
      }`; wires it into custom fetch and model constructors (`provider`,
      `chatModel`, `responses`)
      > - Updates `get_model_client` to pass `providerId`, tag fallback models
      (`openai`, `anthropic`, `google`), and use `responses()` for OpenAI in
      `local-agent` and auto fallback
      > - Adds Responses API support to fake LLM server (`/v1/responses`) with
      streaming SSE handler and dump generation
      > - Extends test helper to parse Responses API dumps (`body.input`) and
      adds `localAgentUseAutoModel` setup flag
      > - New e2e test `local_agent_auto.spec.ts` with snapshot verifying
      request payload via Responses API
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      e5b02d253c9842f14da0099bb11e1b05548e9245. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Fixes auto model selection in the Dyad engine by passing the correct
      providerId with each request. Ensures provider-specific options are
      applied and avoids incorrect defaults.
      
      - **Bug Fixes**
      - Pass providerId to chat/responses models and into the fetch layer for
      getExtraProviderOptions.
      - Remove originalProviderId from createDyadEngine; add ChatParams and
      update provider API signatures.
      - Tag fallback models with providerId (openai, anthropic, google) and
      forward model.provider in getModelClient.
      
      <sup>Written for commit e5b02d253c9842f14da0099bb11e1b05548e9245.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      759c60f2
    • Will Chen's avatar
      Improve local agent prompt (#2166) · be7b6977
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Improves the local agent system prompt for safer, more consistent
      edits.
      > 
      > - Adds a structured `development_workflow` (Understand → Plan →
      Implement → Verify → Finalize) outlining use of `grep`/`code_search`,
      `read_file`, `update_todos`, `run_type_checks`, and `set_chat_summary`
      > - Refines `tool_calling_best_practices` to prefer `edit_file` over
      `write_file`, formats tool names with backticks, and reiterates focused,
      minimal, and error-tolerant edits
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      a649625cb856a04afe8e61cb3df832637249569e. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Clarified the local agent prompt with a structured development workflow
      and clearer tool guidance to make edits safer and more consistent.
      
      - **New Features**
      - Added a development_workflow with steps: Understand → Plan → Implement
      → Verify → Finalize (using grep/code_search, read_file, update_todos,
      run_type_checks, set_chat_summary).
      - Updated tool_calling_best_practices to prefer edit_file over
      write_file and formatted tool names for clarity.
      
      <sup>Written for commit a649625cb856a04afe8e61cb3df832637249569e.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      be7b6977
    • Will Chen's avatar
      Code search tool (#2167) · 50ca2fa1
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      3cc11d352d12a0f51da474e5e3a281c128f2a9c4. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Adds a semantic code search tool to the local agent with an interactive
      UI card, so the agent can find relevant files by meaning, not just text.
      Includes E2E coverage for the full flow.
      
      - New Features
      - code_search tool: gathers project files, calls Dyad Engine
      /tools/code-search, and returns relevant file paths.
      - Streams a dyad-code-search tag while running; shows pending state in
      the UI. Requires a Dyad Pro API key.
      - DyadCodeSearch UI: collapsible card with query preview, results, and
      loading indicator.
      - Markdown parser now passes query and state; tool registered in
      tool_definitions.
      
      - Tests
        - Added E2E spec, fixture, and snapshot for local-agent code search.
      - Fake LLM server includes a mock /engine/v1/tools/code-search endpoint.
      
      <sup>Written for commit 3cc11d352d12a0f51da474e5e3a281c128f2a9c4.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      50ca2fa1
    • Will Chen's avatar
      Enable type check tool by default (agent mode) and allow "never" for agent tool perms (#2165) · 5bd8a703
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > - **Agent tool consent:** Add `"never"` to `AgentToolConsent` schema,
      update imports to `lib/schemas`, surface "Never allow" in settings UI,
      and prevent consent prompts/execution for tools marked `"never"`
      (skipped in `buildAgentToolSet`; error if prompted).
      > - **Type checks tool:** Remove settings gate so `run_type_checks` is
      available by default; keep default consent `"always"`; reflected in e2e
      tool list.
      > - **UI/UX:** Truncate long tool descriptions to 100 chars in Agent
      Tools settings.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      50e3ef56792adc578aaefcdf7a61246344a475ad. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Enables the Type Checks tool by default in agent mode and adds a “never”
      consent option to permanently block tools. Agents now skip any tool
      marked “never”.
      
      - **New Features**
        - Added “Never allow” in Agent Tools settings.
        - Consent schema now supports ask, always, never.
        - Agent tool set excludes tools with “never”.
      - Type Checks tool is available by default (no longer gated by
      enableAutoFixProblems).
        - Truncated long tool descriptions in settings to 100 chars.
      
      - **Refactors**
        - Moved AgentToolConsent type to lib/schemas and updated imports.
      
      <sup>Written for commit 50e3ef56792adc578aaefcdf7a61246344a475ad.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      5bd8a703
    • Will Chen's avatar
      Show info toast when switching to agent mode (#2160) · 5e71af36
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Adds an informational toast to guide users when enabling the new agent
      mode.
      > 
      > - New `LocalAgentNewChatToast` with dismiss and "Never show again"
      actions (auto-dismiss after 8s)
      > - `ChatModeSelector`: when switching to `local-agent` on `/chat` with
      existing messages, show the toast using `sonner`; uses TanStack Router
      for route detection and Jotai chat state
      > - `UserSettingsSchema`: adds `hideLocalAgentNewChatToast` to persist
      user preference
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      b07beac9d13b87b2e08ea1a9a376994148beb6c9. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Shows a friendly info toast when switching to Agent mode on the chat
      page, encouraging a fresh chat for better results. Includes dismiss and
      “never show again” options that respect user preferences.
      
      - **New Features**
      - Added LocalAgentNewChatToast, shown when selecting local-agent on
      /chat with existing messages.
      - “Never show again” persists via hideLocalAgentNewChatToast in
      UserSettingsSchema.
      - Uses TanStack Router to detect the chat route; toast auto-dismisses
      after 8s.
      
      <sup>Written for commit b07beac9d13b87b2e08ea1a9a376994148beb6c9.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      5e71af36
    • Will Chen's avatar
      skip failing tests on windows (#2164) · d40aa21e
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Skips problematic Windows runs for select e2e tests to stabilize CI.
      > 
      > - Switches `mcp.spec.ts`, `security_review.spec.ts`, and
      `supabase_migrations.spec.ts` tests to `testSkipIfWindows`, wrapping the
      calculator, security review (incl. edit/use knowledge), and supabase
      migrations (incl. native git) cases
      > - Cleans up imports accordingly; no application code changes
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      b3ce59d4c6da6bfbc2888636cc239ec1ed3cc6ba. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Skip failing Windows-only e2e tests to stabilize CI; non-Windows runs
      are unchanged.
      
      - **Bug Fixes**
        - Use testSkipIfWindows for:
          - mcp.spec.ts: “mcp - call calculator”
      - security_review.spec.ts: “security review - edit and use knowledge”
          - supabase_migrations.spec.ts: “supabase migrations”
        - No test logic changes; only conditional skip on Windows.
      
      <sup>Written for commit b3ce59d4c6da6bfbc2888636cc239ec1ed3cc6ba.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      d40aa21e
    • Will Chen's avatar
      grep tool (#2161) · 6d7ed897
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Introduces fast, scoped code search in local-agent mode and renders
      results inline in chat.
      > 
      > - Adds `grep` tool (ripgrep-backed) with include/exclude globs and
      optional case sensitivity; returns `path:line: text` matches
      > - New `DyadGrep` component and `DyadMarkdownParser` support for
      `dyad-grep`; attribute parsing updated to allow hyphenated names
      > - Extracts ripgrep helpers to `ipc/utils/ripgrep_utils.ts` and
      refactors `app_handlers` to use them
      > - Registers tool in local agent tool set
      > - E2E coverage: new fixture, Playwright spec, and ARIA snapshots
      validating two searches and rendered output
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      35cd925caf321c1c987b636d9539aed465284f1b. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Adds a grep tool to the local agent using ripgrep and a new <dyad-grep>
      UI to show results in chat. Enables fast, scoped code searches with
      include/exclude globs and case sensitivity.
      
      - **New Features**
      - New local-agent tool grep (ripgrep-backed) that returns file:line:
      text matches; case-insensitive by default with include_pattern,
      exclude_pattern, and case_sensitive options.
      - New DyadGrep chat component and parser support (<dyad-grep>) with
      collapsible results, progress/aborted states, and copyable output.
      - Shared ripgrep utils (executable path, size limit, default exclude
      globs) extracted and reused; tool registered in tool_definitions.
      
      - **Tests**
        - Added E2E spec for grep in local-agent mode with ARIA snapshots.
        - New fixture driving two searches and validating rendered results.
      
      <sup>Written for commit 35cd925caf321c1c987b636d9539aed465284f1b.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      ---------
      Co-authored-by: 's avatargemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
      6d7ed897
  5. 13 1月, 2026 10 次提交
    • Adeniji Adekunle James's avatar
      Code View Search & Fullscreen Mode (#1987) (#1988) · 381db427
      Adeniji Adekunle James 提交于
      Closes #1987
      
      
      
      
      
      
      
      
      
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Adds file content search to Code View and a fullscreen toggle to focus
      on code. Users can search across file contents with highlights and
      snippets, and jump to lines. Addresses Linear #1987.
      
      - New Features
      - File Tree search: debounced input, content search via ripgrep (1MB max
      per file), highlights in names, expandable snippets with line numbers,
      match count, and empty/error states.
        - Fullscreen mode: toggle in toolbar, Esc to exit, locks page scroll.
      - IPC: search-app-files handler using ripgrep (via @vscode/ripgrep;
      binary bundled in Forge extraResources) with UTF-8-safe snippet
      extraction; exposed via IpcClient and preload.
        - Hook: useSearchAppFiles with React Query.
      - UI/Types: FileTree now takes appId; added AppFileSearchResult type;
      selectedFile supports line for navigation.
        - Tests: e2e covers content search and navigating to the matched line.
        - CI: set GITHUB_TOKEN to fetch ripgrep binaries.
      
      <sup>Written for commit 97142126c549932d58908df5c842f44ae182c94e.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      
      
      
      
      
      
      
      
      
      
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Introduces fast file content search in Code View and fullscreen
      viewing, wiring UI to IPC and packaging for bundled ripgrep.
      > 
      > - UI: `FileTree` now supports debounced content search with
      highlights, expandable snippets, match counts, and line navigation;
      `selectedFile` carries `line`; `FileEditor` accepts `initialLine` and
      jumps to it; `CodeView` adds fullscreen toggle (Esc to exit)
      > - IPC: New `search-app-files` handler using `@vscode/ripgrep` with
      UTF-8-safe snippets; exposed via `preload` and
      `IpcClient.searchAppFiles`; adds `AppFileSearchResult` type
      > - Packaging/CI: Bundle ripgrep binaries via Forge `extraResource` and
      set `GITHUB_TOKEN` in CI for ripgrep install; add `@vscode/ripgrep`
      dependency; bump version to `0.33.0-beta.2`
      > - Tests: New Playwright e2e verifies search results and navigation to
      matched line
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      97142126c549932d58908df5c842f44ae182c94e. 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>
      381db427
    • Will Chen's avatar
      Fix chat mode test (#2159) · af522d32
      Will Chen 提交于
      fix test breakage from https://github.com/dyad-sh/dyad/pull/2155
      
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      22342fd91b4708311796b51552b0106acea66b9b. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Adjusted chat mode selection in e2e tests to match updated UI labels and
      prevent failures. Uses "Agent v2" and "Build with MCP" instead of the
      old "(experimental)" labels.
      
      <sup>Written for commit 22342fd91b4708311796b51552b0106acea66b9b.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      af522d32
    • Will Chen's avatar
      log chat mode used in chat submit (#2156) · 229e765f
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Adds analytics context to chat submissions.
      > 
      > - Update `ChatInput.tsx` to capture `chat:submit` with `{ chatMode:
      settings?.selectedChatMode }`
      > - Update `HomeChatInput.tsx` to capture `chat:home_submit` with `{
      chatMode: settings?.selectedChatMode }`
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      2b84eb984bd1c5368c1aeba03db5fd1a2f431bd9. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Add chatMode to PostHog analytics on chat submission to track which chat
      mode was used. Applies to chat:submit and chat:home_submit events.
      
      <sup>Written for commit 2b84eb984bd1c5368c1aeba03db5fd1a2f431bd9.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      229e765f
    • Will Chen's avatar
      Experimental badge (#2155) · 32b3d01f
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Introduces a reusable `ExperimentalBadge` and refines chat mode labels
      in `ChatModeSelector`.
      > 
      > - Adds `ExperimentalBadge` and displays it next to `Agent v2`
      > - Removes "(experimental)" suffix from MCP mode title and tweaks
      layout (flex with gap) for mode headers
      > - Updates `Agent v2` description to "Better at bigger tasks and
      debugging"
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      f513f856f7a223fddfadbb4b0762bf9998295414. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Added an Experimental badge component and applied it to Agent v2 in
      ChatModeSelector. Removed "(experimental)" from labels and updated Agent
      v2 description to "Better at bigger tasks and debugging" for clearer
      guidance.
      
      <sup>Written for commit f513f856f7a223fddfadbb4b0762bf9998295414.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      32b3d01f
    • Will Chen's avatar
      Bump to v0.33.0 beta 2 (#2154) · 9d6f9dc9
      Will Chen 提交于
      9d6f9dc9
    • Will Chen's avatar
      Fix unit test in retryWithRateLimit (#2153) · dfccb93a
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      4ef340ba4e26fc3d41a2ea5fea9772ba669f3bd0. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      dfccb93a
    • Will Chen's avatar
      Automatically initialize git safe directory on startup (#2152) · daf69251
      Will Chen 提交于
      See https://github.com/dyad-sh/dyad/issues/2113
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Automatically ensures Git can operate in `dyad-apps` when native Git
      is enabled and centralizes base path resolution.
      > 
      > - Adds `gitAddSafeDirectory(directory)` in `git_utils.ts` to
      idempotently append to global `safe.directory` (uses `normalizePath`,
      logs outcomes)
      > - On startup (`main.ts`), calls
      `gitAddSafeDirectory(getDyadAppsBaseDirectory())` without awaiting
      > - Introduces `getDyadAppsBaseDirectory()` and updates
      `getDyadAppPath()` to use it, consolidating test/prod path logic
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      99911c273fba66190218ecdb1df40d61f12d49a5. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Automatically add the dyad-apps directory to Git’s global safe.directory
      at startup when native Git is enabled. This prevents “detected dubious
      ownership” errors on Windows and unblocks Git operations.
      
      - New Features
      - Added gitAddSafeDirectory(directory) to run git config --global --add
      safe.directory <dir> with logging, normalizing paths and skipping
      duplicates.
      - On app ready, if settings.enableNativeGit, call
      gitAddSafeDirectory(getDyadAppsBaseDirectory()) without awaiting to keep
      startup fast.
      
      - Refactors
      - Introduced getDyadAppsBaseDirectory() and updated getDyadAppPath() to
      use it, centralizing base path logic for test and prod.
      
      <sup>Written for commit 99911c273fba66190218ecdb1df40d61f12d49a5.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      daf69251
    • Will Chen's avatar
      Retry rate limit errors for Supabase API callsites (#2148) · 7749a5d6
      Will Chen 提交于
      Addresses #2147
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Adds robust retry handling for Supabase API interactions to reduce
      flakiness on HTTP 429.
      > 
      > - Introduces `RateLimitError`, `isRateLimitError`,
      `retryWithRateLimit` (defaults: 6 retries, 2s base, capped, jitter,
      scoped logging) and `fetchWithRetry`
      > - Applies retries to key callsites: project API keys, schema/queries,
      secrets, orgs/members/details, projects, project logs, branches,
      function deploy/delete, bulk update, and SQL execution
      > - Standardizes non-429 fetch failures to throw
      `SupabaseManagementAPIError` to preserve response context
      > - Improves function deploy by rebuilding `FormData` per attempt and
      converting 429 to `RateLimitError`
      > - Adds thorough unit tests covering error detection, backoff behavior,
      options, and retry exhaustion
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      eaf86cffb2d2b3a3771e8607a52f4e04af630ecd. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Add automatic retries for Supabase API calls on HTTP 429 using
      exponential backoff with jitter to reduce flakiness and improve
      reliability. Addresses #2147 by applying retries across key management
      and context callsites and adding thorough tests.
      
      - **New Features**
      - Added retryWithRateLimit (defaults: 8 retries, 2s base delay, 30s max,
      10% jitter, scoped logging), isRateLimitError, RateLimitError, and
      fetchWithRetry.
      - Applied retries to fetch-based endpoints and runQuery operations:
      orgs/members/details/projects, project logs, schema/table/function
      queries, secrets/API keys, branches, function deploy/delete and bulk
      update, and SQL execution.
      - Standardized error handling by throwing SupabaseManagementAPIError for
      failed fetches to preserve response details.
      - Added unit tests covering detection, backoff timing, options, retry
      exhaustion, and fetchWithRetry behavior.
      
      <sup>Written for commit c1fbffaf9c559c7f43a6999f4160a81b97ed9eaf.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      7749a5d6
    • Will Chen's avatar
      Rebaseline e2e tests (#2149) · 05e035f6
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      ddc1ebc593ed63e1a3508c4ebc99ca49d3c9943f. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      05e035f6
    • Mohamed Aziz Mejri's avatar
      Adding clear logs button (#2118) · c599f4e5
      Mohamed Aziz Mejri 提交于
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Added a Clear Logs button to the System Messages console to remove all
      logs for the selected app. Renamed the filters button to “Clear Filters”
      and updated e2e tests.
      
      - **New Features**
      - Console adds onClearLogs handler that calls
      IpcClient.clearLogs(selectedAppId), then clears appConsoleEntriesAtom;
      shows a toast on error.
      - E2E test verifies “Clear Logs” removes all entries; existing test
      updated to expect “Clear Filters” label.
      
      <sup>Written for commit cc7cafc267e13e05cdb6cc45b3122ac572fcb048.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      c599f4e5
  6. 12 1月, 2026 1 次提交
    • Mohamed Aziz Mejri's avatar
      Fixing regression and adding plus button to HomeChatInput (#2135) · e99cf759
      Mohamed Aziz Mejri 提交于
      closes #2127 
      This PR includes 
      
      - Fixing the regression introduced in the beta release
      - Adding the plus button to HomeChatInput
      
      I will create a follow-up PR that makes the e2e test more realistic
      
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Adds a plus actions menu to HomeChatInput for attachments and fixes the
      beta regression that prevented attaching files in home chat.
      
      - **New Features**
      - Added AuxiliaryActionsMenu to HomeChatInput with an “Attach files”
      submenu; hides context picker and token toggle when not needed.
      - Made menu props optional (showTokenBar/toggle) and added
      hideContextFilesPicker, improving reuse across inputs.
      
      - **Bug Fixes**
      - Restored file upload by handling menu item onSelect and closing the
      submenu after selection; inputs reset to allow re-uploading the same
      file.
      - Updated the e2e test to open the menu, hover “Attach files,” upload
      via the file input, and close with Escape.
      
      <sup>Written for commit 3db5abc98c9f968cb04eb355a586209e4725be30.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      
      
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Introduces a consolidated plus “AuxiliaryActionsMenu” for file/context
      actions in both chat inputs and fixes attachment menu interactions.
      > 
      > - Adds `AuxiliaryActionsMenu` with optional `showTokenBar/toggle`,
      `showContextFilesPicker`, and `isStreaming`; disables attach submenu
      while streaming and conditionally shows context picker and token toggle
      > - Refactors `FileAttachmentDropdown` to render only menu items +
      hidden inputs, use `onSelect` to trigger file pickers, clear input
      values, and close parent via `onMenuClose`
      > - Integrates the new menu into `HomeChatInput` and `ChatInput`; keeps
      `ChatInputControls` and hides context picker where not needed
      > - Updates e2e tests to interact with the new menu, including
      attach-as-context, upload-to-codebase, and drag-and-drop flows;
      standardizes snapshots and closes menus via Escape
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      6b0d1f24b069a9e9b066f8dba59a8f43af318a08. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      e99cf759
  7. 10 1月, 2026 3 次提交
    • Will Chen's avatar
      agent: type check tool (#2137) · dce37cd6
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Introduces a TypeScript type-check capability and a compact status UI
      in chat.
      > 
      > - Adds `run_type_checks` tool (registered in `tool_definitions`) that
      runs workspace or path-scoped checks via existing
      `generateProblemReport`; formats results as count plus `file:line:col`
      lines
      > - Streams progress and completion using `dyad-status` XML, gated by
      `enableAutoFixProblems`; consent preview reflects targeted paths
      > - Implements `DyadStatus` component for pending/success/error display
      with expandable details and registers `dyad-status` in
      `DyadMarkdownParser`
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      8e308551339675803703f01d3ef2018972904b01. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Add an agent tool to run TypeScript type checks and stream results to
      chat using a new dyad-status UI block. Lets the agent scope checks to
      specific files or folders and shows clear progress and outcomes.
      
      - New Features
      - Added run_type_checks tool: runs TypeScript checks; accepts optional
      paths to limit scope.
      - Streams progress and results via a dyad-status block in chat; shows
      pending/success/error states.
      - Formats output with a count and file:line:col messages, or “No type
      errors found.”
      - Enabled only when Auto Fix Problems is on; consent preview lists
      targeted paths.
      - Added DyadStatus component and registered the dyad-status custom tag
      in DyadMarkdownParser.
      
      <sup>Written for commit 8e308551339675803703f01d3ef2018972904b01.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      ---------
      Co-authored-by: 's avatargreptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
      dce37cd6
    • Will Chen's avatar
      Agent TODOs tool (#2136) · 23f9a95e
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Introduces live Agent to-do tracking during local-agent runs.
      > 
      > - **New tool:** `update_todos` (merge/replace support) added to agent
      toolset; updates per-turn `todos` in `AgentContext` and broadcasts via
      `onUpdateTodos`
      > - **IPC plumbing:** New `agent-tool:todos-update` channel allowlisted
      in `preload`; `IpcClient` adds `onAgentTodosUpdate` and
      `onChatStreamStart` hooks and forwards updates; main handler emits
      updates and initializes `ctx.todos`
      > - **Types:** Adds `AgentTodo` and `AgentTodosUpdatePayload`; extends
      `AgentContext` with `todos` and `onUpdateTodos`
      > - **UI/state:** New `agentTodosByChatIdAtom`; `TodoList` component;
      `ChatInput` renders live todos; renderer subscribes to updates and
      clears todos on stream start/end
      > - **Tests:** E2E snapshot updated with `update_todos` tool schema
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      e2bc12f172b2b6ae15c3514e7e9c4d2b693a6e99. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Adds an Agent TODOs tool and UI to track task progress during local
      agent runs. Live updates stream to the chat and display in a collapsible
      todo list, which clears when a new stream starts.
      
      - **New Features**
      - Added update_todos tool with merge/replace support and status updates;
      broadcasts via onUpdateTodos.
      - Introduced IPC channel agent-tool:todos-update with
      IpcClient.onAgentTodosUpdate and preload whitelist.
        - Defined AgentTodo and AgentTodosUpdatePayload types.
        - Added agentTodosByChatIdAtom and cleanup on chat stream start.
      - Implemented TodoList UI and wired into ChatInput to show live progress
      and counts.
      
      <sup>Written for commit e2bc12f172b2b6ae15c3514e7e9c4d2b693a6e99.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      ---------
      Co-authored-by: 's avatarcubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
      23f9a95e
    • Will Chen's avatar
      Local agent auto (#2134) · c145a0cd
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Improves local-agent auto mode with robust model routing and updates
      tests accordingly.
      > 
      > - Centralizes pro model selection in `getProModelClient`, routing
      OpenAI via `responses` in local-agent and adding local fallback across
      `GPT_5.2`, `Claude Sonnet 4.5`, and `Gemini 3 Flash`
      > - Standardizes model IDs via constants and updates provider/thinking
      flags (adds reasoning for `auto` provider)
      > - e2e: introduce `clickRunSecurityReview()` helper; select Anthropic
      model in local-agent; refresh snapshots to use `reasoning_effort` and
      reflect non-OpenAI model
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      b3fd078d2b893ebc6d011365295948a17ea58c4f. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Enables reliable local-agent auto mode with smart model fallback and
      routes OpenAI models through Responses to keep reasoning features
      working. Standardizes model names with constants.
      
      - **New Features**
      - Auto mode falls back across GPT‑5.2 (OpenAI), Claude Sonnet 4.5
      (Anthropic), and Gemini 3 Flash (Google).
      - OpenAI models use the Responses API to support thinking summaries and
      full functionality.
        - Auto provider enables reasoning options in local-agent.
      
      - **Refactors**
      - Centralized pro model routing in getProModelClient and avoids free
      variants.
      - Added constants for model IDs (GPT_5_2_MODEL_NAME, SONNET_4_5,
      GEMINI_3_FLASH).
      
      <sup>Written for commit b3fd078d2b893ebc6d011365295948a17ea58c4f.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      c145a0cd