Fin de vie à venir pour le système de rendu de widgets

Bonjour à tous ! Dans le cadre de la dernière étape de notre effort pour abandonner l’ancien système de rendu « widget », nous supprimons progressivement l’utilisation des widgets dans Discourse et allons bientôt le désactiver complètement.

Calendrier

Ce sont des estimations et sont sujettes à changement

Juillet 2025 :

  • :white_check_mark: Ajouter des avertissements de dépréciation dans le cœur et un réglage de site expérimental pour les désactiver
  • :white_check_mark: Publier une annonce sur Meta

Août 2025

  • :white_check_mark: Mettre à niveau les plugins et composants de thème officiels pour utiliser les composants Glimmer.
  • :white_check_mark: Exécuter Meta avec les widgets désactivés.
  • :white_check_mark: Activer les messages de dépréciation avec une bannière d’avertissement pour les administrateurs.

T3 2025 :

  • Les plugins et thèmes tiers doivent être mis à niveau.

T4 2025 :

  • :white_check_mark: Le système de rendu des widgets sera désactivé par défaut en utilisant deactivate_widgets_rendering: true. Il y aura une courte période pendant laquelle il pourra être réactivé manuellement.

  • :white_check_mark: Supprimer l’ancien code et désactiver le système de rendu des widgets

:police_car_light: Les plugins et thèmes non compatibles cesseront de fonctionner correctement après cela.

Qu’est-ce que cela signifie pour vous ?

Si l’un de vos plugins ou thèmes utilise des API de « widget », vous devrez les mettre à jour pour utiliser les nouvelles API ou les composants Glimmer avant la date limite du T4 2025.

J’ai des plugins ou des thèmes personnalisés installés. Dois-je les mettre à jour ?

Vous devrez mettre à jour vos plugins ou thèmes s’ils utilisent l’un des éléments suivants :

  • createWidget
  • decorateWidget, changeWidgetSetting, reopenWidget, ou attachWidgetAction
  • Le composant MountWidget

:bulb: Astuce de pro : Si vous avez des extensions qui utilisent ces personnalisations, vous verrez un avertissement dans la console identifiant quel plugin ou composant doit être mis à jour.

:warning: Important : Si vous utilisez plus d’un thème dans votre instance, assurez-vous de tous les vérifier car les avertissements n’apparaîtront que pour les plugins actifs et les thèmes et composants de thème actuellement utilisés.

L’ID de dépréciation est : discourse.widgets-end-of-life

Quel est le rapport avec la récente modernisation du flux de publication ?

Le flux de publication était la dernière partie majeure de Discourse à utiliser le système de rendu des widgets. Avec sa modernisation, nous pouvons maintenant procéder à la mise à la retraite complète du système de widgets. Consultez le guide de mise à niveau pour plus de détails sur ces changements.

Comment puis-je effectuer la mise à niveau ?

Si vous utilisez un plugin ou un thème tiers : Vérifiez si l’auteur a publié une version mise à niveau compatible avec le nouveau système.

Si vous êtes un auteur de plugin/thème :

  • Remplacez vos widgets personnalisés par des composants Glimmer
  • Utilisez les connecteurs plugin-outlet pour les insérer dans l’interface utilisateur

Consultez nos Guides pour développeurs pour plus d’informations sur la manière d’effectuer ces mises à jour.

8 « J'aime »

Lorsque vous mettrez à jour votre installation Discourse la prochaine fois, le système de rendu des widgets sera désormais désactivé et toute personnalisation basée sur des widgets ne sera plus rendue.

Pour l’instant, sur les sites incompatibles, l’administrateur peut réactiver l’ancien comportement en modifiant les valeurs du paramètre suivant :

  • deactivate_widgets_rendering

C’est la phase finale avant de supprimer l’ancien code de la base de code de Discourse, ce qui est prévu dans environ un mois. Par la suite, il ne sera plus possible de réactiver les widgets.

6 « J'aime »

La PR supprimant le système de widgets de Discourse a été fusionnée hier.

4 « J'aime »

Peut-être une question stupide, mais pensez-vous qu’il serait possible pour Discourse de proposer un fichier .md avec un guide/des aides que l’on pourrait fournir à l’outil de ligne de commande de son choix pour aider à la migration d’un composant de plugin ?

Juste une pensée :smiley:

1 « J'aime »

Nous avons essayé de fournir des instructions de migration pour les modèles de personnalisation les plus courants, comme ceux qui modifiaient le flux de messages (post-stream).

Il est plus difficile d’écrire un guide plus complet car pratiquement tout pouvait être fait en utilisant des widgets, donc les besoins de personnalisation restants doivent être convertis en composants au cas par cas.

Je surveille ces sujets et nous essaierons de répondre aux questions posées ici pour aider ceux qui ont encore besoin de migrer.

J’ai brièvement examiné le code qui semble déclencher la dépréciation sur votre forum en utilisant la console du navigateur, et il semble que ce soit la ligne suivante :

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

iconNode n’était utilisé que par les widgets, et c’est maintenant une fonction nulle (noop). Dans votre code, il ne semble pas que cette variable soit utilisée, il devrait donc être sûr de simplement supprimer ces lignes.

Faites-moi savoir si vous avez besoin d’aide supplémentaire.

1 « J'aime »