Skip to content

fix(desktop): sign-in and captchas work again in desktop browser tabs - #16939

Merged
juliusmarminge merged 1 commit into
mainfrom
t3code/fix-desktop-tab-paused-frames
Oct 7, 2026
Merged

juliusmarminge merged 1 commit into
mainfrom
t3code/fix-desktop-tab-paused-frames

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Oct 7, 2026 •

Copy link
Copy Markdown
Member

Since #15328, signing in to Google (and passing captchas or Cloudflare Turnstile) fails in desktop browser tabs: Google shows "Couldn't sign you in — the browser you're using doesn't support JavaScript, or has JavaScript turned off."

Cause. When the server drives a desktop tab through the CDP relay, Playwright auto-attaches with waitForDebuggerOnStart, so Chromium pauses every new cross-site iframe and worker until it receives Runtime.runIfWaitingForDebugger. The relay answered that command itself for every session, including child sessions, so those frames stayed paused forever. Sign-in checks and captchas run in exactly such frames.

Fix. The relay still answers Runtime.runIfWaitingForDebugger for the page's own session (the page is already running) and now forwards it to child sessions, so their frames start.

Verified

  • In real Chrome, a cross-site iframe on a page with waitForDebuggerOnStart auto-attach never loads when the resume is swallowed, and loads when it is forwarded.
  • Google sign-in in real Chrome with Playwright attached over CDP reaches the account lookup.
  • New relay test: the page-session resume is answered locally, the child-session resume reaches the tab's debugger. 9 relay/host tests pass; desktop typecheck and lint are clean.
  • Confirmed in the desktop app with this fix: signing in to Google and to OpenAI (behind Cloudflare Turnstile) both work in a desktop browser tab.

Made with Claude Opus 5.5 in Claude Code.

🤖 Generated with Claude Code


Devin Review

…owser tabs

When the server drives a desktop tab through the CDP relay, Playwright
auto-attaches with waitForDebuggerOnStart, so Chromium pauses each new
cross-site iframe and worker until it receives Runtime.runIfWaitingForDebugger.
The relay answered that command itself for every session, so those frames
never ran. Google sign-in, captchas and Turnstile run in such frames and
failed ("JavaScript is turned off"). The relay now answers it only for the
page, which is already running, and forwards it to child sessions.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Oct 7, 2026
@juliusmarminge juliusmarminge added the macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews label Oct 7, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — The change is a focused CDP relay fix with a targeted regression test, forwarding debugger-resume commands only for paused child frames while preserving the existing page-session behavior. It directly changes authentication-related browser flows, so human review is required.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Team
  • Run ID: 563fbe9f-53ed-41d0-9347-f63cff4f719e
📥 Commits

Reviewing files that changed from the base of the PR and between 468ade3 and 27fc914.

📒 Files selected for processing (2)
  • apps/desktop/src/preview/CdpRelay.test.ts
  • apps/desktop/src/preview/CdpRelay.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.


📝 Walkthrough

Walkthrough

The relay now ignores Runtime.runIfWaitingForDebugger for the root page session and forwards it for child sessions. A test checks forwarding behavior for both session types.

Changes

CDP relay command forwarding

Layer / File(s) Summary
Route resume commands by session
apps/desktop/src/preview/CdpRelay.ts, apps/desktop/src/preview/CdpRelay.test.ts
The relay keeps Runtime.runIfWaitingForDebugger as a no-op for the root page session and forwards the command for child sessions. The test verifies both outcomes.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Suggested reviewers: maria-rcks

Merge Risk: ⚪ Minimal · up to 27fc9

