Post editado às vezes fica desatualizado até atualizar no DiscourseHub no iOS

Encontrei um problema intermitente em que um post editado é salvo com sucesso, mas o post já renderizado no DiscourseHub no iOS às vezes permanece desatualizado até que eu atualize o tópico.

Ambiente

O site de produção é minha própria instalação auto-hospedada do Discourse, que uso privadamente como um arquivo pessoal de estudos.

No momento em que reproduzi isso hoje:

  • Cliente: DiscourseHub no iPhone
  • iOS: 27.0.1
  • Discourse de produção: v2026.10.0-latest +112
  • Site: auto-hospedado, arquivo privado de estudos
  • Navegador padrão do iOS: iCab Mobile

Mudei meu navegador padrão para o iCab Mobile devido a um problema local não relacionado com downloads. No entanto, essa reprodução ocorreu enquanto eu usava o site do Discourse dentro do DiscourseHub, e não após abrir um navegador externo, então, no momento, não acredito que a escolha do navegador padrão seja relevante.

Fluxo de trabalho real

O tópico onde notei isso continha aproximadamente 50 posts representando slides de aula.

Meu fluxo de trabalho normal é:

  1. criar um post contendo uma imagem de um slide de aula;
  2. posteriormente, percorrer o tópico consecutivamente;
  3. editar cada post existente;
  4. adicionar uma transcrição OCR / notas abaixo da imagem do slide já postada;
  5. pressionar Salvar Edição e continuar para o próximo slide.

Portanto, estas não são edições rápidas sintéticas: este é um fluxo de trabalho normal de estudo em que estou adicionando progressivamente transcrições OCR a posts de imagens de slides de aula.

Para os posts anteriores no tópico, pressionar Salvar Edição substituía imediatamente o post exibido pelo conteúdo recém-editado, como esperado.

Mais tarde no mesmo tópico, encontrei casos em que:

  1. Editei o post e adicionei o texto OCR.
  2. Pressionei Salvar Edição.
  3. A edição foi salva com sucesso.
  4. O post exibido no DiscourseHub permaneceu com seu conteúdo anterior.
  5. Atualizar a página mostrou imediatamente a edição já salva.

Portanto, a própria edição parece ter tido sucesso. A parte desatualizada parece ser a representação do cliente do post que já foi carregada.

Teste de desenvolvimento

Em seguida, criei uma instância de desenvolvimento completamente limpa a partir do main upstream atual:

833e1576d47 DEV: Update README.md note on self-hosting (#44320)

Gerei um tópico contendo 60 posts, com uma imagem em cada post, para imitar a estrutura do tópico de produção.

Em seguida, repeti o fluxo de trabalho no Firefox no Linux, editando texto nos posts de imagem existentes.

Inicialmente, vi uma possível atualização desatualizada em torno do post 19 no meu primeiro teste. No entanto, após repetir o experimento com mais cuidado - incluindo a criação de um novo tópico de 60 posts e editando posts consecutivamente - não consegui reproduzir o comportamento de produção no Firefox/Linux no main atual.

As edições lá estavam repintando o post imediatamente após Salvar Edição, incluindo muito além do primeiro grupo de posts no tópico.

Isso me deixou menos confiante de que a paginação do tópico ou o fluxo normal de 20 posts seja a causa.

Próximo teste

A reprodução de produção foi no DiscourseHub no iOS, e não em uma PWA da Tela Inicial.

Minha próxima comparação pretendida é, portanto:

  • instância de desenvolvimento do Discourse upstream atual;
  • o mesmo tópico de imagem de 60 posts;
  • o mesmo iPhone executando iOS 27.0.1;
  • DiscourseHub primeiro;
  • Safari no mesmo iPhone como controle;
  • opcionalmente, o aplicativo web da Tela Inicial como outra comparação;
  • editar os posts consecutivamente usando o mesmo fluxo de trabalho estilo OCR.

No momento, meu laptop de desenvolvimento está na eduroam, então expor diretamente seu servidor de desenvolvimento local para o iPhone não é simples.

Executar a instância de desenvolvimento do main atual no mesmo iPhone no DiscourseHub é o próximo passo certo para reduzir as possibilidades?

Se sim, existe uma maneira preferida que a equipe do Discourse usa para expor uma instância de desenvolvimento local para um iPhone / DiscourseHub para testes, idealmente via HTTPS?

Na próxima ocorrência, também posso deixar o post desatualizado sem atualizar e capturar uma gravação de tela, para que o salvamento bem-sucedido/estado do servidor possa ser comparado diretamente com o que o cliente do DiscourseHub já aberto está exibindo.

Observação possivelmente relevante

Este comportamento parece semelhante, em alto nível, ao problema de estado desatualizado do cliente com que me deparei ao trabalhar na
PR #43285, “Atualizar datas de eventos nas listas de tópicos”.

Isso foi um caminho de código diferente, e não estou sugerindo que seja o mesmo bug.

No entanto, a falha observável era semelhante: o estado do lado do servidor podia estar correto, enquanto um cliente já carregado continuava exibindo estado desatualizado até que a atualização/re-hidratação relevante ocorresse.

Com o problema das datas de eventos, fui capaz de observar uma situação A/B em diferentes clientes já abertos dependendo do tempo.

Isso me faz me perguntar se este problema de edição também está em algum lugar na cadeia de notificação / atualização de modelo / renderização, em vez de a própria edição estar falhando.

Também notei isso (mas, admito, não li o relatório inteiro).