feat(i18n): gêmea EN do /changelog e idioma honesto nas rotas EN - #400
feat(i18n): gêmea EN do /changelog e idioma honesto nas rotas EN#400manazitto wants to merge 30 commits into
Conversation
O /changelog ganha /whats-new. Os pares PT↔EN passam a uma tabela só (hreflang, html lang, og:locale, sitemap e JSON-LD), e as duas páginas do changelog compartilham o parser. eval:i18ntwins cobre par, redirect, cromo, lang, sitemap e parser; os seis mutantes mordem. corosolto#54 Signed-off-by: Maná Soares <153231177+manazitto@users.noreply.github.com> Agent: Cursor
DOCS1: check:fast e a contagem de comandos npm passam a incluir o novo eval:i18ntwins. Sem isso o portão fica vermelho na main. Signed-off-by: Maná Soares <153231177+manazitto@users.noreply.github.com> Agent: Cursor
|
@manazitto is attempting to deploy a commit to the rubenmarcus' projects Team on Vercel. A member of the Team first needs to authorize it. |
|
🤖 cs-brasil-ai-bot: área sensível ou diff grande; revisão manual obrigatória |
csbrasil-bot classificationNote @manazitto abriu 67 arquivo(s) · +1773 −104, base main. O que mudou
Labels
|
|
Esbirro · plantão da produção · 🕵️ check vermelho parado neste PRWarning Classe drift de gerados: bloco gerado desatualizado. Não consegui commitar (o PR vem de fork). Conserto: npm run docs && npm run arch
Vermelho: Rabo do log: — de plantão: vi, registrei, hora no relógio 🕵️ |
estraga-codigo
left a comment
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- docs (5):
ARCH.generated.md,SCRIPTS.md,STATUS.md,comecando.md… - site (4):
Layout.astro,changelog.astro,sitemap.xml.ts,whats-new.astro - arnês (3):
i18n-twins-check.mjs,seo-check.mjs,site-smoke.mjs - outros (2):
package.json,aeo.mjs - jogo (2):
i18n.js,main.js - backend (2):
changelog.ts,i18n-pairs.ts
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"]
(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 🤡
DOCS1: o bloco de scripts já tinha o comando novo; faltava a contagem do harness nos 7 arquivos que o portão lê. Sem isso o CI fica vermelho. Signed-off-by: Maná Soares <153231177+manazitto@users.noreply.github.com> Agent: Cursor
|
🤖 cs-brasil-ai-bot: área sensível ou diff grande; revisão manual obrigatória |
O bloco de zonas do ARCH.generated.md ainda dizia 18 páginas .astro. O CI do DOCS1 caiu só neste arquivo depois da contagem do arnês. Signed-off-by: Maná Soares <153231177+manazitto@users.noreply.github.com> Agent: Cursor
|
🤖 cs-brasil-ai-bot: área sensível ou diff grande; revisão manual obrigatória |
estraga-codigo
left a comment
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- docs (8):
ARCH.generated.md,README.md,SCRIPTS.md,STATUS.md… - site (4):
Layout.astro,changelog.astro,sitemap.xml.ts,whats-new.astro - arnês (3):
i18n-twins-check.mjs,seo-check.mjs,site-smoke.mjs - outros (2):
package.json,aeo.mjs - jogo (2):
i18n.js,main.js - backend (2):
changelog.ts,i18n-pairs.ts
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"]
(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 🤡
|
Esbirro · plantão da produção · 🕵️ check vermelho parado neste PRCaution Não sei classificar este vermelho. Segue o que o CI cuspiu — palpite de bot sobre bug alheio só atrapalha.
Vermelho: Rabo do log: — nada fora do normal no meu turno 🕵️ |
A branch estava 12 commits atrás. Todos os conflitos eram de arquivo GERADO (ARCH.generated.md, README, STATUS, docs/) mais o package.json: os gerados vieram da main e foram re-derivados; o package.json ficou com a UNIÃO - `eval:i18ntwins` deste PR mais `eval:replaycam` que entrou na main. Nenhum arquivo de código deste PR foi tocado. Agent: Claude Opus 5 (Claude Code) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
|
🤖 cs-brasil-ai-bot: área sensível ou diff grande; revisão manual obrigatória |
estraga-codigo
left a comment
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- outros (31):
package.json,autoria.patch,bounds.mjs,contato.mjs… - docs (16):
ARCH.generated.md,README.md,SCRIPTS.md,SESSAO-2026-08-20-issue-382-nick-cheat.md… - assets (9):
sky_brasilia.webp,sky_ferrovelho.webp,sky_havan.webp,sky_pool.webp… - arnês (5):
ambience-registry-check.mjs,fauna-shots.mjs,i18n-twins-check.mjs,seo-check.mjs… - site (4):
Layout.astro,changelog.astro,sitemap.xml.ts,whats-new.astro - jogo (3):
ambientlife.js,i18n.js,main.js - backend (2):
changelog.ts,i18n-pairs.ts - mapas (1):
map_sky.js
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"]
(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 🤡
|
Esbirro · plantão da produção · 🕵️ check vermelho parado neste PRCaution Não sei classificar este vermelho. Segue o que o CI cuspiu — palpite de bot sobre bug alheio só atrapalha.
Vermelho: Log do run já expirou — abrir pelo link do check. — nada fora do normal no meu turno 🕵️ |
O release reescreveu README, STATUS, ARCH e docs/, e reabriu conflito em todo PR aberto ao mesmo tempo. Os 9 arquivos em conflito eram TODOS gerados: ficou o da main e os geradores re-derivaram. Nenhum arquivo de código foi tocado. Agent: Claude Opus 5 (Claude Code) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
|
🤖 cs-brasil-ai-bot: área sensível ou diff grande; revisão manual obrigatória |
estraga-codigo
left a comment
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- outros (31):
package.json,autoria.patch,bounds.mjs,contato.mjs… - docs (15):
ARCH.generated.md,README.md,SCRIPTS.md,SESSAO-2026-08-20-issue-382-nick-cheat.md… - assets (9):
sky_brasilia.webp,sky_ferrovelho.webp,sky_havan.webp,sky_pool.webp… - arnês (5):
ambience-registry-check.mjs,fauna-shots.mjs,i18n-twins-check.mjs,seo-check.mjs… - site (4):
Layout.astro,changelog.astro,sitemap.xml.ts,whats-new.astro - jogo (3):
ambientlife.js,i18n.js,main.js - backend (2):
changelog.ts,i18n-pairs.ts - mapas (1):
map_sky.js
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"]
(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 🤡
…igo (#414) MEDIDO hoje, ao vivo: enquanto eu resolvia conflito à mão em quatro PRs, o `chore(release): v2.0.0-alpha.173` entrou na main e reabriu os quatro de uma vez. Os NOVE arquivos em conflito do #400 depois disso eram todos gerados - README, STATUS, ARCH e docs/ -, nenhum de código. Todo release reescreve esses arquivos, então resolver isso à mão é trabalho de Sísifo: o release seguinte desfaz. O autofix passa a trazer a base antes de consertar. Conflitou, ele pergunta à MESMA lista de permissão do resto do bot: se todo caminho em conflito for arquivo gerado, fica o da base e os geradores re-derivam. Se sobrar UM fora da lista, ele dá `git merge --abort` e comenta - conflito de código é julgamento, e julgamento não é dele. A conta do dia, dos quatro PRs que resolvi à mão: 53 arquivos em conflito, 45 gerados e 8 de código. É a fatia que o bot passa a cobrir, e sobra para gente exatamente a que exige decisão - como a colisão de numeração de BUG-68 no #372, que preservei sem renumerar. A AF5 guarda o caminho de exceção: sem o `git merge --abort`, o bot resolveria código escolhendo um lado no escuro. O mutante `resolve-conflito-de-codigo` remove o abort e reprova. Agent: Claude Opus 5 (Claude Code) Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
|
Esbirro · plantão da produção · 🕵️ check vermelho parado neste PRCaution Não sei classificar este vermelho. Segue o que o CI cuspiu — palpite de bot sobre bug alheio só atrapalha.
Vermelho: Rabo do log: — nada fora do normal no meu turno 🕵️ |
estraga-codigo
left a comment
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- outros (29):
autoria.patch,bounds.mjs,contato.mjs,contato_parque_treta.jpg… - docs (16):
ARCH.generated.md,README.md,SCRIPTS.md,SESSAO-2026-08-20-issue-382-nick-cheat.md… - assets (9):
sky_brasilia.webp,sky_ferrovelho.webp,sky_havan.webp,sky_pool.webp… - site (4):
Layout.astro,changelog.astro,sitemap.xml.ts,whats-new.astro - jogo (3):
ambientlife.js,i18n.js,main.js - arnês (3):
ambience-registry-check.mjs,fauna-shots.mjs,i18n-twins-check.mjs - backend (2):
changelog.ts,i18n-pairs.ts - mapas (1):
map_sky.js
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"]
(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 🤡
Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot <csbrasil-bot@users.noreply.github.com>
|
🤖 autofix: regenerei os blocos derivados e empurrei o commit. O PR não precisa de mais nada disso. |
|
🤖 cs-brasil-ai-bot: candidato a preview; um mantenedor deve revisar o SHA e aplicar o label |
|
🤖 autofix: regenerei os blocos derivados e empurrei o commit. O PR não precisa de mais nada disso. |
Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot <csbrasil-bot@users.noreply.github.com>
|
🤖 autofix: regenerei os blocos derivados e empurrei o commit. O PR não precisa de mais nada disso. |
|
🤖 cs-brasil-ai-bot: candidato a preview; um mantenedor deve revisar o SHA e aplicar o label |
|
🤖 preview no ar → https://csbrasil-osh1ge4b4-rubenmarcus-projects.vercel.app |
|
🤖 autofix: regenerei os blocos derivados e empurrei o commit. O PR não precisa de mais nada disso. |
|
🤖 preview no ar → https://csbrasil-lq43x80n0-rubenmarcus-projects.vercel.app |
estraga-codigo
left a comment
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- outros (29):
autoria.patch,bounds.mjs,contato.mjs,contato_parque_treta.jpg… - docs (16):
ARCH.generated.md,README.md,SCRIPTS.md,SESSAO-2026-08-20-issue-382-nick-cheat.md… - assets (9):
sky_brasilia.webp,sky_ferrovelho.webp,sky_havan.webp,sky_pool.webp… - site (4):
Layout.astro,changelog.astro,sitemap.xml.ts,whats-new.astro - jogo (3):
ambientlife.js,i18n.js,main.js - arnês (3):
ambience-registry-check.mjs,fauna-shots.mjs,i18n-twins-check.mjs - backend (2):
changelog.ts,i18n-pairs.ts - mapas (1):
map_sky.js
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"]
(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 🤡
|
Esbirro · plantão da produção · 🕵️ check vermelho parado neste PRCaution Não sei classificar este vermelho. Segue o que o CI cuspiu — palpite de bot sobre bug alheio só atrapalha.
Vermelho: Rabo do log: — de plantão: vi, registrei, hora no relógio 🕵️ |
Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot <csbrasil-bot@users.noreply.github.com>
|
🤖 autofix: regenerei os blocos derivados e empurrei o commit. O PR não precisa de mais nada disso. |
|
🤖 cs-brasil-ai-bot: candidato a preview; um mantenedor deve revisar o SHA e aplicar o label |
Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot <csbrasil-bot@users.noreply.github.com>
|
🤖 autofix: regenerei os blocos derivados e empurrei o commit. O PR não precisa de mais nada disso. |
|
🤖 cs-brasil-ai-bot: candidato a preview; um mantenedor deve revisar o SHA e aplicar o label |
|
🤖 autofix: regenerei os blocos derivados e empurrei o commit. O PR não precisa de mais nada disso. |
|
🤖 preview no ar → https://csbrasil-elhqxrko0-rubenmarcus-projects.vercel.app |
estraga-codigo
left a comment
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- outros (29):
autoria.patch,bounds.mjs,contato.mjs,contato_parque_treta.jpg… - docs (16):
ARCH.generated.md,README.md,SCRIPTS.md,SESSAO-2026-08-20-issue-382-nick-cheat.md… - assets (9):
sky_brasilia.webp,sky_ferrovelho.webp,sky_havan.webp,sky_pool.webp… - site (4):
Layout.astro,changelog.astro,sitemap.xml.ts,whats-new.astro - jogo (3):
ambientlife.js,i18n.js,main.js - arnês (3):
ambience-registry-check.mjs,fauna-shots.mjs,i18n-twins-check.mjs - backend (2):
changelog.ts,i18n-pairs.ts - mapas (1):
map_sky.js
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"]
(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 🤡
|
Esbirro · plantão da produção · 🕵️ check vermelho parado neste PRCaution Não sei classificar este vermelho. Segue o que o CI cuspiu — palpite de bot sobre bug alheio só atrapalha.
Vermelho: Rabo do log: — de plantão: vi, registrei, hora no relógio 🕵️ |
Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot <csbrasil-bot@users.noreply.github.com>
|
🤖 autofix: regenerei os blocos derivados e empurrei o commit. O PR não precisa de mais nada disso. |
|
🤖 cs-brasil-ai-bot: candidato a preview; um mantenedor deve revisar o SHA e aplicar o label |
|
🤖 autofix: regenerei os blocos derivados e empurrei o commit. O PR não precisa de mais nada disso. |
|
🤖 preview no ar → https://csbrasil-aopxsyyzk-rubenmarcus-projects.vercel.app |
estraga-codigo
left a comment
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- outros (29):
autoria.patch,bounds.mjs,contato.mjs,contato_parque_treta.jpg… - docs (16):
ARCH.generated.md,README.md,SCRIPTS.md,SESSAO-2026-08-20-issue-382-nick-cheat.md… - assets (9):
sky_brasilia.webp,sky_ferrovelho.webp,sky_havan.webp,sky_pool.webp… - site (4):
Layout.astro,changelog.astro,sitemap.xml.ts,whats-new.astro - jogo (3):
ambientlife.js,i18n.js,main.js - arnês (3):
ambience-registry-check.mjs,fauna-shots.mjs,i18n-twins-check.mjs - backend (2):
changelog.ts,i18n-pairs.ts - mapas (1):
map_sky.js
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"]
(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 🤡
|
Esbirro · plantão da produção · 🕵️ check vermelho parado neste PRCaution Não sei classificar este vermelho. Segue o que o CI cuspiu — palpite de bot sobre bug alheio só atrapalha.
Vermelho: Rabo do log: — nada fora do normal no meu turno 🕵️ |
Summary
/changelogganha gêmea EN em/whats-new(mesmoCHANGELOG.md, cromo em inglês);src/lib/i18n-pairs.ts) que alimenta hreflang,html lang,og:locale, sitemap e JSON-LD;lang="pt-BR"/inLanguage: pt-BR);/changeloge/whats-newcompartilham o parser.Evidência
As gêmeas EN já existentes (
/about,/maps, …) saíam do Layout comhtml lang="pt-BR"eog:locale=pt_BR. O crawler lia português numa página em inglês. Medido no HTML do build depois desta mudança:/whats-newe/about:lang=en,og:locale=en_US, JSON-LD da página emen;/changeloge/sobre: continuampt-BR.eval:i18ntwinsficou vermelho 7 vezes no fonte (tabela copiada, lang mentiroso, sitemap sem EN, parser duplicado) e verde depois. Os seis mutantes mordem:sem-par,sem-redirect,chrome-pt,lang-pt,sem-sitemap,parser-dup.npm run buildprerenderiza/whats-new. SEO/AEO 6/6 no artefato, com as gêmeas EN agora na lista.Issue
Fatia da #54 (changelog).
/mapae/rankingcontinuam de fora; traduzir o corpo doCHANGELOG.mdtambém.Risk
Mexe no Layout de todas as páginas estáticas (lang/locale/JSON-LD) e no sitemap. Não toca no jogo.
Validation
npm run buildnpm run eval:i18ntwins+ os 6 mutantesnode tools/eval/seo-check.mjsnodist/docs:check,travessao:check,changelog:check,eval:comentarionpm run check:fastcompleto neste clone — 43/57 no sparse checkout; os vermelhos são GLB/imagem/áudio ausentes, não esta fatiaastro devaqui/whats-new; notas de versão continuam em PTLimite declarado
Não traduz o histórico do
CHANGELOG.md. Não cria gêmea do/mapanem religa o/ranking.Bot notes
safe-automergeneeds-stagingneeds-human-gameplayneeds-human-backendMade with Cursor