-
Couldn't load subscription status.
- Fork 2.4k
Browser Use Update: Keyboard actions, single-tab nav, UX improvements, and base64 leakage fix #8815
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
base: main
Are you sure you want to change the base?
Conversation
Review SummaryThe latest commit (8cecb79) has resolved 3 of the 6 previously flagged issues. The 2 remaining issues are still present. Issues Status
Unresolved Issues
|
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.
Pull Request Overview
This PR adds keyboard key-press actions, enforces single-tab navigation behavior for browser sessions, improves UX with unified details display and cost tracking, and fixes a bug where base64 output was leaking to the chat stream.
- Added new "press" browser action for keyboard key presses
- Implemented single-tab navigation enforcement to prevent new tabs/popups
- Redesigned browser session UI with collapsible details, inline reasoning, navigation controls, and API cost display
- Fixed base64/binary data from appearing in chat by filtering browser action/result rendering
Reviewed Changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| webview-ui/src/i18n/locales/en/chat.json | Removed "title" translation key for browser actions |
| webview-ui/src/components/chat/ChatView.tsx | Added "reasoning" to browser session message types |
| webview-ui/src/components/chat/ChatRow.tsx | Prevented raw JSON browser action/result from rendering |
| webview-ui/src/components/chat/BrowserSessionRow.tsx | Major UI refactor with collapsible details, navigation controls, cost display, and reasoning support |
| src/shared/ExtensionMessage.ts | Added "press" to browser actions enum |
| src/services/browser/tests/BrowserSession.spec.ts | Added tests for single-tab behavior and keyboard press action |
| src/services/browser/BrowserSession.ts | Implemented forceLinksToSameTab and press methods |
| src/core/tools/browserActionTool.ts | Added "press" action handling |
| src/core/prompts/tools/browser-action.ts | Updated documentation to include "press" action |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
Review complete. Found 3 issues that should be addressed before merging. Please see the inline comments and checklist above.
1151ddd to
8c41675
Compare
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.
Re-reviewed the new commits. Two previous issues were resolved, but 3 issues remain that need to be addressed before approval.
d576c30 to
82ee0f5
Compare
0cd3672 to
e3b8dde
Compare
| }}> | ||
| <SquareTerminal className="w-3" /> | ||
| <span className="text-xs" style={{ fontWeight: 500 }}> | ||
| Console Logs |
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.
Hardcoded text breaks internationalization. This uses "Console Logs" directly instead of t("chat:browser.consoleLogs") like BrowserSessionRow.tsx does (line 662). This creates inconsistency and prevents translation into other languages supported by the application.
| } | ||
|
|
||
| // Get icon for each action type | ||
| const getActionIcon = (action: string) => { |
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.
Type parameter should be BrowserAction instead of string for type safety. BrowserSessionRow.tsx uses the stricter BrowserAction type at line 94, and this should match for consistency and to catch invalid action types at compile time.
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.
Latest commit reviewed. No new issues found, but 2 previously flagged issues remain unresolved.
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.
The latest commit has no new issues. However, 2 previously flagged issues remain unresolved and should be addressed before approval.
…mprovements fix: prevent base64/binary output leakage to chat stream test(prompts): update system prompt snapshot after removing browser session persistence guidance chore(prompts): remove outdated browser session persistence guidance Update webview-ui/src/i18n/locales/hi/settings.json fix(webview-ui): align disconnect aria-label; remove unused vars; replace useSize to avoid timers in tests fix: remove unused browser actions from chat localization
5296e3b to
8cecb79
Compare
| }}> | ||
| <SquareTerminal className="w-3" /> | ||
| <span className="text-xs" style={{ fontWeight: 500 }}> | ||
| Console Logs |
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.
Hardcoded text breaks internationalization. This uses "Console Logs" directly instead of t("chat:browser.consoleLogs") like BrowserSessionRow.tsx does (line 662). This creates inconsistency and prevents translation into other languages supported by the application.
| } | ||
|
|
||
| // Get icon for each action type | ||
| const getActionIcon = (action: string) => { |
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.
Type parameter should be BrowserAction instead of string for type safety. BrowserSessionRow.tsx uses the stricter BrowserAction type at line 94, and this should match for consistency and to catch invalid action types at compile time.
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.
Review complete. The latest commit resolved 3 of the 6 previously flagged issues. However, 2 issues remain unresolved and should be addressed before approval.
New capability: keyboard key-press actions.
Navigation reliability: enforced single-tab behavior.
UX improvements: top-bar navigation, unified details, inline reasoning, and cost display.
Bug fix: base64 output leakage to chat is resolved; binary/screenshot data no longer appears in the chat stream.
Important
Enhances browser interactions with keyboard actions, single-tab navigation, UX improvements, and fixes base64 leakage in chat.
browserActionTool()inbrowserActionTool.ts.forceLinksToSameTab()inBrowserSession.ts.BrowserSessionRow.tsxandBrowserActionRow.tsx.ChatView.tsx.BrowserSettings.tsx.browserActionTool.coordinateScaling.spec.ts.BrowserSessionRow.aspect-ratio.spec.tsxandBrowserSessionRow.disconnect-button.spec.tsx.This description was created by
for 8cecb79. You can customize this summary. It will automatically update as commits are pushed.