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:assetsreprovava com o pacote público mesmo depois do fetch. Oaudio-pack-v8(445 entradas, medido em 04/10/2026 no diretório central do zip) não tem pastaambiente/nem a chavemapSoundscapes, e o conserto —prepare-public-preview.mjs— era chamado SÓ pelo workflow de preview.scripts/fetch-audio.shagora termina a preparação em todo caminho público (ensure-map-soundscapes.mjs, que instalamapSoundscapesnos 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:audioruntimeassetspassa a provar os TRÊS estados do contrato — cru = vermelho, preparado = verde, parcial = vermelho — chamando oassert:assetsreal. - #741 — a
graffiti-editorial-checkmedia layouts que ninguém vê. OTypeErrordefy_corrego(id que viroucorrego) era a ponta visível: as cláusulasreligioso-vulgar,putinerostos-carecascomparavam comfy_corregoe passavam verdes sem medir nada — os três mutantes eram cegos.NOVOSpassou a listar os ids que o jogo pede nografitar({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,m17em22, 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:killstreakcobre 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:abateshudcom quatro mutantes, nocheck: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 emops:selfteste unidades emops:test, os dois nocheck: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 emwindow.__csbOpse 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:aquecere o passo noprod-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 issueops-diagem vermelho;portao-browser.ymlpassa a rodareval:boote as provas de navegador da camada operacional em PR que toca o boot.- O beacon de
/api/perfleva o resumo doops.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 peloglbchars.jsque 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:botfacacom três mutantes, nocheck: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:replaycampassou 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:bootvoltou a rodar: a fixture doboot-check.mjsancorava 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/onlinee/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 distinguecityparado compresenceviva (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.

