pi-chrome 0.15.11 → 0.15.12

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
@@ -2,6 +2,10 @@
2
2
 
3
3
  All notable user-facing changes to `pi-chrome`.
4
4
 
5
+ ## 0.15.12 — 2026-05-14
6
+
7
+ - **Docs accuracy.** Clarified that the bundled Chrome extension currently polls `127.0.0.1:17318`; custom bridge ports are not supported without editing/reloading the extension source. Also softened the unpacked-extension rationale to avoid overstating Web Store limitations and fixed stale strict-CSP guidance for `chrome_evaluate`.
8
+
5
9
  ## 0.15.11 — 2026-05-14
6
10
 
7
11
  - **README cleanup.** Removed the Playwright/CDP/Selenium comparison table and low-signal Composes with / Contributing sections from the package page because they are noisy and easy to drift.
package/README.md CHANGED
@@ -237,17 +237,13 @@ If you build a competing tool, please open a PR with your scores. We benchmark i
237
237
 
238
238
  ## Security model & why unpacked
239
239
 
240
- **Unpacked on purpose.** A Web Store extension cannot talk to a local bridge controlled by another tool on the same machine so pi-chrome ships its bridge as an inspectable, MIT-licensed folder you load once with Developer Mode. Every line is yours to read in [`extensions/chrome-profile-bridge/browser-extension/`](./extensions/chrome-profile-bridge/browser-extension). `/chrome doctor` reports the loaded extension version and warns when it drifts from your installed `pi-chrome`.
240
+ **Unpacked on purpose.** pi-chrome ships as an inspectable, MIT-licensed extension folder you load once with Developer Mode, so the local bridge and browser permissions are easy to audit and update without a Web Store release cycle. Every line is yours to read in [`extensions/chrome-profile-bridge/browser-extension/`](./extensions/chrome-profile-bridge/browser-extension). `/chrome doctor` reports the loaded extension version and warns when it drifts from your installed `pi-chrome`.
241
241
 
242
242
  The companion extension runs in the Chrome profile where you install it and has broad tab/scripting permissions. Only install it from a package source you trust. Even after install, `chrome_*` tools stay locked until you run `/chrome authorize` in Pi and approve the browser-side consent page in Chrome. Use `/chrome revoke` to lock them again.
243
243
 
244
- The Pi side listens on `127.0.0.1:17318` by default and rejects browser-origin command requests; ordinary web pages cannot use CORS to drive the bridge. Override before starting Pi:
244
+ The Pi side listens on `127.0.0.1:17318` and rejects browser-origin command requests; ordinary web pages cannot use CORS to drive the bridge. The bundled Chrome extension currently polls that default port, so custom bridge ports are not supported without editing the extension source and reloading it.
245
245
 
246
- ```bash
247
- PI_CHROME_BRIDGE_PORT=17319 pi
248
- ```
249
-
250
- There is no network exposure; the bridge binds to loopback only.
246
+ There is no network exposure in the default configuration; the bridge binds to loopback only.
251
247
 
252
248
  ---
253
249
 
package/SECURITY.md CHANGED
@@ -29,11 +29,9 @@ The Chrome extension under `extensions/chrome-profile-bridge/browser-extension/`
29
29
  - Chrome control locked by default; `/chrome authorize` opens a Chrome consent page, approval unlocks current Pi session, `/chrome revoke` locks it again.
30
30
  - Run-in-background optional; tab/window focus is observable by default (the user can see Pi acting).
31
31
 
32
- ## Override the port
32
+ ## Custom ports
33
33
 
34
- ```bash
35
- PI_CHROME_BRIDGE_PORT=17319 pi
36
- ```
34
+ The bundled Chrome extension currently polls `127.0.0.1:17318`. Custom bridge ports are not supported without editing the extension source and reloading it.
37
35
 
38
36
  ## Supported versions
39
37
 
package/docs/FAQ.md CHANGED
@@ -51,7 +51,7 @@ The Pi-facing tools are thin wrappers around an HTTP bridge at `127.0.0.1:17318`
51
51
 
52
52
  ## Does `chrome_evaluate` work on strict-CSP pages?
53
53
 
54
- Yes. The handler compiles with `new Function(...)` in the MAIN world, which works under `script-src 'self'` without `'unsafe-eval'`. Multi-statement bodies are supported via a statement-mode fallback. Exceptions are surfaced to the agent.
54
+ Not always. `chrome_evaluate` and `chrome_snapshot` run in the page's MAIN world through the Function constructor, so pages whose CSP blocks `'unsafe-eval'` can reject them. `chrome_screenshot`, `chrome_navigate`, tab tools, and real Chrome input still work because they use extension/browser APIs rather than page JavaScript.
55
55
 
56
56
  ## Why does my click return `pageMutated=false`?
57
57
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "Pi Chrome Connector",
4
- "version": "0.15.11",
4
+ "version": "0.15.12",
5
5
  "description": "Lets Pi control tabs in Chrome via a local connector at 127.0.0.1.",
6
6
  "permissions": [
7
7
  "tabs",
@@ -835,7 +835,7 @@ Usage rules:
835
835
  "Start/check the local bridge used by the companion Chrome extension. This does not launch a separate Chrome profile; install the unpacked Chrome extension in your existing Chrome profile to connect.",
836
836
  promptSnippet: "Show instructions for connecting Pi to the user's existing Chrome profile via the companion extension.",
837
837
  parameters: Type.Object({
838
- port: Type.Optional(Type.Number({ description: "Ignored unless PI_CHROME_BRIDGE_PORT is set before Pi starts." })),
838
+ port: Type.Optional(Type.Number({ description: "Ignored. The bundled Chrome extension polls 127.0.0.1:17318." })),
839
839
  url: Type.Optional(Type.String({ description: "Optional URL to open in the existing Chrome profile after the extension is connected." })),
840
840
  userDataDir: Type.Optional(Type.String({ description: "Ignored. This bridge intentionally uses the user's existing Chrome profile through the companion extension." })),
841
841
  useDefaultProfile: Type.Optional(Type.Boolean({ description: "Ignored; existing-profile access comes from the companion Chrome extension." })),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-chrome",
3
- "version": "0.15.11",
3
+ "version": "0.15.12",
4
4
  "scripts": {
5
5
  "version": "node scripts/sync-manifest-version.js",
6
6
  "prepublishOnly": "node scripts/sync-manifest-version.js"