You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(desktop): WhatsApp Web rejects a current Chromium browser as outdated #5
Opening https://web.whatsapp.com/ in T3 Code Nightly's desktop browser displays “WhatsApp works with Google Chrome 100+” instead of the login screen.
Observed evidence
Reproduced in the persistent Default profile.
Desktop identity reports Chromium 152.0.7977.167, Electron 44.9.3, and T3 Code Nightly 0.1.4-nightly.20261027.3770 on macOS.
WhatsApp's loaded ua-parser-js identifies the original identity as Electron 44.9.3, while correctly identifying its engine as Blink 152.
Removing only the Electron/44.9.3 token makes the same parser identify Chrome 152.0.7977.167. Removing the T3 token alone has no effect.
The unsupported-browser response is already present in the initial HTML. A JavaScript-only override after navigation cannot fix that response.
During diagnosis the preview backend changed to the server browser, presenting as Chrome 156. That separate route reached the QR-code login screen. This does not verify a fix in the original Electron browser.
Intended fix
Keep WhatsApp Web usable inside T3's desktop browser by applying the smallest site-specific browser-identity adjustment before the initial request. Preserve the actual Chromium version, native identity on other sites, Default-profile storage, and unrelated tabs. Keep request and page identities consistent.
Do not globally rewrite Electron's identity: the existing desktop code records a Cloudflare Turnstile regression when doing so.
Validation required
A failing regression test before the fix.
WhatsApp's initial request and page identity omit the Electron token.
Leaving WhatsApp restores the native identity; unrelated tabs and subframes do not change it.
Focused desktop tests and affected-file checks.
Explicitly distinguish source verification, Electron runtime verification, and real WhatsApp acceptance.
Work log
Diagnosis is complete. Implementation and regression coverage are starting. No code or persistent browser settings were changed during diagnosis. The running installation has not been patched or restarted.
🤖 gpt-6.1-sol responding on behalf of OsirisMedici
Title
Regression reproduced before implementation.
Domain / Area
T3 Code desktop browser sessions.
What Exactly Happened
The initial WhatsApp request retains Electron/44.9.3. WhatsApp's parser reads this as Electron 44 even though Chromium is version 152.
What We Did
Added regression coverage in the existing BrowserSession.test.ts suite for the initial request/page identity, leaving WhatsApp, exact-origin matching, subframe/resource isolation, and lowercase header handling.
Outcome
Ran bun run test src/preview/BrowserSession.test.ts from apps/desktop against the unchanged implementation: 3 failed, 9 passed. The first failure shows the outgoing header still containing the Electron token. Implementation is next.
Reused existing installed dependencies after comparing the root, desktop, shared, and contracts dependency declarations. No lockfile or dependency-version changes. No running application restart or installed-build mutation.
Proof of work (screenshots)
The original failure screenshot was supplied in the task. This update is backed by the regression-test output; no additional screenshot uploaded.
🤖 gpt-6.1-sol responding on behalf of OsirisMedici
Title
Source fix implemented and verified with Electron 44.9.3.
Domain / Area
T3 Code desktop browser request identity and guest preload.
What Exactly Happened
A native Electron fixture caught an important constraint: calling webContents.setUserAgent during onBeforeSendHeaders aborts the pending navigation with ERR_ABORTED (-3). The initial mocked tests did not reveal this. That implementation was replaced before handoff.
What We Did
Added an exact-origin identity helper for https://web.whatsapp.com that removes only the Electron token and retains the actual Chrome version and T3 identity.
Restricted the request interceptor to WhatsApp Web. It adjusts the outgoing User-Agent without changing the session or WebContents identity.
Applied the matching navigator.userAgent and navigator.appVersion values in the existing preview preload, before website scripts execute.
Kept other origins, native client hints, Default-profile storage, and unrelated tabs unchanged.
Updated the existing browser-session tests to cover both the request and page identity, exact-origin boundaries, other origins and subframes, lowercase/missing headers, and background requests. They also prevent reintroducing the navigation-aborting setter.
Outcome
Source verification passed.
bun run test src/preview/BrowserSession.test.ts from apps/desktop: 13 passed.
Scoped desktop typecheck: passed.
Lint and formatting for all four changed source/test files: passed.
git diff --check: passed.
Native runtime verification passed. An isolated, hidden Electron 44.9.3 process used Chromium 152.0.7977.167 and a local HTTP fixture. It exercised the production request handler and identity helper, mapping the local fixture URLs to the test origins. Verified the first outgoing request, identity observed by the first inline script, unchanged Chromium 152 client hints, native identity on other-origin resources and a separate tab, and native request/page identity after navigating away.
This was a local native fixture, not a real WhatsApp acceptance test. No login, message, profile migration, running-app restart, installed-build replacement, commit, push, or PR was performed. The source changes are local and uncommitted. Keep this issue open until the updated desktop build reaches WhatsApp's login screen in the real product.
Proof of work (screenshots)
No new screenshots are claimed. The original failure screenshot is in the task. Native runtime transcript:
Manual acceptance on an updated desktop build: open WhatsApp Web in Default, confirm the QR/login screen replaces the unsupported-browser message, then navigate the same tab to another site and confirm its native Electron identity. This acceptance remains outstanding.
Activity
OsirisMedici commentedon Oct 28, 2026
Note
🤖 gpt-6.1-sol responding on behalf of OsirisMedici
Title
Regression reproduced before implementation.
Domain / Area
T3 Code desktop browser sessions.
What Exactly Happened
The initial WhatsApp request retains
Electron/44.9.3. WhatsApp's parser reads this as Electron 44 even though Chromium is version 152.What We Did
Added regression coverage in the existing
BrowserSession.test.tssuite for the initial request/page identity, leaving WhatsApp, exact-origin matching, subframe/resource isolation, and lowercase header handling.Outcome
Ran
bun run test src/preview/BrowserSession.test.tsfromapps/desktopagainst the unchanged implementation: 3 failed, 9 passed. The first failure shows the outgoing header still containing the Electron token. Implementation is next.Reused existing installed dependencies after comparing the root, desktop, shared, and contracts dependency declarations. No lockfile or dependency-version changes. No running application restart or installed-build mutation.
Proof of work (screenshots)
The original failure screenshot was supplied in the task. This update is backed by the regression-test output; no additional screenshot uploaded.
OsirisMedici commentedon Oct 28, 2026
Note
🤖 gpt-6.1-sol responding on behalf of OsirisMedici
Title
Source fix implemented and verified with Electron 44.9.3.
Domain / Area
T3 Code desktop browser request identity and guest preload.
What Exactly Happened
A native Electron fixture caught an important constraint: calling
webContents.setUserAgentduringonBeforeSendHeadersaborts the pending navigation withERR_ABORTED (-3). The initial mocked tests did not reveal this. That implementation was replaced before handoff.What We Did
https://web.whatsapp.comthat removes only the Electron token and retains the actual Chrome version and T3 identity.navigator.userAgentandnavigator.appVersionvalues in the existing preview preload, before website scripts execute.Outcome
Source verification passed.
bun run test src/preview/BrowserSession.test.tsfromapps/desktop: 13 passed.git diff --check: passed.Native runtime verification passed. An isolated, hidden Electron 44.9.3 process used Chromium 152.0.7977.167 and a local HTTP fixture. It exercised the production request handler and identity helper, mapping the local fixture URLs to the test origins. Verified the first outgoing request, identity observed by the first inline script, unchanged Chromium 152 client hints, native identity on other-origin resources and a separate tab, and native request/page identity after navigating away.
This was a local native fixture, not a real WhatsApp acceptance test. No login, message, profile migration, running-app restart, installed-build replacement, commit, push, or PR was performed. The source changes are local and uncommitted. Keep this issue open until the updated desktop build reaches WhatsApp's login screen in the real product.
Proof of work (screenshots)
No new screenshots are claimed. The original failure screenshot is in the task. Native runtime transcript:
Manual acceptance on an updated desktop build: open WhatsApp Web in Default, confirm the QR/login screen replaces the unsupported-browser message, then navigate the same tab to another site and confirm its native Electron identity. This acceptance remains outstanding.