browserzap 0.8.0 → 0.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -1
- package/README.md +2 -1
- package/bridge-server/server.js +1 -1
- package/bridge-server/tools.js +30 -7
- package/package.json +2 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,88 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.8.
|
|
3
|
+
## 0.8.6 — the companion installs on macOS and Linux (2026-11-06, npm only)
|
|
4
|
+
|
|
5
|
+
- **npm no longer refuses macOS and Linux.** `package.json` declared `"os": ["win32"]`, so `npm install -g browserzap`
|
|
6
|
+
stopped with EBADPLATFORM outside Windows. The field is gone, so macOS and Linux install and set up the same way
|
|
7
|
+
(`browserzap setup` already registers Chrome's helper there). They are new: please report what breaks.
|
|
8
|
+
- **The site**: setup by AI prompt on Getting started (any MCP app), the platforms page and every page now say
|
|
9
|
+
Windows, macOS and Linux, a lighter hero chip, and the demo fits one phone screen.
|
|
10
|
+
- **No extension change.** The companion's code is the same as 0.8.5 and works with the 0.8.5 extension in the Chrome
|
|
11
|
+
Web Store (protocol 4; the companion only warns below 0.7.0). The 0.8.6 extension zip on the GitHub release is the
|
|
12
|
+
same code with the new version number and is not submitted to the store; the next store version is 0.9.0.
|
|
13
|
+
|
|
14
|
+
## 0.8.5 — typing that editors accept, fewer prompts (2026-11-05)
|
|
15
|
+
|
|
16
|
+
A blocker fix for text input. On Medium (and in Gmail, LinkedIn, X, Slack and Notion) the agent's typing could look
|
|
17
|
+
right on screen while the editor itself rejected it — Medium showed “Something is wrong and we cannot save your
|
|
18
|
+
story” and BrowserZap still said “verified”. Typing now goes through Chrome's own input channel, at the caret, exactly
|
|
19
|
+
as your keyboard does, and “verified” means the page kept the text.
|
|
20
|
+
|
|
21
|
+
**Permissions: fewer prompts, same safety**
|
|
22
|
+
- **Preparation goes ahead, a final action asks.** Attaching a file you named no longer asks. Submitting, sending,
|
|
23
|
+
deleting and paying still ask: **Approve once**, **Deny**, or the new **Always allow on this site**.
|
|
24
|
+
- **Settings → Permissions.** Set each kind of action to Allow, Ask or Block, and see (and remove) the sites you
|
|
25
|
+
allowed. Block always wins; payments can only Ask or Block; the agent can never change these settings.
|
|
26
|
+
|
|
27
|
+
**Settings on their own page**
|
|
28
|
+
- The gear in the side panel opens a full Settings page (also Chrome's “Options” for BrowserZap): General,
|
|
29
|
+
Permissions, Plan, Help and Advanced, laid out for a wide window and for a phone-width one.
|
|
30
|
+
|
|
31
|
+
**Writing in editors (found writing a real Medium story)**
|
|
32
|
+
- **Every character is a real keystroke**, as Chrome sends it for your keyboard (Shift included). Medium ignored text
|
|
33
|
+
that arrived any other way while BrowserZap reported it as kept.
|
|
34
|
+
- **The agent types where it clicked.** Click a title, then fill: the text goes into the title, not to the end of the
|
|
35
|
+
story. Clicking the text of an editor never asks for approval, whatever words it contains.
|
|
36
|
+
- **Uploads behind a button.** `file_upload` accepts a button like “Add an image”: BrowserZap catches the file chooser
|
|
37
|
+
the page opens (no dialog appears) and attaches the file you approved — Medium, Gmail and Notion work this way.
|
|
38
|
+
- **Honest results:** a list that “1. ” turned into is reported as converted, not lost; quotes the page curls are
|
|
39
|
+
“reformatted”; an icon-only toolbar button gets a name from its icon or hint (`nameSource: "hint"`).
|
|
40
|
+
|
|
41
|
+
**The agent's cursor**
|
|
42
|
+
- White with an orange outline, the same on light and dark pages. It stays on the element it acted on when the page
|
|
43
|
+
scrolls, and a cursor left behind by an extension reload is removed instead of shown twice.
|
|
44
|
+
|
|
45
|
+
**Typing**
|
|
46
|
+
- **Rich editors accept what the agent types.** BrowserZap no longer rewrites an editor's page. It clicks where the
|
|
47
|
+
caret belongs and types there, so the editor sees the same events as a person's keyboard: Medium, Gmail, LinkedIn,
|
|
48
|
+
X, Slack, Notion and comment boxes work.
|
|
49
|
+
- **A whole document is never cleared.** When the editor holds several blocks (Medium's story editor), the text is
|
|
50
|
+
added at the end of the last block, and the result says so. A single block is replaced only when that is what you
|
|
51
|
+
asked for.
|
|
52
|
+
- **Every keystroke is real.** Search boxes show suggestions as the agent types, autocompletes open, phone and card
|
|
53
|
+
masks format, character counters count, and shortcuts work — because the page receives real key events, not a
|
|
54
|
+
silent value change.
|
|
55
|
+
- **`verified` is honest.** BrowserZap reads the field back after a moment. If the page kept the text but reformatted
|
|
56
|
+
it (a phone mask, uppercase in a controlled field), the result says “reformatted by the page”. If it did not keep it,
|
|
57
|
+
the call fails with “the page did not keep the text” instead of pretending.
|
|
58
|
+
- **Background tabs behave like the tab in front.** The agent types and clicks without bringing your tab forward, and
|
|
59
|
+
without you losing your place.
|
|
60
|
+
|
|
61
|
+
**Keys, hover and scrolling**
|
|
62
|
+
- **Any key, and shortcuts.** `browser_press_key` now takes letters, digits and chords such as `ctrl+b`, `ctrl+k`,
|
|
63
|
+
`ctrl+a`, `ctrl+alt+1` and `ctrl+enter`. A bad key is refused before anything happens. Enter and Ctrl+Enter keep the
|
|
64
|
+
same approval rule when they would submit or send.
|
|
65
|
+
- **Hover.** New `element_hover`: menus, tooltips and buttons that appear only on hover can now be reached. It is
|
|
66
|
+
read-only, and it reports what appeared.
|
|
67
|
+
- **Scrolling loads more.** `browser_scroll` sends a real mouse wheel, so infinite lists and wheel-driven widgets load
|
|
68
|
+
the next page. The old behaviour is the fallback.
|
|
69
|
+
|
|
70
|
+
**Tabs**
|
|
71
|
+
- **Your agent keeps its tab.** If you click, type or navigate in the agent's tab, or look at another tab in its
|
|
72
|
+
group, the agent carries on in its own tab instead of stopping. Its next result says what changed while it was away
|
|
73
|
+
(address, title, whether fields were filled or emptied — never the values) and tells it to look at the page first.
|
|
74
|
+
- **A tab you shared still comes back** when you close its panel. Opening or closing the panel on a tab the agent
|
|
75
|
+
opened changes nothing.
|
|
76
|
+
- **Tab groups say BrowserZap.** An agent's group is titled `BrowserZap · claude-code` (or the name the agent gave
|
|
77
|
+
its session), so its tabs are easy to tell apart from another extension's groups.
|
|
78
|
+
|
|
79
|
+
**Updates**
|
|
80
|
+
- **Store updates install without a Chrome restart.** BrowserZap's connection to the bridge kept Chrome from ever
|
|
81
|
+
installing a downloaded update until the browser restarted. It now reloads into the new version as soon as no agent
|
|
82
|
+
is working, no side panel is open and Comment mode is off. A developer (unpacked) copy still needs its reload button.
|
|
83
|
+
- **No new permissions.** Same Chrome Web Store permissions as 0.8.0.
|
|
84
|
+
|
|
85
|
+
## 0.8.0 — the connection fix and chat (2026-11-04)
|
|
4
86
|
|
|
5
87
|
Compared with the last public release (0.7.0). Only finished, tested work is listed. Everything is free during early
|
|
6
88
|
access; nothing that keeps you safe (approvals, hand-off, Stop) will ever be paid.
|
package/README.md
CHANGED
|
@@ -147,7 +147,8 @@ page goes to the AI client you connected, under that client's terms. Full policy
|
|
|
147
147
|
|
|
148
148
|
## Known limitations
|
|
149
149
|
|
|
150
|
-
- Windows
|
|
150
|
+
- Runs on Windows 10/11, macOS and Linux (Chrome, or Edge on Windows). macOS and Linux are new since 0.8.6: the same
|
|
151
|
+
install and `browserzap setup`; please report what breaks to hello@browserzap.com.
|
|
151
152
|
- `chrome://` pages and the Chrome Web Store cannot be automated.
|
|
152
153
|
- Canvas apps, some custom widgets and cross-origin frames may need you to do the step.
|
|
153
154
|
- In a background tab, clicks are made inside the page; a site that requires a real user click needs the tab in front.
|
package/bridge-server/server.js
CHANGED
|
@@ -73,7 +73,7 @@ const MAX_EXTENSION_MESSAGES_PER_SECOND = 500;
|
|
|
73
73
|
// execution in the page is not part of this product.
|
|
74
74
|
// Must match AGENT_ACTIONS in src/types/protocol.ts (tests/contract.test.mjs).
|
|
75
75
|
const VALID_AGENT_ACTIONS = new Set([
|
|
76
|
-
'status', 'inspect', 'navigate', 'click', 'fill', 'select_option', 'wait_for',
|
|
76
|
+
'status', 'inspect', 'navigate', 'click', 'hover', 'fill', 'select_option', 'wait_for',
|
|
77
77
|
'screenshot', 'press_key', 'scroll', 'pause', 'resume',
|
|
78
78
|
'new_tab', 'list_tabs', 'switch_tab', 'close_tab', 'notify', 'upload',
|
|
79
79
|
'console', 'network', 'say',
|
package/bridge-server/tools.js
CHANGED
|
@@ -171,12 +171,31 @@ const MCP_TOOLS = [
|
|
|
171
171
|
},
|
|
172
172
|
},
|
|
173
173
|
},
|
|
174
|
+
{
|
|
175
|
+
name: 'element_hover',
|
|
176
|
+
description:
|
|
177
|
+
'Move the pointer over exactly one element and report what appeared (a menu, tooltip, or controls a row reveals ' +
|
|
178
|
+
'on hover). Resolves the target like element_click and refuses ambiguous, hidden or covered targets. Read-only: ' +
|
|
179
|
+
'no approval. Follow with element_click on what appeared.',
|
|
180
|
+
inputSchema: {
|
|
181
|
+
type: 'object',
|
|
182
|
+
additionalProperties: false,
|
|
183
|
+
required: ['target'],
|
|
184
|
+
properties: {
|
|
185
|
+
target: TARGET,
|
|
186
|
+
timeoutMs: ACTION_TIMEOUT,
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
},
|
|
174
190
|
{
|
|
175
191
|
name: 'field_fill',
|
|
176
192
|
description:
|
|
177
193
|
'Replace the content of one text field (or set a checkbox/radio with "true"/"false") and verify it. ' +
|
|
178
|
-
'
|
|
179
|
-
'
|
|
194
|
+
'Text is typed through Chrome\'s trusted input channel at the caret, so key listeners fire and rich editors ' +
|
|
195
|
+
'(Medium, Gmail, LinkedIn, Slack) accept it. A multi-block rich editor is never cleared: the text is appended ' +
|
|
196
|
+
'at the end of its last block and the result says mode "append". Sensitive fields (passwords, one-time codes, ' +
|
|
197
|
+
'card numbers, government IDs) are refused with USER_ACTION_REQUIRED — ask the user to type those. The value is ' +
|
|
198
|
+
'never logged or echoed back.',
|
|
180
199
|
inputSchema: {
|
|
181
200
|
type: 'object',
|
|
182
201
|
additionalProperties: false,
|
|
@@ -248,16 +267,18 @@ const MCP_TOOLS = [
|
|
|
248
267
|
{
|
|
249
268
|
name: 'browser_press_key',
|
|
250
269
|
description:
|
|
251
|
-
'Press one key on the focused element
|
|
252
|
-
'
|
|
270
|
+
'Press one key on the focused element: a named key (Enter, Tab, Escape, Backspace, Delete, the arrows, Home, ' +
|
|
271
|
+
'End, PageUp, PageDown, Space), one printable character, or either with modifiers joined by "+" — ctrl+b, ' +
|
|
272
|
+
'ctrl+k, ctrl+a, ctrl+alt+1, ctrl+enter, meta+shift+t. Enter (with or without modifiers) inside a form counts ' +
|
|
273
|
+
'as submitting it and follows the same approval rules as element_click.',
|
|
253
274
|
inputSchema: {
|
|
254
275
|
type: 'object',
|
|
255
276
|
additionalProperties: false,
|
|
256
277
|
required: ['key'],
|
|
257
278
|
properties: {
|
|
258
279
|
key: {
|
|
259
|
-
type: 'string',
|
|
260
|
-
|
|
280
|
+
type: 'string', minLength: 1, maxLength: 32,
|
|
281
|
+
description: 'A named key, one printable character, or a chord: ctrl+b, ctrl+enter, ctrl+alt+1.',
|
|
261
282
|
},
|
|
262
283
|
modifiers: { type: 'array', maxItems: 4, items: { type: 'string', enum: ['ctrl', 'alt', 'shift', 'meta'] } },
|
|
263
284
|
approvalId: { type: 'string', maxLength: 64 },
|
|
@@ -703,6 +724,7 @@ const ANNOTATIONS = {
|
|
|
703
724
|
page_inspect: ['Inspect page', READ],
|
|
704
725
|
browser_navigate: ['Navigate', { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true }],
|
|
705
726
|
element_click: ['Click element', { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true }],
|
|
727
|
+
element_hover: ['Hover element', READ],
|
|
706
728
|
field_fill: ['Fill field', { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true }],
|
|
707
729
|
select_option: ['Select option', { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true }],
|
|
708
730
|
wait_for_state: ['Wait for page state', READ],
|
|
@@ -756,6 +778,7 @@ const TOOL_TO_ACTION = {
|
|
|
756
778
|
page_inspect: 'inspect',
|
|
757
779
|
browser_navigate: 'navigate',
|
|
758
780
|
element_click: 'click',
|
|
781
|
+
element_hover: 'hover',
|
|
759
782
|
field_fill: 'fill',
|
|
760
783
|
select_option: 'select_option',
|
|
761
784
|
wait_for_state: 'wait_for',
|
|
@@ -782,7 +805,7 @@ const INTERNAL_ACTIONS = new Set(['notify']);
|
|
|
782
805
|
|
|
783
806
|
/** Tools that act on page content and therefore carry the origin allowlist. */
|
|
784
807
|
const PAGE_TOOLS = new Set([
|
|
785
|
-
'page_inspect', 'browser_navigate', 'element_click', 'field_fill', 'select_option',
|
|
808
|
+
'page_inspect', 'browser_navigate', 'element_click', 'element_hover', 'field_fill', 'select_option',
|
|
786
809
|
'wait_for_state', 'screenshot_capture', 'browser_press_key', 'browser_scroll',
|
|
787
810
|
]);
|
|
788
811
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browserzap",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"description": "Let your AI agent (Claude Code, Codex, Cursor or any MCP client) work in your own Chrome, with your logins, your approval and a Stop button.",
|
|
5
5
|
"homepage": "https://browserzap.com",
|
|
6
6
|
"bugs": {
|
|
@@ -107,8 +107,5 @@
|
|
|
107
107
|
"author": "Akash Yadav",
|
|
108
108
|
"publishConfig": {
|
|
109
109
|
"access": "public"
|
|
110
|
-
}
|
|
111
|
-
"os": [
|
|
112
|
-
"win32"
|
|
113
|
-
]
|
|
110
|
+
}
|
|
114
111
|
}
|