1. 14 2月, 2026 3 次提交
  2. 13 2月, 2026 28 次提交
  3. 12 2月, 2026 9 次提交
    • wwwillchen-bot's avatar
      Add step to remove needs-human:review-issue label after push (#2654) · 30ed10aa
      wwwillchen-bot 提交于
      ## Summary
      - Updates both `pr-push.md` and `fast-push.md` commands to automatically
      remove the `needs-human:review-issue` label after pushing
      - This label indicates the issue needed human review before work
      started, which is now complete once the PR is pushed
      
      ## Test plan
      - Run `/dyad:pr-push` on a PR with the `needs-human:review-issue` label
      and verify it gets removed
      - Run `/dyad:fast-push` and verify the same behavior
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      <!-- devin-review-badge-begin -->
      
      ---
      
      <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2654"
      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 -->
      
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Automatically removes the needs-human:review-issue label after pushing
      in pr-push and fast-push, so issues reflect that human review is
      complete. Keeps PRs and labels in sync without manual cleanup.
      
      - **New Features**
      - pr-push and fast-push run gh pr edit --remove-label
      "needs-human:review-issue" after push, gracefully handling cases where
      the label doesn’t exist.
      
      <sup>Written for commit 5d9bd27c187502459b83bfde12b960a0f89c5cd5.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
      Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
      30ed10aa
    • Will Chen's avatar
      Relax shell injection checks in permission hooks (#2653) · 42531151
      Will Chen 提交于
      ## Summary
      - Add `$(cat ...)` as a safe command substitution pattern in the gh
      permission hook, allowing commands like `gh api graphql -f query="$(cat
      /tmp/query.graphql)" > /tmp/output.json` to passthrough instead of being
      blocked
      - Add safe pipe and redirect handling to the python permission hook,
      allowing pytest commands with `2>&1 | tail` output formatting patterns
      - Move `| cat` from blocked to allowed in python hook tests since `cat`
      is a safe read-only command
      
      #skip-bugbot
      
      ## Test plan
      - [x] All gh permission hook tests pass (572 good commands, 406 bad
      commands)
      - [x] All python permission hook tests pass (good, bad, passthrough,
      security-blocked)
      - [x] npm test passes (803 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/2653"
      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 -->
      
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Relaxed shell injection checks in GH and Python permission hooks to
      allow common read-only patterns like $(cat ...), pipes to safe tools,
      and simple redirects. This reduces false blocks while keeping unsafe
      substitutions and pipelines guarded.
      
      - **Bug Fixes**
      - GH hook: treat $(cat ...) as a safe command substitution and
      neutralize it before checks.
      - Python hook: allow pipes to common text tools (e.g., tail, grep, cat)
      and redirects like 2>&1 and >/dev/null.
      - Tests: move python `| cat` to allowed; add cases for gh `$(cat ...)`
      and pytest `2>&1 | tail`.
      
      <sup>Written for commit b1695c6e09bdc58288197ae2ab79745947fcca59.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      Co-authored-by: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      42531151
    • wwwillchen-bot's avatar
      Add Claude rules review workflow (#2652) · a852505d
      wwwillchen-bot 提交于
      ## Summary
      - Adds a GitHub Actions workflow that reviews Claude rules files
      (AGENTS.md and .mcp.json) on pull requests
      - The workflow checks for proper formatting and content in configuration
      files
      - Helps maintain quality of agent configuration and rules
      
      ## Test plan
      - PR review workflow will run on this PR
      - Verify the workflow file is valid YAML and GitHub Actions syntax
      
      #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/2652"
      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 -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Adds a weekly workflow that audits AGENTS.md and the rules/ directory
      and opens a single issue with keep/update/remove recommendations and
      proposed gaps. Keeps our agent guidance current and trims low‑value
      rules.
      
      - **New Features**
      - Adds .github/workflows/claude-rules-review.yml running Mondays at
      13:00 UTC and via manual trigger.
      - Uses anthropics/claude-code-action@v1 in direct mode with restricted
      tools and a 30‑minute timeout (model set via claude_args).
      - Closes any prior agent-review issues before creating a new summary;
      ensures documentation and agent-review labels exist.
      - Requires CLAUDE_CODE_OAUTH_TOKEN; uses GITHUB_TOKEN; shallow clone to
      last 200 commits; minimal permissions (contents: read, issues: write).
      
      <sup>Written for commit 820abfb2c8cc30ece2743ac71f021e371d250c23.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      ---------
      Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
      Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
      Co-authored-by: 's avatarclaude[bot] <41898282+claude[bot]@users.noreply.github.com>
      Co-authored-by: 's avatarcubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
      a852505d
    • Will Chen's avatar
      Add ci2 runner to nightly cleanup workflow (#2645) · 4b686b29
      Will Chen 提交于
      ## Summary
      - Extend the nightly disk cleanup workflow to run on both ci1 and ci2
      self-hosted macOS runners
      - Update the guard step to accept ci2 as a valid runner name
      
      ## Test plan
      - Verify the workflow file syntax is correct
      - The nightly cleanup will run on both ci1 and ci2 runners
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      <!-- devin-review-badge-begin -->
      
      ---
      
      <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2645"
      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 -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Extend the nightly disk cleanup to run on both ci1 and ci2 using a
      strategy matrix with fail-fast: false so each runner executes
      independently. Removed the guard step and related conditions, and
      updated comments to reflect both runners.
      
      <sup>Written for commit d1a2a3d4d8d1392960aabf536afb152a9db89698.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > **Low Risk**
      > Low risk CI workflow change that only affects scheduled cleanup
      execution on self-hosted runners; main risk is increased load or
      unexpected cleanup behavior now running on `ci2` as well.
      > 
      > **Overview**
      > Expands the nightly macOS runner disk cleanup workflow to run on both
      self-hosted runners `ci1` and `ci2` by switching the job to a matrix
      strategy and targeting `runs-on: ${{ matrix.runner }}`.
      > 
      > Removes the previous runner-name guard and conditional step execution
      so the cleanup script always runs for each matrix runner invocation.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      d1a2a3d4d8d1392960aabf536afb152a9db89698. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      ---------
      Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
      Co-authored-by: 's avatarclaude[bot] <41898282+claude[bot]@users.noreply.github.com>
      4b686b29
    • wwwillchen-bot's avatar
      Add telemetry sampling for non-Pro users (#2642) · aceda415
      wwwillchen-bot 提交于
      ## Summary
      - Store Dyad Pro status in localStorage for telemetry access
      - Sample 10% of events for non-Pro users (error events always sent)
      - Pro users continue to send all events
      
      ## Test plan
      - Verify telemetry events are sampled correctly for non-Pro users
      - Confirm error events are always sent regardless of Pro status
      - Test Pro users still send all events
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      <!-- devin-review-badge-begin -->
      
      ---
      
      <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2642"
      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 -->
      
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Adds telemetry sampling for non‑Pro users to reduce event volume while
      keeping error visibility. Stores Dyad Pro status in localStorage; Pro
      users keep sending all events.
      
      - **New Features**
      - Save Dyad Pro status in localStorage (dyadProStatus) and expose
      isDyadProUser().
      - Sample PostHog events for non‑Pro: send 10% of non‑error events;
      always send errors.
        - No change for Pro users; all events continue to be sent.
      
      <sup>Written for commit 685922c99bc83c6c1d3c6e58a99761037894bc2b.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
      Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
      aceda415
    • Mohamed Aziz Mejri's avatar
      Improving chat input aesthetics (#2561) · 065bab97
      Mohamed Aziz Mejri 提交于
      <!-- devin-review-badge-begin -->
      
      ---
      
      <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2561"
      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 -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Refreshes the chat input UI for a cleaner look and consistent controls.
      Adds per‑mode icons and clearer visual states across inputs, pickers,
      and actions.
      
      - **UI Improvements**
      - Unified control sizing (h-7, text-xs, rounded-lg); vertical align
      center; input row aligns to end; removed spacer divs.
      - Borderless triggers for Mode/Model/Tools/Pro with subtle hover;
      smaller icons; muted “Model:”; mode chips show icons for all modes;
      Ask/Plan get color accents.
      - Input boxes rounded-2xl with focus-within ring; home input gets hover
      border; context banner rounded-t-2xl.
      - Send/Cancel use text-color hovers with clearer disabled; Cancel turns
      destructive on hover; Auxiliary Actions is circular with gentle hover
      scale.
      - Increased input padding and 15px text with repositioned placeholder;
      trimmed outer and MessagesList padding for tighter alignment; home send
      icon switched to SendHorizontal.
      
      <sup>Written for commit 301875efc229e998e9ba52b2eeeac057bd017b16.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      ---------
      Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
      065bab97
    • Will Chen's avatar
      Fix scroll behavior when switching between chats (#2643) · fd27826e
      Will Chen 提交于
      ## Summary
      - Fix scroll behavior when switching between chats with existing
      messages
      - Use double `requestAnimationFrame` to wait for Virtuoso to render
      before scrolling to bottom when switching chats
      - Distinguish between chat switches and new message sends to handle
      scrolling appropriately
      - Avoid premature scrolling when switching to chats where messages
      haven't been fetched yet
      
      ## Test plan
      1. Open Dyad and start a chat with some messages
      2. Start another chat with messages
      3. Switch between chats and verify scroll position stays at the bottom
      4. Send a new message and verify it scrolls to show the new message
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      <!-- devin-review-badge-begin -->
      
      ---
      
      <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2643"
      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 -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Fixes chat auto-scroll to keep the view anchored at the bottom when
      switching chats or sending messages. Prevents flicker and jumps before
      messages render.
      
      - **Bug Fixes**
      - Distinguish chat switches vs new sends; adjust scroll timing
      accordingly.
      - On chat switch with existing messages, wait for Virtuoso to render
      (double requestAnimationFrame), then scroll to bottom instantly.
      - On new message send, wait for the placeholder to render (double
      requestAnimationFrame) before scrolling; skip auto-scroll when switching
      to a chat with no messages yet.
      
      <sup>Written for commit 8814a601a9615b60efbfbff0aff5b7150a75fa63.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      <!-- CURSOR_SUMMARY -->
      ---
      
      > [!NOTE]
      > **Low Risk**
      > Scoped to `ChatPanel` scroll timing logic; risk is limited to possible
      UI regressions (missed/extra scroll) when switching chats or starting
      streams.
      > 
      > **Overview**
      > Fixes `ChatPanel` auto-scroll behavior by **distinguishing chat
      switches from new stream starts** and delaying the scroll until after
      Virtuoso has rendered.
      > 
      > On chat switch, it now scrolls to bottom *only after messages exist*
      (avoiding premature scroll before fetch/render) and uses a double
      `requestAnimationFrame` with `instant` scrolling; on new message sends
      (`streamCount` changes), it similarly waits for render before scrolling
      with the default behavior.
      > 
      > <sup>Written by [Cursor
      Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
      8814a601a9615b60efbfbff0aff5b7150a75fa63. This will update automatically
      on new commits. Configure
      [here](https://cursor.com/dashboard?tab=bugbot).</sup>
      <!-- /CURSOR_SUMMARY -->
      
      ---------
      Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
      fd27826e
    • wwwillchen-bot's avatar
      Remove ChatActivity component and associated references (#2648) · d1a607f8
      wwwillchen-bot 提交于
      ## Summary
      - Remove the unused `ChatActivity.tsx` component
      - Clean up all references including i18n translations (en, pt-BR, zh-CN)
      - Update e2e test helpers and concurrent chat spec to remove
      ChatActivity-related code
      
      ## Test plan
      - [x] Lint checks pass
      - [x] TypeScript compilation succeeds
      - [x] All 33 test files 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/2648"
      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 -->
      
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Removed the unused ChatActivity component and the bell entry point.
      Updated tests and i18n; e2e now targets the chat tabs “in progress”
      indicator instead of the activity list.
      
      - **Refactors**
      - Deleted ChatActivity.tsx and removed ChatActivityButton from TitleBar
      and ActionHeader.
        - Removed related i18n keys in en, pt-BR, and zh-CN.
      - Dropped e2e helpers for the activity list and updated
      concurrent_chat.spec to select the “Chat in progress” tab.
      
      <sup>Written for commit b005943bc7b87c8dfe6375504fbbbca088b7aabb.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      ---------
      Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
      Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
      d1a607f8
    • wwwillchen-bot's avatar
      Fix preview navigation black screen when selecting routes from dropdown (#2610) · fb73c208
      wwwillchen-bot 提交于
      ## Summary
      - Changed `navigateToRoute()` to use `postMessage` +
      `location.replace()` pattern instead of direct `location.href`
      assignment
      - This matches the approach used by back/forward navigation buttons and
      provides smooth navigation without the black screen flicker and sidebar
      state reset
      - Also added proper `currentIframeUrlRef` and `preservedUrls` updates
      for HMR remount consistency
      
      Fixes #2428
      
      ## Test plan
      - [x] Build succeeds
      - [x] Unit tests pass (784 tests)
      - [x] E2E tests pass for preview navigation (`npm run e2e -- --grep
      "preview navigation"`)
      - Manual testing: Open a multi-page app, use the route dropdown to
      navigate between routes - should no longer see black screen flicker or
      sidebar collapse
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      <!-- devin-review-badge-begin -->
      
      ---
      
      <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2610"
      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 -->
      
      <!-- This is an auto-generated description by cubic. -->
      ---
      ## Summary by cubic
      Fixes #2428: removes black screen flicker and sidebar collapse when
      selecting routes from the preview dropdown. Navigation now uses
      postMessage + location.replace and keeps the iframe src stable across
      SPA navigation and HMR.
      
      - **Bug Fixes**
      - Use postMessage + location.replace to navigate; prevents flicker and
      preserves sidebar state.
      - Freeze iframe src with useMemo and same-origin check so SPA nav/HMR
      don’t reset it; added e2e test to verify src remains unchanged.
      - Sync navigation state: history, canGoBack/canGoForward,
      currentIframeUrlRef, and per-app preservedUrls (clears on root).
      
      <sup>Written for commit 1bdd7635ea432c564fe77fea57062df1a9d2f56d.
      Summary will update on new commits.</sup>
      
      <!-- End of auto-generated description by cubic. -->
      
      ---------
      Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
      Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
      fb73c208