Skip to content

Remove ChatActivity component and associated references#2648

Merged
wwwillchen merged 2 commits into
dyad-sh:mainfrom
wwwillchen-bot:agent--1770851162017-1770854095
Feb 12, 2026
Merged

Remove ChatActivity component and associated references#2648
wwwillchen merged 2 commits into
dyad-sh:mainfrom
wwwillchen-bot:agent--1770851162017-1770854095

Conversation

@wwwillchen-bot

@wwwillchen-bot wwwillchen-bot commented Feb 12, 2026

Copy link
Copy Markdown
Collaborator

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

  • Lint checks pass
  • TypeScript compilation succeeds
  • All 33 test files pass

🤖 Generated with Claude Code


Open with Devin

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.
    • TitleBar: hide actions when no app is selected and replace the menu icon with a wrench.
    • 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.

Written for commit 459d583. Summary will update on new commits.

Delete the unused ChatActivity.tsx component and clean up all
references to it including i18n translations and e2e test helpers.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @wwwillchen-bot, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request focuses on streamlining the application by removing an unused ChatActivity component and all its associated code. This cleanup effort simplifies the codebase, removes unnecessary UI elements, and updates the testing infrastructure to reflect these changes, contributing to a more maintainable and efficient application.

Highlights

  • Component Removal: The ChatActivity.tsx component, which was previously used to display recent chat activity, has been entirely removed from the codebase as it was unused.
  • UI Cleanup: All references and imports related to the ChatActivityButton have been removed from TitleBar.tsx and ActionHeader.tsx, simplifying the UI.
  • Test Suite Updates: End-to-end tests in concurrent_chat.spec.ts and helper functions in ChatActions.ts have been updated to remove interactions with the now-removed chat activity button and list, adapting to the new chat tab interaction model.
  • Internationalization Cleanup: Unused translation keys associated with the ChatActivity component (e.g., 'recentChatActivity', 'loadingActivity', 'noRecentChats') have been removed from English, Portuguese (pt-BR), and Chinese (zh-CN) i18n files.
Changelog
  • e2e-tests/concurrent_chat.spec.ts
    • Updated test logic to select chat tabs directly instead of using the removed chat activity button and list items.
  • e2e-tests/helpers/page-objects/components/ChatActions.ts
    • Removed clickChatActivityButton and snapshotChatActivityList methods, which are no longer needed.
  • src/app/TitleBar.tsx
    • Removed the import and usage of the ChatActivityButton component.
  • src/components/chat/ChatActivity.tsx
    • Removed the entire ChatActivity.tsx file, as the component is no longer used.
  • src/components/preview_panel/ActionHeader.tsx
    • Removed the import and usage of the ChatActivityButton component.
  • src/i18n/locales/en/chat.json
    • Removed unused translation keys related to chat activity.
  • src/i18n/locales/pt-BR/chat.json
    • Removed unused translation keys related to chat activity.
  • src/i18n/locales/zh-CN/chat.json
    • Removed unused translation keys related to chat activity.
Activity
  • The pull request was generated using Claude Code.
  • Lint checks were confirmed to pass.
  • TypeScript compilation was confirmed to succeed.
  • All 33 test files were confirmed to pass.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 8 files

@wwwillchen

Copy link
Copy Markdown
Collaborator

@BugBot run

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request effectively removes the ChatActivity component and all its related code and resources. This includes removing the component file itself, its imports and usage in TitleBar.tsx and ActionHeader.tsx, associated e2e test helpers in ChatActions.ts, and internationalization strings across en, pt-BR, and zh-CN locales. The e2e test for concurrent chat (concurrent_chat.spec.ts) has been updated to interact with the new chat tab UI, which is a necessary adaptation following the removal of the ChatActivity list. The changes are well-contained and align perfectly with the pull request's objective.

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Dyadbot Code Review Summary

Verdict: ✅ YES - Ready to merge

Reviewed by 3 specialized agents: Correctness Expert, Code Health Expert, UX Wizard.

This is a clean removal of an unused component with thorough cleanup of all references (imports, i18n keys, e2e test helpers). The only noteworthy issue is a brittle test selector in the replacement e2e test code.

Issues Summary

# Severity File Issue Found By Endorsed By
1 🟡 MEDIUM e2e-tests/concurrent_chat.spec.ts:17-22 Brittle XPath selector coupled to Tailwind CSS classes Correctness, Code Health UX
🟢 Low Priority Notes (2 items)
  • Missing explicit assertion for correct chat selection - e2e-tests/concurrent_chat.spec.ts:28 - After clicking the tab, only a snapshot is taken but there's no explicit check that Chat Gif for README #1 was selected (the old code had toContain("Chat #1")). The snapshot may implicitly cover this. (Correctness, endorsed by Code Health, UX)
  • Potentially dead atom: recentStreamChatIdsAtom - src/atoms/chatAtoms.ts / src/hooks/useStreamChat.ts - With ChatActivity.tsx removed, recentStreamChatIdsAtom is written to by useStreamChat.ts but never read by any component. Consider cleaning up the atom and its setter if no other consumer exists. (Code Health, endorsed by Correctness, UX)

