@btraut/browser-bridge 0.14.0 → 0.15.0

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 CHANGED
@@ -6,6 +6,36 @@ The format is based on "Keep a Changelog", and this project adheres to Semantic
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ### Added
10
+
11
+ ### Changed
12
+
13
+ ### Fixed
14
+
15
+ ## [0.15.0] - 2026-03-21
16
+
17
+ ### Added
18
+
19
+ - Added first-class `permissions.*` support across Core, CLI, and MCP for reading allowlist/mode state and requesting allowlist/mode changes through a human approval flow in Chrome.
20
+ - Added a repo-local `dev:loop` helper plus a matching local `dev-loop` skill for Browser Bridge contributors, so extension rebuild/relaunch/bypass setup can run from one command instead of the usual Chrome nonsense.
21
+
22
+ ### Changed
23
+
24
+ - The repo-local `bump-version` release skill and release doc now require a fresh `npm install` and `npm run build` before any version bumping, so releases start from a clean build instead of wishful thinking.
25
+ - External permission changes are now approval-gated end to end: CLI/MCP can request them, but the extension applies them only after a human approves a dedicated prompt, with extra friction for bypass mode.
26
+
27
+ ### Fixed
28
+
29
+ - Cold-start extension attach is less brittle: Core now waits briefly for the extension handshake before failing drive and permissions calls with `EXTENSION_DISCONNECTED`, which cuts down false startup misses right after Chrome/runtime reconnects.
30
+ - `drive.click` now retries a few transient locator-resolution misses instead of giving up after one wobble, which makes toggle/action controls like ManaVault's `Edit list` less likely to fail during live rerenders.
31
+ - Interactive AX snapshots now prune hover-hidden controls that fail live DOM visibility and pointer-event checks, so inspect stops advertising inert ManaVault-style quantity buttons as actionable.
32
+ - `dev enable-inspect` now retries transient stale diagnostics before failing, which cuts down false "inspect unavailable" reports while the extension handshake and capability negotiation are still catching up.
33
+ - Locator ranking now prefers directly hittable exact matches over merely visible duplicates, so drive clicks are less likely to land on ghost controls that share an `aria-label` but are occluded or inert.
34
+ - Repo-local Codex skills now live under `.agents/skills`, and the CLI install/prepack flow now reads from that canonical repo path instead of the dead `skills/` directory.
35
+ - Existing tabs now recover their content script on demand after extension updates, so `drive.wait_for` and other tab actions stop dying with `Receiving end does not exist` just because the tab predates the current build.
36
+ - Inspect now evaluates in an isolated world on the top frame when available, which makes auth/passkey pages less likely to derail `extract_content`, `page_state`, and `evaluate` with extension-surface debugger context errors.
37
+ - Inspect reads are less flaky and less noisy: `extract_content` now defaults to quiesced capture, `page_state` is summary-first with redacted values by default, and `console_list` filters stale pre-session history unless you ask for older entries explicitly.
38
+
9
39
  ## [0.14.0] - 2026-03-13
10
40
 
11
41
  ### Added
package/README.md CHANGED
@@ -51,6 +51,14 @@ Then load the unpacked extension from `packages/extension/`.
51
51
 
52
52
  Repo contributors: run `npm run hooks:install` once after clone. This repo expects `core.hooksPath=.githooks` so local `pre-commit` and `pre-push` block the same format/lint/typecheck failures that CI enforces.
53
53
 
54
+ Repo contributors who are iterating on the extension should stop doing the manual delete/reinstall routine. Use:
55
+
56
+ ```bash
57
+ npm run dev:loop -- --open-options
58
+ ```
59
+
60
+ That rebuilds the workspace, uses macOS UI scripting to open `chrome://extensions` in your existing Chrome profile, clicks **Update** to reload unpacked extensions, waits for Browser Bridge to reconnect, and requests bypass mode if Chrome is still granular. Add `--install` only when dependencies changed.
61
+
54
62
  4. Try it:
55
63
 
56
64
  ```text
@@ -130,6 +138,14 @@ Manage approvals (and bypass mode):
130
138
  - Switch **Permission mode** to **Bypass (dangerous)** to skip the allowlist and prompts entirely.
131
139
  - In bypass mode, the agent can take actions on any website without asking.
132
140
  - Restricted URLs (for example `chrome://` and `file://`) are still blocked.
141
+ - CLI and MCP can also inspect or request permission changes:
142
+ - Reads: `browser-bridge permissions list`, `browser-bridge permissions mode`, `browser-bridge permissions pending`
143
+ - Requests: `browser-bridge permissions allow-site --site example.com`, `revoke-site --site example.com`, `set-mode --mode granular|bypass`
144
+ - Equivalent MCP tools exist under `permissions.*`
145
+ - External permission-change requests are still human-gated:
146
+ - CLI/MCP request calls open a dedicated Chrome approval prompt.
147
+ - Nothing is mutated silently from CLI or MCP.
148
+ - If the request times out, the command/tool returns `status: "timed_out"`; if the prompt is still open, a later human approval still applies the change.
133
149
  - `inspect.*` should already be enabled in current builds. Use `browser-bridge dev enable-inspect` as a diagnostics probe; if it reports missing inspect capability, treat that as stale runtime drift and reload or update the Browser Bridge extension.
134
150
 
135
151
  </details>
@@ -148,6 +164,15 @@ The CLI mirrors the MCP tool surface.
148
164
  - `session.recover`
149
165
  - `session.close`
150
166
 
167
+ **permissions**
168
+
169
+ - `permissions.list`
170
+ - `permissions.get_mode`
171
+ - `permissions.list_pending_requests`
172
+ - `permissions.request_allow_site`
173
+ - `permissions.request_revoke_site`
174
+ - `permissions.request_set_mode`
175
+
151
176
  **drive**
152
177
 
153
178
  - `drive.navigate`
@@ -212,8 +237,8 @@ Or copy the Browser Bridge skill into your agent skills directory (advanced):
212
237
 
213
238
  ```bash
214
239
  # From this repo:
215
- # cp -R skills/browser-bridge ~/.agents/skills/browser-bridge
216
- # cp -R skills/browser-bridge ~/.claude/skills/browser-bridge
240
+ # cp -R .agents/skills/browser-bridge ~/.agents/skills/browser-bridge
241
+ # cp -R .agents/skills/browser-bridge ~/.claude/skills/browser-bridge
217
242
 
218
243
  # From npm (global install):
219
244
  cp -R "$(npm root -g)/@btraut/browser-bridge/skills/browser-bridge" ~/.agents/skills/browser-bridge