The change is ready to merge; no concrete current-head risk remains.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title is concise, specific, and accurately summarizes the primary desktop browser fix. It also follows the repository's conventional commit format.
Description check ✅ Passed The description clearly covers the problem, cause, fix, and focused verification results. It omits the explicit “Scope and approval” heading, but it references the related change and describes a focus…
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@juliusmarminge
juliusmarminge enabled auto-merge (squash) October 7, 2026 20:38
@juliusmarminge
juliusmarminge merged commit 5383296 into main Oct 7, 2026
34 of 35 checks passed
@juliusmarminge
juliusmarminge deleted the t3code/fix-desktop-tab-paused-frames branch October 7, 2026 20:39
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ The exact PR base did not have a successful artifact. Baseline uses the latest successful main measurement shown below.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 4.9 KiB 5.0 KiB +30 B (+0.6%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB +30 B (+2.5%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 20.8 KiB 20.9 KiB +41 B (+0.2%) 29.3 KiB ✅
Codex Live turn messages 1 2 +1 (+100.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.0 KiB −17 B (−0.3%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.2 KiB 1.2 KiB −17 B (−1.4%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.2 KiB 21.2 KiB 0 B (0.0%) 29.3 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: 250e052 · PR result: 27fc914 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 8, 2026
## What's Changed
* feat(models): add Claude Haiku 5.5 and retire Sonnet 5 and Opus 5 to legacy by @juliusmarminge in pingdotgg/t3code#16903
* fix(web): iPhone Duo folds animate, center on the hinge, and keep the phone's orientation by @gabrielelpidio in pingdotgg/t3code#16885
* fix(server): Claude 5-series models always run 1M context by @juliusmarminge in pingdotgg/t3code#16908
* fix(desktop): setup prompts name a t3 that runs on desktop installs by @juliusmarminge in pingdotgg/t3code#16676
* feat(desktop): install the t3 command from Settings by @juliusmarminge in pingdotgg/t3code#16683
* fix(web): show live names in thread-read activity by @Bil0000 in pingdotgg/t3code#13140
* feat(mobile): adopt v5 navigation and native iPad columns by @juliusmarminge in pingdotgg/t3code#16733
* fix(mobile): Android composer picker scrolls past the first four rows by @shivamhwp in pingdotgg/t3code#15856
* fix(desktop): sign-in and captchas work again in desktop browser tabs by @juliusmarminge in pingdotgg/t3code#16939
* fix(server): missing project folders no longer log favicon warnings by @yordis in pingdotgg/t3code#16757
* fix(server): unload Codex threads left idle on the shared app-server by @RhysSullivan in pingdotgg/t3code#16917
* fix(web): fast typing no longer scrambles text when type-to-focus kicks in by @otavio in pingdotgg/t3code#14595
* fix(web): simplify workspace card rows by @Bil0000 in pingdotgg/t3code#16823
* fix(web): Copy MCP URL shows up for environments reached over plain http by @SunkenInTime in pingdotgg/t3code#16909
* fix(web): C#, Java, PHP and 11 other languages get file icons by @juliusmarminge in pingdotgg/t3code#16974
* feat(clients): live row shows the agent's latest thought by @t3dotgg in pingdotgg/t3code#16284
* feat(web): block-level Markdown in the rich text composer by @chrisdeeming in pingdotgg/t3code#14677
* fix(web): center project monograms in settled rows by @Aforno in pingdotgg/t3code#16841
* fix(web): cancelling a new citation no longer leaves a stray space by @Aforno in pingdotgg/t3code#16828
* fix(settings): provider updates show live progress instead of a bare spinner by @shivamhwp in pingdotgg/t3code#16958
* feat(web): find in diffs with Cmd+F by @juliusmarminge in pingdotgg/t3code#14623
* refactor(server): GitHub services are named for the API they call, not gh by @juliusmarminge in pingdotgg/t3code#16967
* refactor(server): GitHub GraphQL batches use variables and share one pager by @juliusmarminge in pingdotgg/t3code#16960
* refactor(server): GitHub source control reads GitHubApi directly by @juliusmarminge in pingdotgg/t3code#16982
* refactor(server): GitHub rate limits read the response headers by @juliusmarminge in pingdotgg/t3code#16986

## New Contributors
* @RhysSullivan made their first contribution in pingdotgg/t3code#16917
* @Aforno made their first contribution in pingdotgg/t3code#16841

**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261007.2787...v0.0.46-nightly.20261008.2801

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261008.2801
github-actions Bot added a commit to davidvanderklay/t3code-flake that referenced this pull request Oct 8, 2026
## What's Changed
* feat(models): add Claude Haiku 5.5 and retire Sonnet 5 and Opus 5 to legacy by @juliusmarminge in pingdotgg/t3code#16903
* fix(web): iPhone Duo folds animate, center on the hinge, and keep the phone's orientation by @gabrielelpidio in pingdotgg/t3code#16885
* fix(server): Claude 5-series models always run 1M context by @juliusmarminge in pingdotgg/t3code#16908
* fix(desktop): setup prompts name a t3 that runs on desktop installs by @juliusmarminge in pingdotgg/t3code#16676
* feat(desktop): install the t3 command from Settings by @juliusmarminge in pingdotgg/t3code#16683
* fix(web): show live names in thread-read activity by @Bil0000 in pingdotgg/t3code#13140
* feat(mobile): adopt v5 navigation and native iPad columns by @juliusmarminge in pingdotgg/t3code#16733
* fix(mobile): Android composer picker scrolls past the first four rows by @shivamhwp in pingdotgg/t3code#15856
* fix(desktop): sign-in and captchas work again in desktop browser tabs by @juliusmarminge in pingdotgg/t3code#16939
* fix(server): missing project folders no longer log favicon warnings by @yordis in pingdotgg/t3code#16757
* fix(server): unload Codex threads left idle on the shared app-server by @RhysSullivan in pingdotgg/t3code#16917
* fix(web): fast typing no longer scrambles text when type-to-focus kicks in by @otavio in pingdotgg/t3code#14595
* fix(web): simplify workspace card rows by @Bil0000 in pingdotgg/t3code#16823
* fix(web): Copy MCP URL shows up for environments reached over plain http by @SunkenInTime in pingdotgg/t3code#16909
* fix(web): C#, Java, PHP and 11 other languages get file icons by @juliusmarminge in pingdotgg/t3code#16974
* feat(clients): live row shows the agent's latest thought by @t3dotgg in pingdotgg/t3code#16284
* feat(web): block-level Markdown in the rich text composer by @chrisdeeming in pingdotgg/t3code#14677
* fix(web): center project monograms in settled rows by @Aforno in pingdotgg/t3code#16841
* fix(web): cancelling a new citation no longer leaves a stray space by @Aforno in pingdotgg/t3code#16828
* fix(settings): provider updates show live progress instead of a bare spinner by @shivamhwp in pingdotgg/t3code#16958
* feat(web): find in diffs with Cmd+F by @juliusmarminge in pingdotgg/t3code#14623
* refactor(server): GitHub services are named for the API they call, not gh by @juliusmarminge in pingdotgg/t3code#16967
* refactor(server): GitHub GraphQL batches use variables and share one pager by @juliusmarminge in pingdotgg/t3code#16960
* refactor(server): GitHub source control reads GitHubApi directly by @juliusmarminge in pingdotgg/t3code#16982
* refactor(server): GitHub rate limits read the response headers by @juliusmarminge in pingdotgg/t3code#16986

## New Contributors
* @RhysSullivan made their first contribution in pingdotgg/t3code#16917
* @Aforno made their first contribution in pingdotgg/t3code#16841

**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261007.2787...v0.0.46-nightly.20261008.2801

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261008.2801
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews size:XS 0-9 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant