1. 24 12月, 2025 7 次提交
    • Will Chen's avatar
      Add GLM 4.7, remove obsolete free models, add devstral 2 (free) (#2019) · 22712b42
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Updates OpenRouter model catalog and defaults.
      > 
      > - Add `mistralai/devstral-2512:free` (Devstral 2) with `contextWindow`
      200k
      > - Upgrade `z-ai/glm-4.6` to `z-ai/glm-4.7` and set `temperature` to
      0.7
      > - Remove deprecated DeepSeek free entries; retain paid
      `deepseek/deepseek-chat-v3.1`
      > - No other providers or TURBO models changed;
      `FREE_OPENROUTER_MODEL_NAMES` updates automatically from the list
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      fb8546eab6dd595e5a27c5024499c3c042b63f36. 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
      Updated model catalog: added GLM 4.7 and Devstral 2 (free), and removed
      obsolete DeepSeek free models to keep options current and improve coding
      performance.
      
      - **New Features**
        - Added z-ai/glm-4.7 with temperature 0.7 and 200k context.
        - Added mistralai/devstral-2512:free (“Devstral 2”) with 200k context.
      
      - **Migration**
      - Removed deepseek/deepseek-chat-v3.1:free and
      deepseek/deepseek-chat-v3-0324:free. Update any references to
      mistralai/devstral-2512:free or another supported model.
      
      <sup>Written for commit fb8546eab6dd595e5a27c5024499c3c042b63f36.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      22712b42
    • Will Chen's avatar
      Use idiomatic react-query for useProposal (#2018) · a4747a49
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > **Refactor: proposal fetching via react-query**
      > 
      > - Replaces Jotai state/effects with `useQuery` in `useProposal`
      (`queryKey: ["proposal", chatId]`, `enabled` gating, `refetch` exposed,
      error typed as `Error`)
      > - Deletes `src/atoms/proposalAtoms.ts`; `proposalResultAtom` removed
      > - In `useStreamChat`, stop using `useProposal`; on stream end, call
      `queryClient.invalidateQueries({ queryKey: ["proposal", chatId] })`
      > - In `ChatInput`, display `proposalError.message` and keep using
      `refreshProposal()` from the hook
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      9739b1befe76a7cb491594815d3d92977ad6a1c6. 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
      Refactored proposal fetching to use React Query’s useQuery, removing
      Jotai state and simplifying refresh and error handling. Improves
      reliability and makes the hook easier to use.
      
      - **Refactors**
      - Replaced custom state/effects with useQuery (key: ["proposal",
      chatId], enabled only when chatId).
      - Removed proposalAtoms and Jotai; hook now returns proposalResult,
      isLoading, error, refreshProposal.
      - Updated useStreamChat to invalidate the proposal query via QueryClient
      (invalidateQueries(["proposal", chatId])).
        - ChatInput now displays proposalError.message for clearer errors.
        - Added meta: { showErrorToast: true } to surface fetch errors.
      
      <sup>Written for commit 9739b1befe76a7cb491594815d3d92977ad6a1c6.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      a4747a49
    • Will Chen's avatar
      Refactor useSupabase hook to be idiomatic (#2017) · 04087298
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Moves Supabase data fetching/mutations to React Query and aligns UI
      with new query states for clearer loading/errors and cache-driven
      updates.
      > 
      > - Removed most Supabase atoms; kept `lastLogTimestampAtom` only
      > - New `useSupabase` exposes React Query queries (`organizations`,
      `projects`, `branches`) and mutations (delete org, set/unset app
      project, edge logs) with invalidate/refetch helpers
      > - `SupabaseConnector` and `SupabaseIntegration` now use `refetch*`,
      granular `isLoading*/error` flags, and updated handlers; branch select
      disabled via `isLoadingBranches`/`isSettingAppProject`
      > - `PreviewPanel` switches `loadEdgeLogs` to accept `{ projectId,
      organizationSlug }` and continues polling
      > - OAuth return flow now calls `refetchOrganizations`/`refetchProjects`
      instead of manual load functions
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      573df5298f323854d4a8aa1ce5903b99e4caba62. 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
      Refactored Supabase integration to use TanStack React Query for data
      fetching and mutations. This makes loading/error handling clearer,
      improves cache invalidation, and smooths the UI.
      
      - **Refactors**
      - Replaced Jotai state with React Query for organizations, projects, and
      branches; removed related atoms.
      - Added mutations for delete organization, set/unset app project, and
      edge logs; invalidates org/project queries on deletion.
      - Exposed granular states for organizations, projects, and branches;
      removed selected project state.
      - Updated SupabaseConnector/SupabaseIntegration to use refetch* methods
      and new flags; PreviewPanel now calls loadEdgeLogs with params; disables
      branch select while loading or setting.
      
      <sup>Written for commit 573df5298f323854d4a8aa1ce5903b99e4caba62.
      Summary will update automatically 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>
      04087298
    • Adeniji Adekunle James's avatar
      fix: Show Token Usage Requires Double Open (#1947) (#1989) · de798def
      Adeniji Adekunle James 提交于
      Closes #1947
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Fixed the Show Token Usage button so it toggles on a single click.
      Switched to a functional state updater to prevent stale state and double
      toggles.
      
      - **Bug Fixes**
      - Replace setShowTokenBar(!showTokenBar) with a memoized toggle using
      setShowTokenBar(prev => !prev) to ensure reliable toggle and immediate
      active styling.
      
      <sup>Written for commit e1351b9044a447515d4dc817cdff83fff50a57f4.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      de798def
    • Will Chen's avatar
      Make undo more robust by using sourceCommitHash (#2015) · 72050d9e
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Strengthens undo to work even when an assistant message produced no
      code.
      > 
      > - Use the last assistant message’s `sourceCommitHash` for
      `revertVersion` and pass `currentChatMessageId` to prune messages
      at/after the triggering user message; refresh chat state
      > - Backend `revert-version` now conditionally commits only if there are
      staged changes and supports message deletion via `gte` with
      `currentChatMessageId`, falling back to commit-hash-based pruning
      > - Extend IPC types: add `Message.sourceCommitHash` and
      `RevertVersionParams.currentChatMessageId`
      > - Add e2e test and fixture for undo after a no-code assistant response
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      a97e153d3cb703461b66bb7eaec28b4c7ae32cc4. 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
      Make undo reliable by reverting to the message’s source commit instead
      of relying on a previous assistant message or the chat’s initial state.
      This fixes undo when an assistant reply contains no code.
      
      - **Bug Fixes**
      - Use current message’s sourceCommitHash for revertVersion and pass
      currentChatMessageId to prune messages at/after the triggering user
      message; then refresh chat.
      - Extend Message type with sourceCommitHash and show a warning if it’s
      missing.
      - Add e2e test for undo after a no-code assistant response with a new
      fixture.
      
      <sup>Written for commit a97e153d3cb703461b66bb7eaec28b4c7ae32cc4.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      72050d9e
    • Will Chen's avatar
      Multi supabase accounts (#2014) · c4ee578c
      Will Chen 提交于
      Fixes #527 
      
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Enables org-scoped Supabase connectivity across the app with
      per-organization tokens and org-aware project/branch/logs/function
      operations.
      > 
      > - DB: migration `0019` adds `apps.supabase_organization_slug`; drizzle
      schema updated
      > - Settings/schema: introduce
      `supabase.organizations{slug->{tokens,...}}`; helper
      `isSupabaseConnected`; encrypt/decrypt per-org tokens
      > - OAuth: `handleSupabaseOAuthReturn` now stores credentials under the
      detected organization
      > - IPC: new channels `supabase:list-organizations`,
      `supabase:delete-organization`, `supabase:list-all-projects`; existing
      branches/logs/set/unset handlers accept `organizationSlug`; preload
      allowlist and ipc_client updated
      > - Supabase management: clients selectable per organization; all calls
      (projects, branches, logs, SQL, deploy/delete/bulk-update functions,
      context/client code) accept `organizationSlug`
      > - UI/hooks: `SupabaseConnector` and `SupabaseIntegration` list/manage
      organizations, group projects by org, persist org on selection, and
      handle org-scoped branch switching; `useSupabase` adds org state and
      org-aware loaders; preview panel loads edge logs with org
      > - Misc: AGENTS.md adds database/migrations guidance; minor test
      fixture tweak
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      402bb2cd357dfd9c5d4de28ee68cb4719ca75a51. 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 multi-organization Supabase support so you can connect multiple
      orgs, pick projects by org, and manage tokens per org. Updates UI,
      settings, IPC, and the app schema to store organization context with
      each connected project.
      
      - **New Features**
      - Connect multiple Supabase organizations; list, add, and delete
      organizations.
      - Project picker groups projects by organization; selection persists
      organizationSlug on the app.
      - Branch switching keeps the selected organization context; “Disconnect
      Project” still works.
      - Per-organization token storage and refresh; new IPC:
      supabase:list-organizations, supabase:delete-organization,
      supabase:list-all-projects.
      - Settings shows connected organizations and “Disconnect All”; legacy
      single-account flows continue to work.
      
      - **Migration**
      - Apply SQL migration 0019 to add supabase_organization_slug to the apps
      table.
      
      <sup>Written for commit 402bb2cd357dfd9c5d4de28ee68cb4719ca75a51.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      c4ee578c
    • Will Chen's avatar
      Telemetry for search & replace (#2001) · b36962b5
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Adds end-to-end telemetry for Turbo Edits search & replace and wiring
      to PostHog.
      > 
      > - Track `search_replace:fix` on initial dry run and each retry with
      `attemptNumber`, `success`, `issueCount`, and per-file `errors` (emitted
      from `chat_stream_handlers.ts`)
      > - New main helper `sendTelemetryEvent` and IPC channel
      `telemetry:event` (whitelisted in `preload.ts`); renderer subscribes via
      `IpcClient.onTelemetryEvent` and forwards with `posthog.capture`
      > - Improves diagnostics: warns with original and diff when
      `applySearchReplace` fails in `response_processor.ts`
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      56bc3a352a2ab3b1e0100923cb395759229ee645. 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 telemetry for Turbo Edits search & replace, forwarding events from
      main to renderer and capturing them in PostHog. Tracks success/failure
      and errors for each fix attempt.
      
      - **New Features**
      - Emit "search_replace:fix" with attemptNumber, success, issueCount, and
      per-file errors on initial attempt and retries.
      - Add a sendTelemetryEvent helper in main and a "telemetry:event" IPC
      channel (whitelisted in preload).
      - Expose IpcClient.onTelemetryEvent; renderer forwards to PostHog via
      posthog.capture.
      
      <sup>Written for commit 56bc3a352a2ab3b1e0100923cb395759229ee645.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      b36962b5
  2. 23 12月, 2025 4 次提交
    • Will Chen's avatar
      Bulk supabase edge function update (#2002) · a121dbc9
      Will Chen 提交于
      Context:
      - https://github.com/orgs/supabase/discussions/33720
      - https://supabase.com/docs/reference/api/v1-deploy-a-function
      
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Introduces a two-step deploy flow for edge functions: parallel
      bundling followed by bulk activation, plus API shape updates.
      > 
      > - Adds `DeployedFunctionResponse` and updates `deploySupabaseFunction`
      to support `bundleOnly`, return the deployed function payload, and use
      `import_map_path`
      > - Implements `bulkUpdateFunctions` (PUT `/projects/{id}/functions`) to
      activate multiple functions at once
      > - In `deployAllSupabaseFunctions`, filters to functions with
      `index.ts`, bundles them in parallel (`bundleOnly=true`), aggregates
      successes/errors, then bulk-activates successful bundles
      > - Cleans up import map generation (`imports: {}`) and switches deploy
      URL construction to include `bundleOnly` query param
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      7b1d63ee73a56dc24b3465d812838bc5bf5bd0e5. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      a121dbc9
    • Mohamed Aziz Mejri's avatar
      Message list virtualization (#1993) · bf44acd7
      Mohamed Aziz Mejri 提交于
      Closes #1971
      
      
      
      
      
      
      
      
      
      
      
      
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Virtualized the chat message list with react-virtuoso for smoother
      scrolling and lower memory use in long chats, with non-virtualized
      rendering in E2E builds for stable tests. Memoized ChatMessage to reduce
      unnecessary re-renders.
      
      - **New Features**
      - Switched MessagesList to Virtuoso with itemContent, overscan, smooth
      follow, and initial focus on the latest message.
      - Moved context limit and Undo/Retry controls into a footer; preserved
      empty/setup states.
      
      - **Dependencies**
        - Added react-virtuoso ^4.17.0.
      
      <sup>Written for commit f82a976c70bebf40d5c7af7de514e0afde604c64.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      
      
      
      
      
      
      
      
      
      
      
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Virtualizes the chat message list with react-virtuoso, adds a
      non-virtualized path for E2E via E2E_TEST_BUILD, and refactors
      footer/actions with memoized ChatMessage.
      > 
      > - **Frontend (chat)**:
      > - Switch `src/components/chat/MessagesList.tsx` to `react-virtuoso`
      with `itemContent`, `components.Footer`, overscan, and smooth follow;
      extract `FooterComponent` for context limit + Undo/Retry controls.
      > - Add E2E test mode using `envVars.E2E_TEST_BUILD` to render
      non-virtualized list; improve empty/setup handling; memoize
      `ChatMessage`.
      > - **Electron/IPC**:
      > - Include `E2E_TEST_BUILD` in `get-env-vars` so renderer can access
      test-mode flag.
      > - **Dependencies**:
      >   - Add `react-virtuoso`.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      1c71fe7555a6a32ff29ef1034b889822527484ba. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      bf44acd7
    • Mohamed Aziz Mejri's avatar
      Aggregating logs accross sources and improving logs viewer (#1956) · cc811a40
      Mohamed Aziz Mejri 提交于
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Aggregates logs from client console, network requests, and Supabase Edge
      Functions into one console with filters and virtualization for faster
      debugging. Improves the preview console UX with better filtering,
      auto-scroll, and “send to chat”.
      
      - **New Features**
      - Unified log stream: new appConsoleEntriesAtom and combined,
      time-sorted entries (client console, network requests, edge-function,
      build-time).
      - Client capture: injects console interceptor and a Service Worker to
      track fetch requests/responses/errors; forwarded via postMessage.
      - Supabase Edge Function logs: new IPC handler and admin client query;
      incremental polling via last timestamp; function name extracted for
      source filtering.
      - Console UI: level/type/source filters, log count, virtualized list
      with react-virtuoso, auto-scroll when near bottom, clear filters, and
      “send to chat” per entry.
      - Preview iframe: forwards console logs, network events, and
      build/runtime errors into unified logs with proper levels.
      
      - **Dependencies**
        - Added react-virtuoso.
      
      <sup>Written for commit c8390c5ef9ab2def1135052f04156368b2b9d5d0.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Brings a unified, performant logs console and multi-source aggregation
      for easier debugging.
      > 
      > - Introduces `appConsoleEntriesAtom` and removes `appOutputAtom`;
      resets logs on app switch
      > - Captures client logs via injected `worker/dyad_logs.js` and forwards
      to parent; displays in `Console` with `ConsoleEntry` UI
      > - Intercepts network requests/responses/errors via Service Worker
      (`worker/dyad-sw.js`, registered by `dyad-sw-register.js`); proxy serves
      SW and injects scripts
      > - Adds Supabase Edge Function logs: IPC handler
      `supabase:get-edge-logs`, admin query `getSupabaseProjectLogs`, polling
      via `useSupabase.loadEdgeLogs`, and `lastLogTimestampAtom`; function
      name extracted for source tags
      > - Updates `PreviewIframe` to forward console/network events and
      runtime errors into unified log stream
      > - New console UI (`Console.tsx`, `ConsoleFilters.tsx`,
      `ConsoleEntry.tsx`) with level/type/source filters, auto-scroll, and
      list virtualization via `react-virtuoso` (disabled in E2E via
      `E2E_TEST_BUILD`)
      > - Adds "Send to chat" action per log and "Clear" filter control;
      increases CI timeout; adds e2e tests for logs, network, chat export, and
      filter clearing
      > - Exposes `E2E_TEST_BUILD` via `get-env-vars`; adds dependency
      `react-virtuoso`
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      0c10230f707c2e6f1968bad428b16fe1f56c039f. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      cc811a40
    • Will Chen's avatar
      Update README.md (#1976) · 3e051bab
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Update README contributing section to reference license details below
      instead of stating Apache 2.0 explicitly.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      e1c66fde9c8c12a6c020d5e60123299bbe84e8d6. 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 README license text to point to the License section
      instead of naming the license directly. Keeps docs consistent with the
      LICENSE file and avoids outdated info.
      
      <sup>Written for commit e1c66fde9c8c12a6c020d5e60123299bbe84e8d6.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      3e051bab
  3. 20 12月, 2025 1 次提交
    • Will Chen's avatar
      Local agent (#1967) · 384caf6e
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Introduce Agent v2 local tool‑calling mode with parallel tools,
      consent workflow, UI, and AI message persistence (incl. MCP integration
      and Supabase-aware ops).
      > 
      > - **Agent v2 (Local Agent) • Tool-calling mode**:
      > - Add new chat mode (`local-agent`) with parallel tool calls and MCP
      tool support; dedicated system prompt and streaming handler.
      > - Built-in tools: `read_file`, `list_files`, `write_file`,
      `rename_file`, `delete_file`, `search_replace`, `add_dependency`,
      `add_integration`, `execute_sql`, `get_database_schema`,
      `set_chat_summary`.
      > - Consent workflow: per-tool “ask/always” defaults, inline consent
      banner, and settings page to manage consents.
      > - **UI**:
      > - Render new custom tags in `DyadMarkdownParser` (e.g.,
      `dyad-list-files`, `dyad-database-schema`, MCP call/result), plus
      `AgentConsentBanner`.
      > - `ChatModeSelector` exposes “Agent v2 (experimental)”; settings add
      “Agent Permissions”.
      > - **Backend/IPC**:
      > - New local-agent handler, tool definitions, shared file ops
      (Git/Supabase deploy), provider/options refactor, MCP consent bridge;
      register agent tool IPC handlers.
      > - Persist AI SDK messages/tool calls via `messages.ai_messages_json`
      with size guard and startup cleanup.
      > - **DB**:
      > - Migration `0018_*` adds `ai_messages_json` column; snapshot/journal
      updated.
      > - **Testing**:
      > - E2E fixtures and specs for local-agent (parallel tools, consent,
      MCP); fake LLM server support; unit tests for utils/handler.
      > - **Docs**:
      >   - Add `docs/agent_architecture.md` and link from `CONTRIBUTING.md`.
      > - **Deps**:
      >   - Add `jsonrepair`.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      27a18e8ec6ec4e41edd0abcddffc42ee3a9fda3a. 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
      Introduce Local Agent v2 with parallel tool calls and user consent, plus
      UI to manage and visualize tool activity. Adds DB persistence for AI
      tool-call messages and smarter Supabase auto-deploys.
      
      - **New Features**
      - New “Agent v2” chat mode with tool calls (read/list files, DB schema,
      write/rename/delete, search/replace, add dependency, add integration,
      execute SQL, set chat summary), parallel execution, and MCP tool
      support.
      - Consent system with defaults, “accept once/always/decline,” inline
      banner prompts, and a settings panel to manage consents.
      - UI rendering for tool activity: list files, database schema, and tool
      call/result/error blocks.
      - Streaming handler, XML tool translator, and a dedicated system prompt
      for Agent v2.
      - Database: messages.ai_messages_json to store AI SDK messages/tool
      calls with size limits and startup cleanup.
      
      - **Refactors**
      - Supabase: support functions/_shared modules, detect edits, and deploy
      all affected functions; centralized file operations for shared tooling.
      
      <sup>Written for commit 27a18e8ec6ec4e41edd0abcddffc42ee3a9fda3a.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      384caf6e
  4. 18 12月, 2025 6 次提交
    • Will Chen's avatar
      Bump to v0.31.0-beta.1 (#1978) · 32093a4c
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Bumps app version to 0.31.0-beta.1 in package.json.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      4ee3fcee216041f734d39323489514021b90b042. 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
      Bumps the app version from 0.30.0-beta.1 to 0.31.0-beta.1 to prepare the
      next beta release.
      
      <sup>Written for commit 4ee3fcee216041f734d39323489514021b90b042.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      32093a4c
    • Will Chen's avatar
      fix thinking budget e2e (#1981) · 656b6cb4
      Will Chen 提交于
      656b6cb4
    • Will Chen's avatar
      Fix MCP e2e test (#1980) · df785a8b
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      c8f494513ae9b2fedda833aeda41ed660b584f16. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      df785a8b
    • Will Chen's avatar
      prettier: gen playwright (#1979) · 423be75d
      Will Chen 提交于
      423be75d
    • Will Chen's avatar
      gemini 3 flash (#1977) · 2a5cd317
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      015da81bdee067873de66007016e46b15d3b4ff0. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      2a5cd317
    • Will Chen's avatar
      Fix Playwright report comments on forked PRs (#1975) · 7cf8317f
      Will Chen 提交于
      ## Summary
      - update the Playwright summary script to support workflow_run events
      and optional comment skipping
      - stop the CI workflow from posting Playwright comments directly and
      only generate the summary
      - add a workflow_run-based commenter workflow that downloads artifacts
      and posts results for PRs, including forks
      
      ## Testing
      - not run (workflow changes only)
      
      
      ------
      [Codex
      Task](https://chatgpt.com/codex/tasks/task_e_694340b2da6083278e42db076ea89eba)
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Moves Playwright commenting to a workflow_run job that downloads
      artifacts and posts/updates the summary; CI now only uploads the report,
      and the summary script improves PR/run detection and OS bucketing.
      > 
      > - **Workflows**:
      > - **CI (`.github/workflows/ci.yml`)**: Remove in-job PR comment step;
      keep merging reports and uploading `playwright-report` artifact.
      > - **New (`.github/workflows/playwright-comment.yml`)**: `workflow_run`
      on CI to download artifacts (`html-report--attempt-*`, `blob-report-*`)
      and run `scripts/generate-playwright-summary.js` to comment on the PR
      (supports forks).
      > - **Script (`scripts/generate-playwright-summary.js`)**:
      > - Add PR detection for `workflow_run` and `PR_NUMBER`; use
      `PLAYWRIGHT_RUN_ID` for report link.
      > - Improve OS detection/bucketing (auto-detect from attachments/stacks,
      sensible defaults, lazy bucket creation).
      > - Safer fallbacks when no artifacts; always write job summary; skip PR
      comment when no PR is detected.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      8428f7ad6eb0671571cb4ae0e473434ffb1cf8d1. 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 Playwright report comments on forked PRs by moving comment posting
      to a workflow_run job. CI now only uploads the reports; a separate
      workflow posts or updates the PR comment using artifacts.
      
      - **Bug Fixes**
      - Added Playwright Report Comment workflow (workflow_run on CI) to
      download artifacts and comment on PRs from forks.
        - Removed PR comment step from CI; CI only uploads Playwright reports.
      - Updated summary script to support workflow_run, auto-detect the PR
      number, use PLAYWRIGHT_RUN_ID for links, and improve OS
      detection/bucketing.
      
      <sup>Written for commit 8428f7ad6eb0671571cb4ae0e473434ffb1cf8d1.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      7cf8317f
  5. 17 12月, 2025 2 次提交
    • Mohamed Aziz Mejri's avatar
      Fixing scrollbar flickering in annotator mode (#1968) · 2e31c508
      Mohamed Aziz Mejri 提交于
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Fixes scrollbar flickering in annotator mode by constraining draggable
      inputs within the container and suppressing scroll during drag for
      smoother movement.
      
      - **Bug Fixes**
      - Added containerRef to DraggableTextInput and elementRef to calculate
      bounds.
      - Constrained drag coordinates to container size and accounted for
      scale.
      - Prevented default and stopped propagation on mousemove to avoid scroll
      jitter.
        - Passed containerRef from Annotator to DraggableTextInput.
      
      <sup>Written for commit 959605ddaa5faf23252ee797bf206c6dff46a069.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      2e31c508
    • Will Chen's avatar
      Do not hardcode 32100 port (#1969) · 3fd45ec2
      Will Chen 提交于
      Fixes #1949 
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      46ac310c762fd4044c35bc59264122234ed19bbf. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Make app ports dynamic instead of hardcoded 32100 to prevent conflicts
      and keep local runs, Docker, and env URLs in sync. Ports now derive from
      appId using a base of 32100.
      
      - **Bug Fixes**
        - Added getAppPort(appId) = 32100 + (appId % 10_000).
      - Used the dynamic port in NEXT_PUBLIC_SERVER_URL, start commands,
      Docker -p mapping, and cleanUpPort.
      - Updated getCommand to accept appId and generate a per-app default
      start command.
      
      <sup>Written for commit 46ac310c762fd4044c35bc59264122234ed19bbf.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      3fd45ec2
  6. 16 12月, 2025 4 次提交
    • Will Chen's avatar
      Leave GitHub comment with playwright results (#1965) · 47992f48
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Posts a per-OS Playwright test summary as a PR comment by adding a
      JSON reporter and a CI step to generate and publish the results.
      > 
      > - **CI / Reporting**
      > - Add permissions and a GitHub Script step in
      `.github/workflows/ci.yml` to generate and post/update a Playwright test
      summary comment after merging shard reports.
      >   - Upload merged HTML report artifact and link to full run.
      > - **Playwright config**
      > - Update `merge.config.ts` to add JSON reporter output to
      `playwright-report/results.json` alongside HTML.
      > - **New Script**
      > - Add `scripts/generate-playwright-summary.js` to parse Playwright
      JSON, compute per-OS (macOS/Windows) pass/fail/flaky/skipped counts,
      list top failures/flaky tests, and write both PR comment and job
      summary.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      d5ca6987f65e9a7063533960382516af89e67391. 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
      Posts Playwright test results as a PR comment with a per-OS summary,
      flaky test counts, and top failures, improving CI visibility across
      macOS and Windows. Adds a JSON reporter and a GitHub Script step that
      links to the full report.
      
      - **New Features**
        - Adds JSON reporter output to playwright-report/results.json.
      - Adds a script to parse results, include flaky tests, post/update the
      PR comment, and write the job summary.
      - Updates CI workflow permissions and runs the summary script after
      report merge.
      
      <sup>Written for commit d5ca6987f65e9a7063533960382516af89e67391.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      47992f48
    • Will Chen's avatar
      Support shared modules for supabase edge functions (#1964) · 91cf1e97
      Will Chen 提交于
      Credit: thanks @SlayTheDragons whose PR
      https://github.com/dyad-sh/dyad/pull/1665 paved the way for this
      implementation.
      
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Adds _shared module support for Supabase edge functions with
      import-map packaging and automatic redeploys; updates deployment to
      include full function directories plus shared files, and adds path
      utilities and tests.
      > 
      > - **Supabase Edge Functions**
      > - **Shared Modules Support**: Detect `_shared` changes and redeploy
      all functions; regular function changes deploy only that function.
      > - **Deployment Overhaul**: `deploySupabaseFunctions` now uploads full
      function directories plus `_shared` files via multipart form-data, sets
      `entrypoint_path`, and writes `import_map.json` (`_shared/` →
      `../_shared/`).
      > - **Function Discovery & Packaging**: Add file collection helpers
      (`listFilesWithStats`, `loadZipEntries`) and path utilities
      (`toPosixPath`, `findFunctionDirectory`, `stripSupabaseFunctionsPrefix`)
      with signature-based caching for `_shared`.
      > - **APIs & Utils**: Introduce `isSharedServerModule`, refine
      `isServerFunction` (excludes `_shared`), add
      `extractFunctionNameFromPath`, and `buildSignature`.
      > - **IPC Changes**
      > - Update file edit/rename/delete flows to track shared module edits
      and trigger full redeploys; otherwise deploy per-function using
      extracted name and `appPath`.
      > - **Prompts**
      >   - Document `_shared` usage and import pattern in Supabase prompt.
      > - **Tests**
      > - Add tests for function/shared detection, name extraction, path
      handling, and signature building.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      f35599ec0e708e2ef6b7e78ae7901b29953a6dff. 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 support for shared modules for Supabase edge functions. Shared code
      in supabase/functions/_shared is now bundled via an import map and
      triggers redeploys across all functions when changed.
      
      - **New Features**
      - Detects shared modules in supabase/functions/_shared and redeploys all
      functions when they change.
      - Deploys full function directories plus shared files, and writes an
      import_map.json that resolves "_shared/" imports.
      - Auto-deploys only the affected function on file changes; switches to
      redeploy-all when a shared module is touched.
      
      - **Refactors**
      - deploySupabaseFunction now uploads multiple files (function + shared)
      using multipart form-data and sets entrypoint/import map.
      - Added file collection, path utilities, and shared-file caching via
      content signatures to reduce redundant reads.
      - Updated deployAllSupabaseFunctions to skip non-function dirs (e.g.,
      _shared) and use functionPath.
      - Added tests for function/shared detection, path handling, and
      signature building.
      
      <sup>Written for commit 302d84625d9e61477db9ada052a027b29ff18cef.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      91cf1e97
    • Will Chen's avatar
      Rename Agent mode to Build with MCP in UI (#1966) · a6d6a4cd
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Rename the “Agent” chat mode to “Build with MCP” and update its label
      and description in `src/components/ChatModeSelector.tsx`.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      a5ad57fa2492941186c0cdba9ea9d6340817ea6b. 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
      Renamed the “Agent” chat mode to “Build with MCP” and added shared
      module support for Supabase Edge Functions, including automatic
      redeploys when shared code changes.
      
      - **New Features**
      - Updated UI: “Agent” → “Build (MCP)” in mode name and “Build with MCP
      (experimental)” in selector.
      - Detect changes in supabase/functions/_shared and redeploy all
      functions accordingly.
      - Deploy functions with their full directory plus shared files; add an
      import_map to resolve “_shared/” imports.
        - Cache shared files by signature to avoid redundant reads.
        - Added tests for path helpers and signature building.
      
      - **Refactors**
      - deploySupabaseFunctions now accepts appPath and functionPath, and
      uploads multiple files instead of a single content string.
      - Updated app and response handlers to use the new deploy flow, skip
      per-function redeploys when shared modules change, and avoid treating
      _shared as a function.
      - Added isSharedServerModule and refined isServerFunction to exclude
      _shared.
      
      <sup>Written for commit a5ad57fa2492941186c0cdba9ea9d6340817ea6b.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      a6d6a4cd
    • Will Chen's avatar
      Use user info proxy (#1963) · 213def4a
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Switches budget fetch to `https://api.dyad.sh/v1/user/info` and
      validates/consumes `usedCredits`, `totalCredits`, and `budgetResetDate`
      directly via Zod.
      > 
      > - **IPC/Pro handlers (`src/ipc/handlers/pro_handlers.ts`)**:
      > - **Endpoint**: Update user info URL to
      `https://api.dyad.sh/v1/user/info`.
      > - **Validation**: Add `zod` schema `UserInfoResponseSchema` to
      validate API response.
      > - **Data mapping**: Use `usedCredits`, `totalCredits`,
      `budgetResetDate`, and `userId` from response directly; remove
      conversion logic and old nested `user_info` parsing.
      > - **Redaction**: Compute `redactedUserId` from `userId` and return
      parsed `UserBudgetInfo`.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      da1f192c2cabb2154bd10b69555c27d62fbb6368. 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
      Switched user budget fetch to the new user info proxy and added schema
      validation. Uses API-provided credits directly and removes the old
      conversion logic.
      
      - **Refactors**
        - Use https://api.dyad.sh/v1/user/info instead of llm-gateway.
      - Validate response with a Zod schema (usedCredits, totalCredits,
      budgetResetDate, userId).
        - Map fields directly to UserBudgetInfo and remove CONVERSION_RATIO.
        - Keep redacted user ID format (****1234).
      
      - **Dependencies**
      - Removed unused html-dom-parser, html-react-parser, and react-property
      from the lockfile.
      
      <sup>Written for commit da1f192c2cabb2154bd10b69555c27d62fbb6368.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      213def4a
  7. 15 12月, 2025 1 次提交
    • Mohamed Aziz Mejri's avatar
      logging and presenting cpu/memory usage when app is force-closed (#1894) · 9d33f375
      Mohamed Aziz Mejri 提交于
      closes #1803 
      
      
      
      
      
      
      
      
      
      
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Detects when the app was force-closed and shows a dialog with the last
      known CPU and memory usage. Adds background performance monitoring so we
      can surface metrics on next launch.
      
      - **New Features**
      - Start a performance monitor at app launch; captures process and system
      memory/CPU every 30s and on quit.
      - Persist metrics in settings.lastKnownPerformance and track
      settings.isRunning to detect improper shutdowns.
      - On startup, if the previous run was force-closed, send a
      "force-close-detected" IPC event after the window loads.
        - Add ForceCloseDialog to display timestamped process/system metrics.
      - Whitelist the new IPC channel in preload and listen for it on the home
      page.
      
      <sup>Written for commit 0543cdc234da7f94024e8506749aaa9ca36ef916.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      9d33f375
  8. 14 12月, 2025 1 次提交
    • Mohamed Aziz Mejri's avatar
      Annotator (#1861) · a4ab1a7f
      Mohamed Aziz Mejri 提交于
      <!-- This is an auto-generated description by cubic. -->
      ## Summary by cubic
      Adds an in-app screenshot annotator to the Preview panel for Pro users
      so you can capture the current app view, draw or add text, and submit an
      annotated image to chat.
      
      - **New Features**
      - Pen button in PreviewIframe to toggle annotator; captures a screenshot
      via worker messaging and displays it in a Konva canvas.
      - Tools: select, freehand draw, and draggable text; supports undo/redo,
      delete, and resizing with Transformer. Canvas scales to the container.
      Includes a color picker.
      - Submit exports a PNG and attaches it to the chat via useAttachments;
      prefills the chat input; annotator auto-closes after submit.
        - Pro-only: non-Pro users see an upsell screen.
      - State atoms added: annotatorModeAtom, screenshotDataUrlAtom,
      attachmentsAtom; PreviewIframe now handles dyad-screenshot-response
      messages.
      
      - **Dependencies**
        - Added konva, react-konva, perfect-freehand, and html-to-image.
      - Proxy now injects html-to-image and the new dyad-screenshot-client.js
      for screenshot capture.
      
      <sup>Written for commit 580aca271c5993a0dc7426e36e34393e073bd67b.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      a4ab1a7f
  9. 13 12月, 2025 1 次提交
    • Will Chen's avatar
      Parameterize undo e2e test (#1943) · 86e40057
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Parameterizes the undo e2e test and adds a second run using native Git
      via a shared helper.
      > 
      > - **Tests (e2e)**:
      > - Refactor `e2e-tests/undo.spec.ts` to use `runUndoTest(po,
      nativeGit)` helper.
      > - Pass `nativeGit` through `po.setUp({ autoApprove: true, nativeGit
      })`.
      >     - Import `PageObject` from `helpers/test_helper`.
      > - Add second test "undo with native git" alongside existing "undo"
      test.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      2108a7d73669794f0052192e8b5a1ffac3d54ec1. 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
      Parameterized the undo e2e test to run with and without native Git,
      improving coverage without duplicating code.
      
      - **Refactors**
      - Added runUndoTest(po, nativeGit) helper and passed nativeGit to setUp.
        - Split into two test cases: “undo” and “undo with native git”.
      - Minor whitespace-only formatting updates in snapshot and fixture
      files.
      
      <sup>Written for commit 2108a7d73669794f0052192e8b5a1ffac3d54ec1.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      86e40057
  10. 12 12月, 2025 6 次提交
    • Will Chen's avatar
      Load Monaco from CDN (#1939) · 70d4f598
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Load Monaco via @monaco-editor/react loader, drop custom workers, and
      initialize themes/TypeScript after loader init.
      > 
      > - **Editor/Monaco**:
      > - Switch to `@monaco-editor/react` `loader.init()` with type-only
      `editor` import.
      > - Remove worker imports and `MonacoEnvironment.getWorker`
      configuration.
      > - Move theme registration (`dyad-light`, `dyad-dark`) and TypeScript
      compiler/diagnostics setup into the loader init callback.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      c4b7c025725273068463feac3fbdb7b61125fc10. 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
      Load Monaco from a CDN via @monaco-editor/react and initialize
      themes/TypeScript settings after loader init. This reduces bundle size
      and removes custom worker setup.
      
      - **Refactors**
        - Removed web worker imports and MonacoEnvironment configuration.
      - Switched from direct monaco import to type-only import; initialization
      now uses loader.init().
      - Moved theme registration (dyad-light/dark) and TS compiler/diagnostics
      setup into the loader init callback.
      
      <sup>Written for commit c4b7c025725273068463feac3fbdb7b61125fc10.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      70d4f598
    • Will Chen's avatar
      Use specific languages for shiki (#1938) · 1ce39958
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Refactors code highlighting to use react-shiki/core with a singleton
      highlighter and preloaded langs/themes, adds a fallback renderer, bumps
      react-shiki, and adds tests for message summarization.
      > 
      > - **Frontend**
      > - **CodeHighlight** (`src/components/chat/CodeHighlight.tsx`): Replace
      `useShikiHighlighter` with `ShikiHighlighter` from `react-shiki/core`
      using a singleton `createHighlighterCore` and JS regex engine; preload
      common languages and GitHub light/dark themes; add `<pre><code>`
      fallback while loading.
      > - **Tests**
      > - Add/expand Vitest suite for `formatMessagesForSummary`
      (`src/__tests__/formatMessagesForSummary.test.ts`): covers truncation,
      ordering, special chars, undefined content, and edge cases.
      > - **Dependencies**
      >   - Upgrade `react-shiki` to `^0.9.0` in `package.json`.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      b32d224cd21d3c76e77799f2995905e523406bf9. 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
      Preloaded a specific set of Shiki languages and themes using react-shiki
      core, and updated CodeHighlight to use a singleton highlighter. This
      reduces bundle size and stabilizes code rendering with a simple fallback
      while loading.
      
      - **Refactors**
      - Switched to react-shiki/core with ShikiHighlighter and a singleton
      highlighter.
      - Preloaded common languages
      (js/ts/jsx/tsx/html/css/json/markdown/python/etc.) and GitHub light/dark
      themes.
      - Used the JavaScript regex engine and added a plain <pre><code>
      fallback until the highlighter is ready.
      
      - **Dependencies**
        - Upgraded react-shiki to ^0.9.0.
      
      <sup>Written for commit b32d224cd21d3c76e77799f2995905e523406bf9.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      1ce39958
    • Will Chen's avatar
      disable sourcemap (#1936) · 8d88460f
      Will Chen 提交于
      The sourcemap is almost 20mb (and we still don't get proper stacktraces
      for errors in the main/node.js thread)
      
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      267749b95f6416b3f88c8caa9a72e21438fc1ee8. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      8d88460f
    • Will Chen's avatar
      Bump to beta v0.30 (#1934) · f2960a94
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
      generating a summary for commit
      ade02043a363fbe88d4405f97362e0f8995ef5ca. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      f2960a94
    • Will Chen's avatar
      Include last 4-chars of Dyad Pro user id for bug reports (#1933) · 976e065f
      Will Chen 提交于
      This allows us to identify which Dyad Pro user filed an issue on GitHub
      by using a partial internal identifier
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Adds a redacted Dyad Pro user ID (last 4 chars) to bug report/session
      templates, sourced from the Pro user info endpoint and exposed via user
      budget info.
      > 
      > - **Frontend (HelpDialog)**:
      > - Display `Pro User ID` in prefilled bug report and session report
      bodies using `userBudget.redactedUserId`.
      >   - Consume `useUserBudgetInfo` to access `userBudget`.
      > - **IPC/Backend**:
      > - `get-user-budget`: derive `redactedUserId` from `user_info.user_id`
      (mask all but last 4 chars); include in test mock and response.
      > - **Types**:
      >   - Extend `UserBudgetInfoSchema` with `redactedUserId: string`.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      1883a1ef94fec25b370df3d46054fb56d659dee8. 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 redacted Dyad Pro user ID (last 4 chars) to bug report templates
      to help correlate GitHub issues with Pro accounts while protecting
      privacy.
      
      - **New Features**
      - Derives redactedUserId from user_info.user_id in the Pro IPC handler
      and adds it to UserBudgetInfo.
        - Shows “Pro User ID” in HelpDialog’s debug info and session details.
        - Extends UserBudgetInfo schema with a redactedUserId field.
      
      <sup>Written for commit 1883a1ef94fec25b370df3d46054fb56d659dee8.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      976e065f
    • Will Chen's avatar
      Add GPT 5.2 and remove older OpenAI models (#1932) · 5b789cb9
      Will Chen 提交于
      5b789cb9
  11. 10 12月, 2025 4 次提交
    • Adeniji Adekunle James's avatar
      Replace native Git with Dugite to support users without Git installed (#1760) · d3f3ac3a
      Adeniji Adekunle James 提交于
      I moved all isomorphic-git usage into a single git_utils.ts file and
      added Dugite as an alternative Git provider. The app now checks the
      user’s settings and uses dugite when user enabled native git for all
      isomorphic-git commands. This makes it easy to fully remove
      isomorphic-git in the future by updating only git_utils.ts.
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Adds Dugite-based native Git (bundled binary) and refactors all Git
      calls to a unified git_utils API, replacing direct isomorphic-git usage
      across the app.
      > 
      > - **Git Platform Abstraction**:
      > - Introduces `dugite` and bundles Git via Electron Forge
      (`extraResource`) with `LOCAL_GIT_DIRECTORY` setup in `src/main.ts`.
      > - Adds `src/ipc/git_types.ts` and a comprehensive
      `src/ipc/utils/git_utils.ts` wrapper supporting both Dugite (native) and
      `isomorphic-git` (fallback): `commit`, `add`/`addAll`, `remove`, `init`,
      `clone`, `push`, `setRemoteUrl`, `currentBranch`, `listBranches`,
      `renameBranch`, `log`, `isIgnored`, `getCurrentCommitHash`,
      `getGitUncommittedFiles`, `getFileAtCommit`, `checkout`,
      `stageToRevert`.
      > - **Refactors (switch to git_utils)**:
      > - Replaces direct `isomorphic-git` imports in handlers and processors:
      `app_handlers`, `chat_handlers`, `createFromTemplate`,
      `github_handlers`, `import_handlers`, `portal_handlers`,
      `version_handlers`, `response_processor`, `neon_timestamp_utils`,
      `utils/codebase`.
      > - Updates tests to mock `git_utils`
      (`src/__tests__/chat_stream_handlers.test.ts`).
      > - **Behavioral/Feature Updates**:
      > - `createFromTemplate` uses `fetch` for GitHub API and `gitClone` for
      cloning with cache validation.
      > - GitHub integration uses `gitSetRemoteUrl`/`gitPush`/`gitClone`,
      handling public vs token URLs and directory creation when native Git is
      disabled.
      > - Versioning, imports, app file edits, migrations now stage/commit via
      `git_utils`.
      > - **UI/Copy**:
      >   - Updates Settings description for “Enable Native Git”.
      > - **Config/Version**:
      >   - Bumps version to `0.29.0-beta.1`; adds `dugite` dependency.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      ba098f7f25d85fc6330a41dc718fbfd43fff2d6c. 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>
      d3f3ac3a
    • Adeniji Adekunle James's avatar
      Fix: Custom Model Not Updating (#1817) (#1840) · a7bcec22
      Adeniji Adekunle James 提交于
      Closes (#1817)
      
      
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Fixes the bug where editing a custom model didn’t update the currently
      selected model. The selection now stays in sync after renaming or
      editing.
      
      - **Bug Fixes**
      - Use useSettings to detect if the edited model is the active one (match
      provider and apiName).
      - Update settings.selectedModel with the new apiName; on failure show an
      error and keep the dialog open; otherwise show success, call onSuccess,
      then close.
      
      <sup>Written for commit 88045165a3989277e703a8f31712fcf1dfeaa32a.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      a7bcec22
    • Will Chen's avatar
      Update macos-intel to use macos-15 (#1912) · 20866d5d
      Will Chen 提交于
      <!-- CURSOR_SUMMARY -->
      > [!NOTE]
      > Updates the release workflow matrix to use the `macos-15-intel` runner
      for `macos-intel` builds.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      37416cf576675ea399dd84cf1e50a2511b768de8. 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 macos-intel release job to the macos-15-intel GitHub Actions
      runner. This updates CI to the macOS 15 Intel image and keeps our matrix
      consistent with current supported runners.
      
      <sup>Written for commit 37416cf576675ea399dd84cf1e50a2511b768de8.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      20866d5d
    • Mohamed Aziz Mejri's avatar
      Visual editor (Pro only) (#1828) · 352d4330
      Mohamed Aziz Mejri 提交于
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Prototype visual editing mode for the preview app. Toggle the mode, pick
      elements (single or multiple), and edit margin, padding, border,
      background, static text, and text styles with live updates, then save
      changes back to code.
      
      - **New Features**
      - Pen tool button to enable/disable visual editing in the preview and
      toggle single/multi select; pro-only.
      - Inline toolbar anchored to the selected element for Margin (X/Y),
      Padding (X/Y), Border (width/radius/color), Background color, Edit Text
      (when static), and Text Style (font size/weight/color/font family).
      - Reads computed styles from the iframe and applies changes in real
      time; auto-appends px; overlay updates on scroll/resize.
      - Save/Discard dialog batches edits and writes Tailwind classes to
      source files via IPC; uses AST/recast to update className and text,
      replacing conflicting classes by prefix; supports multiple components.
      - New visual editor worker to get/apply styles and enable inline text
      editing via postMessage; selector client updated for coordinates
      streaming and highlight/deselect.
      - Proxy injects the visual editor client; new atoms track selected
      component, coordinates, and pending changes; component analysis flags
      dynamic styling and static text.
        - Uses runtimeId to correctly target and edit duplicate components.
      
      - **Dependencies**
        - Added @babel/parser for AST-based text updates.
        - Added recast for safer code transformations.
      
      <sup>Written for commit cdd50d33387a29103864f4743ae7570d64d61e93.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      352d4330
  12. 09 12月, 2025 3 次提交
    • Mohamed Aziz Mejri's avatar
      Adding a button for copying error messages (#1882) · c174778d
      Mohamed Aziz Mejri 提交于
      close #1870 
      
      
      
      
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Adds a “Copy” button to error banners and chat error output so users can
      quickly copy error messages with clear feedback. Addresses Linear #1870.
      
      - **New Features**
      - Introduced CopyErrorMessage component that writes to clipboard and
      shows “Copied” for 2s.
      - Added the copy button to the Preview error banner and DyadOutput;
      actions grouped at the bottom beside “Fix with AI”.
      - Added Playwright e2e test and helpers to verify copy behavior and
      clipboard content.
      
      <sup>Written for commit 12e9bf1437ded36dc022e1d795025580d2ffd111.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      c174778d
    • Will Chen's avatar
      Warn (not error) on identical search-replace blocks and include searc… (#1899) · 4b178700
      Will Chen 提交于
      …h-replace failure in error message
      
      Addresses part of #1898 
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Treat identical SEARCH/REPLACE as a no-op warning and propagate
      detailed applySearchReplace errors (incl. fuzzy match stats) to the UI;
      add scoped logging and update tests/snapshots.
      > 
      > - **Processors**:
      > - `src/pro/main/ipc/processors/search_replace_processor.ts`: Log a
      warning (not error) when SEARCH and REPLACE blocks are identical; add
      scoped logger; keep content unchanged.
      > - `src/ipc/processors/response_processor.ts`: Include detailed failure
      reason from `applySearchReplace` in dry-run issues.
      > - **Tests & Snapshots**:
      > - `search_replace_processor.spec.ts`: Update test to expect success
      when blocks are identical.
      > - `e2e-tests/...turbo-edits-v2...snapshot`: Reflect detailed error
      message with fuzzy match similarity/threshold.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      a394d297d5561ada3bdd197dbb4e6aca6928ad99. 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
      Warn instead of error when search and replace blocks are identical, and
      include the specific failure reason in search-replace error messages for
      clearer feedback.
      
      - **Bug Fixes**
      - Treat identical search/replace blocks as a no-op: log a warning and
      return success.
      - Bubble up detailed failure reasons to the UI (e.g., no match and fuzzy
      similarity/threshold).
      - Add scoped logging to the processor and update the e2e snapshot to
      reflect new error messaging.
      
      <sup>Written for commit a394d297d5561ada3bdd197dbb4e6aca6928ad99.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      4b178700
    • Will Chen's avatar
      Fix supabase list getting into drag list area (#1749) · 1b678041
      Will Chen 提交于
      Fixes #1717 
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > Disable `.app-region-drag` while `body[data-scroll-locked]` is present
      to prevent drag interference with open Select.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      8d5e4774dfa924e073d79dc999a5f065425e985b. 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 window dragging interfering with the Supabase project dropdown.
      Disables dragging on .app-region-drag while the Radix Select is open by
      targeting body[data-scroll-locked], so users can scroll and select
      normally.
      
      <sup>Written for commit 8d5e4774dfa924e073d79dc999a5f065425e985b.
      Summary will update automatically on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      1b678041