-
Notifications
You must be signed in to change notification settings - Fork 2.2k
feat: In-extension dismissible upsells for Roo Code Cloud #7850
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…maV2 crashes (#7594)
…or chat messages (#7790) * feat: add click-to-edit, ESC-to-cancel, and fix padding consistency - Enable click-to-edit for past messages by making message text clickable - Add ESC key handler to cancel edit mode in ChatTextArea - Fix padding consistency between past and queued message editors - Adjust right padding for edit mode to accommodate cancel button Fixes #7788 * fix: adjust padding and layout for ChatTextArea in edit mode * refactor: replace hardcoded pr-[72px] with standard Tailwind pr-20 class --------- Co-authored-by: Roo Code <[email protected]> Co-authored-by: Hannes Rudolph <[email protected]> Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: Roo Code <[email protected]> Co-authored-by: Hannes Rudolph <[email protected]> Co-authored-by: daniel-lxs <[email protected]>
feat: add taskSyncEnabled to userSettingsConfigSchema Co-authored-by: Roo Code <[email protected]>
chore: bump version to v1.75.0
…ls chart (#7830) Co-authored-by: Roo Code <[email protected]>
- Created DismissibleUpsell component with variant support (banner/default) - Added dismissedUpsells to GlobalState for persistence - Implemented message handlers for dismissing and retrieving dismissed upsells - Added comprehensive tests for the component - Uses VSCode extension globalState for persistent storage
- Changed from className to separate 'id' and 'className' props for better semantics - Added i18n support for accessibility labels (aria-label and title) - Fixed memory leak by adding mounted flag to prevent state updates after unmount - Fixed race condition by sending dismiss message before hiding component - Fixed inefficient array operations in webviewMessageHandler - Added comprehensive test coverage for edge cases including: - Multiple rapid dismissals - Component unmounting during async operations - Invalid/malformed message handling - Proper message sending before unmount - Added null checks for message data to handle edge cases gracefully
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your contribution! I've reviewed the changes and found some issues that need attention. The implementation of dismissible upsells is well-structured overall with good test coverage, but there are a few important items to address.
<tool>gh pr checkout [PR_NUMBER] --force</tool> | ||
<tool>git fetch origin main</tool> | ||
<tool>git rebase origin/main</tool> | ||
<tool>GIT_EDITOR=true git rebase origin/main</tool> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These changes to the merge resolver rules appear unrelated to the upsell feature. Could you remove these files from this PR to keep it focused on the dismissible upsells implementation?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have no idea how they ended up here. If a reviewer has any thoughts, I'm all ears.
- Keep both cloudUrlPillLabel and upsell sections - Merge conflicts resolved in all cloud.json files across all locales
Description
Adds in-app upsells for Roo Code Cloud.
Introduces a new DismissibleUpsell React component, which ensures messages are displayed in a consistent way and enforces dismissal logic, so we don't annoy users. The dismissal state is persisted in the VS Code extension's global state, ensuring they do not reappear after a user has closed them.
Key implementation details include:
Test Procedure
The functionality was tested via a combination of new unit tests and manual verification.
Unit Tests:
Comprehensive tests were added for the DismissibleUpsell component, covering its variants, dismissal logic, and various edge cases such as rapid dismissals and state updates on unmounted components.
Tests for the auto-approve upsell functionality were also created and fixed.
Manual Testing:
To verify the changes, reviewers can perform the following steps:
Screenshots
Important
Introduces in-app dismissible upsells for Roo Code Cloud with new React components, state management, and internationalization support.
DismissibleUpsell
React component for consistent message display and dismissal logic.CloudUpsellDialog
to reduce duplication in "Share Task" and "Cloud View".DismissibleUpsell
covering variants, dismissal logic, and edge cases.This description was created by
for 9610626. You can customize this summary. It will automatically update as commits are pushed.