- 27 2月, 2026 2 次提交
-
-
由 Will Chen 提交于
## Summary - Add new skill definition for under . - Document required workflow for adding model configurations from official docs. ## Test plan - npm run fmt - npm run lint:fix - npm run ts
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2786" target="_blank"> <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.6 <noreply@anthropic.com>
-
由 Mohamed Aziz Mejri 提交于
<!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2810" target="_blank"> <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 -->
-
- 26 2月, 2026 7 次提交
-
-
由 Will Chen 提交于
Fixes #2790 ## Summary - Return SQL execution output from execute_sql tool instead of discarding it - Surface migration write failures alongside SQL execution results - Preserve existing migration behavior while improving feedback for callers ## Test plan - npm run fmt - npm run lint:fix - npm run ts
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2797" target="_blank"> <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 --> -
由 wwwillchen-bot 提交于
## Summary - **attach_image.spec.ts**: Fix flaky aria snapshot for `upload-to-codebase` test by using regex patterns for non-deterministic button text and removing race-dependent "extra files edited outside of Dyad" assertion - **context_compaction.spec.ts**: Replace brittle aria snapshots with order-independent element assertions since compaction restructures messages non-deterministically between runs ## Test plan - [x] `attach_image.spec.ts` passes 30/30 runs with `--repeat-each=30` - [x] `context_compaction.spec.ts` passes 20/20 runs with `--repeat-each=10` - [x] Full test suite (`npm test`) passes (842/842 tests) - [x] Lint checks pass (`npm run fmt && npm run lint:fix && npm run ts`)
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2793" target="_blank"> <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[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by:
Claude Opus 4.6 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
## Summary - cap `pr-review-responder` auto re-request attempts at 3 retries - mark PRs with `cc:failed` and `needs-human:review-issue` when retry limit is reached - fix strict TypeScript errors in GitHub/local agent handlers so `npm run ts` passes ## Test plan - npm run fmt && npm run lint:fix && npm run ts - npm test
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2798" target="_blank"> <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:Will Chen <willchen90@gmail.com>
-
由 Will Chen 提交于
## Summary - Add planning document for implementing a new `web_fetch` tool for local agent mode - This tool will fetch and read website content when users share URLs, available to all users (free + Pro) - Unlike the existing Pro-only `web_crawl` tool, `web_fetch` performs direct local HTTP fetch at zero infrastructure cost ## Test plan - Manual review of the plan document to ensure implementation strategy is clear - Implementation will follow the detailed testing strategy outlined in the plan
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2801" target="_blank"> <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 --> -
由 Mohamed Aziz Mejri 提交于
<!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2803" target="_blank"> <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 -->
-
由 Mohamed Aziz Mejri 提交于
## Summary Add persistence layer for todos so they survive across multiple turns in a chat session. Todos are now saved to disk after each update and automatically loaded and injected into the conversation context when a new turn begins. ## Key Changes - **New module `todo_persistence.ts`**: Provides utilities to save, load, and delete todo JSON files stored in `.dyad/todos/<chatId>.json` - `getTodosFilePath()`: Constructs the file path for a chat's todos - `saveTodos()`: Persists todos to disk with metadata (updatedAt timestamp) - `loadTodos()`: Loads previously saved todos, gracefully handling missing or corrupted files - `deleteTodos()`: Removes the todos file when all todos are completed - **Updated `local_agent_handler.ts`**: - Load persisted todos at the start of each turn - Emit loaded todos to the renderer immediately so the UI reflects them - Initialize the agent context with persisted todos instead of an empty array - Inject a synthetic system message reminding the LLM of incomplete todos from the previous turn, following the same pattern as existing todo reminder logic - Ensure `.dyad/` directory is gitignored (idempotent operation) - **Updated `update_todos.ts`**: - Persist todos to disk after each tool execution - Delete the todos file when all todos are marked as completed ## Implementation Details - Todos are stored as JSON with an `updatedAt` timestamp for potential future use - File I/O errors are logged as warnings but don't interrupt the agent flow (graceful degradation) - The synthetic message injection for persisted todos only occurs if there are incomplete todos, avoiding unnecessary context pollution - The `.dyad/` gitignore step is idempotent and aligns with existing patterns in the codebase <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2713" target="_blank"> <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 <noreply@anthropic.com> Co-authored-by:
Mohamed Aziz Mejri <mohamedazizmejri@Mohameds-Mac-mini.local>
-
由 wwwillchen-bot 提交于
## Summary - Compute a stable Monaco `path` value from `appId` and `filePath` in `FileEditor` - Pass that `path` into the editor so file models are keyed consistently across renders/apps ## Test plan - npm run fmt - npm run lint:fix - npm run ts - npm test
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2781" target="_blank"> <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:Will Chen <willchen90@gmail.com>
-
- 25 2月, 2026 4 次提交
-
-
由 Mohamed Aziz Mejri 提交于
closes #2576 <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2757" target="_blank"> <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.6 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
## Summary - Refactor `useParseRouter` hook to improve code organization and maintainability - Add comprehensive unit tests for the `useParseRouter` hook covering navigation state parsing, route matching, and edge cases ## Test plan - Run `npm test` to verify all 842 tests pass - The new tests in `src/__tests__/useParseRouter.test.ts` cover various navigation scenarios
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2780" target="_blank"> <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:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Add step 8 to the `pr-push` skill that automatically adds the `cc:request` label for non-trivial PRs to trigger code review - This prevents issues like lint failures from slipping through when the agent doesn't fully execute lint checks (e.g., due to token limits in long CI runs) - Renumbered subsequent steps (9-11) accordingly ## Test plan - [ ] Verify the `pr-push` skill SKILL.md has the new step 8 with clear trivial/non-trivial criteria - [ ] Verify step numbering is correct (1-11) - [ ] Run `pr-push` on a non-trivial PR and confirm `cc:request` label is added
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2773" target="_blank"> <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.6 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
Scope Import button locators to the GitHub URL tab panel to prevent strict mode violations when both tab panels render Import buttons simultaneously. Verified: 60/60 passes after fix. <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2775" target="_blank"> <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[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by:
Claude Opus 4.6 <noreply@anthropic.com>
-
- 24 2月, 2026 3 次提交
-
-
由 Mohamed Aziz Mejri 提交于
<!-- This is an auto-generated description by cubic. --> ## Summary by cubic Enable planning_questionnaire in normal agent mode and enforce a clarify‑before‑plan workflow with explicit examples. Also adds a one‑pass todo follow‑up so the agent completes remaining tasks before stopping. - **New Features** - planning_questionnaire is available in both plan and normal modes. - Clarify step: call planning_questionnaire to ask 1–3 focused questions for vague requests; skip when specific; STOP until the user replies. Always use it for new app/major feature requests. - One-pass todo follow-up: if a turn ends with incomplete todos, inject a short reminder and run another pass to finish them. - **Bug Fixes** - Always stop after planning_questionnaire in both modes to prevent repeated tool calls. - Gate plan-only tools: write_plan and exit_plan are plan‑mode only; questionnaire remains available in normal mode. <sup>Written for commit c6a67ea7e6981e86418dddeaa245b918a22261e9. 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/2566" target="_blank"> <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:
Mohamed Aziz Mejri <mohamedazizmejri@Mohameds-Mac-mini.local> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
## Summary - Hides the "Fix with AI" button in the `DyadOutput` component while a response is being streamed - Prevents users from triggering conflicting AI fix requests during an ongoing stream - Uses the existing `isStreamingByIdAtom` to track streaming state per chat ## Test plan - Open the app and trigger an error/warning in the output - Start a streaming response - Verify the "Fix with AI" button is hidden during streaming - Verify the button reappears after streaming completes
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2771" target="_blank"> <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:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
#skip-bb <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2770" target="_blank"> <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 -->
-
- 23 2月, 2026 2 次提交
-
-
由 wwwillchen-bot 提交于
## Summary - Fixed flaky `refresh app` test in `refresh.spec.ts` by adding pre-refresh snapshot verification and post-refresh content wait - The test was failing ~20% of the time because the iframe body would remain empty after clicking refresh - Added `snapshotPreview()` before body removal to ensure initial content is loaded - Added `not.toHaveText("")` wait after refresh to ensure content reloads before snapshotting ## Flaky test analysis Scanned 1 main branch CI run (with available artifacts) + 9 PR comments from wwwillchen/wwwillchen-bot. Top flaky spec files by occurrence: | Spec File | Occurrences | Status | |:---|:---:|:---| | setup_flow.spec.ts | 13 | Already fixed (PR #2740) | | debugging_logs.spec.ts | 6 | Stable (passed 50/50) | | select_component.spec.ts | 6 | Stable (passed 60/60) | | setup.spec.ts | 5 | Stable (passed 10/10) | | switch_versions.spec.ts | 5 | Stable (passed 20/20) | | **refresh.spec.ts** | **5** | **Fixed in this PR** | | toggle_screen_sizes.spec.ts | 4 | Stable (passed 30/30) | | undo.spec.ts | 3 | Stable (passed 30/30) | ## Verification - `refresh.spec.ts` passed 40/40 runs with `--repeat-each=10` after the fix (was 38/40 before) ## Test plan - [x] Verify `refresh.spec.ts` passes consistently with `--repeat-each=10` - [x] No application code changes (test-only fix)🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2759" target="_blank"> <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[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by:
Claude Opus 4.6 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
## Summary - Changed the Claude Deflake E2E workflow schedule from daily to weekdays only (Monday-Friday at 10:00 UTC) - This reduces unnecessary CI runs on weekends when less attention is paid to flaky test results ## Test plan - Verify the cron expression `0 10 * * 1-5` is valid and represents weekdays only - The workflow can still be triggered manually via `workflow_dispatch`
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2761" target="_blank"> <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:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
- 21 2月, 2026 2 次提交
-
-
由 wwwillchen-bot 提交于
## Summary - **refresh.spec.ts**: Fix race condition where the "refresh app" test would fail because the iframe body was empty after refresh. Added explicit waits for the iframe body to have content both before removing it and after clicking refresh, preventing the `toMatchAriaSnapshot` from matching against an empty `<body></body>`. - **themes_management.spec.ts**: Fix strict mode violations where `getByLabel('Description (optional)')` resolved to 2 elements (one on the Manual tab, one on the AI tab). Replaced ambiguous label selectors with specific element ID selectors (`#manual-description`, `#manual-prompt`, `#ai-description`). Also scoped edit dialog selectors to the dialog role to avoid similar ambiguity. ## Verification Both spec files were verified with `--repeat-each=10` (0 retries) after fixes: - `refresh.spec.ts`: 40/40 passed (was 34/40 before fix) - `themes_management.spec.ts`: 50/50 passed (was 49/50 before fix) ## Flaky test scan results Scanned 2 CI runs on main + 11 PRs by wwwillchen/wwwillchen-bot. Most previously flaky tests (setup_flow, setup, select_component, debugging_logs, switch_versions, etc.) appear to have been fixed in prior commits. Only refresh.spec.ts and themes_management.spec.ts were still reproducing locally. ## Test plan - [x] `refresh.spec.ts` passes 10x repeat-each with 0 retries - [x] `themes_management.spec.ts` passes 10x repeat-each with 0 retries - [x] Formatting, linting, and type checks pass🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2752" target="_blank"> <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[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by:
Claude Opus 4.6 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Adds comprehensive planning document for first-class NeonDB integration at `plans/neondb-integration.md` - Generated via swarm-to-plan session with PM, UX, and Engineering agents who analyzed the idea, debated trade-offs, and incorporated user decisions - Covers full-stack design: agent tools, system prompt, UI changes, security model, and example code for Neon + Drizzle ORM + NextAuth.js ## Test plan - [ ] Review the plan document for completeness and accuracy - [ ] Verify alignment with existing Supabase integration architecture - [ ] Confirm example code patterns are correct
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2748" target="_blank"> <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.6 <noreply@anthropic.com>
-
- 18 2月, 2026 1 次提交
-
-
由 Will Chen 提交于
#skip-bb <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2743" target="_blank"> <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 -->
-
- 17 2月, 2026 3 次提交
-
-
由 Will Chen 提交于
## Summary - Adds a new Claude Code skill that monitors GitHub Actions workflow runs from the past day - Identifies severe or consistent failures and files GitHub issues for actionable problems - Includes detailed instructions for classifying failures, investigating issues, and filing reports ## Test plan - The skill can be manually triggered via `/dyad:check-workflows` or run on a daily schedule at 13:00 UTC - Check the generated GitHub issue (if any) to verify the classification and reporting logic works correctly - Verify that expected failures (like Nightly Runner Cleanup, cascading CI failures) are properly filtered out
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2738" target="_blank"> <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.6 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
## Summary - Deflake `setup_flow.spec.ts` which was the most flaky test file (20 occurrences across 10 CI runs and 5 PRs) - Wrap initial "Setup Dyad" heading check in `toPass()` with `Timeout.MEDIUM` to handle slow page renders in CI - Wrap `page.reload()` in `toPass()` retry to handle intermittent `ERR_FILE_NOT_FOUND` errors in Electron - Expand Node.js accordion section before checking for install button (section not auto-expanded after reload with mock) - Use `force: true` on "Continue" button click to avoid accordion overlap pointer interception - Replace hardcoded timeouts with `Timeout.MEDIUM` constants for CI/local adaptability ## Test plan - [x] Ran `setup_flow.spec.ts` with `--repeat-each=10` (30 tests total) - all passed - [x] Previously failed 6/10 times on "node.js install flow" test, now passes 10/10 - [x] Other top flaky specs (context_manage, chat_input, edit_code, logs_server, themes_management, fix_error) passed all repeats locally without changes - their CI flakiness is environment-specific - [x] All 819 unit tests pass - [x] Lint and type checks pass
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2740" target="_blank"> <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[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by:
Claude Opus 4.6 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary Add a comprehensive planning document outlining an initiative to improve the speed of landing PRs for maintainers by optimizing the CI pipeline, automating the fix-and-retry loop, and improving developer feedback during wait times. The plan covers: - CI pipeline optimizations for self-hosted macOS ARM64 runners (caching, job consolidation) - Auto-trigger fix loop for privileged author PRs (remove label requirement) - Tiered test selection based on changed files - PR status watcher for terminal notifications - Unified `/pr` skill entry point - Move pr-review-responder to self-hosted runners The plan is structured in four implementation phases: instrumentation, CI quick wins, auto-fix loop enhancements, and developer experience improvements. It includes risk assessments, testing strategies, and decision logs. ## Test plan - Verify the document is correctly formatted and renders as markdown - Review the content for clarity and alignment with project goals - Confirm all phases, user stories, and technical components are clearly described
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2739" target="_blank"> <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 -->
-
- 16 2月, 2026 2 次提交
-
-
由 Will Chen 提交于
## Summary - Add ADR 0001 for host capability interface decisions. - Add ADR 0002 for cloud runtime topology and ADR 0003 for authz model. - Add ADR index and architecture updates for cross-platform planning. - Add desktop/mobile/web unification plan document in plans/. ## Test plan - npm run fmt - npm run lint:fix - npm run ts
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2737" target="_blank"> <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:wwwillchen-bot <theodorewilsonchen@gmail.com>
-
由 Andrey Lushnikov 提交于
<!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2735" target="_blank"> <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 -->
-
- 15 2月, 2026 8 次提交
-
-
由 wwwillchen-bot 提交于
## Summary - Add a separate workflow (`flakiness-upload.yml`) that uploads Playwright flakiness reports to flakiness.io for pull requests from forks - Fork PRs don't have access to secrets during CI, so this uses `workflow_run` to upload results after CI completes (workflow_run has access to secrets from the base repo) - Update `ci.yml` to upload `flakiness-report` artifacts for each shard ## Test plan - [ ] Verify CI workflow creates flakiness-report artifacts for each shard - [ ] Verify flakiness-upload workflow triggers after CI completes for fork PRs - [ ] Verify reports are uploaded to flakiness.io successfully
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2727" target="_blank"> <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:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Add planning documentation for dangerous-action guardrails and implementation approach. - Document detection and mitigation strategies for potentially destructive operations. - Define acceptance criteria and rollout/testing recommendations. ## Test plan - Manual review of the plan document for completeness and consistency. - Validate markdown formatting and consistency with repository conventions.
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2733" target="_blank"> <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 --> -
由 Will Chen 提交于
## Summary - Add documentation guidance to AGENTS.md about testing changes before committing or pushing - Include guidance on running relevant unit tests and E2E tests - Note scenarios where local testing may not be possible and alternative verification steps ## Test plan - Verify the documentation is clear and useful for developers - Ensure the changes don't break the build
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2731" target="_blank"> <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.6 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
## Summary - Fixed ambiguous `getByLabel("Theme Name")` selectors in themes management E2E tests - Used specific element IDs (`#manual-name`, `#ai-name`) for create dialogs where multiple matching inputs exist - Scoped edit dialog selectors to the dialog context to avoid matching create form inputs ## Test plan - Run the themes_management E2E tests: `npx playwright test e2e-tests/themes_management.spec.ts` - Verify all theme CRUD operations, chat input creation, and AI generator flows pass🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2728" target="_blank"> <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:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Add AI-powered permission request hook that analyzes Claude Code tool requests and classifies them as safe (GREEN), uncertain (YELLOW), or dangerous (RED) - Add comprehensive multi-platform roadmap for expanding Dyad from desktop-only to web + mobile (PWA) with freemium model ## Test plan - Verify permission-request-hook.py is properly formatted and placed in `.claude/hooks/` - Review multi-platform roadmap documentation for completeness and accuracy - No behavior changes to existing functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2734" target="_blank"> <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.6 <noreply@anthropic.com>
-
由 Will Chen 提交于
…ary tests - context_limit_banner: increase banner visibility timeout from MEDIUM to LONG since token counting IPC fires asynchronously after streaming ends - attach_image: wait for file card button to render before taking aria snapshot in the upload-to-codebase test - prompt_library: replace flaky toMatchAriaSnapshot with explicit assertions (toBeVisible, toContainText, getByRole) since Chrome's accessibility tree non-deterministically merges heading and paragraph text <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2725" target="_blank"> <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[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by:
Claude Opus 4.6 <noreply@anthropic.com>
-
由 Mohamed Aziz Mejri 提交于
<!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Allow users to queue multiple messages while a response is streaming. Queued items are visible, editable, reorderable, and auto-send one-by-one only after the current stream ends successfully. - **New Features** - Per-chat queue state via queuedMessagesByIdAtom and streamCompletedSuccessfullyByIdAtom. - QueuedMessagesList to view, edit, reorder, and delete items; shows status and attachment indicator. - ChatInput queues while streaming, supports editing queued items, clears input/attachments only on successful queue/send, and clears all queued on cancel. - useStreamChat exposes queuedMessages and queue/update/remove/reorder/clear APIs; processes the next item only after a confirmed successful end. - **Bug Fixes** - Eliminated race conditions by gating processing on successful onEnd (wasCancelled-aware), fixing a stale firstMessage closure, and clearing the queue before cancel IPC to avoid rapid-response races. - Preserved input and attachments when queueMessage fails; prevented dropping newly queued messages; cleared editing state when the edited queued item is deleted. <sup>Written for commit fb431f55b3a24284058062a6ced97ac21f825952. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Introduces queued message support so users can submit another prompt while a response is streaming; the queued prompt auto-sends only after the current stream ends successfully. > > - Adds `QueuedMessage`, `queuedMessageByIdAtom`, and `streamCompletedSuccessfullyByIdAtom` to track one queued message and confirmed stream completion per chat > - Extends `useStreamChat` with queue APIs (`queuedMessage`, `queueMessage`, `clearQueuedMessage`) and processing gated by `onEnd` success; resets/sets completion flags; warns on multiple queue attempts > - Updates `ChatInput` to queue while streaming, clear on successful queue, and clear queued message on cancel; uses `shouldProcessQueue` > - Updates `MessagesList` to display queued prompt with status and a Clear action > - Expands IPC `ChatResponseEnd` schema with optional `wasCancelled`; send this flag on cancel in `chat_stream_handlers` > - Adds e2e test `queued_message.spec.ts` verifying queuing and auto-send behavior > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 62ed2131f7f9ee253b2542d35307459af504d6d0. 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/2120"> <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 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Update deflake E2E workflow permissions to use explicit PAT token secrets instead of default GITHUB_TOKEN. - Reduce workflow repository permissions to empty set and align token usage for install and Claude action steps. - Maintain existing deflake behavior while removing default token-dependent permission requirements. ## Test plan - npm run fmt - npm run lint:fix - npm run ts
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2726" target="_blank"> <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 -->
-
- 14 2月, 2026 6 次提交
-
-
由 Will Chen 提交于
## Summary - Adds comprehensive feature plan for app icons/emoji system (`plans/app-icons.md`) - Every app gets a visual identity (emoji or GitHub-style generated avatar) shown in chat tabs, sidebar, and app details - Chat tabs become condensed single-line layouts (icon + chat title) for better density - Plan covers data model, UX flows, accessibility, backfill strategy, and phased implementation ## Test plan - [x] Markdown renders correctly - [x] All lint/type checks pass - [x] No code changes, plan document only
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2722" target="_blank"> <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.6 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
## Summary - Add right-click context menu to chat tabs with options: Close tab, Close other tabs, Close tabs to the right, Close all tabs - Track which chats were opened in the current session via `sessionOpenedChatIdsAtom` - only tabs explicitly opened this session are shown - Add `context-menu.tsx` UI component from shadcn/ui with Radix UI dependency - Add translations for context menu items (en, pt-BR, zh-CN) ## Test plan - [x] Unit tests added for `getOrderedRecentChatIds` with session filtering - [x] Unit tests added for `closeMultipleTabsAtom` - [x] E2E tests added for context menu interactions (close other tabs, close tabs to right, close all) - [ ] Manual testing: right-click a chat tab and verify context menu appears with all options - [ ] Manual testing: verify "Close other tabs" closes all tabs except the clicked one - [ ] Manual testing: verify "Close tabs to the right" closes only tabs to the right - [ ] Manual testing: verify "Close all" closes all tabs
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2705" target="_blank"> <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:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 Will Chen 提交于
## Summary - Added a prominent callout in the E2E testing section making it clear that `npm run build` must be run before E2E tests and re-run whenever application (non-test) code changes - Added a prominent callout in the Rules index section emphasizing that relevant rule files must be read BEFORE writing any code or making changes ## Test plan - Documentation-only change, no functional impact #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/2720" target="_blank"> <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.6 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
## Summary - Remove Python orchestrator scripts (`orchestrate_review.py`, `aggregate_results.py`, `post_comment.py`) from the multi-pr-review skill - Rewrite SKILL.md to use Claude Code's Task tool for spawning sub-agents directly - Replace simple consensus voting (2+ agents agree) with reasoned validation for more accurate issue detection - Add merge verdict determination (YES / NOT SURE / NO) to guide reviewers ## Test plan - [ ] Run `/dyad:multi-pr-review` on a test PR to verify the new Task-tool-based approach works - [ ] Verify all three agents spawn correctly with different file orderings - [ ] Confirm issues are validated through reasoned analysis rather than vote counting - [ ] Check that merge verdict is correctly displayed in the summary comment
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2719" target="_blank"> <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:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
## Summary - Skip actual Node.js downloads in E2E tests by returning a tiny test URL instead of the real Node.js installer - Skip opening external URLs in shell handler to avoid spawning browser windows during E2E tests - Both changes are conditional on `E2E_TEST_BUILD=true` environment variable ## Test plan - Run E2E tests with `E2E_TEST_BUILD=true` to verify external operations are skipped - Verify normal operation is unaffected when the environment variable is not set
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2716" target="_blank"> <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:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-
由 wwwillchen-bot 提交于
## Summary - Move the favorite toggle button from the app list sidebar to the app details page header - Update AppItem component to show a small filled star indicator for favorited apps (instead of an interactive button) - Simplify AppList by removing favorite-related props and hooks - Update E2E tests to test favorite functionality from the app details page ## Test plan - Open an app's details page and verify the favorite button appears next to the app name - Click the favorite button and verify the star fills in (app is favorited) - Click again to unfavorite and verify the star becomes unfilled - Return to the app list and verify favorited apps show a small filled star indicator - Run E2E tests: `npx playwright test favorite_app.spec.ts`
🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2704" target="_blank"> <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:Will Chen <willchen90@gmail.com> Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
-