# Identidade e português brasileiro

O cliente web usa pt-BR como idioma inicial; a preferência individual salva continua sendo respeitada. As duas contas de validação existentes foram configuradas para pt-BR. O administrador original Rust foi traduzido nos templates nativos, preservando rotas, nomes de campos e verificações de autorização. Seu título acompanha o nome público configurado no backend. Durante a validação, esse nome estava salvo como `kordyx`; não foi sobrescrito.

Logotipo, wordmark, favicon, ícones PWA e seis avatares padrão usam a identidade com K. Imagens personalizadas de usuários e comunidades permanecem intactas. O endpoint administrativo oficial de configuração foi utilizado para trocar somente os campos de branding. O Flutter recebeu os mesmos símbolos e pt-BR como padrão quando não existe preferência salva. Avisos AGPL e licenças de terceiros permanecem, incluindo IBM Plex/OFL.

## Reprodução

1. Executar `python3 kordia/apply-branding.py` (ou adicionar `--mobile /caminho/KordiaMobile` para replicar os SVGs no Flutter) (CairoSVG, Pillow e fontTools).
2. Para o administrador, `python3 kordia/localize-admin.py`; compilar com `cargo build --release --locked -p fluxer_admin`. Nesta VPS foi usado CARGO_BUILD_JOBS=1, CARGO_PROFILE_RELEASE_LTO=false, CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16 e CARGO_PROFILE_RELEASE_OPT_LEVEL=1.
3. No frontend, instalar com `pnpm --filter fluxer_app... install --frozen-lockfile`; executar `pnpm codegen` e `pnpm exec rspack build --mode production` no diretório fluxer_app com PUBLIC_RELEASE_CHANNEL=stable e PUBLIC_BUILD_VERSION definido para a revisão distribuída. A build desta versão está registrada em `/root/kordia-toolchains/kordia-web-build-final.log`; terminou com 129 avisos preexistentes de ordem de CSS.
4. Instalar o binário em `ops/minhaplataforma/bin/kordia-admin` por arquivo temporário e renomeação atômica; recriar somente o serviço admin. O Compose preserva sua imagem, configuração e volume existentes.
5. Copiar a distribuição web para `ops/minhaplataforma/web-release`, preservando os arquivos de chunks anteriores para sessões abertas. Recriar somente app-proxy. O Caddy serve os avatares padrão e ícones próprios pelo volume de branding, sem interceptar avatares personalizados.

Os overrides estão em `deploy/self-hosting/minhaplataforma.compose.yml`. Para voltar aos binários/static originais, remover exclusivamente os binds acrescentados aos serviços admin/app-proxy e recriar esses dois serviços com as imagens anteriores. Não apagar volumes ou alterar o banco. A configuração de branding anterior está em backup privado.

## Validação observada

Chromium real com HTTPS validado: login da conta normal, navegação para Meus amigos em pt-BR, histórico persistente de um canal existente visível, layout 390×844 sem overflow horizontal; fluxo OAuth legítimo da conta administradora concluído, painel Usuários e ações Sair/Pesquisar/Limpar em pt-BR e título com o nome configurado. Resultado: `branding-browser-report.json`. O navegador de teste não desabilitou validação de certificados. Build nativa Rust e build web concluídas. Não foram repetidos nesta atualização testes físicos de áudio, câmera, transmissão ou push.

Após a atualização, usar Ctrl+F5 no navegador se houver ícones antigos em cache. Cada usuário pode mudar o idioma em suas configurações; alterar o padrão não apaga preferências existentes.

## Logo fornecida — Android 1.0.2

A identidade passou a usar as duas imagens PNG fornecidas pelo proprietário: com fundo para ícones e avatares padrão; sem fundo para a interface. As originais estão em ops/minhaplataforma/branding/kordyx-*.png. Executar python3 kordia/apply-user-logo.py nos checkouts locais para reproduzir a conversão e cópia dos ícones. Flutter usa Image.asset com PNG, preservando as cores da imagem, em vez de aplicar um filtro monocromático/SVG. O servidor anuncia URLs PNG HTTPS nativas.

Android: todos os recursos nativos WEBP, foregrounds adaptativos e máscara monocromática também foram substituídos. Os ícones adaptativos usam margem de proteção para a máscara do sistema. O package ID e a chave de assinatura são preservados, permitindo atualização sobre as instalações existentes. Arquivos de download conservam os nomes Kordia-Android-* para compatibilidade dos links.
