fix(ab-connect): recover a churned-tabId session by stable CDP targetId (0.4.9, #24)
Live-reproduced #24 on 0.4.8 driving the Mercari signin token-exchange hop (login.jp.mercari.com): the cross-process nav gives the tab a NEW Chrome tabId while the CDP targetId stays the same. So cb-tab-<oldTabId> can't be recovered — recoverSessionTab parsed the old tabId, chrome.tabs.get(oldTabId) failed (gone), and it gave up → permanent 'stale sessionId ... its tab is gone' until the page settled ~6s later and something re-attached. current/tab <targetId>/daemon restart all failed because the relay still mapped the targetId to the dead session. Fix: remember each session's targetId across detach (sessionTargets map). When recoverSessionTab can't recover by the encoded tabId, fall back to the STABLE targetId — chrome.debugger.getTargets() to find the tab now hosting that target, attach it, and ALIAS the dead cb-tab-<oldTabId> session to the live tab so the daemon's session id keeps resolving. Longer retry window (~6s) since this hop takes seconds to settle. Builds on 0.4.6/0.4.8 reattach; covers the tabId-churn case those missed. Needs dogfood on the real Mercari flow (can't repro the tabId churn synthetically).
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 3,
|
||||
"name": "chrome-use",
|
||||
"version": "0.4.8",
|
||||
"version": "0.4.9",
|
||||
"description": "Let chrome-use drive your logged-in Chrome \u2014 install once, no token, no per-use confirmation.",
|
||||
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6vQIyscGIPYPZdSpPwPL0+0gxUROyRgCpmvCSDoc8XUm4qm97VbKnD9Ijc1lV22lNWZtE78gaRjt6BeSfuMgnBymnhLKjN1gU6AI5QUU0mrJyeHdWKvrKQR5FmsM2A7Xr1ykE2SiiS8zNUS3Y/6O5l+Nva7wrVy6E4a2dkBVQkOsu+DV+nEZvhIyuDY5D5SPXqNwUTWTaglwj5mjvHz36xSwCWlPmrtJ+ED0AUyrb2z4GIOmvk4kqtBVrh/UD058klLo4CkYOnIybB5aV6WYuwarfPY4bF/dLggPem+ewLNTUNBuwrxj/A4nUv0LJTuRO8rR7f8WR9qnRCY0Ic5saQIDAQAB",
|
||||
"icons": {
|
||||
|
||||
Reference in New Issue
Block a user