Skip to content

fix(engine): default channel cascade to managed chromium, not system chrome#65

Merged
fusengine merged 2 commits into
mainfrom
fix/cascade-chromium-default
Jun 8, 2026
Merged

fix(engine): default channel cascade to managed chromium, not system chrome#65
fusengine merged 2 commits into
mainfrom
fix/cascade-chromium-default

Conversation

@fusengine

Copy link
Copy Markdown
Owner

Bug (reproduit sur serveur réel — hermes)

La cascade 0.1.50 préférait channel:chrome (Google Chrome système). Sur certains serveurs Linux, ce binaire se lance mais n'a aucune route réseauERR_INTERNET_DISCONNECTED sur toute navigation. La cascade ne peut pas récupérer : elle ne retombe que sur une erreur de binaire absent (launch), pas sur un échec runtime de navigation → elle servait un browser sans réseau.

Preuve hôte réel : channel:chrome → -106 partout ; channel:chromium (Chrome-for-Testing géré) → 200 ; bundlé → 200.

Fix

Cascade par défaut [chromium, undefined] : le Chromium géré (new headless, pas de HeadlessChrome dans sec-ch-ua, WebGL réel — même furtivité haut-signal, la marque passe juste de Google Chrome à Chromium) puis le shell bundlé. chrome/msedge* deviennent opt-in via channel explicite. channel:"chromium" est désormais sélectionnable (type + schéma) avec une description qui guide l'agent (omettre = défaut sûr).

Validation

  • macOS défaut → propre (pas de HeadlessChrome, webdriver false, sec-ch-ua Chromium)
  • hôte cassé → atteint Google (chromium=200)
  • tsc clean · 194 unit · 20 intégration.

fusengine added 2 commits June 8, 2026 23:32
…chrome

The 0.1.50 cascade preferred channel=chrome (system Google Chrome). On some Linux servers the system chrome binary launches fine but has no network route (ERR_INTERNET_DISCONNECTED) — proven on a real host where channel=chrome fails on every navigation while the managed Chrome-for-Testing (channel=chromium) and the bundled shell both return 200. The cascade cannot recover from this: it only falls through on a missing-binary launch error, not a runtime navigation failure, so it served a network-dead browser.

Default cascade is now [chromium, undefined]: the Playwright-managed full Chromium build (new headless, no HeadlessChrome in sec-ch-ua, real WebGL — same high-signal stealth, only the brand reads Chromium instead of Google Chrome) then the bundled shell. System chrome/msedge are opt-in via explicit channel. Exposes channel:"chromium" in the type + Zod enum and documents the tradeoff in the channel description so agents pick correctly (omit = safe default). Verified: macOS default stays clean (no HeadlessChrome, webdriver false, sec-ch-ua Chromium), the broken host now reaches Google. tsc clean, 194 unit + 20 integration green.
@fusengine fusengine merged commit f01b6f1 into main Jun 8, 2026
1 check passed
@fusengine fusengine deleted the fix/cascade-chromium-default branch June 8, 2026 21:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant