Posts do tópico que acabei de sair permanecem renderizados no próximo tópico após navegação no aplicativo

Ativei as respostas aninhadas para todos os tópicos (tema Horizon) e encontrei um bug de estado que agora consigo reproduzir, tanto no mobile quanto no desktop.

Ao abrir um tópico, lê-lo e, em seguida, saltar para outro tópico por meio do bloco de tópicos sugeridos/relacionados (ou seja, navegação no lado do cliente, sem recarregar), as respostas do tópico que acabei de deixar às vezes permanecem na tela — renderizadas aninhadas sob o primeiro ramo do novo tópico. Elas até se anexam a uma postagem que foi excluída no novo tópico. Isso não desaparece mesmo se eu continuar navegando para mais tópicos; apenas uma recarga completa da página resolve o problema.

Um detalhe importante: o problema é intermitente. O primeiro salto pelo bloco relacionado geralmente funciona bem, e consigo clicar várias vezes sem problemas. Ele só parece aparecer após navegar pelo bloco de tópicos relacionados duas ou mais vezes consecutivas.

Passos para reproduzir:

  1. Abra um tópico com respostas aninhadas.
  2. Abra outro tópico por meio do bloco de tópicos sugeridos/relacionados (sem recarregar) e continue fazendo isso algumas vezes consecutivamente.
  3. Após dois ou mais saltos consecutivos pelo bloco, respostas de um tópico anterior aparecem aninhadas sob o primeiro ramo do tópico atual, às vezes sob uma postagem que foi excluída ali.
  4. Elas persistem em futuras navegações dentro do aplicativo até uma recarga forçada.

Não há erro de JS no console, então fui até a aba Rede e parece que o tópico anterior simplesmente nunca é desmontado:

  • A página inspecionada é o tópico 724 (/n/vibriruet-pri-troganii…/724?sort=old).
  • Enquanto estou no 724, uma solicitação pelos dados do tópico anterior ainda está no log: 509.json?sort=old&track_visit=true.
  • A sondagem do message-bus ao vivo ainda tem Referer …/n/pinki-tolchki-…-na-nissane-kube/509 — ou seja, a assinatura do message-bus do tópico 509 nunca foi redirecionada para o 724.

Então realmente parece que a rota aninhada não redefinir o fluxo de postagens / a assinatura do message-bus do tópico de origem durante a navegação no lado do cliente. Percebi isso primeiro no mobile, mas o comportamento é o mesmo no desktop.

Versão do Discourse: 2026.6.0-latest (27f76aa897)
Fico feliz em anexar uma gravação de tela ou investigar mais se isso ajudar.

3 curtidas

@Andry_Osminin Isso ocorre apenas no tema Horizon ou é o mesmo no Foundation?

Ainda não consegui reproduzir bem, mas estou avisando @markvanlan para visualizar.

2 curtidas

Ele se reproduz apenas no Horizon — no Foundation, não vi o ramo de respostas sendo carregado entre os tópicos.

Mas não acho que ele esteja simplesmente ausente no Foundation; parece mais uma questão de como a navegação funciona lá. A diferença que notei:

  • Horizon: quando clico em um tópico relacionado (ou abro qualquer tópico da lista), o tópico aparece instantaneamente, sem indicador de carregamento. Essa navegação instantânea é exatamente quando o carregamento do ramo aparece, após 2+ cliques consecutivos.
  • Foundation: o tópico também aparece instantaneamente no início (igual ao Horizon), mas depois de ~200-400 ms, uma tela de carregamento com pontos animados aparece e o tópico é carregado novamente — ou seja, há uma segunda carga, autoacionada, logo após a abertura rápida.

Então, parece que o bug surge especificamente por causa da navegação “instantânea”, onde o estado do tópico anterior não é redefinido. No Foundation, essa carga subsequente aparentemente redefine o estado e mascara o problema. Em outras palavras: no Horizon, a navegação instantânea entre tópicos aninhados não redefine o fluxo de postagens do tópico anterior / a assinatura do message-bus, enquanto o fluxo do Foundation faz isso por meio dessa segunda carga.

Separadamente, ao testar no Horizon: na visualização aninhada, ocasionalmente ocorre uma pequena mudança no layout. Abro um tópico, começo a rolar para baixo e, quando a tela atinge as respostas, pode ocorrer uma rápida micro-mudança — nem sempre, mas com bastante frequência. Pode estar relacionado, pode ser algo menor e separado; estou sinalizando apenas por precaução.

2 curtidas

Uma coisa separada e menor que encontrei — não tenho certeza se é específico de aninhamento ou do Horizon, mas não ocorreu no modo plano: a linha de estatísticas do tópico está disposta incorretamente em um caso limite. Quando um tópico tem usuários demais poucos para mostrar a contagem de “usuários” e nenhum tempo de leitura é exibido, o contador de visualizações cai para uma única linha e é renderizado em uma cor diferente, em vez do bloco de estatísticas estilizado normal com o número. Captura de tela 1 — normal. Captura de tela 2 — o caso limite. Fico feliz em separar isso em seu próprio tópico se preferir manter os bugs separados.

1 curtida

Acho que encontrei uma solução para os seus problemas com o Horizon. Incluirei em um PR em breve que afetará bastante a visualização de tópicos aninhados no mobile. Espero liberá-lo hoje.

3 curtidas

Obrigado por pular nisso tão rápido! Encontrei a correção em #40548 (“correção de desmontagem de registro de postagem aninhada”) e vi que o PR ainda está em rascunho, então sem pressa alguma.

Só queria dar um toque — há uma ideia aproximada de quando isso pode ser integrado? E ficarei feliz em testá-lo na minha instância assim que estiver pronto, se for útil.

1 curtida

Ei Andry,

Incluí essa correção em uma refatoração maior da UX móvel em que tenho trabalhado. Estou fazendo os testes finais de QA para garantir que não estou quebrando nada inesperadamente. Espero ter isso mesclado hoje ou amanhã.

1 curtida

Merguei o PR :+1: me avise após a atualização se tudo estiver parecendo bom. Não esqueci da formatação estranha do rótulo views. Vou resolver isso em breve.

2 curtidas

Obrigado por incluir a #40652! Agora estou na versão 2f2676180 com a #40652 no repositório, fiz uma reconstrução completa do app ./launcher e verifiquei no modo anônimo, então não é questão de cache. Mesmo assim, o efeito de continuidade ainda está ocorrendo.

Como o problema se reproduz para mim (classificação definida como mais antigo primeiro): o primeiro tópico e as duas respostas sob ele sempre seguem para o próximo tópico e aparecem sob o primeiro tópico ali, desde que eu navegue entre tópicos sem recarregar a página. Uma recarga completa da página resolve.

Ideia não relacionada, não é um bug: quando alguém responde ao próprio post, talvez não adicione outro nível de aninhamento e apenas o coloque abaixo, no mesmo nível. Alguns aplicativos fazem assim e isso evita que os tópicos fiquem muito profundos. Só uma sugestão.

Tudo bem, mais uma tentativa: FIX: prevent nested reply children leaking between topics on Horizon by markvanlan · Pull Request #40687 · discourse/discourse · GitHub

Me avise como funciona. Obrigado pelos relatórios!

3 curtidas

Atualizado e testado – funciona perfeitamente, sem mais vazamentos entre tópicos :tada:. Muito obrigado! Agora posso implementar as respostas aninhadas em todo o fórum.

2 curtidas

Isso foi corrigido neste commit FIX: Avoid single stat layout for nested topic maps (#40744) · discourse/discourse@fc64d05 · GitHub

Obrigado novamente pelos relatórios!

1 curtida