v0.4: background reads, JS-state login signals, blind sleeps dropped
get_or_open_tab(activate=True) — added, not replaced. Read paths pass activate=False; post flows keep the foreground for dialogs and file inputs. check_login moved off DOM signals onto session state: fb c_user, ig/threads ds_user_id, twitter twid, yt ytcfg.LOGGED_IN. Three platforms were reporting OUT on a signed-in account because their composer never mounts in a hidden tab. The fixed sleep(4)/sleep(5) before each check goes with them — every signal reads present the moment navigate() returns. Unreadable cookies raise instead of returning False: "cannot tell" is not "signed out". tiktok untouched and still activated — it reported visibilityState "visible" from a sibling-activated tab, so it has never been read from a genuine background. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -120,6 +120,13 @@ async def _wait_for_success(tab, timeout=120.0):
|
||||
|
||||
|
||||
async def check_login(cdp_client):
|
||||
# The only platform still activated for a login check. TikTok could not be
|
||||
# backgrounded on 2026-09-12: a sibling tab in the *same* window was
|
||||
# activated (Browser.getWindowForTarget agreed on windowId) and TikTok still
|
||||
# reported visibilityState "visible" — own window, or it overrides the
|
||||
# property to keep video playing. Its DOM signal has never lied, but it has
|
||||
# never been read from a genuine background either. Three states, not two:
|
||||
# this stays foreground until there is evidence, not until it looks fine.
|
||||
tab, reused = await cdp_client.get_or_open_tab(S["url"], "tiktok.com")
|
||||
if reused:
|
||||
await tab.eval("window.onbeforeunload = null")
|
||||
|
||||
Reference in New Issue
Block a user