- Navios
- 26 de agosto de 2026 às 01:26 UTC
- Autor
- kamo
- Enviar
- c8d0f21
Lote 3 da auditoria de desempenho do cliente. O layout root passou todas as mensagens para NextIntlClientProvider em cada rota. A catálogo é 1.05 MB compacto — 1.16 MB uma vez que RSC o inline como uma string escapada literal, 328 KB gzip / 250 KB brotli — mais ~16 ms de JSON.parse em uma CPU desktop e Cerca de 95 ms no acelerador de 6x de PageSpeed, antes de qualquer um deles ser usado. /validate e /logout precisam de duas cordas. AuthedChrome retorna crianças nuas sobre ambos, nenhum dos componentes de shell montados acima dele traduzir nada, e o único texto traduzido na tela é app/loading.tsx's duas `loading.*` chaves — verificadas por escaneando todos os arquivos que renderizam nesses caminhos. Todos os sinais passam /validate, então a entrega foi carregando 1,16 MB de documento para duas strings. Um componente servidor não pode ver seu próprio caminho — headers() carrega o que o cliente enviou, e o cliente não envia nenhum caminho – então proxy. ts agora carimba x-kamo-pathname nos dois retornar sites que servem documentos, e o layout lê-lo dos headers() chamá- lo Já estava a fazer. A direção de recuo é a parte que importa. Quando o cabeçalho estiver ausente da disposição envia o catálogo FULL, nunca uma fatia vazia. Um espaço de nomes em falta não joga e não avisa: IntlErrorHandler suprime missing MESSAGE e seu getMessageFallback retorna a chave, para que o membro simplesmente veja `loading.preparingWorkspace` onde A prosa pertence. Predeterminar tudo significa uma mudança de correspondência ou uma nova implantação forma degrada-se exatamente ao comportamento de hoje em vez de às teclas pontilhadas na uma página Todos os sinais passam. Adiciona um teste pela mesma razão. Ele verifica as páginas pré-sessão para literal `t('ns....')` namespaces e falha se algum cair fora da fatia, então adicionando uma string traduzida para a transferência de sinal é capturada no momento do teste, em vez de vista por um membro. Confirmado non-vacuous: o scanner encontra o espaço de nomes `loading` que deveria, e injetando um espaço de nomes estrangeiro em loading.tsx faz com que ele falhe. Esta é deliberadamente a versão estreita. Cortar por rota em todas as 143 rotas é vale várias vezes mais, mas precisa de uma caminhada AST sobre cada usoTraduções chamada site e uma proteção de construção contra argumentos de namespace não-literais — o mesmo silêncio modo de falha, espalhado por todo o produto. Não é algo para aterrar ao lado. Qualquer outra coisa. Verificado: tsc -- noEmit clean sobre cada arquivo nesta alteração; todos os scripts de 8 guardas passam; O novo ensaio passa e falha correctamente sob controlo negativo.