Repository navigation
fix(web): telas pelo navegador no desktop, Firefox/Safari e miniapps sem HTTPS - #865
Merged
Merged
Conversation
…sem HTTPS - Receptor nativo do desktop (Windows e macOS): com SDP Main, aceita o Constrained Baseline com constraint_set1 que o encoder por software do navegador (OpenH264) envia. Antes ele recusava o SPS e a tela ficava carregando para sempre. A regra fica em DecodesAsH264Profile, com caso novo no probe nativo. - Web: compartilhar tela usa a mesma regra do runtime (encoder H.264 Main). No Firefox e no Safari o botão fica travado, com o motivo na dica e no aviso. - Web: assistir mostra mensagem clara quando o navegador não recebe o formato da tela, e uma tela cujo vídeo chega mas nunca decodifica passa a ser "não suportada", não falha de conexão. - Miniapps na web: o carregador avisa o app quando o miniapp tenta um serviço http/ws (bloqueado como conteúdo misto), e o app explica o motivo. Refs #858 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
lucastaonline
force-pushed
the
lucastaonline-web-navegadores
branch
from
November 5, 2026 13:57
e059738 to
800c338
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Correções dos bugs que o desenvolvedor achou na versão publicada (https://monkyweb.vercel.app), com a causa raiz de cada um investigada antes.
1. Edge publica tela no SFU e "ninguém consegue assistir" (o mais grave)
42 c0 .., comconstraint_set1) mesmo com o SDP negociando Main. O receptor nativo (ValidateSpsno Windows, e a mesma regra no macOS com VideoToolbox) exigiaprofile_idc 77e descartava todo quadro. Resultado: PLI atrás de PLI, 0 quadros decodificados e o "carregando para sempre".--disable-accelerated-video-encode(OpenH264),framesDecoded = 0. Também li o SPS real dos dois encoders.constraint_set1 = 1declara que o bitstream respeita o perfil Main, então um receptor Main deve aceitá-lo. A regra fica num lugar só (DecodesAsH264Profile, emh264_bitstream) e vale para Windows e macOS. Baseline semconstraint_set1continua recusado.adapter_policy_probe.cc), que roda no build nativo do CI.2. Firefox e Safari: o botão de compartilhar tela ficava liberado e não funcionava
screenShareda web só olhava se ogetDisplayMediaexiste, enquanto o runtime de tela também exige encoder H.264 Main. O Firefox (OpenH264) e o Safari (VideoToolbox) só oferecem Constrained Baseline/High no WebRTC.webScreenCapabilities()do próprio runtime. O botão fica travado pela regra central, com o motivo na dica e no aviso: "Este navegador não transmite tela no formato do Monky (H.264). Use o Chrome ou o Edge, ou o app desktop."3. Firefox e Safari: assistir tela
decodingInfo, e depois a tela nunca mostra um quadro. Ela caía no genérico "Não foi possível estabelecer ou manter esta transmissão". Agora, se o prazo do primeiro quadro termina com vídeo chegando e nada decodificado, o motivo é o decodificador ("não suportado"), e a mensagem só sugere pedir H.264 quando o navegador recebe H.264.4. NES (miniapp do MonkyBot)
http://147.15.118.243:7780/ws://…:7781. O navegador bloqueia isso como conteúdo misto antes de qualquer CSP, então afrouxar o CSP não resolve.http:/ws:fora dolocalhost. O app mostra o motivo no feedback compartilhado. A chamada original segue igual.Safari (testado num Safari 26.6 de verdade, runner macOS do GitHub)
Funcionam:
getDisplayMedia;Não existe File System Access, então soundboard e figurinhas usam o armazenamento do navegador. O H.264 do WebRTC só tem
640c1fe42e01f, com AV1, VP8 e VP9 ao lado, por isso o Safari entra nos itens 2 e 3.Não dá para garantir sem um Mac com pessoas: voz, câmera e áudio reais. O runner não tem dispositivos, e o Safari pede permissão por clique.
Testes
webScreenPublisher.test.ts: capabilities do Firefox e do Chromium. A capability segue o runtime, ebrowserReceivesScreenCodecé testada.browserScreenSubscription.test.cjs: vídeo que chega e não decodifica dá "não suportado"; sem vídeo dá falha de conexão.webMiniapps.test.cjs(novo, já no scripttest): avisahttp/wsuma vez por origem e ignora HTTPS elocalhost.desktopOnlyDom.test.cjs: dica e aviso com o motivo.Cada teste novo falha sem a correção. Também passaram
npm run build,ci:local --only "^docs "etest-native-ci.Refs #858