Skip to content

feat(tela-04): duas colunas na escolha de mapa e varredura do i18n - #401

Merged
rubenmarcus merged 5 commits into
mainfrom
feat/tela-04-duas-colunas
Aug 21, 2026
Merged

feat(tela-04): duas colunas na escolha de mapa e varredura do i18n#401
rubenmarcus merged 5 commits into
mainfrom
feat/tela-04-duas-colunas

Conversation

@rubenmarcus

Copy link
Copy Markdown
Member

Summary

  • a tela 04 vira lista + ficha: ficha à esquerda com texto menor e mais respiro (nome 72px → 44px, corpo 14px/1.8, gap 14px → 20px), acervo à direita rolando na vertical, só miniaturas;
  • a preview em tela cheia sai do palco (.ms-bg fica display:none); o <img id="ms-bg-img"> continua no DOM porque o render e a sonda de tela leem o src pra saber qual mapa está em foco;
  • ~112 chaves novas no dicionário e tr()/translateDom() com índice por espaço normalizado - o menu vinha com PT e EN misturados na mesma tela.

Evidência

O dono mandou print da tela 04 em EN com sobras em PT: 04 · ESCOLHA DO MAPA, OFICIAIS, Mapas feitos pela comunidade.. Duas causas, as duas medidas:

  1. o dicionário casa a string PT exata, então 04 · ESCOLHA DO MAPA nunca batia com a chave ESCOLHA DO MAPA;
  2. parágrafo quebrado em duas linhas no .astro chega ao translateDom com \n e indentação no meio e não casa com chave nenhuma.

Um auditor sobre o index.astro (todo nó de texto + placeholder/title/aria-label contra o DICT) achou 119 sobras; sobram 30, todas propositais: nome de mapa/personagem/facção (sabor, decisão do dono), teclas (W A S D, TAB) e placeholders sobrescritos em runtime. Entram tela 04, aria-labels, perfil, configurações, como-jogar, HUD, placar, rodapé, tela de erro, as 6 fichas de mapa novas e os dois textos de categoria do #368. MATA-MATA e o title do cartaz passam a atravessar tr().

Capturas em PT e EN, abas OFICIAIS e COMUNIDADE, sobre esta branch (1536×864).

Régua

A UIR4 travava a geometria antiga (.ms-head com left/top/width fixos, faixa horizontal de 196px) - régua que descrevia o layout velho não podia sobreviver ao novo. Passa a cobrar as duas colunas, a rolagem vertical e o palco sem cartaz, mantendo o cânone do #368 (abas OFICIAIS/COMUNIDADE, dots mortos). O mutante mapa-strip-fixa não tinha mais o que morder e vira três que mordem o layout novo: mapa-acervo-deitado, mapa-sem-duas-colunas e mapa-acervo-nao-rola - os três reprovam a UIR4 quando aplicados.

Issue

Fatia da #54 (o jogo em EN). Não toca nas páginas do site - essa frente é o #400, e os dois PRs só se cruzam nos blocos gerados de docs.

Risk

  • low - docs/tooling/text only
  • medium - UI/site/runtime path touched
  • high - gameplay/render/backend/anti-cheat touched

Mexe na tela 04 do menu e na camada i18n do jogo. Não toca em render, partida nem backend.

Validation

  • npm run check:fast - 56/56
  • npm run build
  • npm run check:seo - 6/6
  • eval:redesign + os 3 mutantes novos da UIR4
  • screenshots PT/EN da tela 04 (abas OFICIAIS e COMUNIDADE)
  • partida completa à mão - a mudança para antes do CONTINUAR

Limite declarado

Não traduz nome de mapa, personagem nem facção. Não mexe nas páginas do site. MAPA x DE 12 continua contando o acervo inteiro mesmo com aba filtrando - comportamento anterior, não entra nesta fatia.

Bot notes

  • ok to label safe-automerge
  • needs needs-staging
  • needs needs-human-gameplay
  • needs needs-human-backend

🤖 Generated with Claude Code

@vercel

vercel Bot commented Aug 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
csbrasil Ready Ready Preview Aug 21, 2026 9:23am

Request Review

@csbrasil-BOT csbrasil-BOT added needs-human-gameplay Mudança exige revisão humana de gameplay/render/HUD needs-staging Mudança precisa validação integrada em staging target:main PR apontando para a branch main labels Aug 21, 2026
@csbrasil-BOT

csbrasil-BOT commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

csbrasil-bot classification

Note

@rubenmarcus abriu 18 arquivo(s) · +498 −137, base main.

O que mudou

