▶ JOGAR
versão em produção · vNão

Changelog

Tudo que mudou, versão por versão. A versão em produção é a vNão. O arquivo completo vive em CHANGELOG.md no repositório - esta página é ele, renderizado.

vNão · lançado — 2026-10-06#

Corrigido

  • Multiplayer: removida a caixa fixa de diagnóstico com FPS, snapshots, jitter, banda e ping. A coleta continua alimentando a telemetria de qualidade por sessão.
  • #696 — assert:assets reprovava com o pacote público mesmo depois do fetch. O audio-pack-v8 (445 entradas, medido em 04/10/2026 no diretório central do zip) não tem pasta ambiente/ nem a chave mapSoundscapes, e o conserto — prepare-public-preview.mjs — era chamado SÓ pelo workflow de preview. scripts/fetch-audio.sh agora termina a preparação em todo caminho público (ensure-map-soundscapes.mjs, que instala mapSoundscapes nos 18 mapas com o hum que o jogo sintetiza; o pack privado não passa por ele, porque ambiência real que falta tem de reprovar o build). eval:audioruntimeassets passa a provar os TRÊS estados do contrato — cru = vermelho, preparado = verde, parcial = vermelho — chamando o assert:assets real.
  • #741 — a graffiti-editorial-check media layouts que ninguém vê. O TypeError de fy_corrego (id que virou corrego) era a ponta visível: as cláusulas religioso-vulgar, putin e rostos-carecas comparavam com fy_corrego e passavam verdes sem medir nada — os três mutantes eram cegos. NOVOS passou a listar os ids que o jogo pede no grafitar({id}) (escadao, campomorro), e a exigência de tabela nominal em Lajes saiu: o layout assado tem 4 tags e nenhum decal vetado. Sobraram 4 vermelhos, todos de conteúdo — ver a issue.

Adicionado

  • O topo da home agora permite desligar e religar a música do menu; a escolha fica salva no navegador. A rotação da intro usa apenas m11, m14, m16, m17 e m22, retirando as três faixas com voz da seleção anterior.
  • Contador central de SEQUÊNCIA mostra os abates da vida atual confirmados pelo jogo/servidor, com identidade visual do CSBrasil; morte, round e reconexão o zeram sem apagar o total da partida. Régua eval:killstreak cobre SP e MP com seis mutantes.
  • Contador de ABATES do jogador no HUD, na coluna de estado dele: algarismo grande com rótulo miúdo, conta a PARTIDA (não o abate do time nem o da rodada) e não zera na virada de round — antes o número pessoal só existia atrás do TAB. Régua eval:abateshud com quatro mutantes, no check:fast.
  • Sertão da Treta substitui o Velho Oeste: casario de taipa, Caatinga, Canudos, calango quadrúpede, aves, cabras e galinha com pintinhos. Preview real com vídeo silencioso ao passar o mouse; criação com caminhada e pausas. O memorial de Padre Cícero permanece fora desta entrega.
  • Camada operacional (tools/ops/, npm run ops:diag): o jogo diagnostica boot, deploy, assets no edge, APIs, telemetria, ranking e partida sintética e explica cada achado com causa provável, evidência, impacto e próximo passo; separa "tecnicamente verde" de "pronto para lançamento". Mutantes em ops:selftest e unidades em ops:test, os dois no check:fast.
  • public/js/ops.js: sinais da sessão no navegador (marcos de boot, FPS em partida, falhas de carga, contexto WebGL, erros de partida, abandono) expostos em window.__csbOps e como migalhas do relatório de erro — sem endpoint novo, sem desenhar nada.
  • Runbook docs/runbooks/operacao-autonoma.md: como diagnosticar, recuperar por classe de achado e reverter site, edge, backend e banco.
  • npm run ops:aquecer e o passo no prod-watch.yml: depois do purge de cada deploy, o edge é aquecido com os módulos e todos os assets que a produção pede (111 MISS de 112 logo após a alpha.224 → HIT).
  • ops-diag.yml: a diagnose com navegador roda a cada hora e vira issue ops-diag em vermelho; portao-browser.yml passa a rodar eval:boot e as provas de navegador da camada operacional em PR que toca o boot.
  • O beacon de /api/perf leva o resumo do ops.js (boot, FPS p50/p5, falhas de carga, sessão anterior) e o relatório de crash diz onde a sessão anterior parou; a sonda de navegador usa a GPU do Mac sozinha e o elenco é sondado pelo glbchars.js que a produção serve.

