Fim de vida útil previsto para o sistema de renderização de widgets

Olá a todos! Como etapa final do nosso esforço para abandonar o sistema de renderização legado de “widgets”, estamos descontinuando o uso de widgets no Discourse e em breve o desativaremos completamente.

Cronograma

Estes são estimativas e sujeitos a alterações

Julho de 2025:

  • :white_check_mark: Adicionar avisos de descontinuação no núcleo e uma configuração de site experimental para desativá-los
  • :white_check_mark: Publicar anúncio no Meta

Agosto de 2025

  • :white_check_mark: Atualizar os plugins e componentes de tema oficiais para usar Componentes Glimmer.
  • :white_check_mark: Executar o Meta com os widgets desativados.
  • :white_check_mark: Habilitar mensagens de descontinuação com um banner de aviso para administradores.

Terceiro Trimestre de 2025:

  • Plugins e temas de terceiros precisam ser atualizados.

Quarto Trimestre de 2025:

  • :white_check_mark: O sistema de renderização de widgets será desativado por padrão usando deactivate_widgets_rendering: true. Haverá um curto período de tempo em que ele poderá ser reativado manualmente.

  • :white_check_mark: Remover o código legado e desativar o sistema de renderização de widgets

:police_car_light: Plugins e temas não compatíveis deixarão de funcionar corretamente após isso.

O que isso significa para você?

Se algum dos seus plugins ou temas usar APIs de ‘widget’, você precisará atualizá-los para usar APIs mais novas ou Componentes Glimmer antes do prazo do quarto trimestre de 2025.

Eu tenho plugins ou temas personalizados instalados. Preciso atualizá-los?

Você precisará atualizar seus plugins ou temas se eles usarem algum dos seguintes:

  • createWidget
  • decorateWidget, changeWidgetSetting, reopenWidget, ou attachWidgetAction
  • O componente MountWidget

:bulb: Dica Pro: Se você tiver extensões que usam alguma dessas personalizações, verá um aviso no console identificando qual plugin ou componente precisa ser atualizado.

:warning: Importante: Se você usa mais de um tema na sua instância, certifique-se de verificar todos eles, pois os avisos só aparecerão para plugins ativos e temas e componentes de tema atualmente em uso.

O ID de descontinuação é: discourse.widgets-end-of-life

Como isso se relaciona com a recente modernização do post-stream?

O post-stream foi a última parte importante do Discourse a ainda usar o sistema de renderização de widgets. Com sua modernização, agora podemos avançar com a aposentadoria completa do sistema de widgets. Dê uma olhada no guia de atualização para mais detalhes sobre essas mudanças.

Como eu atualizo?

Se você usa um plugin ou tema de terceiros: Verifique se o autor lançou uma versão atualizada que seja compatível com o novo sistema.

Se você é um autor de plugin/tema:

  • Substitua seus widgets personalizados por Componentes Glimmer
  • Use conectores de plugin-outlet para inseri-los na UI

Consulte nossos Guias do Desenvolvedor para mais informações sobre como fazer essas atualizações.

8 curtidas

Quando você atualizar sua instalação do Discourse na próxima vez, o sistema de renderização de widgets será desativado e qualquer personalização baseada em widgets não será mais renderizada.

Por enquanto, em sites incompatíveis, o administrador pode reativar o comportamento antigo modificando os valores da seguinte configuração:

  • deactivate_widgets_rendering

Esta é a fase final antes da remoção do código antigo da base de código do Discourse, o que está previsto para acontecer em cerca de um mês. Subsequentemente, não será mais possível reativar os widgets.

6 curtidas

O PR que remove o sistema de widgets do Discourse foi mesclado ontem.

4 curtidas

Talvez uma pergunta boba, mas você acha que seria possível o Discourse oferecer um arquivo .md com um guia/ajudas que se pudesse fornecer à ferramenta de linha de comando (CLI) de sua escolha para auxiliar na migração de um componente de plugin?

Apenas uma ideia :smiley:

1 curtida

Tentamos fornecer instruções de migração para os padrões de personalização mais comuns, como aqueles que modificaram o fluxo de posts.

É mais difícil escrever um guia mais abrangente porque praticamente tudo poderia ser feito usando widgets, então as necessidades de personalização restantes precisam ser convertidas em componentes caso a caso.

Estou monitorando esses tópicos e tentaremos responder às perguntas postadas aqui para ajudar aqueles que ainda precisam migrar.

Eu dei uma olhada rápida no código que parece estar acionando a descontinuação no seu fórum usando o console do navegador, e parece ser a seguinte linha:

const { iconNode } = require("discourse-common/lib/icon-library");
let iconsjira = iconNode('icons-jira');

iconNode era usado apenas por widgets, e agora é uma função noop (sem operação). No seu código, não parece que esta variável esteja sendo usada, então deve ser seguro simplesmente remover essas linhas.

Avise-me se precisar de mais ajuda.