- Navios
- 28 de agosto de 2026 às 02:12 UTC
- Autor
- Kamo
- Enviar
- 1296159
Abrir uma janela de chat custa sete pedidos antes de uma mensagem renderizada — histórico, membros, recibos, mark-read, o instantâneo não lido, o avatar da contraparte e a política do compositor — mais até um traduzir POST por mensagem, e sobre o servidor uma linha de auditoria PHI escrita por mensagem, individualmente. Fechando a janela Deitou tudo fora, então olhando para uma conversa e de volta pago por cem linhas para reconstruir a lista que tinha acabado de ser descartada. Minimizar nunca foi o caso caro: a doca mantém uma janela minimizada montada. O encerramento foi, e assim foi o navegador maximizado, que abre e desmotiva janelas o dia todo. A vida da janela e a conversa não são a mesma coisa. Uma janela agora CONQUIRA uma conversa e a libera, e a conversa sobrevive ao lançamento por cinco minutos (o registro de manutenção-vivo do @kamo/tool-core, limitado pelo tempo E contar, nunca despejar uma janela ainda está mostrando). Reabrir dentro disso não custa nada, e porque o soquete nunca foi deixado cair o que volta é um conversa atual em vez de uma conversa em cache. Depois da vida, chat-core currículo() pergunta somente para o que chegou após a mensagem mais nova que detém. O mesmo registro agora carrega as quatro janelas que cada um laminado à mão o mesmo bug: SMS, IA, tickets de suporte e social todos mantiveram seu thread em um useState e mudanças é que o re-fetch acontece sobre a conversação em vez de sobre Spinner. No social que foi mais do que um flash: apagando a lista também em branco lastInboundTs, então o compositor leu a janela de resposta 24 horas do Meta como FECHADO em um conversa que foi perfeitamente repliable. A renderização LEIA a conversa e o efeito a mantém. Apenas um efeito garante uma libertação correspondente — uma retenção de renderização descartada seria assinatura nada nunca deixa ir — mas um efeito é executado após a primeira pintura, que deixaria uma janela reaberta a piscar vazia para uma moldura antes de mostrar O que já tinha. A leitura não está segurando, por isso a espiada é segura onde um Adquirir não é. A aquisição espera por um espectador conhecido. getMemberIdString () responde '' até useUserInfo carrega, e myMemberId decide se cada mensagem é do visualizador próprio; o código antigo construiu a conversa de qualquer maneira e RECONSTRUÍ-la quando o verdadeiro id chegou, o que um registro marcado na sessão não pode fazer. Não construir um debaixo uma identidade que ainda não temos é a versão honesta, e deixa cair um desperdício Carga total. Também fora do caminho por aberto: o não- lido agora dispara apenas quando um conversa genuinamente começa, não quando uma janela adota um vivo cujo não lido já é zero e realizada lá; membros avatars são memorizados como promessas, então N as janelas partilham uma pasta lida e uma reabertura não custa nenhuma; e o bloqueio do compositor é semeada da última resposta, então uma janela sobre uma conversa congelada pára tornando um compositor aberto que fecha uma viagem de ida e volta mais tarde. O que sobrevive a uma recarga dura é metadados e nada mais. conversação Instantâneo detém o participante NAMES — que ferramentaWindowSnapshot já persiste dentro do título da janela — e dois booleanos do estado do compositor, então uma janela restaurada não é uma Intitulado conversa com ninguém nele. Nenhum corpo de mensagens, nunca: MediaService auditorias chat lê como PHI, e uma transcrição em armazenamento é uma divulgação com não Lê por detrás. Os corpos são sempre refeitos. A assinatura deixa cair o vivo conversas também, que limpeza armazenamento não pode chegar. O BFF para de analisar uma página de cem mensagens em objetos e serializá-los direito para trás para nenhuma mudança para os bytes, e carrega um ETAG para uma leitura repetida de uma página inalterada custa um validador em vez de uma transcrição. Upstream é ainda chamada toda vez — o OTK é de uso único e o MediaService é o único algo que pode dizer se este membro pode ler esta sessão, então um 304 servido sem perguntar seria um cache respondendo perguntas de autorização.