@omercnet/paseo-shared-browser 0.3.1-next.72.1

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 ADDED
@@ -0,0 +1,71 @@
1
+ # Changelog
2
+
3
+ ## [0.3.1](https://github.com/omercnet/paseo-plugins/compare/shared-browser-v0.3.0...shared-browser-v0.3.1) (2026-09-15)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **shared-browser:** support system Chromium on Linux ARM64 ([#58](https://github.com/omercnet/paseo-plugins/issues/58)) ([f9c3dcb](https://github.com/omercnet/paseo-plugins/commit/f9c3dcb1031840c7cd0aed4a70f984d9d9bd24c1))
9
+
10
+ ## [0.3.0](https://github.com/omercnet/paseo-plugins/compare/shared-browser-v0.2.2...shared-browser-v0.3.0) (2026-09-12)
11
+
12
+
13
+ ### Features
14
+
15
+ * **shared-browser:** adopt agent-browser runtime ([#18](https://github.com/omercnet/paseo-plugins/issues/18)) ([09623f3](https://github.com/omercnet/paseo-plugins/commit/09623f34f2b93943c19f809a865813fa37f467bd))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **shared-browser:** skip MCP injection for OMP ([#21](https://github.com/omercnet/paseo-plugins/issues/21)) ([ee2db08](https://github.com/omercnet/paseo-plugins/commit/ee2db08243640600c5592debe72f680446fa26d0))
21
+
22
+ ## [1.0.0](https://github.com/omercnet/paseo-plugins/compare/shared-browser-v0.2.2...shared-browser-v1.0.0) (2026-09-12)
23
+
24
+ ### ⚠ BREAKING CHANGES
25
+
26
+ * replace the browser runtime in place with plugin-owned `agent-browser` 0.37.1 and a detached daemon-host supervisor; deployments must provide the packaged runtime and a compatible Chromium executable, with Linux ARM64 deployments supplying native Chromium through `PASEO_SHARED_BROWSER_CHROMIUM_EXECUTABLE`
27
+
28
+ ### Bug Fixes
29
+
30
+ * leave OMP agent creation unchanged because the provider rejects external MCP servers
31
+
32
+ ### Features
33
+
34
+ * preserve workspace browser processes across client disconnects and plugin reloads during a 120-second orphan grace, while retaining per-workspace profiles and tearing down active runtimes when workspace archive events are received
35
+ * add daemon-local runtime overrides through `PASEO_SHARED_BROWSER_AGENT_BROWSER_BINARY` and `PASEO_SHARED_BROWSER_CHROMIUM_EXECUTABLE`
36
+
37
+ ## [0.2.2](https://github.com/omercnet/paseo-plugins/compare/shared-browser-v0.2.1...shared-browser-v0.2.2) (2026-09-10)
38
+
39
+
40
+ ### Bug Fixes
41
+
42
+ * upgrade plugins to Paseo 0.8.0 ([c6b4e40](https://github.com/omercnet/paseo-plugins/commit/c6b4e4081fc9527de0ca6183a3903ff5ec4f93c4))
43
+ * upgrade plugins to Paseo 0.8.0 ([d7ad454](https://github.com/omercnet/paseo-plugins/commit/d7ad4540d2e1875bdf4a4d21f76ded25cac2f3dc))
44
+
45
+ ## [0.2.1](https://github.com/omercnet/paseo-shared-browser/compare/v0.2.0...v0.2.1) (2026-09-08)
46
+
47
+
48
+ ### Bug Fixes
49
+
50
+ * address Paseo 0.8 migration review feedback ([#10](https://github.com/omercnet/paseo-shared-browser/issues/10)) ([15d2515](https://github.com/omercnet/paseo-shared-browser/commit/15d25157503b7fb70d02c5e420522764250cab62))
51
+
52
+ ## [0.2.0](https://github.com/omercnet/paseo-shared-browser/compare/v0.1.1...v0.2.0) (2026-09-08)
53
+
54
+ ### Features
55
+
56
+ * migrate shared browser to Paseo 0.8 ([#8](https://github.com/omercnet/paseo-shared-browser/issues/8)) ([36f27ab](https://github.com/omercnet/paseo-shared-browser/commit/36f27abc5dab4a16c9770d6296916631965af333))
57
+ ## [0.1.1](https://github.com/omercnet/paseo-shared-browser/compare/v0.1.0...v0.1.1) (2026-09-07)
58
+
59
+ ### Bug Fixes
60
+
61
+ * include README screenshots in release archives ([#6](https://github.com/omercnet/paseo-shared-browser/issues/6)) ([a231db4](https://github.com/omercnet/paseo-shared-browser/commit/a231db4b20e9c52ebe8624ad69e34e907037ac0a))
62
+
63
+ ## 0.1.0 (2026-09-07)
64
+
65
+ ### Features
66
+
67
+ * share one live Chromium session per Paseo workspace ([b1e9fac](https://github.com/omercnet/paseo-shared-browser/commit/b1e9fac5021746cf2dc09f7bfb9ccf0cb3b82e5d))
68
+
69
+ ### Bug Fixes
70
+
71
+ * keep format check off the generated changelog ([#4](https://github.com/omercnet/paseo-shared-browser/issues/4)) ([2219adf](https://github.com/omercnet/paseo-shared-browser/commit/2219adf3c11591a88dc54b899dece76003f313c4))
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Omer Cohen
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,182 @@
1
+ # Shared Browser
2
+
3
+ A Paseo plugin that runs one real Chromium browser per workspace on the daemon host and shares that
4
+ exact live session with every connected Paseo client. Version 1.0 replaces the previous browser
5
+ runtime in place with a plugin-owned, pinned `agent-browser` runtime; existing installations keep
6
+ the `shared-browser` plugin ID and upgrade without installing a second plugin.
7
+
8
+ This is not URL synchronization and not a second browser with copied cookies. Every viewer and
9
+ eligible workspace agent acts on the same running page, DOM, navigation state, and login state.
10
+ Many viewers can watch; human control remains server-authoritative and takes priority over agent
11
+ input.
12
+
13
+ ## Screenshots
14
+
15
+ ### Wide desktop
16
+
17
+ ![Shared Browser showing the same live Paseo page to two viewers on desktop](docs/images/shared-browser-wide.png)
18
+
19
+ ### Compact client
20
+
21
+ ![Shared Browser controls and the same canonical browser viewport on a compact client](docs/images/shared-browser-compact.png)
22
+
23
+ ## Runtime model
24
+
25
+ - The plugin server runs beside the Paseo daemon and starts one `agent-browser` session and Chromium
26
+ process per open browser workspace. Browser execution, profiles, IPC, and network access are on the
27
+ daemon host, not on the viewing phone, browser, or desktop app.
28
+ - The plugin owns `agent-browser` version `0.37.1`, its IPC directory, and the Chromium executable.
29
+ It strips inherited `AGENT_BROWSER_*` variables and sets `AGENT_BROWSER_SOCKET_DIR`,
30
+ `AGENT_BROWSER_IDLE_TIMEOUT_MS=0`, `AGENT_BROWSER_STREAM_PORT=0`, and
31
+ `AGENT_BROWSER_NO_AUTO_DIALOG=1` itself.
32
+ - Frames stream from Chromium through CDP `Page.startScreencast`, with a bounded screenshot fallback.
33
+ Remote input supports tap, double-tap, right-click, drag, swipe scrolling, text, and special keys.
34
+ - Device presets for Desktop Chrome, iPhone 15 Pro, Pixel 7, and iPad Pro 11 change Chromium's
35
+ viewport, device pixel ratio, touch behavior, platform, and user agent. A phone can view and
36
+ control the shared browser, but the rendered browser remains Chromium. An iPhone preset is mobile
37
+ emulation, not WebKit, iOS, or real Safari.
38
+
39
+ ## Lifetime and persistence
40
+
41
+ The browser runtime is held by a detached supervisor rather than by a particular Paseo client or
42
+ plugin subprocess. Closing a panel, disconnecting a client, or losing the plugin bridge invalidates
43
+ that client's viewer/control tokens but does not immediately close Chromium. A replacement plugin
44
+ bridge can reclaim the existing workspace runtime. If no bridge reconnects, the supervisor closes
45
+ all orphaned runtimes after a 120-second grace period. A missed heartbeat fences the old bridge after
46
+ 30 seconds; the bridge sends heartbeats every 10 seconds.
47
+
48
+ Each workspace gets a private profile under
49
+ `$PASEO_HOME/plugin-data/shared-browser/profiles/<workspace-id-sha256>`. Cookies and site login state
50
+ therefore survive viewer disconnects, plugin reloads, and Chromium process restarts while that
51
+ directory remains intact. Profiles are local to one daemon host: they are not synchronized between
52
+ hosts or Paseo clients, do not use a personal Chrome or Safari profile, and are not portable across
53
+ arbitrary Chromium versions.
54
+
55
+ When Paseo emits `workspace.archived` while the plugin server is active, the plugin fences that
56
+ workspace, expires its viewers and controller, and closes its browser runtime, including a runtime
57
+ whose creation raced the archive. The profile directory is retained. Archive events missed while
58
+ the plugin bridge is disconnected are not replayed or reconciled by the plugin; the orphan grace
59
+ still closes the runtime, but retained profile data must be removed manually if it is no longer
60
+ wanted.
61
+
62
+ ## Install
63
+
64
+ Enable trusted plugins on the target Paseo daemon, then install from npm:
65
+
66
+ ```bash
67
+ paseo plugin install npm:@omercnet/paseo-shared-browser
68
+ paseo plugin ls
69
+ ```
70
+
71
+ Or install from Git:
72
+
73
+ ```bash
74
+ paseo plugin add omercnet/paseo-plugins:paseo-shared-browser
75
+ paseo plugin ls
76
+ ```
77
+
78
+ Installation runs `npm ci --include=dev` and `npm run prepare:runtime` on the daemon host. The
79
+ preparation step installs the pinned browser runtime and builds both `supervisor.cjs` and
80
+ `shared-browser-mcp.cjs` under
81
+ `$PASEO_HOME/plugin-data/shared-browser/runtime`. For a local monorepo checkout:
82
+
83
+ ```bash
84
+ cd paseo-plugins/paseo-shared-browser
85
+ npm ci --include=dev
86
+ npm run prepare:runtime
87
+ paseo plugin install "$PWD"
88
+ ```
89
+
90
+ The build requires Node.js 24 or newer and npm on the daemon host. The runtime also needs a
91
+ Chromium-compatible executable. On Linux ARM64, where the bundled download is unavailable, the
92
+ installer automatically uses native Chromium from `/usr/bin/chromium`. Install a non-Snap Chromium
93
+ build with the system package manager before adding the plugin. Set
94
+ `PASEO_SHARED_BROWSER_CHROMIUM_EXECUTABLE` to an absolute path when Chromium is installed elsewhere.
95
+ The plugin does not emulate x64 Chromium.
96
+
97
+ Open a workspace, search the Command Center for **Open Shared Browser**, or tap the **Shared
98
+ Browser** composer pill while a workspace session is open.
99
+
100
+ ## Agent MCP access
101
+
102
+ The plugin automatically injects its stdio MCP adapter only when a new, non-internal agent is
103
+ created with a provider that accepts external MCP servers. Agents that already exist, resumed
104
+ sessions, imported sessions, and Paseo's internal agents are not modified. Paseo's OMP provider
105
+ uses native host-tool injection and rejects external MCP servers, so OMP agents are left unchanged.
106
+ Pi agents continue to receive the adapter, but they require Pi's optional MCP support to launch it.
107
+
108
+ The injected MCP server exposes exactly these tools: `shared_browser_status`,
109
+ `shared_browser_capture`, `shared_browser_acquire_control`, `shared_browser_release_control`,
110
+ `shared_browser_navigate`, `shared_browser_input`, and `shared_browser_viewport`. It does not
111
+ expose arbitrary CDP commands, JavaScript or page evaluation, browser profile access, or filesystem
112
+ access.
113
+
114
+ Each adapter launch receives an opaque credential bound to its workspace. It cannot use that
115
+ credential to operate another workspace's browser. Agent input follows human-priority control: an
116
+ agent cannot force a takeover while a human viewer holds control. The human must release control or
117
+ the lease must expire before agent input can proceed.
118
+
119
+ The provider launches the stdio adapter on the Paseo daemon host, beside the daemon-owned browser
120
+ runtime. Web, desktop, and mobile clients never own or host the adapter or Chromium, and a client
121
+ disconnect does not close or reset either process.
122
+
123
+ ## Runtime environment overrides
124
+
125
+ The plugin recognizes only these deployment overrides:
126
+
127
+ | Variable | Meaning |
128
+ | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
129
+ | `PASEO_HOME` | Paseo data root. Defaults to `~/.paseo`; browser runtime, supervisor IPC, and profiles live below `plugin-data/shared-browser`. |
130
+ | `PASEO_SHARED_BROWSER_AGENT_BROWSER_BINARY` | Absolute path to the pinned `agent-browser` executable. Defaults to `$PASEO_HOME/plugin-data/shared-browser/runtime/node_modules/.bin/agent-browser`. |
131
+ | `PASEO_SHARED_BROWSER_CHROMIUM_EXECUTABLE` | Absolute path to Chromium. Defaults to `$PASEO_HOME/plugin-data/shared-browser/runtime/chromium/chrome`. On Linux ARM64, installation automatically links `/usr/bin/chromium`; use this override for another compatible, non-Snap location. |
132
+
133
+ User-supplied `AGENT_BROWSER_*` variables are deliberately ignored.
134
+
135
+ ## Controls
136
+
137
+ - Toolbar: back, forward, reload, address bar, and device emulation.
138
+ - Status row: session state, viewer count, controller, and lease expiry.
139
+ - Human control: **Take control**, **Release**, and **Take over** for explicit handoff. Agent MCP
140
+ calls have no forced-takeover operation.
141
+ - Mobile: swipe scrolls by default; pointer and keyboard options open as bottom sheets.
142
+
143
+ ## Security boundary
144
+
145
+ - Paseo plugins are trusted, unsandboxed code. The plugin server, detached supervisor,
146
+ `agent-browser`, and Chromium execute as the daemon OS user and can reach that user's files,
147
+ processes, credentials, and network.
148
+ - Supervisor IPC uses a user-private Unix socket and token files with owner-only permissions.
149
+ `agent-browser` IPC metadata and workspace profile directories are also owner-only. The plugin
150
+ rejects a non-loopback CDP endpoint and disables the `agent-browser` stream port.
151
+ - Viewer and control tokens coordinate clients already paired to the same Paseo daemon. Paseo v0.8
152
+ plugin RPC callbacks expose no authenticated caller identity, so these human-viewer tokens are a
153
+ workflow safeguard, not an authorization boundary. The stdio MCP adapter separately uses an
154
+ opaque, workspace-bound credential.
155
+ - Downloads, uploads, clipboard synchronization, media permissions, extensions, native passkeys,
156
+ and platform authenticators are not exposed by this plugin.
157
+ - Browser navigation uses the daemon OS user's network access, including local development servers.
158
+ It is therefore a trusted-agent capability; this plugin deliberately does not apply a blanket
159
+ loopback or RFC1918 navigation ban.
160
+
161
+ ## Develop
162
+
163
+ ```bash
164
+ npm ci
165
+ npm run typecheck
166
+ npm run lint
167
+ npm run format:check
168
+ npm run test:unit
169
+ npm run prepare:runtime
170
+ paseo plugin install "$PWD"
171
+ paseo plugin reload shared-browser
172
+ ```
173
+
174
+ `npm run test:smoke` launches the configured real Chromium runtime and exercises two viewers,
175
+ control handoff, reconnect, stale-frame rejection, viewport changes, device emulation, profile
176
+ persistence, and archive teardown.
177
+
178
+ Release Please maintains the version, changelog, component tag, and GitHub release from
179
+ Conventional Commits in the monorepo.
180
+
181
+ Both the Paseo daemon and app must satisfy `^0.8.0`, including Paseo 0.8 prereleases. The client
182
+ surface uses React Native primitives and works in desktop, web, iOS, and Android Paseo clients.