Corrigido

  • O Campinho da Quebrada ganha cobertura nos dois portões e nas laterais, placar de várzea e navegação contínua nas quinas, preservando duas rotas separadas em CTF e partidas 5x5/8x8.
  • Funkeiros e Tribos Urbanas voltam a usar somente os pools de voz históricos da v7. As 36 falas Gemini rejeitadas deixam de ser alcançáveis pelos resolvers de evento, rádio e seleção; se o pack contiver apenas takes novos sem aprovação, o runtime fica em silêncio. Voz genérica, Web Speech e música removida continuam ausentes.
  • Lobisomem Mítico deixa de puxar aliados de outras facções, passa a resolver M nas telas de inspeção, usa luva M distinta no viewmodel, ganha animação própria com pés no chão e volta a publicar os retratos de resultado aprovados, que tinham saído do quadro medido no elenco.
  • O pack integrado do Lobisomem passa a servir os clipes próprios na sequência do runtime, com o fallback compartilhado preservado só para comparação e regressão.
  • No Sertão, as três carroças deixam passagem pelos dois flancos e as cinco casas diante dos respawns passam a ter porta, saída lateral, janela com revide e navegação intencional para bots.
  • As casas abertas da Praça da Matriz no Sertão preservam cobertura nas laterais das janelas, circulação interna livre e passagem dos bots junto aos esteios.
  • Em rodada de FACA os bots passam a jogar de faca: fecham até o alcance real da arma (medido 5,98 m e zero golpes em 60 s antes; 1,24 m, 18 golpes e 9 abates depois) e o golpe sai como faca — sem traçante, fogacho de cano nem som de tiro. A banda de distância de arma de fogo continua valendo na rodada normal. Régua eval:botfaca com três mutantes, no check:fast.
  • O headshot do jogador não arranca mais a câmera da primeira pessoa: a replay orbital e o hit-stop do #364 saíram, e o abate continua contando com hitmarker, dano, killfeed e locutor. Régua eval:replaycam passou a medir o contrário, com quatro mutantes.
  • Single Player voltou a abrir o submenu de MATA-MATA e CAPTURE A BANDEIRA (CTF), que segue para a seleção de mapas com o modo escolhido.
  • eval:boot voltou a rodar: a fixture do boot-check.mjs ancorava na assinatura antiga de _startGame (mudada no #489) e reprovava antes de medir; agora ancora no nome da função.
  • Os contadores do menu (/api/online e /api/map-plays) tentam de novo no cold start do backend (503 na primeira chamada, medido 06/09) em vez de ficar vazios.
  • O proxy da rede de segurança do site repassa a geo da borda (x-vercel-ip-*); a diagnose distingue city parado com presence viva (ingestão parada, corosolto/backend#22) de "ninguém jogou".
  • O build privado volta a carregar os 16 anúncios Fish, as 36 falas finais dos nove Funkeiros e somente as oito músicas aprovadas do menu.
  • Palhaços e Funkeiros sem take próprio deixam de tocar dublagem genérica; os Funkeiros preservam somente as 36 falas aprovadas.
  • A primeira fala de kill não é mais bloqueada por uma seleção ou chamada de rádio imediatamente anterior.
  • O empacotador limpa saídas anteriores e reconhece uma AWP CC0 catalogada sem confundi-la com áudio legado pelo nome.
  • Tiros ficam abaixo das vozes e a contingência original restaura falas, rounds e kill streaks em single-player e multiplayer.
  • O multiplayer reconhece inputs por sequência e suaviza correções sem apagar movimento pendente.
  • Arma, slots, pente, reserva e recarga passam a ser autoritativos no protocolo snapshot v4.
  • Trocas de arma remotas remontam a malha visível; clientes lentos não acumulam snapshots obsoletos.
  • A qualidade envia magnitude das correções para diagnóstico por sessão e round.
  • Multiplayer não vaza mais para a partida single-player depois de voltar ao menu.
  • O primeiro spawn e o respawn online obedecem imediatamente à posição autoritativa.
  • Captura de bandeira passa a receber placar, progresso, donos e relógio pelo snapshot v3.
  • Slots abandonados voltam à IA e as salas oficiais passam de 5v5 para 4v4.
  • O catálogo in-game usa a mesma versão v8 do pacote de áudio baixado no build.
v2.1.0-alpha.62 · 2026-10-09#

Mudado

  • fix(lados): alinhar carta azul e criação de sala ao contrato E×B (#770)
  • feat(elenco): integra personagens, Piscina e qualidade multiplayer (#773)
  • fix(eval): congela dívida por personagem
  • docs(pr773): registrar candidato final com multiplayer
  • docs(mp): registrar candidatos pareados finais
  • fix(mp): remover facções ignoradas da sala por convite
  • docs(pr773): fecha candidato integrado
  • docs(ci): registra prova de desempenho do portão
  • perf(ci): evita varrer assets no gerador de docs
  • docs(piscina): fecha validação da pilha visual
  • docs(pr773): registra smoke e gates alpha.61
  • docs(piscina): registra integração visual
  • test(piscina): mede geometria construída
  • test(piscina): trava separação dos acabamentos
  • Corrige import dos metadados do site
  • test(chat): preservar cliques reais no smoke
  • fix(piscina): elimina cintilação das faixas azuis
  • test(chat): observar avisos transitorios sem corrida
  • Troca os nomes reais de Julia e Marina por apelidos
  • Registra a skill da fábrica de personagens e skins
  • Adiciona as thumbnails de seleção que faltavam
  • Regenera as contagens geradas de docs
  • Regera a mídia dos dez políticos dos modelos novos
  • Registra a rodada da fábrica no ledger do PR #773
  • Troca Xandão, Professor e Juiz pela segunda geração
  • Troca sete políticos pelos modelos da fábrica
  • Adiciona desvirador de triângulos invertidos
  • Seleciona vermelho, claro e mapa no retoque de textura
  • Regenera as contagens geradas de docs
  • Retargeta a clavícula em delta, não em absoluto
  • Adiciona OMB1: clavícula do idle perto do repouso
  • Assenta a morte só onde o corpo atravessa o chão
  • Troca o modelo da Dama pelo gerado do concept novo
  • Adiciona retoque de textura por faixa do corpo
  • feat(piscina): usa a água viva no lugar da lâmina fosca
  • feat(piscina): mobiliário Mint sobre os colisores de sempre
  • assets(piscina): mobiliário Mint dos contratos do plano 25
  • Trava o rosto do retrato pelo concept da ficha
  • Adiciona os concepts 2D dos outros nove políticos
  • Adiciona as fichas de concept dos dez políticos
  • Adiciona gerador de concept de personagem por ficha
  • Regenera as contagens geradas de docs e ARCH
  • Adiciona o concept 2D da Dama para o modelo 3D
  • Corrige o enquadramento das artes de resultado
  • Pinta o contorno dos políticos com a cor do lado
  • fix(chat): keep status notices visible longer
  • fix(chat): keep status notices visible longer
  • fix(deps): update sharp lock for CI
  • fix(deps): update sharp lock for CI
  • fix(deps): update sharp lock for CI
  • fix(deps): preserve Linux optional npm peers
  • fix(deps): preserve Linux optional npm peers
  • fix(deps): preserve Linux optional npm peers
  • docs: regenerate after main sync
  • fix(deps): atualiza sharp para versao corrigida
  • docs(mp): registra reparo do gate de dependencias
  • fix(deps): atualiza sharp para versao corrigida
  • docs(mp): registra correcao de dependencias
  • fix(deps): atualiza sharp para versao corrigida
  • chore(pr773): atualiza recibo de midia
  • chore(pr773): atualiza snapshot de escala
  • docs(pr773): atualiza recibos de Julia e Marina
  • chore(personagens): atualiza mídia da Marina
  • fix(personagens): troca Marina para vestido midi
  • chore(personagens): atualiza mídia da Julia
  • fix(personagens): remodela as pernas da Julia
  • docs(pr773): registra checkpoint da Julia
  • fix(personagens): refina silhueta da Julia
  • fix(eval): estabiliza semente da simulacao
  • fix(deps): preserva entradas opcionais do lockfile
  • fix(deps): atualiza sharp para versao corrigida
  • docs(pr773): registra merge da main e gates verdes
  • docs(pr773): registra retarget das novas politicas
  • fix(personagens): retarget clipes da Julia e Marina
  • docs: atualizar checkpoint da fila de prs
  • docs(prs): atualizar merge da fila
  • docs(prs): registrar estado da fila de merge
  • feat(personagens): publicar midia de Julia e Marina
  • docs(pr773): atualizar próximo passo e checkpoint
  • test(personagens): atualizar sonda com Julia e Marina
  • docs: regenerar índices do elenco com main
  • chore(docs): regenera bloco derivado (autofix)
  • docs: regenerar autoria da branch MP
  • docs(mp): atualizar handoff do painel NET
  • fix(mp): remove o overlay de diagnóstico
  • docs(pr773): registra roster politico 5-5
  • fix(personagens): restringe Xandao ao Time E
  • docs(pr773): anota checkpoint de Julia e Marina
  • feat(personagens): adiciona Julia e Marina ao elenco político
  • Record Mint MCP enablement for PR 773 continuation
  • Record Mint Dama rig review and credit observations
  • Record Mint Dama previews and guarded 3D candidate
  • Prepare reviewed Mint prompts for PR773 characters
  • Save review-mode Mint prompt for PR773 Dama
  • Record PR773 full body style baseline and Mint regeneration brief
  • Document PR773 local hair rejection and 3D gate
  • Prepara brief verificavel para refazer modelos politicos
  • Baixa a camera orbitada e atualiza capturas da Dama
  • Registra estado e evidencia visual do PR 773
  • Renderiza avatares politicos a partir dos GLB do jogo
  • Remove Agitador do elenco e dos assets
  • Permite orbitar a camera sem desviar a mira em terceira pessoa
  • fix(mp): manter painel de rede fora dos controles moveis
  • fix(mp): reopen reachable exit from isolated bot route
  • docs(mp): record stacked integration PR
  • docs(mp): record combined browser gauntlet
  • docs(mp): record identity PR checkpoint
  • feat(mp): show server-assigned character identity
  • fix(mp): adapt remote interpolation to repeated snapshot jitter
  • docs(mp): record browser FPS gauntlet and rejected optimizations
  • docs(mp): clarify legacy embedded client SHA in baseline
  • fix(mp): aggregate reconciliation quality from correction events
  • docs(mp): record seven-day quality baseline and cohort limits
  • Dá fuzil à Dama e ao Senador
  • Assenta os políticos no chão com offset de pé por clipe
  • Regenera os blocos de docs e o índice do game.js
  • docs(mp): sync architecture index after ticket fix
  • fix(mp): keep tickets for official node selection
  • Regenera os blocos de docs e o índice do game.js
  • Leva a escolha de personagem para o multiplayer
  • fix(mp): measure snapshot gap p95 per active window
  • Traduz os blurbs e a categoria dos políticos para inglês
  • Adiciona artes e vídeos de seleção e resultado dos 9 políticos
  • Adiciona os avatares dos 9 personagens políticos
  • Põe os 9 políticos no elenco com lados travados
  • Adiciona os modelos e clipes dos 9 personagens políticos
  • fix(mp): honor explicit node without public ticket
  • Pede e recebe troca de personagem no protocolo multiplayer
  • Adiciona Game._trocarPersonagem para a escolha no meio da partida
  • Atualiza a régua dos Míticos para o roster por lado
  • fix(site): reflect Esquerda and Direita in public metadata
  • fix(mp): match room creator with fixed sides contract
  • fix(ui): align Direita selector card with blue palette
  • Regenera os blocos de docs e o índice do game.js
  • docs(mp): record alpha.48 browser and paired image
  • chore(mp): pair gauntlet with alpha.48 and Córrego routes
  • docs(mp): record paired browser gate and hotfix release
  • docs(mp): record alpha.47 base and hotfix gate
  • test(chat): stabilize spectator smoke across round transition
  • docs(mp): track Córrego CTF regression and isolated hotfix
  • docs(mp): record alpha.46 browser gate and parity incident
  • chore(mp): pair candidate with alpha.46 simulation
  • docs(mp): record three-client candidate gate
  • test(mp): capture candidate gameplay at 3:2
  • test(mp): restore browser shot gate for hub navigation
  • docs(mp): record alpha.45 deploy gate
  • docs(mp): refresh alpha.45 generated blocks
  • docs(mp): record restored parity and green smoke
  • docs(mp): record alpha.43 gates and parity recovery
  • chore(mp): refresh paired hash on alpha.43
  • fix(chat): hold mobile input through dismiss gesture
  • docs(mp): registrar gauntlet de telemetria no navegador
  • docs(mp): checkpoint RTT sampling and alpha.41 pair
  • fix(mp): aggregate websocket RTT across active windows
  • docs(mp): checkpoint RTT gauntlet evidence
  • chore(mp): retain sim hash on alpha.40
  • fix(mp): dispatch release to node sync
  • chore(mp): rebase Escadao gauntlet onto alpha.39
  • chore(mp): preserve sim hash on alpha.37 and checkpoint gauntlet
  • docs: record alpha.36 parity and review gates
  • fix: satisfy map review and generated documentation gates
  • docs: record alpha.35 rebase and validation
  • fix: orient Escadao team E spawns toward center exit
  • Tira a etapa de escolher o adversário do fluxo legado
  • Pinta a coluna da Direita de azul no placar
  • Troca o filtro de facção do hub por abas de lado
  • Embaralha o pool do elenco antes de sortear o time
  • Veste cada personagem com a cor do lado
  • Usa o lado escolhido no single-player
  • Escala o elenco de cada lado pelo pool único
  • Troca o brasão da Direita pela estrela azul e amarela
  • Renomeia os lados para Esquerda e Direita
  • Pinta o lado B de azul (Direita)
v2.1.0-alpha.61 · 2026-10-09#

Mudado

  • feat(sertao): reboco e pedra reais projetados em metros (#792)
  • feat(sertao): reboco e pedra reais projetados em metros
  • tools: emenda textura gerada no tom do mapa
v2.1.0-alpha.60 · 2026-10-08#

Mudado

  • feat(chat): aviso de retenção na tela de denúncia (#789)
  • Mark the report retention notice as done
  • Show retention notice on the chat report screen
v2.1.0-alpha.59 · 2026-10-08#

Mudado

  • feat(mp): JOGAR COM AMIGOS cria sala de convite num clique (#788)
  • chore(docs): regenerate derived line-count blocks
  • feat(mp): add one-click JOGAR COM AMIGOS room
  • feat(mp): share the room link on WhatsApp from the modal
  • feat(mp): record whether a node gates invite-only rooms
  • feat(mp): join invite-only rooms by code, no password
v2.1.0-alpha.58 · 2026-10-08#

Mudado

  • feat(mobile): prepare installable PWA beta (#786)
  • docs: align mobile PWA branch with current main
  • feat: localize mobile PWA install guidance
  • feat: prepare mobile PWA install beta
  • feat(mobile): present touch controls as web beta
  • feat(pwa): add mobile install manifest
v2.1.0-alpha.57 · 2026-10-08#

Mudado

  • fix(piscina): cartaz da coleção longe dos batentes (#793)
  • fix(piscina): cartaz da coleção longe dos batentes
  • feat(grafite): margem opcional de parede inteira por banda
v2.1.0-alpha.56 · 2026-10-07#

Mudado

  • perf(mp): skip graffiti pass on dedicated server (#787)
  • chore(docs): regenerate derived line-count blocks
  • chore(grafite): re-sign layout fingerprint for pass
  • perf(mp): skip graffiti pass on dedicated server
v2.1.0-alpha.55 · 2026-10-07#

Mudado

  • fix(deps): update sharp and lockfile peers (#784)
v2.1.0-alpha.54 · 2026-10-07#

Mudado

  • fix(docs): corrigir dependencias vulneraveis (#781)
  • docs(changelog): rodada do cronista — 12 commits (#782)
v2.1.0-alpha.53 · 2026-10-06#

Mudado

  • docs(ui): roadmap visual e bot de regressão (#756)
  • chore(docs): regenera bloco derivado (autofix)
  • docs(ui): fechar continuidade apos CI hospedada
  • docs(ui): registrar primeiro run hospedado
  • docs(ui): registrar runtime do portao local
  • docs(ui): atualizar blocos gerados para capturador
  • docs(ui): registrar checkpoint e proxima validacao
  • docs(ui): auditar interface e adicionar portao de regressao
v2.1.0-alpha.52 · 2026-10-06#

Mudado

  • fix(deps): corrigir CVE alta em source-map-js (#780)
  • fix(deps): preservar opcionais do lockfile
  • fix(deps): corrigir CVE de source-map-js

Versões anteriores à v2.1.0-alpha.52 estão no CHANGELOG.md.