Erweitern von Chat-Nachrichtenblöcken

Hallo zusammen,

ich möchte ein Plugin entwickeln, das GitLab-/GitHub-Aktivitätsbenachrichtigungen in Discourse Chat anzeigt, oder allgemeiner gesagt, regelmäßige Ereignisse.

Für eine ansprechendere Ausgabe möchte ich Aktivitäten als Karte darstellen. Dabei ist mir aufgefallen, dass Chat-Nachrichten ein JSON-Feld blocks haben, das sich dafür gut eignet. Leider scheinen die Blocktypen derzeit nicht ohne Änderungen an den Chat-Interna erweiterbar zu sein: Das Schema, die Serialisierer und der Frontend-Renderer listen alle unterstützten Block-/Elementtypen auf.

Wäre es möglich, blocks als Erweiterungsstelle für Plugins zu nutzen, oder sollten Plugins es als interne Implementierungsdetail betrachten?

Konkret wäre Discourse offen für folgende Optionen:

  1. einen generischen Ereignis-/Karten-Blocktyp im Core, oder
  2. eine Plugin-API im Stil von registerChatBlockType?

Ich könnte auf Markdown-Rendering und das Dekorieren der vorbereiteten Chat-Nachrichten auf der Client-Seite ausweichen, aber strukturierte Blöcke scheinen das sauberere Modell zu sein, wenn dieser Ansatz als machbar gilt.

Das steht derzeit nicht ganz oben auf unserer Roadmap, aber kannst du beschreiben, welche Art von API du benötigst?

Am liebsten hätte ich eine API, die es einem Plugin ermöglicht:

  1. Einen Namen für einen Chat-Nachrichtenblock-Typ zu registrieren, der diesem Plugin gehört
  2. Optional einen JSON-Schema-Validator für diesen Block bereitzustellen
  3. Einen Renderer für diesen Block zu registrieren

All das lässt sich auch durch Patches umsetzen, aber mit einer offiziellen API wären Stabilität und Sicherheit besser. Mein Anwendungsfall sind Forge-Aktivitätsbenachrichtigungen, aber ich kann mir vorstellen, dass es noch andere Anwendungen geben würde (z. B. RSS als Alternative zum RSS-Plugin, Social-Media-Feeds usw.).