Generated by Dyadbot code review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Swarm review: 1 issue found

.locator('[aria-label="Chat in progress"]')
.locator(
"xpath=ancestor::div[contains(@class, 'flex') and contains(@class, 'h-10')]",
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 MEDIUM | test-brittleness | Found by: Correctness & Code Health, Endorsed by: UX

Brittle XPath selector coupled to Tailwind CSS classes

This XPath expression ancestor::div[contains(@class, 'flex') and contains(@class, 'h-10')] is tightly coupled to Tailwind utility classes. If the tab container's styling changes (e.g., h-10h-12, or classes are reorganized), this locator will silently fail to match the correct element, causing a flaky or broken test.

💡 Suggestion: Add a data-testid attribute to the chat tab container and use getByTestId() instead of XPath class matching. This would be consistent with how other test selectors in the codebase work (e.g., chat-activity-list-item-* in the old code).

@greptile-apps

greptile-apps Bot commented Feb 12, 2026

Copy link
Copy Markdown
Contributor

Greptile Overview

Greptile Summary

Removed the unused ChatActivity component and all related references from the codebase. The PR comprehensively cleans up the bell icon notification system that displayed recent chat activity.

  • Deleted ChatActivity.tsx component file containing ChatActivityButton and ChatActivityList
  • Removed ChatActivityButton from TitleBar and ActionHeader components
  • Updated TitleBar to use Wrench icon instead of MoreVertical for the dropdown menu
  • Cleaned up i18n translations across all three supported languages (en, pt-BR, zh-CN)
  • Refactored e2e test to use chat tab selection via aria-label instead of activity list navigation
  • Removed helper methods clickChatActivityButton and snapshotChatActivityList from test utilities

The removal is clean and thorough with no remaining references to ChatActivity or chat-activity test IDs in the codebase.

Confidence Score: 4/5

  • This PR is safe to merge with minimal risk - it's a clean removal of unused functionality
  • The removal is thorough and well-executed with all references cleaned up. Score reflects one minor concern: the e2e test replacement uses a potentially flaky locator strategy that could select the wrong chat tab if multiple chats are streaming simultaneously (already noted in previous review thread)
  • e2e-tests/concurrent_chat.spec.ts - already has a previous comment about the ambiguous tab selection that should be addressed

Important Files Changed

Filename Overview
src/components/chat/ChatActivity.tsx Component file deleted - removed unused ChatActivity component and ChatActivityButton
src/app/TitleBar.tsx Removed ChatActivityButton import and usage, changed icon from MoreVertical to Wrench, added visibility control
src/components/preview_panel/ActionHeader.tsx Removed ChatActivityButton import and usage from action header
e2e-tests/concurrent_chat.spec.ts Replaced ChatActivity navigation with chat tab selection using aria-label locator

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

8 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment on lines +18 to +21
const chat1TabContainer = po.page
.locator('[aria-label="Chat in progress"]')
.locator(
"xpath=ancestor::div[contains(@class, 'flex') and contains(@class, 'h-10')]",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ambiguous tab selection

This locator selects the first [aria-label="Chat in progress"] on the page, then clicks the first button in its ancestor tab. If chat #2 is also still streaming at this point (timing-dependent), this can click the wrong tab and make the test flaky (snapshotting chat #2 instead of chat #1). Consider scoping the selection to chat #1’s tab (e.g., by title/text like tc=chat1 / “Chat #1”, or a stable test id on the tab) rather than relying on a global "in progress" indicator + .first().

Prompt To Fix With AI
This is a comment left during a code review.
Path: e2e-tests/concurrent_chat.spec.ts
Line: 18:21

Comment:
**Ambiguous tab selection**

This locator selects the *first* `[aria-label="Chat in progress"]` on the page, then clicks the first `button` in its ancestor tab. If chat #2 is also still streaming at this point (timing-dependent), this can click the wrong tab and make the test flaky (snapshotting chat #2 instead of chat #1). Consider scoping the selection to chat #1’s tab (e.g., by title/text like `tc=chat1` / “Chat #1”, or a stable test id on the tab) rather than relying on a global "in progress" indicator + `.first()`.

How can I resolve this? If you propose a fix, please make it concise.

@github-actions github-actions Bot added the needs-human:review-issue ai agent flagged an issue that requires human review label Feb 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🎭 Playwright Test Results

⚠️ WARNING: Missing Test Shards!

Some test shards did not report results. This may indicate CI failures or timeouts.

  • 🍎 macOS: found 2/4 shards (2 missing)
  • 🪟 Windows: found 0/4 shards (4 missing)

❌ Some tests failed

OS Passed Failed Flaky Skipped
🍎 macOS 222 4 9 6

Summary: 222 passed, 4 failed, 9 flaky, 6 skipped

Failed Tests

🍎 macOS

  • capacitor.spec.ts > capacitor upgrade and sync works
    • TimeoutError: locator.click: Timeout 30000ms exceeded.
  • fix_error.spec.ts > copy error message from banner
    • TimeoutError: locator.waitFor: Timeout 30000ms exceeded.
  • security_review.spec.ts > security review - edit and use knowledge
    • Error: No dump path found in messages list
  • select_component.spec.ts > select component next.js
    • Error: expect(string).toMatchSnapshot(expected) failed

📋 Re-run Failing Tests (macOS)

Copy and paste to re-run all failing spec files locally:

npm run e2e \
  e2e-tests/capacitor.spec.ts \
  e2e-tests/fix_error.spec.ts \
  e2e-tests/security_review.spec.ts \
  e2e-tests/select_component.spec.ts

⚠️ Flaky Tests

🍎 macOS

  • debugging_logs.spec.ts > console logs should appear in the console (passed after 1 retry)
  • local_agent_ask.spec.ts > local-agent ask mode (passed after 1 retry)
  • local_agent_auto.spec.ts > local-agent - auto model (passed after 1 retry)
  • local_agent_basic.spec.ts > local-agent - dump request (passed after 1 retry)
  • rebuild.spec.ts > rebuild app (passed after 1 retry)
  • refresh.spec.ts > refresh preserves current route (passed after 1 retry)
  • select_component.spec.ts > select multiple components (passed after 1 retry)
  • setup_flow.spec.ts > Setup Flow > setup banner shows correct state when node.js is installed (passed after 1 retry)
  • toggle_screen_sizes.spec.ts > Toggle Screen Size Tests > should persist device mode after rebuild (passed after 1 retry)

📊 View full report

@wwwillchen

Copy link
Copy Markdown
Collaborator

@BugBot run

@wwwillchen wwwillchen merged commit d1a607f into dyad-sh:main Feb 12, 2026
5 of 6 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Dyadbot Code Review Summary

Verdict: ✅ YES - Ready to merge

Reviewed by 3 independent agents (1 Code Health expert, 2 Correctness experts), each receiving files in different randomized order.

This is a clean removal of the unused ChatActivity component with thorough cleanup of imports, i18n keys, and e2e test helpers. One new issue found after deduplication.

Issues Summary

# Severity File Issue Agents
1 🟡 MEDIUM src/app/TitleBar.tsx:228 Inline style visibility toggle instead of conditional rendering/className 3/3

(1 issue skipped - already commented: XPath selector brittleness)

🟢 Low Priority Notes (1 item)
  • Dead atom recentStreamChatIdsAtom - src/atoms/chatAtoms.ts / src/hooks/useStreamChat.ts - With ChatActivity.tsx removed, recentStreamChatIdsAtom is written to in useStreamChat.ts but never read by any component. Consider cleaning up the atom and its setter. (2/3 agents)

See inline comments for details.

Generated by Dyadbot multi-agent code review (3 agents, consensus voting)

Comment thread src/app/TitleBar.tsx
<ChatActivityButton />
<div
className="flex items-center gap-0.5 no-app-region-drag mr-2"
style={{ visibility: selectedAppId ? "visible" : "hidden" }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 MEDIUM | maintainability | Found by: 3/3 agents (Code Health, Correctness x2)

Inline style visibility toggle instead of conditional rendering or className

This uses style={{ visibility: selectedAppId ? "visible" : "hidden" }} which has a few concerns:

  1. Layout impact: visibility: hidden still occupies space in the layout, which may cause unexpected spacing when no app is selected
  2. Style consistency: The rest of the codebase uses Tailwind utilities and the cn() helper for conditional styling — inline styles are inconsistent with this pattern
  3. Truthiness edge case: The check relies on JavaScript truthiness. While app IDs start from 1 with autoincrement so 0 is unlikely, an explicit null check would be more robust

Consider either:

  • Conditional rendering: {selectedAppId && <div>...</div>} (if the space shouldn't be reserved)
  • Tailwind class: className={cn("flex items-center gap-0.5 no-app-region-drag mr-2", !selectedAppId && "invisible")} (if the space should be reserved)

azizmejri1 pushed a commit to azizmejri1/dyad that referenced this pull request Feb 12, 2026
## 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 b005943.
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>
azizmejri1 pushed a commit to azizmejri1/dyad that referenced this pull request Feb 12, 2026
## 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 b005943.
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-human:review-issue ai agent flagged an issue that requires human review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants