- 05 2月, 2026 17 次提交
-
-
由 Mohamed Aziz Mejri 提交于
<!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds a new Plan chat mode for guided requirements gathering and implementation planning, with a preview panel to review and accept plans, and an automatic handoff to Agent v2 when accepted. Plans can be saved as markdown when the user opts to persist and are retrievable per chat/app. - **New Features** - Plan chat mode with a focused system prompt and plan-only agent tools (planning_questionnaire, write_plan, exit_plan). - Persistent questionnaire UI above the chat input (text, radio, checkbox) and a Plan panel to view and accept the drafted plan. - IPC events (plan:update, plan:questionnaire, plan:exit) to stream plan updates, show questionnaires, and switch to implementation in a new chat on acceptance. - Optional persist toggle with file-based storage in .dyad/plans and CRUD IPC (create/get/update/delete, per app/chat). - Shortcut to implement a saved plan: /implement-plan=<plan-id>, with plan ID validation for safety. - **Migration** - Install dependency: @base-ui/react/radio-group. - Adds a Drizzle migration creating a plans table (0025_romantic_mantis.sql). - .dyad/ is automatically added to .gitignore. <sup>Written for commit f464e9ad242bf731068ce7b86efb48ae734ea8c4. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2370"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> --------- Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Add workflow step to configure `upstream` remote pointing to base repo for cross-repo PRs - Fetch `upstream/main` before Claude runs so rebase target is available - Update pr-rebase skill to explicitly use `upstream/main` for cross-repo PRs (falling back to `origin/main` for same-repo PRs) The claude-rebase workflow was failing because only `origin` (pointing to the fork) was configured. Claude would rebase onto `origin/main` which may be stale instead of the base repo's current main. ## Test plan - Trigger the cc:rebase label on a cross-repo PR and verify it rebases onto the correct upstream/main #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2505"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Fixes cross-repo PR rebasing by adding an upstream remote to the base repo and rebasing onto upstream/main instead of a stale origin/main. This makes the claude-rebase workflow reliable for forks. - **Bug Fixes** - Add upstream remote in workflow and fetch upstream/main. - Update pr-rebase command to prefer upstream/main, fallback to origin/main for same-repo PRs. - Document cross-repo remote setup and permissions in AGENTS.md. <sup>Written for commit 52ea2741fa0397ee9e783c9a19b0d18cc54e388c. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Replace native HTML `title` attributes on button elements across 25 files with proper `<Tooltip>` / `<TooltipTrigger>` / `<TooltipContent>` components from the existing UI library - Native browser tooltips are delayed and unstyled; the shadcn tooltips provide a consistent, polished tooltip experience with animations and proper positioning - Only button/interactive elements were converted; `title` on non-interactive elements like `<span>` (text overflow), `<iframe>`, and component props were intentionally left as-is ## Test plan - [x] TypeScript type check passes (`npm run ts`) - [x] Lint passes (`npm run lint`) - [x] Formatting passes (`npm run fmt`) - [x] All 661 unit tests pass (`npm test`) - [ ] Manual: hover over icon buttons throughout the app (chat input, preview toolbar, annotator, settings) to verify styled tooltips appear instead of browser-native ones
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2470"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Primarily UI/UX refactoring of hover tooltips with minimal behavioral impact; main risk is small layout/accessibility regressions from the updated tooltip styling/positioning. > > **Overview** > Replaces native `title` tooltips on many interactive controls (chat, preview/annotator toolbars, settings/connectors, branch manager, etc.) with the app’s `Tooltip` components, using `TooltipTrigger`’s `render` prop to avoid invalid nested `<button>` markup. > > Updates the tooltip implementation (`src/components/ui/tooltip.tsx`) to remove the implicit provider wrapper, tweak default positioning (`sideOffset`), and restyle tooltip/arrow classes; adjusts E2E aria snapshots accordingly and documents the `TooltipTrigger render` pitfall in `AGENTS.md`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 8055379edcec73b53ca54ee82b9f4fb4a2f92c63. 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 Replaced native title tooltips on interactive buttons with shadcn Tooltip for consistent, styled, and responsive tooltips across the app. Improves usability and visual polish without changing button behavior. - **Refactors** - Converted titles to Tooltip/TooltipTrigger/TooltipContent across ~25 files, using TooltipTrigger’s render prop to avoid nested button HTML. - Kept native title for drag handles and resize rails, and left titles on non-interactive elements (e.g., span, iframe, component props). - Updated tooltip defaults (sideOffset 4) and removed the implicit provider; added aria-labels to icon-only buttons; fixed ToggleGroupItem corner styles and preserved ref forwarding where needed. <sup>Written for commit 8055379edcec73b53ca54ee82b9f4fb4a2f92c63. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
Strip OpenAI itemId from persisted AI messages to prevent stale reference errors but keep encrypted reasoning content (#2468) ## Summary - Strip `providerOptions.openai.itemId` (and `azure.itemId`) from persisted AI messages when parsing from DB - Prevents "Item with id not found" errors when OpenAI expires server-side stored items and the AI SDK sends `item_reference` payloads instead of full content - Adds comprehensive unit tests covering text parts, tool-call parts, reasoning parts (preserving `reasoningEncryptedContent`), legacy formats, and mixed provider options ## Test plan - [x] Unit tests added in `ai_messages_utils.test.ts` covering all stripping scenarios - [ ] Verify existing conversations with OpenAI models continue to work correctly - [ ] Verify that long conversations no longer produce "Item with id not found" errors
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2468"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Prevents "Item with id not found" errors by stripping openai/azure itemId from persisted message parts during parse, so the SDK always sends full content. Keeps long conversations stable without losing content. - **Bug Fixes** - Remove itemId under providerOptions/providerMetadata for openai and azure across text, tool-call, and reasoning parts, including legacy formats. - Preserve reasoningEncryptedContent and request encrypted reasoning via provider options; leave non-openai provider data and string-only messages unchanged. - Add unit tests covering stripping, legacy formats, mixed providers, and no-op cases. <sup>Written for commit a4c02d52ea9f25139d4b77bf1a2bdb9f663065f7. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Ask mode now always uses the local agent handler with read-only tools, regardless of Dyad Pro status - This gives all users access to code reading tools while in ask mode - Ask mode does not consume free agent quota ## Test plan - Test ask mode in a non-Pro account and verify it can use local agent tools (file reading, searching) - Verify ask mode still operates in read-only mode (no editing capabilities) - Confirm ask mode doesn't consume free agent quota #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2434"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Ask mode now always uses the local agent handler in read-only mode. It’s available to all users and doesn’t consume free agent quota. - **New Features** - Routes all Ask mode chats to the local agent. - Removes the Pro check; available to all users. - Read-only tools only; no edits. - Engine-dependent tools (code search, web search, web crawl) require Dyad Pro. - **Bug Fixes** - Skips file upload instructions in Ask mode since write tools aren’t available. <sup>Written for commit 9732679491a53e7be7fa40dae6f18db4b2d43701. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Adds a GitHub workflow that triggers when the `cc:rebase` label is added to a PR - Runs Claude Code with `/dyad:pr-rebase` to automatically rebase the PR branch - Only allows trusted maintainers (wwwillchen, wwwillchen-bot, azizmejri1, princeaden1) - Swaps `cc:rebase` → `cc:rebasing` while running, removes on success or adds `cc:rebase-failed` on failure ## Test plan - [ ] Add `cc:rebase` label to a PR and verify the workflow triggers - [ ] Verify the workflow correctly runs `/dyad:pr-rebase` - [ ] Verify label transitions work correctly #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2504"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds a label-triggered workflow to auto-rebase PRs and show status via labels. Only trusted maintainers can trigger it. - **New Features** - Triggers on cc:rebase and runs /dyad:pr-rebase via anthropics/claude-code-action@v1. - Limits use to these authors: wwwillchen, wwwillchen-bot, azizmejri1, princeaden1. - Label flow: cc:rebase → cc:rebasing; removes on success; adds cc:rebase-failed on failure. <sup>Written for commit 24d7909963a41752f0e9dd68bf13c8820a59d8b9. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary Enhanced the PR review responder workflow to support multiple retry iterations (up to 3) for Claude Code review requests. The workflow now tracks retry attempts using numbered labels (`cc:request:N`) and automatically re-requests reviews when new commits are pushed, while escalating to human review after max retries are exhausted. ## Key Changes - **Retry tracking**: Replaced simple `cc:request` label detection with support for `cc:request` (initial) and `cc:request:N` (re-request iterations) labels - **Max retry guard**: Added logic to prevent infinite loops by capping retries at 3 attempts; PRs reaching this limit are labeled with `cc:needs-human-review` for manual intervention - **Dynamic label management**: Updated label removal/addition to use the current label dynamically instead of hardcoding `cc:request` - **Conditional re-triggering**: Split the final label update into two paths: - If commits were pushed: increment the request count and apply `cc:request:N` to auto-re-request review - If no commits were pushed: apply `cc:done` label to mark completion - **Output tracking**: Added `commits_pushed` output to the retrigger step to enable conditional downstream steps - **Label creation**: Ensured next iteration labels are created before being applied to PRs ## Implementation Details - Request count is parsed from label names using regex matching (`/^cc:request:(\d+)$/`) - The workflow maintains state through GitHub labels, allowing it to resume correctly even if interrupted - Label creation attempts are wrapped in try-catch to gracefully handle existing labels - The retry loop is bounded at 3 iterations to prevent runaway automation https://claude.ai/code/session_01KNj2M6wfeQKjTPmkgGP5dt <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2493"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Changes a privileged GitHub Actions workflow’s control flow and label automation, which could cause unexpected re-trigger loops or incorrect PR state if misconfigured. Risk is bounded by the new max-retry guard and explicit `commits_pushed` gating. > > **Overview** > Adds **bounded auto-retry support** to `pr-review-responder.yml` by recognizing `cc:request` *and* numbered `cc:request:N` labels, tracking the current iteration via step outputs. > > When Claude pushes new commits, the workflow now emits a `commits_pushed` output, creates the next `cc:request:N` label if needed, and swaps `cc:pending` to the incremented request label to auto re-request review; if no commits were pushed it continues to mark the PR `cc:done`. > > Introduces a **max retry guard (>=3)** that removes the current request label and escalates the PR to `cc:needs-human-review` (creating the label if missing) to prevent infinite automation loops. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit d68ddd159d6160b221c03e862dedf5f2585c6573. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds an automatic re-request loop to the PR review responder so Claude reviews are re-requested on new commits. Iterations are tracked with cc:request:N labels (max 3), escalating to cc:needs-human-review at the limit or cc:done if no new commits. - **New Features** - Detect and parse cc:request / cc:request:N; pick highest count; expose request_count and current_label outputs. - Use dynamic label management: remove current_label, add cc:pending while processing. - On new commits: create next cc:request:N, apply it, retrigger via workflow_dispatch; set commits_pushed output. - On no commits: remove cc:pending and add cc:done. - After 3 retries: remove current_label and cc:pending, add cc:needs-human-review. <sup>Written for commit 1beb4f648e64628aaa8f59c5b0e1d6b315604212. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:
Claude <noreply@anthropic.com>
-
由 Will Chen 提交于
<!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2499"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: changes are limited to CI configuration and Playwright reporting, with the main risk being CI failures or leaking the new secret into logs if misused. > > **Overview** > Adds Flakiness.io reporting to Playwright CI runs by installing `@flakiness/playwright`, registering it as an additional CI reporter in `playwright.config.ts`, and wiring `FLAKINESS_ACCESS_TOKEN` into the GitHub Actions E2E test step. > > Updates the lockfile to include the new Flakiness dependencies (and bumps `debug` patch version via dependency resolution). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 24ebc059e73409321eb0908a425a3d2b1ad47452. 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 Integrates Flakiness with Playwright E2E tests to track flaky tests and upload reports to flakiness.io. Reporter is enabled in CI and authenticated via a secret access token. - **New Features** - Added the @flakiness/playwright reporter to Playwright (endpoint: https://flakiness.io) for CI runs. - Passed FLAKINESS_ACCESS_TOKEN from GitHub Actions to enable authenticated report uploads. - **Dependencies** - Added @flakiness/playwright to package.json and updated the lockfile. <sup>Written for commit ddc0557b691bc533e33764bd7c93d9fab5b70fae. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. -->
-
由 Will Chen 提交于
#skip-bb --------- Co-authored-by:Claude <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
## Summary - Fix flaky e2e tests across 6 test files by adding proper awaits, better CSS class matching, accordion state checks, and explicit waits for UI elements - Key fixes: missing `await` on expect in delete_app, regex anchoring for favorite_app class matching, accordion expansion guards in git_collaboration, `pressSequentially` for mention trigger detection, and visibility waits in supabase_migrations ## Test plan - Run the full e2e test suite to verify the fixed tests pass reliably - Specifically verify: `delete_app`, `favorite_app`, `file_tree_search`, `git_collaboration`, `mention_files`, and `supabase_migrations` tests
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2498"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Stabilized flaky e2e tests by improving selectors and adding explicit waits. Reliability is improved across delete_app, favorite_app, file_tree_search, git_collaboration, mention_files, and supabase_migrations. - **Bug Fixes** - Added missing await for visibility assertion in delete_app. - Anchored favorite star class regex to avoid matching hover:fill. - Updated file_tree_search to expect main.tsx. - Guarded Git Collaboration flows by checking accordion expansion and element visibility; standardized on Timeout.MEDIUM. - Used pressSequentially and waits for @ mention menu; verified Supabase migrations switch with toBeChecked() after visibility. <sup>Written for commit a28a3d981e049c023f3a5343ae57b813961a6680. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary Added a "Start new chat" button to the ChatErrorBox component that appears for Dyad Pro enabled users. This provides a quick way to recover from certain chat errors by creating a fresh conversation. ## Key Changes - **ChatErrorBox.tsx**: - Added `MessageSquarePlus` icon import from lucide-react - Imported Tooltip components for better UX - Added `onStartNewChat` optional callback prop - Rendered a new "Start new chat" button with tooltip when Dyad Pro is enabled and callback is provided - **ChatInput.tsx**: - Imported `useChats`, `useRouter`, and toast utilities - Added `handleNewChat` function that: - Creates a new chat via IPC - Updates the selected chat ID atom - Navigates to the new chat - Invalidates the chats cache - Shows error toast on failure - Passed `handleNewChat` to ChatErrorBox's `onStartNewChat` prop ## Implementation Details - The button only appears when both `isDyadProEnabled` is true AND `onStartNewChat` callback is provided - Includes a helpful tooltip: "Starting a new chat can fix some issues" - Styled consistently with existing UI (blue-600 background, white text, hover effects) - Gracefully handles errors during chat creation with user-facing toast notifications - Falls back to home page navigation if appId is unavailable https://claude.ai/code/session_016vbjv8b4hs5fG52yKHv4oZ <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2494"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds a “Start new chat” button to the chat error box for Dyad Pro users to quickly recover from errors. Clicking it creates a fresh chat, navigates to it, refreshes the chat list, and handles failures gracefully. - **New Features** - Button shows only when Dyad Pro is enabled and a callback is provided. - Creates a new chat via IPC, selects it, navigates to /chat, and invalidates the chats cache. - Includes a tooltip (“Starting a new chat can fix some issues”); shows a toast on failure and falls back to home if no appId. <sup>Written for commit f71be0aa8c08cdd258bc59daa21939cf91528c62. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk UI/UX change that wires an extra navigation/mutation path (IPC chat creation + query invalidation) behind an error-state button for Pro users. > > **Overview** > Adds a Pro-only recovery action in `ChatErrorBox`: a new **“Start new chat”** button (with tooltip) shown only when `isDyadProEnabled` and an `onStartNewChat` callback are provided. > > Wires this action from `ChatInput` via a new `handleNewChat` flow that creates a chat over IPC, updates the selected chat atom, navigates to the new chat route, invalidates the chats cache, and shows a toast if creation fails (fallback navigation to `/` when no `appId`). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit f71be0aa8c08cdd258bc59daa21939cf91528c62. 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 提交于
## Summary Added support for Moonshot AI's latest Kimi K2.5 model through OpenRouter, expanding the available language model options for users. ## Changes - Added `moonshotai/kimi-k2.5` model configuration to the OpenRouter model options - Configured with the following specifications: - Display name: "Kimi K2.5" - Description: "Moonshot AI's latest and most capable model" - Context window: 256,000 tokens - Max output tokens: 32,000 tokens - Temperature: 0 (deterministic responses) - Pricing tier: 2 dollar signs (mid-range pricing) ## Details The model is positioned as Moonshot AI's flagship offering and has been added at the top of the OpenRouter model list. It supports a large context window suitable for processing lengthy documents and conversations. https://claude.ai/code/session_016BLQbf16FjY5b6u3vjGX5X <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2495"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Added Moonshot AI’s Kimi K2.5 model to OpenRouter to expand model options and support very large contexts. It’s listed at the top of the OpenRouter models. - **New Features** - Added moonshotai/kimi-k2.5 with display name “Kimi K2.5” and description. - Key specs: 256k context window, 32k max output tokens, temperature 0, pricing tier $$. <sup>Written for commit d7f909b486cfd0744e9546784ef0124ef256bdff. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: a data-only addition to the model catalog with no changes to request/response handling or auth. > > **Overview** > Adds a new OpenRouter model option for **Moonshot AI Kimi K2.5** (`moonshotai/kimi-k2.5`) with configured limits (256k context, 32k output), deterministic temperature, and `$$` pricing tier. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit d7f909b486cfd0744e9546784ef0124ef256bdff. 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>
-
由 Adekunle James Adeniji 提交于
Closes #1999 <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2343"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Introduces terminal-style history recall in the chat input using a zero-width trigger and the mentions menu. > > - New `HistoryNavigation` plugin listens for `ArrowUp` on empty input to insert `HISTORY_TRIGGER` and open a history menu; `Escape` clears it > - Integrates `messageHistory` from `ChatInput` (per-chat user messages, newest first) into `LexicalChatInput`; home input passes an empty history > - Extends mentions to support history items under `HISTORY_TRIGGER`, customizes menu item rendering, and strips the trigger from the external value sync/onChange flow > - Adds comprehensive Playwright e2e tests for opening, navigating, selecting (Enter/mouse), closing (Escape), and guard cases (non-empty input, empty history), plus normal message sending after closing > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit ea2a9298c6dc7e72a6cc1d3b044a4b6bcacf5bb4. 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 Recall previous user messages in the chat input using the Up Arrow. This adds a simple history menu that lets you quickly reuse past prompts without leaving the input. - **New Features** - Press Up Arrow in an empty input to open a history menu (only if history exists). - Navigate with Arrow keys, select with Enter or mouse click, and close with Escape. Defaults to the most recent item. - Integrates with Lexical via an invisible trigger, and won’t open when the input has content. - Pulls user-only messages per chat for history; includes end-to-end tests covering open, navigation, selection, closing, and guard cases. <sup>Written for commit d87bc2f712a69f411c3046e9376099656326bca1. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Change the Playwright test results comment workflow to delete the existing bot comment and create a new one, rather than updating in place - This ensures the comment always appears at the bottom of the PR conversation with the latest results ## Test plan - Verify the workflow triggers correctly on CI completion - Check that old Playwright comments are deleted and new ones are created at the bottom of the PR thread #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2491"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Change Playwright test results commenting to delete the previous bot comment and post a new one. This ensures the latest results always appear at the bottom of the PR thread. <sup>Written for commit f066fac1aa3c3fa362a9161605901359128f72ff. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Added `/issues/{id}/labels` as an allowed POST endpoint in `gh-permission-hook.py`, enabling automated label management (e.g., adding `cc:request` labels to issues/PRs) - Added 5 test cases to `good_commands.txt` covering the new endpoint - All 921 hook tests pass ## Test plan - [x] Hook unit tests pass (`python3 .claude/hooks/tests/test_gh_permission_hook.py` — 921/921) - [x] Vitest suite passes (661/661) #skip-bugbot🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2490"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Allow POST to /issues/{id}/labels in gh-permission-hook so automation can add labels (e.g., cc:request) without manual approval. Added five allowed-command tests covering the new endpoint. <sup>Written for commit ffceaef93ca64b2944523244a187bbd418d9743a. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary Enhanced the Playwright test summary generation to better handle snapshot failures and provide more actionable test commands in PR comments. ## Key Changes - **Added snapshot failure detection**: New `isSnapshotFailure()` function that identifies snapshot-related test failures by checking error messages for common snapshot comparison keywords - **Simplified test command output**: Removed the separate `generateCommands()` function and consolidated to a single command per test - **Smart command generation**: Automatically appends `--update-snapshots` flag only for snapshot failures, reducing confusion about when to use it - **Improved readability**: - Reformatted test commands into a single code block with better organization - Added error preview (first 120 chars) to help developers understand failure context - Added `export PLAYWRIGHT_HTML_OPEN=never` to prevent browser windows from opening during test runs - Changed section description from "run or update snapshots" to "re-run failing tests locally" for clarity ## Implementation Details - The snapshot detection checks for 10 different snapshot-related error message patterns (case-insensitive) - Test commands are now grouped in a single bash code block for easier copy-pasting - Error messages are truncated to 120 characters to keep the comment concise while still providing useful context https://claude.ai/code/session_014DzYzvnt4559rZEGLwbVm5 <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2484"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Improved Playwright PR test failure reporting by detecting snapshot mismatches and generating clearer, single-run commands. Makes it faster and safer to re-run failures locally and reduces confusion around snapshot updates. - **New Features** - Detect snapshot failures from error text and auto-append `--update-snapshots` only when needed. - Consolidate all failing test commands into one bash block with `PLAYWRIGHT_HTML_OPEN=never` set once. - Add a short error preview (first 120 chars) as a comment above each command. - Sanitize spec paths and escape test names/error previews to prevent injection. <sup>Written for commit 0515c892605dc303c60d1dbae4a2c0cd3a537481. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: changes only affect CI-generated PR comments and local rerun command formatting, with added input sanitization reducing injection risk. > > **Overview** > Improves the Playwright PR comment generator to **detect snapshot-related failures** and tailor rerun commands accordingly. > > The macOS “Test Commands” section is reformatted into a single copy-pasteable bash block (including `PLAYWRIGHT_HTML_OPEN=never`), adds a short error preview per test, and appends `--update-snapshots` *only* when a failure looks snapshot-related. Command generation now also sanitizes the spec path and removes the separate run/update command helper. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 0515c892605dc303c60d1dbae4a2c0cd3a537481. 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 提交于
## Summary Reordered the `/dyad:pr-push` command workflow to run the `remember-learnings` skill before lint checks, rather than after. This ensures that learnings are captured early in the process and included in the final commit. ## Changes - **Workflow reordering**: Moved the "Remember learnings" step from position 6 to position 3 (before lint checks) - This allows `AGENTS.md` changes to be captured before any formatting/linting modifications - Ensures learnings are part of the final amended commit rather than added after lint changes - **Updated step numbering**: Renumbered all subsequent steps (lint checks, tests, and final push) to reflect the new order - **Updated command metadata**: Added `remember-learnings` as a dependent skill in the pr-push command documentation - **Simplified git logic**: Removed the conditional guard comment since the step now runs earlier in the process ## Rationale By capturing learnings before lint checks, we ensure that: 1. All insights from the session are preserved in `AGENTS.md` 2. The file is included in the commit before any auto-formatting occurs 3. The final commit contains both learnings and properly formatted code 4. There's no risk of learnings being lost if lint makes significant changes https://claude.ai/code/session_01KfNBDK6GsBNu2zD85UfA7V <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2485"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Moved the remember-learnings step to run before linting in the /dyad:pr-push workflow so AGENTS.md updates are captured early and included in the commit. This prevents learnings from being lost and keeps the final commit consistent. - **Refactors** - Run remember-learnings at step 3 (before lint/formatting); renumbered following steps. - Stage AGENTS.md and amend the last commit when changed, ensuring learnings land before lint changes. - Updated README and pr-push docs to reflect the new dependency and step order. <sup>Written for commit d010420a889a8cbf896511199f926f066a62fd35. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk documentation-only change that reorders the `pr-push` checklist; no runtime code, build, or security-sensitive logic is modified. > > **Overview** > Updates the `/dyad:pr-push` workflow to run `remember-learnings` *before* linting, with instructions to stage `AGENTS.md` and amend the latest commit so learnings are captured early. > > Renumbers the remaining steps accordingly and updates `.claude/README.md` to list `remember-learnings` as a dependency for `/dyad:pr-push`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit d010420a889a8cbf896511199f926f066a62fd35. 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>
-
- 04 2月, 2026 18 次提交
-
-
由 Will Chen 提交于
## Summary - Rewrote the IPC architecture section in AGENTS.md to document the current contract-driven pattern (`defineContract`/`createClient`, `defineEvent`/`createEventClient`, `defineStream`/`createStreamClient`) - Replaced outdated references to `IpcClient.getInstance()` with the new domain client imports (e.g., `appClient`, `ipc` namespace) - Added key files table, step-by-step guide for adding new endpoints, and renderer usage examples ## Test plan - Documentation-only change — no code affected - Verified lint, type checks, and all 27 unit test files pass #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2477"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Updated the IPC docs in AGENTS.md to reflect the contract-driven architecture (defineContract/createClient, defineEvent/createEventClient, defineStream/createStreamClient). Replaced IpcClient.getInstance references with domain clients and the ipc namespace, and added key files, add-endpoint steps, handler expectations (Zod), renderer event/stream examples, and updated React Query snippets. <sup>Written for commit 2f9d6a8d4bbcac2c51437562e300ca03d2cf178f. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Adds a new GitHub Action (`close-stale-prs.yml`) that runs daily at midnight UTC - Automatically closes open PRs that were created more than 2 months ago - Leaves a friendly comment before closing each stale PR ## Test plan - Verify the workflow YAML is valid by checking the Actions tab after merge - Can be manually triggered via `workflow_dispatch` to test behavior #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2474"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds a scheduled GitHub Action to automatically close open PRs older than 2 months and post a comment, keeping the backlog tidy. Runs daily at midnight UTC. - **New Features** - Adds .github/workflows/close-stale-prs.yml using actions/github-script@v7 - Requires pull-requests: write permission - Supports manual runs via workflow_dispatch - Logs closed PRs to workflow output <sup>Written for commit 6687ed758e6104e8cde06895a021b121283aea71. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by:
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
由 Will Chen 提交于
## Summary - The `pr-review-responder` workflow uses `gh workflow run` to re-trigger CI, BugBot, and Claude PR Review after Claude Code pushes commits - The `GITHUB_TOKEN` was missing the `actions: write` permission, causing those workflow dispatch calls to silently fail - Adds the missing permission to fix workflow re-triggering ## Test plan - Verify that when `pr-review-responder` runs and Claude pushes commits, the CI, BugBot, and Claude PR Review workflows are triggered successfully - Check the workflow run logs to confirm `gh workflow run` no longer produces permission errors #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2475"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Added actions:write permission to the pr-review-responder workflow so GITHUB_TOKEN can dispatch CI, BugBot, and Claude PR Review after Claude Code pushes commits. Fixes silent failures where gh workflow run lacked permissions and didn’t re-trigger workflows. <sup>Written for commit 91cffceae19d8c1eea2138d48fd76e42449963a3. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
-
由 Will Chen 提交于
## Summary - Migrate from `anthropics/claude-code-base-action@v1` to `anthropics/claude-code-action@v1` - Switch from top-level `model`/`allowed_tools` params to `claude_args` format ## Test plan - Verify the workflow triggers correctly on comments to closed issues - Confirm the Claude Code action runs with the correct model and allowed tools #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2471"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Update the closed-issue-comment GitHub Actions workflow to use anthropics/claude-code-action and pass config via claude_args. No behavior change; the workflow still handles comments on closed issues. - **Refactors** - Replace anthropics/claude-code-base-action@v1 with anthropics/claude-code-action@v1. - Move model/allowed_tools into claude_args: --model sonnet and allowedTools "Bash(gh issue reopen:*), Bash(gh issue comment:*)". <sup>Written for commit 67e76b9b098c65902c4d9fe4b5aadb9b06fb8c1f. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Adds a GitHub workflow that uses Claude Code to intelligently handle comments on closed issues - If the original issue author comments expressing the issue persists or has questions, automatically re-opens the issue - If someone other than the original author comments, directs them to open a new issue ## Test plan - Comment on a closed issue as the original author with something like "This is still happening" - should re-open the issue - Comment on a closed issue as someone else - should receive a message to open a new issue - Comment on a closed issue as the original author with just "Thanks!" - should not trigger any action
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2409"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Adds a new GitHub Action that runs on untrusted issue comments and can reopen issues / post replies, so misclassification or prompt/permission issues could cause unwanted issue churn or spam despite restricted `gh` commands. > > **Overview** > Introduces a new `closed-issue-comment.yml` workflow triggered on `issue_comment` creation for **closed issues only** (excluding PRs), running in the `ai-bots` environment with `issues: write`. > > The job invokes `anthropics/claude-code-base-action@v1` with a constrained toolset to either **reopen and acknowledge** when the commenter is the original issue author and indicates the issue isn’t resolved, or **reply with guidance to open a new issue** when the commenter is not the original author; it explicitly treats `COMMENT_BODY` as untrusted input. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 0fb668683350ab3f205d4e627ba0a548d4caf5a7. 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 GitHub workflow to handle comments on closed issues. It reopens when the original author says the problem persists, and asks non-authors to open a new issue. - **New Features** - Triggers on comments for closed issues only (not PRs), with minimal permissions and restricted tools; treats comment text as untrusted input. - If the original author signals the issue isn’t resolved or has follow-up questions, reopens and replies; otherwise does nothing. - If the commenter isn’t the original author, replies asking them to open a new issue. <sup>Written for commit 0fb668683350ab3f205d4e627ba0a548d4caf5a7. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Adekunle James Adeniji 提交于
Closes #2140 <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2345"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Implements a chat panel visibility toggle and syncs it with the resizable layout. > > - Adds `isChatPanelHiddenAtom` to manage chat panel visibility state > - Adds a header toggle in `PreviewIframe` (with tooltip, icons, and `data-testid`) to hide/show the chat panel > - Makes `chat` page's `Panel` for `#chat-panel` collapsible; wires refs to expand/collapse and syncs with the atom; preserves preview panel behavior and resize handle > - Adds Playwright e2e test `e2e-tests/chat_panel_toggle.spec.ts` verifying collapse/expand behavior > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit d27fd58182f7012ad2b07fb3d1584a07b584bf45. 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 toolbar toggle to hide and show the chat panel, helping users focus on the preview when needed. The chat panel is now collapsible and synced with app state and the resize handle, with an e2e test covering the flow. - New Features - Preview toolbar button toggles chat visibility (Maximize2/Minimize2 with tooltip). - Added isChatPanelHiddenAtom; syncs panel size with hidden state, restores previous size on re-open, and updates visibility when the handle is dragged (hidden below ~5% width). - Playwright test confirms #chat-panel hides/shows via data-testid="preview-toggle-chat-panel-button". <sup>Written for commit f41058bfec814dde3d70a53cf20792e9d997f217. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
…sed approach The previous stick-to-bottom mechanism used a timeout-based `isUserScrolling` flag that reset after 2 seconds, causing the chat to snap back to auto-follow even when the user intentionally scrolled away. It also used manual scroll event listeners that duplicated Virtuoso's built-in capabilities. Replace with Virtuoso's native `atBottomStateChange` callback as the single source of truth for scroll position tracking. This gives: - Reliable stick-to-bottom: follows streaming output when at bottom - Clean escape: scrolling up past 80px threshold stops auto-follow immediately - No timeout jank: purely position-based, no 2-second reset timer - Simpler code: removes manual scroll listeners, cleanup refs, and timeout logic https://claude.ai/code/session_01PC8tFKJ439W8cVaT5Efyzr <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2448"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Changes core chat scrolling behavior during streaming by replacing timeout-based user-scroll detection with position-based at-bottom state, which could regress auto-follow or scroll-button behavior in edge cases. Scope is limited to the chat UI and does not touch data/auth logic. > > **Overview** > Refactors chat auto-scroll to be **purely position-based**: replaces the timeout-driven `isUserScrolling`/manual scroller listeners with a single at-bottom source of truth (`atBottomStateChange` in Virtuoso, plus a simple test-mode scroll handler). > > Auto-follow now resumes only when the user is actually at the bottom, and the stream-complete “scroll to footer” behavior runs only if the user stayed at bottom during streaming; the scroll-to-bottom button is driven directly by the at-bottom state. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 3273c28f3284afcde3fac58e50f243333404b799. 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 chat auto-scroll so the view only follows streaming when you’re at the bottom and stays put when you scroll up. Removes timeout-based tracking and manual listeners for a smoother, simpler experience. - **Bug Fixes** - Stops snap-back: scrolling up past 80px disables auto-follow immediately. - Follows streaming output only when at bottom; shows a scroll-to-bottom button when not. - After a stream finishes, auto-scrolls only if you were already at bottom. - **Refactors** - Replaced timeout-based isUserScrolling with Virtuoso’s atBottomStateChange + followOutput. - Removed manual scroll listeners and cleanup refs; rely on Virtuoso for position tracking. - Updated MessagesList to use atBottomThreshold=80 and a simplified followOutput callback; test mode mirrors behavior with lightweight scroll tracking. <sup>Written for commit a7b3fba8b0528f52b11d0a6711cec574be3732d8. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:
Claude <noreply@anthropic.com> Co-authored-by:
claude[bot] <41898282+claude[bot]@users.noreply.github.com>
-
由 wwwillchen-bot 提交于
## Summary - Relocated the `ContextLimitBanner` from the bottom of `MessagesList` to above the chat input area in `ChatInput` for better visibility - Moved the `useCountTokens` hook from `MessagesList` to `ChatInput` and removed the now-unused `tokenCountResult` from the footer context - Updated e2e tests to look for the banner inside the `chat-input-container` ## Test plan - [ ] Verify the context limit banner appears above the chat input when token usage is high - [ ] Verify the context limit banner does not appear when token usage is within limits - [ ] Run existing e2e tests: `PLAYWRIGHT_HTML_OPEN=never npm run e2e -- context_limit_banner`
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2461"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Moved the context limit banner to display above the chat input for better visibility when near the limit or when long contexts would cost extra. Addresses Linear issue 1770154755693. - **Refactors** - Moved useCountTokens to ChatInput and removed tokenCountResult from MessagesList footer context. - Updated e2e tests to assert the banner inside chat-input-container; added a model-picker test id and a custom test model to cover long context. <sup>Written for commit 04f5b40d66c9efb8d358ce75afa4d9a24258654e. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Updated the pr-push skill's push step to detect the correct remote instead of always defaulting to `origin` - When no upstream is set, the skill now checks the PR's head repository owner to find the matching local remote - This handles cases where pushing to another user's fork (e.g. when fixing someone else's PR) ## Test plan - Test by running `/dyad:pr-push` on a branch that was checked out from another user's fork PR - Verify it pushes to the correct remote (not always `origin`) #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2469"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Update pr-push to auto-detect and push to the correct remote instead of always using origin. This fixes pushes for branches from forks and PRs opened from another user’s repo. - **New Features** - Use the branch’s upstream if set; otherwise match the PR’s head repo to a local remote by owner/repo (works for SSH/HTTPS/token URLs). - If no upstream and no PR/match, push to origin; if origin is denied, try upstream (per workflow). - Push with --force-with-lease and set -u when establishing the upstream; surface gh pr view errors instead of silently falling back. <sup>Written for commit e24e347cc7ddc3cb68343100d696d775c75cffe6. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Add `/remember-learnings` command that reviews session errors, snags, and insights, then updates `AGENTS.md` with actionable learnings for future agent sessions - Integrate `/remember-learnings` as step 8 in `/dyad:pr-push` so learnings are automatically captured and included in every PR ## Test plan - Run `/remember-learnings` manually in a session that encountered errors — verify it appends a `## Learnings` section to `AGENTS.md` - Run `/dyad:pr-push` end-to-end — verify step 8 runs the skill and amends `AGENTS.md` into the commit #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2467"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds a /remember-learnings skill to capture session errors and insights into AGENTS.md, with guardrails to keep entries concise and useful. Integrates it into /dyad:pr-push before push, amending the commit only when AGENTS.md changes. - **New Features** - New /remember-learnings command: scans for errors/snags/workflow issues, writes 1–3 line bullets under ## Learnings in AGENTS.md; reads CLAUDE.md/AGENTS.md to avoid duplication; limits to 5 items, consolidates duplicates, and prunes obsolete entries. - /dyad:pr-push integration: added as step 6 (before push); conditionally amends the latest commit only if AGENTS.md changed; final summary reports any learnings added. <sup>Written for commit 43b24b73843a17fa9948408d3ed5fc238a7e2784. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Add a search bar with fuzzy matching (fuse.js) to the settings sidenav for quickly finding any setting - Create a searchable index of all ~23 settings with labels, descriptions, and keywords for forgiving matches - Clicking a search result scrolls to and briefly highlights the target setting with an animation ## Test plan - Navigate to Settings and type partial/approximate terms in the search bar (e.g. "aprv" for Auto-approve, "dark" for Theme, "zoom" for Zoom Level) - Verify results show matching settings grouped by section name - Click a result and verify it scrolls to and highlights the setting - Clear search and verify normal section navigation is restored - Verify "No settings found" appears for non-matching queries
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2449"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Moderate UI/navigation change: expands settings DOM with new anchor IDs and changes `useScrollAndNavigateTo` signature/behavior, which could impact other scroll-to call sites if any were missed. Adds a new dependency (`fuse.js`) and client-side search logic but no security- or data-sensitive behavior. > > **Overview** > Adds a fuzzy-search input to the settings sidebar (powered by `fuse.js`) so users can search across a new `SETTINGS_SEARCH_INDEX` of settings metadata and jump directly to a specific setting. > > Updates settings navigation to use centralized `SECTION_IDS`/`SETTING_IDS`, adds per-setting DOM `id`s in `settings.tsx`, and extends `useScrollAndNavigateTo` with optional *highlight-on-scroll* behavior (with new `.settings-highlight` CSS animation) used when clicking search results. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 2734a219ca2d3ebe80571dede1ea88d36cca77cc. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Add a fuzzy search bar to the settings sidebar so you can quickly find any setting. Clicking a result smooth-scrolls to and briefly highlights the setting. - **New Features** - Fuzzy search across ~23 settings using a searchable index (labels, descriptions, keywords). - Smooth scroll-to with a highlight animation; added anchor IDs for precise navigation. - Clear button to reset the query and a "No settings found" state. - **Dependencies** - Added fuse.js ^7.1.0. <sup>Written for commit 2734a219ca2d3ebe80571dede1ea88d36cca77cc. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Grants `wwwillchen-bot` the same permissions as `wwwillchen` across all GitHub workflow and Claude config allowlists - Updated 5 files: PR review responder, Claude PR review, BugBot trigger, issue triage, and PR fix comments ## Test plan - Verify CI passes (config-only changes, no code logic affected) - Confirm `wwwillchen-bot` PRs trigger the expected workflows #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2465"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Give wwwillchen-bot the same permissions as wwwillchen across workflows and Claude configs so its PRs trigger reviews, triage, and BugBot. Config-only change; no logic updates. - **New Features** - Added wwwillchen-bot to allowlists for PR review responder, Claude PR review, and BugBot trigger. - Triage workflow now surfaces helpful comments from wwwillchen-bot. - Marked wwwillchen-bot as a trusted author for PR fix comments. <sup>Written for commit 179db5a83561e18138533c28b01e90b2765930c4. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
<!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Migrates shadcn UI from Radix primitives to Base UI across the app and adds migration docs. Fixes interaction regressions (tooltips, submenu triggers, switch roles) to stabilize the UI and e2e tests. - **Migration** - Rewrote core UI in src/components/ui using Base UI (accordion, alert-dialog, button, checkbox, command, dialog, dropdown-menu, label, popover, scroll-area, select, separator, sheet, sidebar, switch, tabs, toggle, toggle-group, tooltip). - Updated 40+ components to new APIs (use polymorphic/as or direct elements instead of asChild, adjust Select onValueChange to handle undefined, align Accordion/Tabs props, replace data-[state] with data-open/checked, remove Tooltip wrappers around interactive elements, set submenu triggers to click/openOnHover=false, add aria-labels to switches/checkboxes, hide streaming animation text from a11y with aria-hidden). - Stabilized e2e tests (use click for submenu items, role-based locators for switches, waits for dialog close) and added .claude/run-e2e-update.sh for snapshot updates. - Added shadcn-migration.md documenting Radix→Base mappings and patterns. - **Dependencies** - Added @base-ui/react and removed 16 @radix-ui/react-* packages. <sup>Written for commit c89958b108c41de335aadb9ab9516a5140b8d63b. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Medium risk because it replaces core UI primitives and interaction patterns (dialogs/menus/selects/switches), which can cause subtle UX/a11y regressions despite primarily being framework-level refactors. > > **Overview** > **Migrates UI primitives from Radix to Base UI.** Adds `@base-ui/react` and removes many `@radix-ui/react-*` deps, then updates shared shadcn wrappers (e.g. `dialog`, `alert-dialog`, `select`, `switch`, `dropdown-menu`, `tooltip`, `accordion`) and consumers to the new Base UI prop/events and `data-*` state attributes. > > **Updates app components for new trigger/tooltip patterns and accessibility.** Replaces many `asChild` trigger patterns with direct triggers or `buttonVariants` styling, swaps some tooltips for `title` attributes, guards `Select` `onValueChange` against `undefined`, and adds `aria-label`s to switches/checkboxes. > > **Stabilizes Playwright E2E tests and snapshots.** Menu submenus now open via click (not hover) and tests wait for submenu items/dialog close; branch manager assertions switch to new trigger text; switch locators move to role/name; multiple aria snapshot fixtures are updated, and a helper script `.claude/run-e2e-update.sh` is added to regenerate snapshots. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit c89958b108c41de335aadb9ab9516a5140b8d63b. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by:
claude[bot] <41898282+claude[bot]@users.noreply.github.com>
-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > **Medium Risk** > Moderate risk because it changes CI execution order and artifact handling across macOS/Windows, which could cause failures or masking of build/test issues if artifacts are incomplete or OS-specific metadata isn’t preserved. > > **Overview** > Refactors the CI workflow to run a single per-OS `build` job (including `pre:e2e` and fake server build) and then execute Playwright `e2e-tests` in 4 shards that **download the built artifacts** instead of rebuilding per shard. > > Adds OS-specific artifact packaging: macOS bundles are tarred (`out-macos.tar`) to preserve app metadata, while Windows uploads `out/` directly; `merge-reports` is updated to depend on `e2e-tests` rather than the old `test` job. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 2f42db63302827878905a8225fd47fc7b6cf1972. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2026"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> --------- Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Add explicit `WINDOWS_SIGN` env var to the release workflow (set only for Windows builds) - `forge.config.ts` now checks `WINDOWS_SIGN=true` to enable Windows code signing, instead of the generic `isGitHubActions` check - If `WINDOWS_SIGN` is enabled but `AZURE_CODE_SIGNING_DLIB` is missing, the build **fails loudly** with a clear error message - CI builds no longer attempt Windows code signing since they don't set `WINDOWS_SIGN` ## Test plan - CI workflow should pass without attempting Windows code signing (no `WINDOWS_SIGN` env var) - Release workflow Windows builds will set `WINDOWS_SIGN=true` and sign correctly - If Azure signing tools fail to install in the release workflow, the build will fail explicitly instead of silently skipping signing #skip-bugbot <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: small build/release configuration change that only affects Windows signing behavior and adds an explicit fail-fast check when signing is enabled but tooling is missing. > > **Overview** > Windows code signing is now explicitly gated by a `WINDOWS_SIGN` env var instead of implicitly enabling it on all GitHub Actions runs. > > The release workflow sets `WINDOWS_SIGN=true` only for the Windows matrix job, and `forge.config.ts` enables `windowsSign`/MakerSquirrel signing only when that flag is set, failing fast with a clear error if `AZURE_CODE_SIGNING_DLIB` is missing. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 132029c13f0da8afde3f864dc58a1ebdaeddf28e. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Adds a `SessionStart` hook to `.claude/settings.json` that runs `npm install` automatically when a Claude Code session starts - Ensures dependencies are always up to date at the beginning of each session - Uses a 60-second timeout ## Test plan - [ ] Start a new Claude Code session and verify `npm install` runs automatically - [ ] Verify the hook doesn't block session startup if it completes within 60s #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2458"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Adds a SessionStart hook to .claude/settings.json to run npm install when a Claude Code session starts. This keeps dependencies current and uses a 60s timeout so startup isn’t blocked. <sup>Written for commit 30bc4980b2cc211c7fd358d0f779bec333480f01. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by:
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
由 Will Chen 提交于
## Summary - Add a native notification that appears when a chat response completes while the Dyad app window is not focused - Controlled by a new setting "Show notification when chat completes" in Workflow Settings - Enabled by default for a seamless notification experience ## Implementation - Added `enableChatCompletionNotifications` setting to UserSettingsSchema (default: true) - Added `isWindowFocused` IPC contract and handler to check window focus state from main process - Added notification logic to `useStreamChat`'s `onEnd` callback using the Web Notification API - Created `ChatCompletionNotificationSwitch` component for the settings toggle - Added the toggle to the Workflow Settings section in the Settings page ## Test plan 1. Start the app and enable notifications in Workflow Settings (enabled by default) 2. Start a chat and switch focus to another application 3. Wait for the chat response to complete 4. Verify a native notification appears saying "Chat response completed" 5. When Dyad is focused, verify no notification appears 6. Disable the setting and verify notifications stop appearing
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2413"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Mostly additive UI/renderer changes with an optional IPC payload field; main risk is runtime differences around `Notification` permissions/focus detection across platforms. > > **Overview** > Adds an opt-in Workflow Settings toggle (`enableChatCompletionNotifications`) that requests Web Notification permission when enabled. > > When a chat stream ends, the renderer now conditionally fires a native `Notification` if the setting is enabled, permission is granted, and the window is not focused, using the app name as the title and a truncated `chatSummary`/chat title as the body. > > Extends the `ChatResponseEnd` IPC payload with optional `chatSummary` and populates it from both the standard stream handler and the local-agent handler so the renderer can display richer completion notifications. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 02cb0c28d1bd72cf01e48f6923f4d2285df4aaa3. 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 native desktop notification when a chat response completes while Dyad isn’t focused, controlled by a new Workflow Settings toggle enabled by default. Helps you notice finished replies while multitasking. - **New Features** - New setting: “Show notification when chat completes” (default on). - Requests notification permission when you enable it; notifications show only if permission is granted. - Sends a notification via the Web Notification API when the window isn’t focused (document.hasFocus), using the app name as the title and the chat summary (or chat title) as the body. <sup>Written for commit 02cb0c28d1bd72cf01e48f6923f4d2285df4aaa3. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
- 03 2月, 2026 5 次提交
-
-
由 Will Chen 提交于
## Summary - Create new `StreamingLoadingAnimation` component with two variants for chat streaming states - **Initial variant**: Flowing wave animation with 5 glowing orbs, staggered bounce, and gradient fills - **Streaming variant**: Pulsing indicator with rotating ring and animated "generating..." text - Replace inline animations in ChatMessage with the new component for cleaner code ## Test plan - Start the app and send a message to trigger chat streaming - Verify the initial loading animation shows glowing bouncing orbs when waiting for first response - Verify the streaming indicator shows pulsing "generating..." text while content is being generated - Check animations work correctly in both light and dark modes
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2425"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > UI-only changes that replace existing loading indicators; main risk is visual/regression or performance issues from the new animations. > > **Overview** > Adds a new `StreamingLoadingAnimation` component with two variants (`initial` and `streaming`) using `framer-motion`, rotating verbs, and a scrambled text effect. > > Updates `ChatMessage` to replace the previous inline loading/spinner animations with this shared component for both the pre-response and in-stream indicators. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 65fac50463768be2e56810c498ca5b4c694754bd. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Add a reusable StreamingLoadingAnimation component with “initial” and “streaming” variants to improve chat loading feedback. Replaces ad‑hoc animations in ChatMessage for a cleaner, consistent UI. - **New Features** - StreamingLoadingAnimation component: - initial: glowing orb wave - streaming: organic equalizer bars - Rotating verbs with scramble text reveal; theme-aware colors - **Refactors** - ChatMessage now uses the new component instead of inline framer-motion blocks - Centralizes animation styles; no changes to streaming logic <sup>Written for commit 65fac50463768be2e56810c498ca5b4c694754bd. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Ryan Groch 提交于
Closes #585. Currently, there are at least two places where an Electron logo appears instead of the Dyad logo: - In the Windows control panel (see #585). - On the taskbar (or equivalent) of some Linux desktop environments while running the app. The Windows installer (`.Setup.exe`) also shows a generic icon instead of the Dyad logo when viewed in the file explorer. This PR aims to fix all of the above. It's a relatively minor detail, but it's nice to have anyway. The relevant documentation from Electron Forge is on this page: https://www.electronforge.io/guides/create-and-add-icons#setting-the-app-icon I've double-checked that this fixes the icons on Windows 10, XFCE and Cinnamon (on Linux Mint), and GNOME (on Fedora). I don't have a device that runs Windows 11. <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2404"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Replace generic/Electron icons with the Dyad logo across Windows and Linux. Ensures correct branding in the Windows control panel, Linux taskbar, and the Windows installer. - **Bug Fixes** - Set BrowserWindow icon to assets/icon/logo.png. - Configured Electron Forge makers: - Squirrel: iconUrl and setupIcon set to Dyad .ico for installer and control panel. - Deb/RPM: icon set to Dyad .png for desktop environments. - Verified on Windows 10, Linux Mint (XFCE, Cinnamon), and Fedora (GNOME). <sup>Written for commit 2f29dcc2fd34fdc53fb9bd2126cf02a7bd719920. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by:
gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
-
由 Will Chen 提交于
## Summary - Windows release builds fail during code signing because the Azure Trusted Signing DLL cannot parse the signing metadata JSON file - The `signing-metadata.json` is written with a UTF-8 BOM (0xEF 0xBB 0xBF) by Windows PowerShell 5.1's `Out-File -Encoding utf8`, and .NET's `System.Text.Json` parser rejects the BOM as invalid JSON - Fix: switch `shell: powershell` to `shell: pwsh` (PowerShell Core) which writes UTF-8 without BOM by default ## Test plan - Re-run the release workflow and verify the Windows build completes signing successfully #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2446"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Fix Windows release signing failures by switching the workflow to PowerShell Core (pwsh) so signing-metadata.json is written as UTF-8 without a BOM. This avoids the .NET System.Text.Json BOM error and lets Azure Trusted Signing parse the file successfully. <sup>Written for commit b1967255ec4547681dd5650fe0c2154b7374f0ad. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Auto-discover signtool.exe from Windows SDK instead of relying on `SIGNTOOL_PATH` repository variable - Add `/debug` flag to signtool for better diagnostics during signing failures - Remove `SIGNTOOL_PATH` env var from the electron-builder step since it's now set dynamically #skip-bugbot ## Test plan - Verify the release workflow runs successfully on Windows runners - Check that signtool.exe is found from the Windows SDK directory - Confirm signing output includes debug information
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2445"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Automatically discover the Windows SDK SignTool in the release workflow and set its path via GITHUB_ENV, removing the need for the SIGNTOOL_PATH repo variable. Adds /debug to SignTool for clearer diagnostics during signing. - **Refactors** - Auto-find x64 signtool.exe from the Windows SDK and export SIGNTOOL_PATH dynamically. - Add /debug to signWithParams for better logging. - Remove SIGNTOOL_PATH from the electron-builder step. <sup>Written for commit e667e794ac6b4c13bf34ab2943182fd22de26da0. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Adds `@ts-expect-error` comment to suppress a zod v4 type inference issue in `registerTypedHandlers` (`src/ipc/handlers/base.ts`) - The generic handler registration produces incorrect types with zod v4, requiring this suppression until the upstream issue is resolved ## Test plan - [x] TypeScript type-checking passes (`npm run ts`) - [x] All 661 unit tests pass - [x] Lint checks pass #skip-bugbot
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2444"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Suppress a Zod v4 type inference error in registerTypedHandlers by adding @ts-expect-error in src/ipc/handlers/base.ts. This unblocks type-checking with no runtime changes until the upstream issue is fixed. <sup>Written for commit 4b847c8611331b51afead606c85bdc52d017a1dd. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> Co-authored-by:Claude Opus 4.5 <noreply@anthropic.com>
-