<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sz-chrome-remote-extension.git/test-suite/unit/automation-target.test.mjs, 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-09-28T23:45:18+00:00</updated>
<entry>
<title>Create session tab groups in the tab's own window</title>
<updated>2026-09-28T23:45:18+00:00</updated>
<author>
<name>Tianren Dong</name>
<email>tianrendong.dtr@gmail.com</email>
</author>
<published>2026-09-28T23:45:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=b33d18552599664901356ae27db0270df3cc3129'/>
<id>urn:sha1:b33d18552599664901356ae27db0270df3cc3129</id>
<content type='text'>
chrome.tabs.group without createProperties.windowId creates the group in the
current (user's) window and moves the tab there, so a session's automation tab
left its dedicated window and became a hidden inactive tab. Make the unit mock
match Chrome's behavior.
</content>
</entry>
<entry>
<title>Enforce hard background and release 0.15.48</title>
<updated>2026-09-10T03:48:50+00:00</updated>
<author>
<name>Tianren Dong</name>
<email>tianrendong.dtr@gmail.com</email>
</author>
<published>2026-09-10T03:37:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=c1f230eeb76aaa50e98d3fe7d838573612b6e36f'/>
<id>urn:sha1:c1f230eeb76aaa50e98d3fe7d838573612b6e36f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix session cleanup and release 0.15.47</title>
<updated>2026-09-10T03:14:15+00:00</updated>
<author>
<name>Tianren Dong</name>
<email>tianrendong.dtr@gmail.com</email>
</author>
<published>2026-09-10T02:54:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=1ec29fc90b84517322bf5994245368f0e59eff61'/>
<id>urn:sha1:1ec29fc90b84517322bf5994245368f0e59eff61</id>
<content type='text'>
</content>
</entry>
<entry>
<title>0.15.40: keep automation targets in session group</title>
<updated>2026-06-23T01:04:05+00:00</updated>
<author>
<name>Tianren Dong</name>
<email>tianrendong.dtr@gmail.com</email>
</author>
<published>2026-06-23T01:04:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=2c1a4b3cf42c149f52d491131680e062e1935f5f'/>
<id>urn:sha1:2c1a4b3cf42c149f52d491131680e062e1935f5f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Keep Pi-created tabs in one session group</title>
<updated>2026-06-23T00:05:59+00:00</updated>
<author>
<name>Tianren Dong</name>
<email>tianrendong.dtr@gmail.com</email>
</author>
<published>2026-06-22T23:55:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=c1ed934dd20931b177e233ae0327a290a8001631'/>
<id>urn:sha1:c1ed934dd20931b177e233ae0327a290a8001631</id>
<content type='text'>
</content>
</entry>
<entry>
<title>0.15.39: dedicated pi-chrome automation tab/window isolation (#6)</title>
<updated>2026-06-22T23:55:20+00:00</updated>
<author>
<name>TJ Dong</name>
<email>122852285+tj-dong@users.noreply.github.com</email>
</author>
<published>2026-06-22T23:55:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=b8165967408be47e93b6a566270988177f8f6866'/>
<id>urn:sha1:b8165967408be47e93b6a566270988177f8f6866</id>
<content type='text'>
Stop pi-chrome from hijacking the user's active tab. Page/navigation actions
with no explicit target now route to a dedicated automation window owned by the
calling Pi session (falling back to a dedicated tab if a window can't be made),
instead of overwriting whatever the user has open.

- Session-scoped ownership: Map&lt;sessionKey, target&gt; in the service worker, keyed
  by a sessionKey forwarded from index.ts, so concurrent sessions (one shared
  extension) never fight over a window or close each other's tabs.
- Persistence: ownership mirrored to chrome.storage.session so a service-worker
  restart re-hydrates and reuses the window instead of orphaning it. Cleared on
  full browser restart; restored windows are then left alone (never reclaimed).
- getTabByParams default branch resolves the owned target; tab.activate/close/
  group/ungroup pass createOwnedTarget:false so management never auto-creates a
  throwaway tab or falls back to the user's active tab.
- Session-group integration: the dedicated-window tab still joins this session's
  tab group, in its own window; grouping stays best-effort.
- Lifecycle: cleanup on /chrome revoke and real session end (not /reload);
  fire-and-forget so it never blocks /quit, /reload, or shutdown.
- Tests: new test-suite/unit/automation-target.test.mjs (isolation, reuse,
  concurrency, restart/reconnect re-hydration, guarded tab.*, group integration,
  window-&gt;tab fallback, robust cleanup). Docs + CHANGELOG updated.</content>
</entry>
</feed>
