<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sz-chrome-remote-extension.git/extensions/chrome-profile-bridge/browser-extension, branch master</title>
<subtitle>pi-chrome, patched to drive a signed-in browser on another host through a broker, with an MCP server
</subtitle>
<id>https://git.soarez.net/sz/sz-chrome-remote-extension.git/atom?h=master</id>
<link rel='self' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/'/>
<updated>2026-11-08T17:11:15+00:00</updated>
<entry>
<title>tabs: back to one window per session; keep new tabs out of the user's window</title>
<updated>2026-11-08T17:11:15+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-08T17:11:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=b8b63ea4d1bad9c4bbac6b05b03cce5f2cfa3f94'/>
<id>urn:sha1:b8b63ea4d1bad9c4bbac6b05b03cce5f2cfa3f94</id>
<content type='text'>
A window shows only one tab, so sessions sharing one hid each other's tabs: no
real input and blank screenshots for every session but the one whose tab was
active (castle-pirc-web, 2026-11-08). Time-sharing the active tab would flip tabs
under the user while they sign in for an agent, so revert 66fbd30: a session
gets its own unfocused window. Kept: chrome_tab new for a session with no window
opens one for it instead of landing in the user's focused window. The primer
and chrome_tab description now say why to reuse a tab.
</content>
</entry>
<entry>
<title>overlay.clear: read closed shadow roots and remove the host element</title>
<updated>2026-11-08T16:31:10+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-08T16:31:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=9d4e47337b9c857b70ea9caf116adb935e18e31c'/>
<id>urn:sha1:9d4e47337b9c857b70ea9caf116adb935e18e31c</id>
<content type='text'>
Diagnostics on 1Password's inline prompt: the page holds a &lt;com-1password-uso&gt;
element and no iframe in its own DOM; the frame is inside a closed shadow root.
Run in the isolated world, where chrome.dom.openOrClosedShadowRoot can read it,
and remove the element that hosts a foreign extension frame. Drop the body-click
events: they were never shown to help.
</content>
</entry>
<entry>
<title>overlay.clear: match the prompt's frame by the tabId in its URL, and report what it saw</title>
<updated>2026-11-08T16:17:05+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-08T16:17:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=516d6f05e7f67a1ef48f1ffc28d27e136e87cd1a'/>
<id>urn:sha1:516d6f05e7f67a1ef48f1ffc28d27e136e87cd1a</id>
<content type='text'>
The password manager's frame target can come without a tabId, so it was missed
(error said 'unknown', remaining targets empty). Match by the ?tabId= in the
frame URL too, and when the tab stays blocked report every foreign target and
what the injected script saw, so the next step is based on data.
</content>
</entry>
<entry>
<title>overlay.clear: run in the page's own world with the click the fallback uses</title>
<updated>2026-11-08T16:10:10+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-08T16:10:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=69d7159eef27d541cf01ea3ea1471ef0ce3a7677'/>
<id>urn:sha1:69d7159eef27d541cf01ea3ea1471ef0ce3a7677</id>
<content type='text'>
The isolated-world body events did not free a 1Password-blocked tab; the DOM
click fallback (MAIN world, full pointer event shape, el.click()) did. Use that
shape, aimed at the page root so no control is clicked.
</content>
</entry>
<entry>
<title>overlay.clear: click the page body outside the prompt, and wait for it to go</title>
<updated>2026-11-08T15:32:11+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-08T15:32:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=56356bd3400c104eb0b7af1322ff515c155ef7a4'/>
<id>urn:sha1:56356bd3400c104eb0b7af1322ff515c155ef7a4</id>
<content type='text'>
Measured on 1Password's inline menu: blur and Escape did not free the tab, a
click outside did. overlay.clear now also sends pointer/mouse events to the
body and polls the debugger for about a second instead of checking once.
</content>
</entry>
<entry>
<title>overlay: the agent decides whether a password-manager prompt is in the way</title>
<updated>2026-11-08T15:26:17+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-08T15:26:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=0edeb17be41b4f57e40b16b9c86bf5ce85add971'/>
<id>urn:sha1:0edeb17be41b4f57e40b16b9c86bf5ce85add971</id>
<content type='text'>
The error, the tool description and the primer no longer tell the agent to ask
the user first. It clears the prompt when it is only in the way, and leaves it
alone and says so when it is waiting for the user to sign in or approve.
</content>
</entry>
<entry>
<title>overlay: tell the agent about a blocking password-manager prompt; chrome_clear_overlay closes it on request</title>
<updated>2026-11-08T15:19:35+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-08T15:19:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=4d353df1a83e36b4e6b2edb0ba64190423e4a7f3'/>
<id>urn:sha1:4d353df1a83e36b4e6b2edb0ba64190423e4a7f3</id>
<content type='text'>
Another extension's frame (1Password's inline prompt) makes Chrome refuse the
debugger on the tab. The old path sent Escape on its own, which cannot reach
that frame and would close a prompt the user may be using. Now nothing is closed
automatically: the error says what is blocking and tells the agent to ask the
user; chrome_clear_overlay removes the frame, blurs the field, sends Escape and
reports whether the tab is usable again.
</content>
</entry>
<entry>
<title>navigate: do not require the debugger</title>
<updated>2026-11-08T15:10:48+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-08T15:10:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=9004966da6491b368d12abeeb175256eedb78a2a'/>
<id>urn:sha1:9004966da6491b368d12abeeb175256eedb78a2a</id>
<content type='text'>
Attaching first (for the Leave-site prompt) made chrome_navigate fail on a tab
whose page holds another extension's frame, such as a 1Password inline prompt,
which is exactly when navigating away is the way out. Attach is now best effort.
</content>
</entry>
<entry>
<title>tabs: agent sessions share one window instead of opening one each</title>
<updated>2026-11-08T12:37:44+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-08T12:37:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=66fbd3015ff68aa94f1faff1ad84740052b86a0d'/>
<id>urn:sha1:66fbd3015ff68aa94f1faff1ad84740052b86a0d</id>
<content type='text'>
A session's first tab used chrome.windows.create, so every new session name (and
every Claude Code process) got its own window. It now goes into the window that
already holds any 'Pi Session:' group; a window is created only when none exists.
chrome_tab new for a session with no group also uses that window, not the user's
focused one. The primer and the chrome_tab description say so.
</content>
</entry>
<entry>
<title>navigate: answer a page's Leave-site prompt instead of hanging</title>
<updated>2026-11-08T11:58:33+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-08T11:58:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=e538c3e53e203fabb8a9fed94b6810c345ee6f80'/>
<id>urn:sha1:e538c3e53e203fabb8a9fed94b6810c345ee6f80</id>
<content type='text'>
A page with a beforeunload handler shows 'Leave site?' when the extension
navigates away. Nothing answered it, so chrome_navigate waited out its timeout
and the agent never learned why. The worker now hears Page.javascriptDialogOpening
and dismisses the dialog (stay/cancel); page.navigate fails at once and says so.
leaveIfAsked: true, for that call only, accepts a beforeunload prompt. Tool
description and primer tell agents when to use it and to ask the user when unsure.
</content>
</entry>
</feed>
