From ca80c0bd5b06a347bb95db1752e38e3c12674284 Mon Sep 17 00:00:00 2001 From: nunreasonable Date: Mon, 24 Aug 2026 16:40:02 -0300 Subject: [PATCH 1/2] =?UTF-8?q?fix(crash):=20ponte=20injetada=20pelo=20nav?= =?UTF-8?q?egador=20n=C3=A3o=20=C3=A9=20bug=20do=20jogo=20=E2=80=94=20=5F?= =?UTF-8?q?=5FgCrWeb=20para=20de=20abrir=20issue=20(#428)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A #428 chegou como classe `codigo`, alpha.182, com origem e stack apontando para a PRÓPRIA PÁGINA: ReferenceError: Can't find variable: __gCrWeb Origem: https://www.csbrasil.online/:1:9 Stack: global code@https://www.csbrasil.online/:1:9 `__gCrWeb` é a ponte JS que o Chrome para iOS injeta em toda página. Não é defeito do jogo, e a prova é tripla. O nome NÃO existe em nenhum arquivo do repositório e `git log --all -S` não devolve um único commit para ele. O fingerprint publicado reproduz EXATAMENTE `crashFingerprint('error', , 'https://www.csbrasil.online/:1:9')` — `d85ae7e1` —, ou seja o `e.filename` é a própria página, `lineno=1`, `colno=9`. E o único frame é `global code@`: nenhum arquivo do jogo aparece na pilha. Não é incidente isolado: é uma FAMÍLIA que já reincidiu quatro vezes, mesma forma, e as três anteriores foram fechadas À MÃO sem que nada no código as impedisse de voltar — a #428 é a volta. #379 `__firefox__` (fp 470752a2), #380 `window.__firefox__.reader` (fp 7122f83c) e #381 `DarkReader` (fp cd468274), todas com origem `/:1:N` e frame único `global code@`. Causa: o `isExternalCrash` inocenta por ORIGEM, e o WebKit reporta script injetado no mundo da página com o filename da página. O atalho `if (sourceOrigin === ownOrigin) return false;` decidia "é nosso" antes de qualquer outra prova, nenhuma das regex seguintes mordia (OPAQUE_RE, AMBIENTE_RE, CACHE_SPLIT_RE, RECOVERABLE_RE, MEDIA_ABORT_RE) e o `classifyCrash` caía no `return 'codigo'` final, que escala. O corte é por NOME e NÃO pela forma, e isso foi medido, não escolhido. A tentação óbvia era cortar "pilha de frame único `global code@/:1:N`". Ela REPROVA: a linha 1 do `dist/client/index.html` tem 268 caracteres e o `compressHTML` do Astro cola o ``, o ``, o comentário e o NOSSO primeiro `