área arquivos + amostra
📚 docs 7 +13 −13 ARCH.generated.md, README.md, STATUS.md
🎨 assets 3 +0 −0 parque_treta.jpg, penitenciaria.jpg, velho_oeste.jpg
🧪 arnês 3 +104 −18 ARCH.md, g2ui-map-previews.mjs, redesign-check.mjs
🎮 jogo 2 +167 −11 i18n.js, main.js
📦 outros 1 +107 −53 style.css
⚙️ backend 1 +45 −0 map-plays.ts
🌐 site 1 +62 −42 index.astro

Labels

label por quê
needs-human-backend toca API/Supabase/anti-cheat/ranking — decisão de humano
needs-human-gameplay toca gameplay/render/HUD/mapa/personagem — decisão de humano
needs-staging mudança de runtime/UI — valida integrado no staging antes do merge
target:main vai direto pra main, sem fila de integração

@estraga-codigo estraga-codigo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Palhaço Mal

Palhaço Mal · revisor da casa · 🤡

mapa da mudança

  • docs (7): ARCH.generated.md, README.md, STATUS.md, arquitetura.md
  • jogo (2): i18n.js, main.js
  • outros (1): style.css
  • site (1): index.astro
  • arnês (1): redesign-check.mjs

Tip

Risco BAIXO · nota 10/10 ▓▓▓▓▓▓▓▓▓▓

limpo pelos critérios das minhas ações desta rodada

Revisão de bot — fio não resolvido TRAVA o merge (a main exige conversa resolvida). Resolve ou refuta.

impacto cruzado

graph RL
  game_js["game.js"] --> i18n_js["i18n.js"]
  main_js["main.js"] --> i18n_js["i18n.js"]
Loading

(grafo local de public/js, uma rodada atrás do head do PR.)

maquiagem de verde por cima de vermelho eu desenmascaro no primeiro golpe de vista 🤡

@estraga-codigo

Copy link
Copy Markdown
Collaborator

Esbirro

Esbirro · plantão da produção · 🕵️

check vermelho parado neste PR

Caution

Não sei classificar este vermelho. Segue o que o CI cuspiu — palpite de bot sobre bug alheio só atrapalha.

o quê valor
head aa94894d8283
checks vermelhos 1
classe outra
hora do plantão 2026-08-21T06:06:27.990Z

Vermelho:

