1. 22 4月, 2026 1 次提交
    • keppo-bot[bot]'s avatar
      Deflake sendPrompt E2E helper against Lexical/jotai chat-switch races (#3246) · f1cc6330
      keppo-bot[bot] 提交于
      ## Summary
      
      Fixes the 6 `TimeoutError: locator.click: ... element is not enabled`
      failures in `chat_tabs.spec.ts` and `per_chat_input.spec.ts` on CI run
      [24692456779](https://github.com/dyad-sh/dyad/actions/runs/24692456779)
      caused by a Lexical/jotai race during chat switches.
      
      ## Root cause
      
      Trace + screenshot from the failing shards show chat 2 with an empty
      input and a disabled Send button the moment the second `sendPrompt()`
      runs. The race:
      
      1. `clickNewChat()` navigates to chat 2 (`selectedChatIdAtom` flips, URL
      updates, `ChatInput` re-renders with `chatId=2`).
      2. Playwright's `fill()` into the Lexical editor fires
      `OnChangePlugin.onChange` before React has flushed the atom update for
      this render cycle.
      3. `chatInputValueAtom`'s writer is keyed off `selectedChatIdAtom`, so
      the typed text gets stored under the **previous** chat's slot.
      4. On the next render `ExternalValueSyncPlugin` sees `value=""` for chat
      2 and resets the editor to empty.
      5. `inputValue.trim()` is empty → Send button stays `disabled` → 30s
      click timeout.
      
      Only the *second* `sendPrompt()` after a `clickNewChat()` fails, and
      it's flaky because it depends on render/event ordering.
      
      ## Fix
      
      Wrap `click → fill` in `expect.toPass()` and assert the editor actually
      contains the prompt and the Send button is enabled before clicking. On a
      dropped fill the loop re-runs once atoms settle, eliminating the race
      deterministically. No product changes.
      
      ## Test plan
      
      - [x] `npm run fmt && npm run lint && npm run ts`
      - [ ] CI: chat_tabs.spec.ts and per_chat_input.spec.ts pass on shards
      1/2
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      <!-- devin-review-badge-begin -->
      
      ---
      
      <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/3246"
      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 in Devin Review">
        </picture>
      </a>
      <!-- devin-review-badge-end -->
      Co-authored-by: 's avatarWill Chen <7344640+wwwillchen@users.noreply.github.com>
      Co-authored-by: 's avatarClaude Opus 4.7 (1M context) <noreply@anthropic.com>
      f1cc6330
  2. 21 4月, 2026 5 次提交
  3. 19 4月, 2026 1 次提交
    • Mohamed Aziz Mejri's avatar
      Neon integration (#3178) · 661e1438
      Mohamed Aziz Mejri 提交于
      ### Context for review bots :
      
      1.The agent can execute sql commands directly on production , this is
      fine because they user may choose to start with a simple setup first and
      use the production database directly (in a follow up PR we should give
      the users the ability to sync dev branch to match production branch).The
      user also has the possiblity to revert database changes .
      2.Right now there’s no warning for destructive changes before migration
      , this is fine for now as we're gonna add a follow up PR for this
      3.When linking an existing neon project that doesnt have a developement
      database , we're setting the default branch as the active branch . This
      is fine because the user may prefer to start a simple setup at the
      beginning and work directly on the production database , in addition
      since the project was created outside dyad it may have a developement
      branch named differently so it wouldnt be wise to auto create one here .
      However, in a follow up PR we should allow the user to manually create
      branches and sync dev branch to match production .
      4.neon is only available for next.js now
      5.We dont have enough tests for now, i am gonna add a follow-up PR to
      cover this
      <!-- devin-review-badge-begin -->
      
      ---
      
      <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/3178"
      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: 's avatarClaude Opus 4.6 (1M context) <noreply@anthropic.com>
      661e1438
  4. 16 4月, 2026 1 次提交
  5. 15 4月, 2026 1 次提交
    • Nour Zakhma's avatar
      Feature/pause queue (#3077) · f2265f83
      Nour Zakhma 提交于
      closes #3075 
      Implements pause/resume functionality for the message queue processing
      system, allowing users to pause automatic processing of queued messages
      and selectively resume. Includes session-level persistence via
      sessionStorage.
      
      
      <img width="594" height="694" alt="Capture d&#39;écran 2026-03-26
      045040"
      src="https://github.com/user-attachments/assets/2cf9648f-7be1-466c-971c-e2e96faccd0d"
      />
      
      
      9 comprehensive E2E test cases covering:
      Pause/Resume button visibility
      Pause functionality and message blocking
      Resume processing
      SessionStorage persistence (empty & non-empty cases)
      Multiple pause/resume cycles
      Per-chat isolation
      Visual styling
      f2265f83
  6. 14 4月, 2026 2 次提交
  7. 10 4月, 2026 5 次提交
  8. 09 4月, 2026 10 次提交
  9. 08 4月, 2026 11 次提交
  10. 07 4月, 2026 3 次提交