- 29 10月, 2025 2 次提交
-
-
由 Will Chen 提交于
Fixes #1222 #1646 TODOs - [x] description? - [x] collect errors across all files for turbo edits - [x] be forgiving around whitespaces - [x] write e2e tests - [x] do more manual testing across different models <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Adds Turbo Edits v2 search-replace flow with settings/UI selector, parser/renderer, dry-run validation + fallback, proposal integration, and comprehensive tests; updates licensing. > > - **Engine/Processing**: > - Add `dyad-search-replace` end-to-end: parsing (`getDyadSearchReplaceTags`), markdown rendering (`DyadSearchReplace`), and application (`applySearchReplace`) with dry-run validation and fallback to `dyad-write`. > - Inject Turbo Edits v2 system prompt; toggle via `isTurboEditsV2Enabled`; disable classic lazy edits when v2 is on. > - Include search-replace edits in proposals and full-response processing. > - **Settings/UI**: > - Introduce `proLazyEditsMode` (`off`|`v1`|`v2`) and helper selectors; update `ProModeSelector` with Turbo Edits and Smart Context selectors (`data-testid`s). > - **LLM/token flow**: > - Construct system prompt conditionally; update token counting and chat stream to validate and repair search-replace responses. > - **Tests**: > - Add unit tests for search-replace processor; e2e tests for Turbo Edits v2 and options; fixtures and snapshots. > - **Licensing/Docs**: > - Add `src/pro/LICENSE` (FSL 1.1 ALv2 future), update root `LICENSE` and README license section. > - **Tooling**: > - Update `.prettierignore`; enhance test helpers (selectors, path normalization, snapshot filtering). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 7aefa02bfae2fe22a25c7d87f3c4c326f820f1e6. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Make preview header buttons more horizontally dense by stacking label/badge under smaller icons and standardizing icon size. > > - **UI (ActionHeader)**: > - **Button layout**: > - Replace shared `BUTTON_CLASS_NAME` with inline classes to reduce padding, gap, and font size; use `flex-col` for stacked icon/label. > - Wrap label and badge in a single `span` for tighter vertical grouping. > - **Icons**: > - Introduce `iconSize = 15` and apply to `Eye`, `AlertTriangle`, `Code`, `Wrench`, `Globe` for consistent sizing. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 9cfe3ba52b79c9176289d077ffcbaf57b1613f44. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
- 25 10月, 2025 3 次提交
-
-
由 Olyno 提交于
# Description This is a small fix to make the settings aligned with the sidebar. It closes #1375 <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Aligned the Settings page with the sidebar. The page now sets the active section to "general-settings" on mount, so the content matches the selected sidebar on first load. <!-- End of auto-generated description by cubic. --> -
由 Olyno 提交于
# Description This pull request ignore `venv` directories and closes #1415 <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Exclude Python virtual environment directories (.venv, venv) from codebase scanning to reduce noise and avoid indexing dependencies. This aligns with existing excludes like node_modules and build outputs. <!-- End of auto-generated description by cubic. --> -
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Broaden injection to extensionless and .html routes, gate by Content-Type, and conditionally strip caching/compression headers only when injecting. > > - **Proxy HTML injection**: > - Update `needsInjection(pathname)` to inject for routes without extensions and `.html` files (e.g., `/`, `/foo`, `/foo/bar`, `*.html`). > - Only request uncompressed content and remove `if-none-match` when `needsInjection(target.pathname)` is true. > - During upstream response, inject only if `Content-Type` includes `text/html`; otherwise pass through without modification. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 2986ceccea64e7881a2197a2a0b202216f21d27d. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
- 24 10月, 2025 5 次提交
-
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is generating a summary for commit b2949af5e7b03ee7a78456840a6296f2d861a5a7. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
@princeaden1 can you take a look at why this test is flaking often later? for now, i think we can just skip it since it's not a super critical feature (users can always edit the file using the regular code panel) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is generating a summary for commit 12de571a1a5d2f9c6c98e90ae19fd67a3fb2e6b5. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Removes Smart Auto labels/tooltip and related checks from the model picker, showing standard model names and descriptions only. > > - **UI (Model Picker)**: `src/components/ModelPicker.tsx` > - Remove Smart Auto-specific labeling and tooltip logic for `auto` models. > - Drop "Pro only" badge tied to Smart Auto state. > - Always render `model.displayName` and `model.description` without Smart Auto overrides. > - Remove Smart Auto enablement check previously derived from settings. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 211be087933f3f240a78c017b26a37633f1228d6. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Bumps `package.json` version from `0.25.0-beta.1` to `0.26.0-beta.1`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 6433fcc2777bee825db6e330a0d135e8477d7d8f. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
Fixes #672 <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Add selectable problem rows with Select all/Clear all and Fix N selected, and update tests to cover selection behavior. > > - **UI (Problems panel)**: > - Add checkbox selection for each problem row (`ProblemItem`) with row click-to-toggle, `data-testid="problem-row"`, and accessibility attributes. > - Introduce selection state in `_Problems` with auto-select-all on report load; provide Select all / Clear all controls. > - Change Fix button to operate on selected problems only, showing dynamic label `Fix N problem(s)` and disabled when none selected. > - Wire `RecheckButton` to clear selection before rechecking; minor hover style tweaks; add `Checkbox` component. > - **E2E Tests**: > - New test: selecting specific problems and fixing only selected; add snapshots for prompt content. > - Update manual edit tests (React/Vite, Next.js) to assert Fix button enabled/disabled and counts; remove old ARIA snapshots. > - Minor import addition for `Timeout` and related expectations. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 8324e26f9d2d265e7e0d1f1b7538e2a8db40f674. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
- 23 10月, 2025 1 次提交
-
-
由 Mohamed Aziz Mejri 提交于
Implement the feature requested in issue #251 that allows users to toggle between screen sizes
-
- 21 10月, 2025 5 次提交
-
-
由 Adeniji Adekunle James 提交于
Add ability to manually configure Node.js path for users who have Node.js installed but not in their system PATH. Features: - Browse and select custom Node.js installation folder - Visual status indicator showing Node.js version or "Not found" - Reset to system default PATH option - Manual configuration option in setup banner - Real-time Node.js status checking closes #1050 <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds manual Node.js path configuration so the app works even when Node isn’t on PATH, fulfilling #1050. Users can browse to their install, reset to default, and see real-time status in Settings and during setup. - New Features - Settings: NodePathSelector to browse a Node.js folder, show version/“Not found” status, and reset to system PATH (persists customNodePath). - Setup banner: manual config flow with a folder picker if Node is already installed. - IPC: select-node-folder, set-node-path, get-node-path; reloads env and prepends custom path to PATH. - Real-time Node.js status check with visual indicator (CheckCircle on valid). - E2E tests for browse, reset, and valid-status display. <!-- End of auto-generated description by cubic. --> -
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Bumps app to 0.25.0-beta.1 and upgrades better-sqlite3 to 12.4.1 with updated engine constraints. > > - **Versioning**: Set `package.json` and lockfile version to `0.25.0-beta.1`. > - **Dependencies**: > - Upgrade `better-sqlite3` from `^11.9.1` to `^12.4.1` (lockfile resolves to `12.4.1`). > - Add/update `better-sqlite3` engine constraints to `node: 20.x || 22.x || 23.x || 24.x`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit e45156ac3a3340c68ef61200416860a0175eb4b6. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
Previously, the chat auto-scrolled whenever messages changed, even when not streaming. This caused unwanted scrolling when switching chats or loading messages from the database. Now auto-scroll only triggers when: - Messages are actively streaming (isStreaming is true) - User hasn't manually scrolled away - User is near the bottom of the chat Changes: - Added isStreamingByIdAtom to track streaming state - Modified auto-scroll useEffect to check isStreaming before scrolling - Preserved streamCount effect for initial scroll on stream start
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Fixes chat auto-scroll so it only runs during active streaming, preventing jumps when switching chats or loading message history. - **Bug Fixes** - Added isStreamingByIdAtom and gated the auto-scroll effect by per-chat streaming state (updated effect deps). - Preserved the initial scroll on stream start via streamCount. <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Limits chat auto-scroll to when a conversation is actively streaming and the user is near the bottom. > > - **Frontend** > - **Chat auto-scroll behavior**: Only auto-scrolls during active streaming. > - Adds `isStreamingByIdAtom` and reads per-chat `isStreaming` state. > - Updates auto-scroll `useEffect` to require `isStreaming` and adds it to dependencies. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 6580601cd974c2c01ddffdef78ed0ddbb2b2fa8d. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by:Claude <noreply@anthropic.com>
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Adds `z-ai/glm-4.6` (GLM 4.6) to OpenRouter model options. > > - **Models**: > - **OpenRouter**: Add `z-ai/glm-4.6` ("GLM 4.6") with `maxOutputTokens: 32_000`, `contextWindow: 200_000`, `temperature: 0`, `dollarSigns: 2`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 5e434b7d049c839504c726b096bf5fa4c22f162b. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> -
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Refines the setup banner UI (copy, layout, and badges), updates SetupProviderCard to support a chip and typed subtitle, and adjusts e2e to new OpenRouter button label. > > - **UI/Setup Banner (`src/components/SetupBanner.tsx`)**: > - Rename step title to `2. Setup AI Access` and update helper copy. > - Layout: show `google` and `openrouter` cards side-by-side; increase title font sizes. > - Add badges: `chip={Free}` on Google/OpenRouter; `chip={Recommended}` on Dyad Pro. > - Simplify Dyad Pro `subtitle` to a string; remove `GlobeIcon` usage. > - "Other providers" card: tweak heading size and copy (remove `OpenRouter`). > - `OpenRouterSetupBanner`: use `chip` for "Free models available" instead of `subtitle`. > - **Component API (`src/components/SetupProviderCard.tsx`)**: > - Add optional `chip` prop and render top-right badge. > - Change `subtitle` type to `string`; adjust styles (relative container, font sizes). > - **E2E (`e2e-tests/setup.spec.ts`)**: > - Update button selector to `Setup OpenRouter API Key` (remove `Free`). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 991807b2edd4baa7a8ec7f4d47f867ba058ebf36. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
- 17 10月, 2025 4 次提交
-
-
由 Will Chen 提交于
<!-- This is an auto-generated description by cubic. --> ## Summary by cubic Enable the Dyad Engine to prioritize a user-selected component by flagging the file as focused and sending codebase files per request. Keeps full context when the engine is on; falls back to path-scoped context when it’s off. - **New Features** - Mark the selected component file as focused when the engine is enabled. - Send codebase files to the engine via dyadFiles, applied to dyad_options unless disabled. - Maintain full chatContext with engine; restrict to the selected file path only when engine is off. - **Refactors** - Removed files from getModelClient and provider APIs; file transport moved into request payload. - Stream handlers now pass files to model calls and include dyadDisableFiles/dyadFiles in the request. - Added focused flag to CodebaseFile. <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Sends codebase files per request to the Dyad Engine, focuses the selected component when smart context is enabled, and refactors model client/provider APIs to remove file parameters. > > - **Engine integration**: > - Send codebase files per request via `dyadFiles` in provider options; propagate through `simpleStreamText` and `dyad-engine` options. > - Add `isSmartContextEnabled` from `get_model_client` and gate context behavior accordingly. > - **Selected component focus**: > - When smart context is on and a component is selected, mark its file as `focused` in `CodebaseFile` and avoid broad smart context includes; allow on-demand reads. > - When smart context is off, restrict `chatContext` to the selected file path. > - **Refactors**: > - Remove `files` parameter from `getModelClient` and Dyad provider; move file transport into request body. > - Update `llm_engine_provider` to read `dyadFiles` from request and populate `dyad_options.files` unless `dyadDisableFiles`. > - Extend `CodebaseFile` with optional `focused` flag; thread `files` through `chat_stream_handlers` calls. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 022b26d0197ab5b5d4f5b589f45bc230de36e0e5. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is generating a summary for commit 5e434b7d049c839504c726b096bf5fa4c22f162b. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is generating a summary for commit 017c00d0737f024182557e09bcd4df70fcd0fd2c. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Adds support for `dyad://add-mcp-server` deep links that prefill MCP server settings, and updates deep link context/consumers to use timestamp-based effects and clearing to avoid repeat handling. > > - **Deep Link Infrastructure**: > - Introduce `src/ipc/deep_link_data.ts` with zod schema (`AddMcpServerConfigSchema`) and typed `DeepLinkData`. > - Extend `DeepLinkContext` with `clearLastDeepLink`, timestamped events, and auto-navigate to `/settings#tools-mcp` on `add-mcp-server`. > - **Main Process**: > - Handle `dyad://add-mcp-server?name=...&config=...`: > - Base64-decode and validate `config`; send `deep-link-received` with typed payload or show error. > - **Settings UI (MCP)**: > - In `ToolsMcpSettings`, prefill form from `add-mcp-server` payload (supports `stdio` command/args and `http` url) and show info toast; clear deep link after handling. > - **Connectors/UI**: > - Update `TitleBar`, `NeonConnector`, `SupabaseConnector` to: > - Depend on `lastDeepLink?.timestamp` and call `clearLastDeepLink()` after handling (`dyad-pro-return`, `neon-oauth-return`, `supabase-oauth-return`). > - **IPC Renderer**: > - Use centralized `DeepLinkData` types in `ipc_client.ts`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 294a9c6f38442241b54e9bcbe19a7a772d338ee0. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
- 15 10月, 2025 3 次提交
-
-
由 Adeniji Adekunle James 提交于
- Move edit and delete actions from hidden popover to visible buttons - Restructure card layout: status badge and action buttons at top, title below <img width="1029" height="414" alt="image" src="https://github.com/user-attachments/assets/60497f87-254e-4f4d-9f8c-ea73b8f2526e" /> closes #1358 <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Made edit and delete always visible on custom provider cards and restructured the card layout for clearer actions and status. Improves discoverability and aligns with #1358. - **Refactors** - Replaced popover menu with visible Edit and Delete icon buttons (data-testid: edit-custom-provider, delete-custom-provider). - Moved status badge and actions to the top; title now sits below; badges don’t wrap. - Updated e2e tests to use new buttons and adjusted selectors for the updated heading. <!-- End of auto-generated description by cubic. -->
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Hide the “Upgrade to Dyad Pro” link in `ChatErrorBox` when `isDyadProEnabled` is true. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 424cd04f85385f923548b3fc54b4c83625992ade. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
<!-- This is an auto-generated description by cubic. --> ## Summary by cubic Adds Supabase database branch selection per app, with a new schema field and UI to choose a branch after connecting a project. Resets branch when changing or disconnecting the project to keep state consistent. - **New Features** - Added apps.supabase_branch_id column. - Branch dropdown in SupabaseConnector shown after a project is connected; selection persists and triggers app refresh. - New state and hooks: supabaseBranchesAtom, loadBranches(projectId), setAppBranch(branchId). - IPC endpoints: supabase:list-branches and supabase:set-app-branch; setting/unsetting project also clears the branch. - **Migration** - Apply drizzle migration 0013_supabase_branch.sql to add the supabase_branch_id column (defaults to null). <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Adds Supabase database branch selection per app, including parent project tracking, new IPC endpoints, UI dropdown, and an accompanying DB migration with e2e tests. > > - **Database**: > - Add `apps.supabase_parent_project_id` via migration `drizzle/0015_complete_old_lace.sql`; snapshot and journal updated. > - **IPC/Main**: > - New `supabase:list-branches` handler and management client `listSupabaseBranches` (real API + test stubs). > - Update `supabase:set-app-project` to accept `{ projectId, parentProjectId?, appId }`; unset clears both IDs. > - `get-app` resolves `supabaseProjectName` using `supabase_parent_project_id` when present. > - **Types & Client**: > - Add `SupabaseBranch`, `SetSupabaseAppProjectParams`, and `App.supabaseParentProjectId`; expose `listSupabaseBranches` and updated `setSupabaseAppProject` in `ipc_client` and preload whitelist. > - **UI/Hooks**: > - Supabase UI: branch dropdown in `SupabaseConnector` with `loadBranches`, selection persists via updated `setAppProject`. > - State: add `supabaseBranchesAtom`; `useSupabase` gets `branches`, `loadBranches`, new param shape for `setAppProject`. > - TokenBar/ChatInput: add `data-testid` for token bar and toggle. > - **Supabase Context (tests)**: > - Test build returns large context for `test-branch-project-id` to validate branch selection. > - **E2E Tests**: > - Add `supabase_branch.spec.ts` and snapshot verifying branch selection affects token usage. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 33054278db8396b4371ed6e8224105cb5684b7ac. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
- 14 10月, 2025 7 次提交
-
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is generating a summary for commit 48563edb9143b6a53957e7ac8901fac3408e444c. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Always route Dyad Pro through the Dyad engine (no gateway), simplify logging/flags, and remove DYAD_GATEWAY usage and staging gateway script. > > - **Engine/Model client (`src/ipc/utils/get_model_client.ts`)**: > - Always use `createDyadEngine` when Dyad Pro is enabled; remove gateway fallback and `DYAD_GATEWAY_URL` usage. > - Simplify logs to engine-only; drop conditional gateway/engine logging. > - Always set `isEngineEnabled: true`; pass `{ files }` to the provider unconditionally; strip `:free` from model names. > - **Scripts (`package.json`)**: > - Remove `staging:gateway` script. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 5fdbbb703c47de4623ceeb82e6678ace34dc268e. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> -
由 Adeniji Adekunle James 提交于
## Summary Adds the ability to import GitHub repositories directly into Dyad from the home screen, complementing the existing local folder import feature. - GitHub Import Modal: New modal accessible from home screen via "Import from Github" button with two Import methods - Select project from GitHub repositories list - Clone from any GitHub URL - Advanced Options: Optional custom install/start commands (defaults to project's package.json scripts) - Auto AI_RULES Generation: Automatically generates AI_RULES.md if not present in imported repo closes #1424 <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds a GitHub import flow from the home screen so users can clone repos via their list or any URL, with optional install/start commands and automatic AI_RULES.md generation. Addresses Linear #1424 by enabling seamless project setup from GitHub. - **New Features** - Import modal with two tabs: Your Repositories and From URL. - Advanced options for install/start commands with validation; defaults used when both are empty. - After cloning, navigate to chat and auto-generate AI_RULES.md if missing. - New IPC handler github:clone-repo-from-url with token auth support, plus IpcClient method and preload channel. - E2E tests cover modal open, auth, import via URL/repo list, and advanced options. - **Dependencies** - Added @radix-ui/react-tabs for the modal tab UI. <!-- End of auto-generated description by cubic. --> -
由 Will Chen 提交于
drive-by: update links for pro banners <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Revamps ChatErrorBox with styled CTA buttons, UTM-tracked links, broader error matching, and adds default help CTAs; updates Pro banners to point to /pro URLs. > > - **Chat**: > - **Error handling/UI**: Expands rate-limit matching to include `"Provider returned error"` and appends default CTAs on generic errors. > - **CTAs**: Replaces underlined links with styled buttons via `ExternalLink` (supports `primary|secondary` variants and icons), and adds upgrade/docs buttons across error states. > - **Links**: Adds UTM parameters to Pro/Docs links; updates exceeded budget CTA to `"Reload or upgrade your subscription"` with new subscription URL. > - **Pro Banners**: > - Adjusts banner click-through URLs in `AiAccessBanner`, `SmartContextBanner`, and `TurboBanner` to `https://www.dyad.sh/pro?...` (removes `#ai`). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 2111954ac9a98dd66f5b3b9e628270ac19713a2d. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
Based on #1488 by [vedantbhatotia](https://github.com/vedantbhatotia) <!-- CURSOR_SUMMARY --> > [!NOTE] > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is generating a summary for commit cc504f6d56ff72407dd5d0135befbf5d9cc695b5. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by:
vedantbhatotia <vedantbhatotia@gmail.com>
-
由 Mohamed Aziz Mejri 提交于
This PR implements spelling correction feature requested in issue #271 <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Add spell check suggestions to the context menu in editable fields. Right-clicking a misspelled word shows up to five suggestions for one-click replacement. - **New Features** - Shows a “Correct "<misspelled>"” submenu when a misspelled word is detected. - Provides up to 5 dictionary suggestions; clicking replaces the word via replaceMisspelling. - Keeps standard edit actions and tidies menu order with separators; logs errors on failure. <!-- End of auto-generated description by cubic. --> -
由 Will Chen 提交于
-
- 10 10月, 2025 9 次提交
-
-
由 Will Chen 提交于
<!-- This is an auto-generated description by cubic. --> ## Summary by cubic Update package.json version from 0.23.0-beta.1 to 0.24.0-beta.1 to prepare the 0.24 beta release. This unblocks tagging and publishing for the bump-beta-0-24 branch. <!-- End of auto-generated description by cubic. -->
-
由 Will Chen 提交于
<!-- This is an auto-generated description by cubic. --> ## Summary by cubic Improved the provider setup flow by adding a clipboard paste-and-save action and a clearer “Get API key” prompt when a provider isn’t configured. - **New Features** - Added a clipboard “Paste and Save” button with tooltip and error handling. - Highlighted the “Get API key” button with a popover prompt and visual emphasis when not configured. - **Refactors** - Changed onSaveKey to accept the key value (string) and updated usage to save the provided value. <!-- End of auto-generated description by cubic. -->
-
由 Will Chen 提交于
<!-- This is an auto-generated description by cubic. --> ## Summary by cubic Added Dyad Pro access buttons in ProBanner to manage a subscription or add an existing key. Show the manage button when Dyad Pro is enabled or a user budget exists; otherwise show the setup button, both linking to academy.dyad.sh. <!-- End of auto-generated description by cubic. -->
-
由 Will Chen 提交于
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Resets main content scroll to top when switching providers by adding a container id and scrolling it on provider change. > > - **Frontend**: > - **Layout**: Add `id="layout-main-content-container"` to the main content wrapper in `src/app/layout.tsx`. > - **Provider Settings**: In `ProviderSettingsPage.tsx`, add an effect to `scrollTo(0, 0)` on `#layout-main-content-container` when `providerData` changes, resetting scroll on navigation. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 520758a3cf45f8438bc5089c3c427176eeefb306. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
Fixes #1472 <!-- CURSOR_SUMMARY --> > [!NOTE] > Switches `ProviderSettingSchema` union to `.passthrough()` variants to accept extra fields and avoid overlapping schema conflicts. > > - **Schemas**: > - **`src/lib/schemas.ts`**: Update `ProviderSettingSchema` to use `.passthrough()` on `AzureProviderSettingSchema`, `VertexProviderSettingSchema`, and `RegularProviderSettingSchema` so unknown fields are preserved and overlapping required fields don’t cause mis-matches. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 7afa4b83d713b9eb433d4cce28c7fee73cd7545b. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
<!-- This is an auto-generated description by cubic. --> ## Summary by cubic Adds an onboarding banner in Setup that links to a 3-minute YouTube intro and dismisses after click. Also avoids showing release notes on a user’s first launch. - **New Features** - Added OnboardingBanner component with YouTube thumbnail and play icon. - Opens the video via IpcClient and hides the banner after click. - Integrated into SetupBanner with local visibility state. - **Bug Fixes** - Don’t show release notes on first run to prevent spam. <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Adds a dismissible onboarding banner linking to a YouTube intro and changes release notes to appear only on app updates, not first run. > > - **UI/Onboarding**: > - **`src/components/home/OnboardingBanner.tsx`**: New banner component with YouTube thumbnail/play icon; opens intro video via `IpcClient.openExternalUrl`; hides itself on click. > - **`src/components/SetupBanner.tsx`**: Integrates `OnboardingBanner` with `isOnboardingVisible` state; tweaks header typography (`font-medium`). > - **Release Notes Behavior**: > - **`src/pages/home.tsx`**: Only shows release notes when upgrading (checks existing `settings.lastShownReleaseNotesVersion` before opening modal); preserves themed URL handling. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 832e70f87b3b6a7e8b8b921fe8c6ceb15198cce0. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
由 Will Chen 提交于
Based on #1425 <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Adds a floating scroll-to-bottom button and refines scroll/auto-scroll behavior with layout tweaks to support an overlay. > > - **Chat UI**: > - **Scroll-to-bottom button**: Adds floating button in `ChatPanel` (uses `Button` and `ArrowDown`) that appears when scrolled away and scrolls smoothly to the latest message. > - **Scroll logic**: Introduces `getDistanceFromBottom`, `isNearBottom`, and a `scrollAwayThreshold`; auto-scroll now triggers only when near the bottom; refactors `handleScroll` with `useCallback` and longer idle timeout. > - **Layout**: Wraps `MessagesList` in a `relative` container and renders a centered absolute button overlay; adjusts `MessagesList` root to `absolute inset-0` for proper overlay behavior. > - **Misc**: Updates effect dependencies and console log message related to streaming/scrolling. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 2e1b844830ae26cfc40840b9e8216fefad112a5e. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by:
Md Rakibul Islam Rocky <mdrirocky08@outlook.com>
-
由 Will Chen 提交于
Fixes #212 <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Add concurrent chat support with per-chat state, chat activity UI, IPC per-chat handling, and accompanying tests. > > - **Frontend (Chat concurrency)** > - Replace global chat atoms with per-chat maps: `chatMessagesByIdAtom`, `isStreamingByIdAtom`, `chatErrorByIdAtom`, `chatStreamCountByIdAtom`, `recentStreamChatIdsAtom`. > - Update `ChatPanel`, `ChatInput`, `MessagesList`, `DyadMarkdownParser`, and `useVersions` to read/write per-chat state. > - Add `useSelectChat` to centralize selecting/navigating chats; wire into `ChatList`. > - **UI** > - Add chat activity popover: `ChatActivityButton` and list; integrate into `preview_panel/ActionHeader` (renamed from `PreviewHeader`) and swap in `TitleBar`. > - **IPC/Main** > - Send error payloads with `chatId` on `chat:response:error`; update `ipc_client` to route errors per chat. > - Persist streaming partial assistant content periodically; improve cancellation/end handling. > - Make `FileUploadsState` per-chat (`addFileUpload({chatId,fileId}, ...)`, `clear(chatId)`, `getFileUploadsForChat(chatId)`); update handlers/processors accordingly. > - **Testing** > - Add e2e `concurrent_chat.spec.ts` and snapshots; extend helpers (`snapshotMessages` timeout, chat activity helpers). > - Fake LLM server: support `tc=` with options, optional sleep delay to simulate concurrency. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 9035f30b73a1f2e5a366a0cac1c63411742b16f3. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-
- 09 10月, 2025 1 次提交
-
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Reorders the collapse useEffect to run before the token-savings early return so hooks are always called unconditionally. > > - **Frontend** > - **`src/components/chat/DyadThink.tsx`**: > - Move collapse `useEffect` above the token-savings early return to ensure hooks are called unconditionally. > - Maintains collapse behavior when `inProgress` transitions to false. > - `DyadTokenSavings` rendering path remains unchanged. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit a6c7d20ab037043bff26deec1364f2d9008fbf33. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
-