Vercel (https://vercel.com/rubenmarcus-projects/csbrasil/Fkphb3qqXMFjjgYqCV67nhWp4Srp)

Log do run já expirou — abrir pelo link do check.


nada fora do normal no meu turno 🕵️

A tela 04 vira LISTA + FICHA em vez de cartaz: ficha à esquerda com texto
menor e mais respiro (nome 72px -> 44px, corpo 14px/1.8, gap 20px) e o
acervo à direita rolando na vertical, só miniaturas. A preview em tela
cheia sai do palco; o <img id="ms-bg-img"> fica no DOM porque o render e a
sonda de tela leem o src pra saber qual mapa está em foco.

O idioma vinha misturado: o dicionário casa a string PT EXATA, então
"04 · ESCOLHA DO MAPA" nunca batia com a chave "ESCOLHA DO MAPA", e
parágrafo quebrado em duas linhas no HTML chegava com \n no meio. Um
auditor sobre o index.astro achou 119 sobras; entram ~110 chaves novas
(tela 04, aria-labels, perfil, configurações, como-jogar, HUD, placar,
rodapé, tela de erro e as 6 fichas de mapa novas), tr()/translateDom()
ganham índice por espaço normalizado, e MATA-MATA e o title do cartaz
passam a atravessar tr(). Nome de mapa, personagem e facção seguem PT nos
dois idiomas - é sabor, decisão do dono.

A UIR4 travava a geometria antiga (.ms-head left/top/width fixos, faixa de
196px): passa a descrever as duas colunas e a rolagem vertical. O mutante
mapa-strip-fixa não tinha mais o que morder e vira três que mordem o
layout novo: mapa-acervo-deitado, mapa-sem-duas-colunas e
mapa-acervo-nao-rola.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
Agent: Claude Code

@estraga-codigo estraga-codigo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Palhaço Mal

Palhaço Mal · revisor da casa · 🤡

mapa da mudança

  • docs (7): ARCH.generated.md, README.md, STATUS.md, arquitetura.md
  • jogo (2): i18n.js, main.js
  • outros (1): style.css
  • site (1): index.astro
  • arnês (1): redesign-check.mjs

Tip

Risco BAIXO · nota 10/10 ▓▓▓▓▓▓▓▓▓▓

nada aqui que quebre amanhã. amanhã é outro diff

Revisão de bot — fio não resolvido TRAVA o merge (a main exige conversa resolvida). Resolve ou refuta.

impacto cruzado

graph RL
  game_js["game.js"] --> i18n_js["i18n.js"]
  main_js["main.js"] --> i18n_js["i18n.js"]
Loading

(grafo local de public/js, uma rodada atrás do head do PR.)

todo bug confessa no diff, eu só faço o interrogatório 🤡

Ajuste pedido sobre a primeira versão: o acervo continua rolando em pé, mas em
DUAS colunas - uma coluna só deixava o card panorâmico e pedia rolagem longa
demais para 12 mapas. A altura do card sai da proporção (4/3) e não de um px
fixo, senão a arte volta a achatar quando a faixa estica. A faixa cresce de
420px para 520px para caber os dois cards legíveis; abaixo de 1180px a grade
volta a uma coluna.

A preview do mapa em foco volta a ser o palco. Quem paga por ela é o scrim: sem
os dois gradientes, ficha e grade somem em cima de mapa claro - a Piscina é o
caso. A UIR4 passa a cobrar a grade de dois, a proporção do card e a existência
dos gradientes; entram os mutantes `mapa-card-achatado` e `mapa-palco-sem-scrim`,
e o `mapa-acervo-deitado` acompanha a redação nova.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
Agent: Claude Code

@estraga-codigo estraga-codigo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Palhaço Mal

Palhaço Mal · revisor da casa · 🤡

mapa da mudança

  • docs (7): ARCH.generated.md, README.md, STATUS.md, arquitetura.md
  • jogo (2): i18n.js, main.js
  • outros (1): style.css
  • site (1): index.astro
  • arnês (1): redesign-check.mjs

Tip

Risco BAIXO · nota 10/10 ▓▓▓▓▓▓▓▓▓▓

nada aqui que quebre amanhã. amanhã é outro diff

Revisão de bot — fio não resolvido TRAVA o merge (a main exige conversa resolvida). Resolve ou refuta.

impacto cruzado

graph RL
  game_js["game.js"] --> i18n_js["i18n.js"]
  main_js["main.js"] --> i18n_js["i18n.js"]
Loading

(grafo local de public/js, uma rodada atrás do head do PR.)

maquiagem de verde por cima de vermelho eu desenmascaro no primeiro golpe de vista 🤡

rubenmarcus and others added 2 commits August 21, 2026 08:19
…ervo em grade

A tela vira três faixas: CABEÇALHO (abas, ficha do mapa em foco e opções da partida),
ACERVO (a grade, dona do corpo inteiro) e RODAPÉ (VOLTAR num canto, CONTINUAR no
outro). A ficha e os controles saíram de dentro do corpo porque a tela existe para
mostrar o acervo, e ele estava espremido numa faixa lateral.

A grade decide o número de colunas pela largura real, com teto de três: 3×360+2×14
cabe no max-width de 1180, 4×360+3×14 não - os dois números são um par, mexer num
sem o outro solta uma quarta coluna.

O palco passa a ser o WALLPAPER do setup. A preview do mapa em foco já está no card
selecionado, e repetida em tela cheia brigava com a grade; o `<img id="ms-bg-img">`
segue no DOM porque é dele que a sonda de tela lê qual mapa está em foco.

TODOS volta a ser o acervo INTEIRO (o #368 tinha fundido TODOS e OFICIAIS numa aba
só) e passa a ordenar por partidas jogadas, com OFICIAIS em aba própria. O número sai
de `picks_daily`, o contador que o /api/pick alimenta desde 06/08 e que ninguém lia:
entra `GET /api/map-plays`, que soma por mapa com service_role - a tabela é
RLS-fechada e o navegador não a alcança. A resposta nunca derruba a tela: sem banco,
sem tabela ou sem rede sai `{plays:{}}` com 200, a ordem cai para a do catálogo e o
crachá de partidas some. Zero partidas é AUSÊNCIA de medida, não medida de zero.

A UIR4 acompanha: três abas, ordenação com desempate estável, ficha e opções dentro
do cabeçalho, grade elástica com teto de três, palco no wallpaper e a guarda da rota.
Dez mutantes cobrem cada decisão, incluindo `mapa-plays-inventado` (que faz o zero
virar "0 partidas") e `mapa-todos-sem-ranking`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
Agent: Claude Code
velho_oeste, penitenciaria e parque_treta chegaram como screenshot de gameplay -
arma na frente, HUD e o "VALENDO!" no meio do quadro. Regeradas pelo mesmo
g2ui-map-previews que já esconde HUD, viewmodel, bots e drops.

A pose ficou registrada em POSES porque nenhum dos três é fotogênico sozinho: do
spawn a câmera olha para FORA do mapa nos três, e a nível do olho o cartaz vira
60% de céu. A varredura de meio giro mostrou que yaw 3,14 de [0,30,-35] com pitch
-0,55 é o único enquadramento que pega o mapa inteiro.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
Agent: Claude Code
@csbrasil-BOT csbrasil-BOT added the needs-human-backend Mudança exige revisão humana de backend/Supabase/anti-cheat label Aug 21, 2026

@estraga-codigo estraga-codigo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Palhaço Mal

Palhaço Mal · revisor da casa · 🤡

mapa da mudança

  • docs (7): ARCH.generated.md, README.md, STATUS.md, arquitetura.md
  • assets (3): parque_treta.jpg, penitenciaria.jpg, velho_oeste.jpg
  • arnês (3): ARCH.md, g2ui-map-previews.mjs, redesign-check.mjs
  • jogo (2): i18n.js, main.js
  • outros (1): style.css
  • backend (1): map-plays.ts
  • site (1): index.astro

Tip

Risco BAIXO · nota 10/10 ▓▓▓▓▓▓▓▓▓▓

nada aqui que quebre amanhã. amanhã é outro diff

Revisão de bot — fio não resolvido TRAVA o merge (a main exige conversa resolvida). Resolve ou refuta.

impacto cruzado

graph RL
  game_js["game.js"] --> i18n_js["i18n.js"]
  main_js["main.js"] --> i18n_js["i18n.js"]
Loading

(grafo local de public/js, uma rodada atrás do head do PR.)

todo bug confessa no diff, eu só faço o interrogatório 🤡

…enu principal

O cabeçalho era uma PILHA de quatro faixas (kicker, abas, descrição da categoria e
depois a ficha) e empurrava a grade para baixo da dobra. Vira uma linha só de três
colunas: navegação | ficha do mapa em foco | opções da partida. A coluna da
navegação tem 300px porque abaixo disso TODOS/OFICIAIS/COMUNIDADE quebram em duas
linhas. Abaixo de 1120px de viewport as opções descem para uma segunda linha, e
abaixo de 820px tudo empilha.

O palco usava o wallpaper do SETUP; passa a usar o do MENU PRINCIPAL, e pintado
pela mesma regra e não por números parecidos: borrão `cover` desfocado por baixo,
arte inteira em `contain` por cima e a variante 3:2 na mesma faixa de proporção.
Copiar o valor em vez da regra era como as duas telas divergiam.

A UIR4 cobra a linha de três colunas, a ordem `ms-head` → `ms-nav` na marcação e as
três regras do wallpaper; entram `mapa-header-empilhado` (a linha volta a ser pilha)
e `mapa-palco-wall-do-setup` (o palco volta a divergir do menu).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
Agent: Claude Code

@estraga-codigo estraga-codigo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Palhaço Mal

Palhaço Mal · revisor da casa · 🤡

mapa da mudança

  • docs (7): ARCH.generated.md, README.md, STATUS.md, arquitetura.md
  • assets (3): parque_treta.jpg, penitenciaria.jpg, velho_oeste.jpg
  • arnês (3): ARCH.md, g2ui-map-previews.mjs, redesign-check.mjs
  • jogo (2): i18n.js, main.js
  • outros (1): style.css
  • backend (1): map-plays.ts
  • site (1): index.astro

Tip

Risco BAIXO · nota 10/10 ▓▓▓▓▓▓▓▓▓▓

pente fino passado: nenhum achado que eu defenda em voz alta

Revisão de bot — fio não resolvido TRAVA o merge (a main exige conversa resolvida). Resolve ou refuta.

impacto cruzado

graph RL
  game_js["game.js"] --> i18n_js["i18n.js"]
  main_js["main.js"] --> i18n_js["i18n.js"]
Loading

(grafo local de public/js, uma rodada atrás do head do PR.)

maquiagem de verde por cima de vermelho eu desenmascaro no primeiro golpe de vista 🤡

@rubenmarcus
rubenmarcus merged commit 0bb19c3 into main Aug 21, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-human-backend Mudança exige revisão humana de backend/Supabase/anti-cheat needs-human-gameplay Mudança exige revisão humana de gameplay/render/HUD needs-staging Mudança precisa validação integrada em staging target:main PR apontando para a branch main

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants