JTech Tools: Das eine Plugin hinter JTech Forums (Whispers, REQ-PM, Dumbcourse, Telegram-Bridge, unser Theme)

:information_source: Zusammenfassung Alles auf JTech Forums läuft über Discourse in einem einzigen Plugin: Moderationstools, Flüstern an ausgewählte Personen, REQ-PM, Dumbcourse, eine Telegram-Brücke, Verkaufs-Thread-Listen, intelligente Suche, Pop-ups und unser gesamtes Theme. Jedes Element hat seinen eigenen Schalter.
:hammer_and_wrench: Repository GitHub - TripleU613/JtechTools: The plugin behind JTech Forums: moderator tools and whispers, REQ-PM, Dumbcourse for flip phones, a Telegram bridge, sale-thread listings, smart search, pop-ups and the JTech theme. Every module has its own switch. · GitHub
:question: Installationsanleitung So installierst du Plugins in Discourse

Hallo zusammen,

Einige dieser Dinge kursieren bereits in Teilen auf Meta. Dumbcourse hatte im Februar sein eigenes Thema, @ars18 hat im April Mini-mod gepostet und im August habe ich in dem Dumbcourse-Thread eine lange Antwort geschrieben, in der ich alles andere aufzählte, was wir in ein einziges Plugin gepackt hatten. Das hätte mehr verdient, als unter Beitrag #38 begraben zu werden, also ist hier die ordentliche Version. Diesmal mit vielen Bildern.

JTech ist ein Technikforum, hauptsächlich für Handys, Klapphandys, Filter und ROMs, und viele unserer Mitglieder nutzen absichtlich Tasten-Handys. Jedes Tool hier existiert, weil unser eigenes Forum es brauchte.

„Warum ist das nur ein Plugin?“

merefield hat das in dem Dumbcourse-Thread gefragt und es ist eine berechtigte Frage, also hier die Antwort vorweg.

  • Jedes Modul hat seinen eigenen Ein-/Ausschalter. Einige sind ab Werk aktiv (Dumbcourse, REQ-PM, die Moderationstools), andere warten auf dich (Mini-mod, intelligente Suche, Disteleplus, Another SMTP) und einige der „Aktiven“ tun nichts, bis du sie auf eine Kategorie oder ein Thema zeigst. Gehe nach der Installation durch die Tabs und schalte aus, was du nicht willst.
  • jtech_enabled stoppt alles auf einmal, einschließlich der Berechtigungsänderungen und Hintergrundjobs. @satonotdead, du hast in dem Mini-mod-Thema gefragt, warum Mini-mod weiterlief, nachdem du das Bundle ausgeschaltet hattest. Du hattest recht, es lief weiter: Code, der in den Core gepatcht wurde, und geplante Jobs prüften nur ihren eigenen Schalter. Das ist seit dem 24. September behoben. Jedes Modul prüft nun auch den Hauptschalter.
  • Das Ausschalten von Funktionen führt nie zu Leaks. Das Ausschalten von Flüstern macht beispielsweise ein bestehendes Flüstern nicht öffentlich.
  • Jedes Modul ist intern getrennt: seine eigene Datei in sub_plugins/, sein eigener Einstellungstab, seine eigene Dokumentationsseite. Wenn du nur eines der Dinge willst, forke es und trenne es aus, mach das gerne. Das alte eigenständige Mini-mod-Repo ist archiviert und wird hier jetzt gepflegt.

Was drin ist

Jedes ist zusammengeklappt, also öffne, was interessant aussieht. Jedes Bild ist ein echter Screenshot von unserem Forum, es sei denn, es steht etwas anderes. Private Inhalte (Staff-Chat, Kontaktdaten, Mod-Notizen) sind unkenntlich gemacht.

Dumbcourse: das ganze Forum auf einem Klapphandy

Das ganze Forum unter /dumb, für Klapphandys, KaiOS und alte Android-Browser, die die normale Seite nicht ausführen können. Es wird wie die eigenen Apps des Handys über die D-Pad-Taste und das Tastenfeld gesteuert und funktioniert auch noch mit Touch und Maus.

  • Lesen: Neueste, Neue, Ungelesen, Top, Heiß, Kategorien und Tags. ↑↓ liest (ein langer Beitrag wird gescrollt, bevor der Fokus weitergeht), ←→ wechselt die Tabs, ungelesene Themen öffnen sich bei deinem ersten ungelesenen Beitrag und Zurück bringt dich genau dorthin zurück, wo du warst.
  • Handeln: OK auf einem Beitrag öffnet liken, reagieren, antworten, zitieren, merken, bearbeiten, melden, Link kopieren, jeden Link im Beitrag, Spoiler und seine Bilder. Es gibt einen Vollbild-Editor mit Erwähnungen, Emojis, Uploads, Vorschau und optionalem Rechtschreibcheck (LanguageTool).
  • Tasten: * Menü, # Suche, 0 Hilfe, 3 Antwort, 5 liken, 2/8 Seite hoch und runter. Handys, die ihre Softkeys seltsam benennen, können sie in den Einstellungen lernen.
  • Einloggen ohne Passwort-Eingabe auf einem Tastenfeld: Bestätige das Handy von einem Gerät, auf dem du bereits eingeloggt bist, oder nutze einen per E-Mail gesendeten Link oder Code. Social Logins und 2FA funktionieren auch.
  • Alte Browser finden es von selbst. Ein Browser, der das volle Forum nicht ausführen kann, wird zur passenden Dumbcourse-Seite umgeleitet, auch aus Links in E-Mails. Suchmaschinen werden nicht umgeleitet.
  • Es ist reines ES5 und CI prüft, dass es weiterhin auf Chrome 30, Firefox 30 und Android 4.4 funktioniert.

Da der Name letztes Mal aufkam: Der Pfad ist eine Einstellung (dumbcourse_base_path), also ist /simple oder /lite nur eine Änderung entfernt.

Wir haben auch eine Android-App, die Dumbcourse für Tasten-Handys kapselt, mit Push-Benachrichtigungen. Sie ist für unser Forum eingerichtet, aber der Code ist da, falls du eine für deins bauen willst. Unsere Mitglieder haben sie in dem App-Thread (450+ Antworten) und dem letzten großen Update ausgiebig getestet.

Moderationstools: Flüstern an ausgewählte Personen, private Notizen, Staff-Alerts


Das Flüstern und die Notiz in der mittleren Reihe stammen aus unseren Dokumentationen, mit fiktiven Benutzern. Der Rest ist die echte UI.

Flüstern an bestimmte Personen. Leute haben das auf Meta seit Jahren gefordert (dem Beitragsautor erlauben, ein Flüstern zu sehen, Flüstern für Gruppen außer Staff). Antworte in einem Thema nur an einige Benutzer, eine Gruppe oder alle, die ein Badge halten. Nur Staff, der Autor und diese Personen können es sehen. Es erscheint nirgendwo anders: nicht in der Suche, Aktivität, E-Mails, Benachrichtigungen, Link-Vorschauen, RSS, Dumbcourse oder der Telegram-Brücke. Antworten auf ein Flüstern bleiben automatisch privat für dieselben Personen und ein Flüstern hebt das Thema für niemanden anderen an. Staff kann einen bestehenden Beitrag in ein Flüstern umwandeln oder zurück, und jede Änderung wird im Staff-Log erfasst.

Private Notizen. Eine nur für Staff sichtbare Notiz zu einem Thema, mit einem Antwort-Thread und einer „Gesehen von“-Zeile. Neue Notizen erscheinen in der Glocke und in einem Schild-Tab im Benutzermenü, aber nur für Staff, der dieses Thema tatsächlich sehen kann.

Staff-Alerts. Du wirst informiert, wenn ein anderes Staff-Mitglied einen Beitrag löscht, einen gepufferten Beitrag genehmigt oder ablehnt, oder eine Notiz zu einem Benutzer oder einer Meldung hinzufügt. Jede Art hat ihren eigenen Schalter.

Checklisten und Themen-Tools. Eine Checkliste, die neue Mitglieder vor ihrem ersten Beitrag abhaken (mit einem Log, wer welche Version akzeptiert hat), Checklisten für bestimmte Benutzer oder an ein Thema angehängt, eine Fußzeilen-Nachricht unter einem Thema, ein gepinnter Beitrag, der nach unten kopiert wird, Antwort-Genehmigung für ein einzelnes Thema, eine „Bevor du postest“-Notiz pro Kategorie und ein Badge-Auswahlmenü, um alle mit einem Badge in eine PN einzufügen.

Die Regel für all das: Moderatoren sehen nicht alles. Ein Tool zeigt einem Moderator nie eine PN oder eine eingeschränkte Kategorie, die der Core ihm nicht zeigen würde, und Alerts gehen nur an Staff, der das öffnen kann, worauf sie verweisen.

REQ-PM: Kontaktdaten statt privater Nachrichten

Unser Forum hat absichtlich keine privaten Nachrichten. Wie kommen also zwei Mitglieder in Kontakt? Sie fragen einander um Kontaktdaten. (Unser Start-Thread, falls du sehen willst, wie die Mitglieder darauf reagiert haben.)

  • Drücke REQ-PM auf der Benutzerkarte von jemandem, hake an, was du möchtest (Telefon, WhatsApp, E-Mail, Telegram, Signal…), und sende. Es gibt kein Textfeld, damit es nicht zu einer Hintertür für Nachrichten werden kann.
  • Sie haken genau an, welche Details du bekommst. Beide Seiten können jederzeit, still, das zurückziehen, was sie geteilt haben. Nein zu sagen ist auch still: Die Person, die gefragt hat, sieht nur „Warten“ und dann „Abgelaufen“.
  • /reqpm enthält deine Anfragen, deine Kontakte (mit Anrufen / Texten / Chatten Buttons), deine eigene Karte und mit wem du geteilt hast.
  • Privatsphäre: Werte werden bei der Speicherung verschlüsselt (AES-256-GCM) und nur an ihren Eigentümer und die Personen zurückgegeben, die der Eigentümer ausgewählt hat. Es gibt kein Admin-Panel dafür und die Endpunkte verweigern API-Keys und Impersonation.
Listungsformat: Verkaufs-Threads, die ordentlich bleiben


Eine echte Listung aus unserem Verkaufs-Thread für Handys und Computer.

Wir haben einen großen „Handys und Computer zum Verkauf“-Thread, und es war früher ein Chaos aus „Noch verfügbar?“ und „PN mich“. Jetzt muss in den Themen, die du auswählst, jeder Beitrag eine Listung im Format des Threads sein, sonst wird er (mit Begründung) abgewiesen, bevor er gespeichert wird.

  • Mitglieder bekommen einen Listung erstellen-Button statt Antworten. Er öffnet ein Formular mit einem Feld für jeden Abschnitt (Artikel, Menge, Zustand, Spezifikationen, Abholung oder Versand), Auswahlmöglichkeiten für den Zustand und den normalen Editor für Bilder und Notizen.
  • Listungen erscheinen als Karten wie die oben. Der Verkäufer (oder Staff) kann eine als verkauft markieren, dann wird sie ausgeblendet und durchgestrichen.
  • Keine Links zu anderen Seiten. Telefonnummern und E-Mails sind in Ordnung, und Käufer nutzen den REQ-PM-Button des Verkäufers statt zu antworten.
  • Staff sind ausgenommen und alte Beiträge bleiben unverändert.
Disteleplus: ein Staff-Chat, der in beide Richtungen mit Telegram verbunden ist

Dieses ist zu einer ganzen Sache geworden. Nicht alle unsere Staff-Mitglieder hatten (oder wollten) WhatsApp, und nicht alle hatten Telegram. Also: Ein Ein-Raum-Chat innerhalb von Discourse, der in beide Richtungen mit einer Telegram-Gruppe gespiegelt wird.

  • In Discourse: Eine Schublade oder eine Vollbildseite mit Antworten, Bearbeitungen, Reaktionen, Sprachnotizen, Umfragen, Dateien, Erwähnungen, Suche, Link-Vorschauen und Schreib-Indikatoren. Nachrichtentext wird in der Datenbank verschlüsselt. Es benötigt nicht das offizielle Chat-Plugin.
  • In Telegram: Personen, die du verknüpft hast, posten als ihr Forum-Konto und alle anderen erscheinen mit ihrem Telegram-Namen. Optional kannst du neue Forum-Beiträge in die Gruppe ankündigen und die Review-Warteschlange in ein Berichte-Thema spiegeln, mit Genehmigen / Ablehnen Buttons, die für Staff direkt in Telegram funktionieren.

Die Einrichtung dauert etwa fünf Minuten: Erstelle einen Bot mit @BotFather, füge ihn als Admin zur Gruppe hinzu, füge den Token ein und drücke Webhook registrieren.

Wenn du Discourse Chat-Kanäle mit Telegram verbinden willst, schau dir stattdessen Discourse-Telegram chat bridge oder Discourse Chat Bridge (Telegram) an. Unseres ist ein einziger Staff-Raum, ohne Chat.

Das JTech-Theme (wird mit dem Plugin ausgeliefert)

Das eigene Theme unseres Forums wird jetzt mit dem Plugin ausgeliefert. Ein Rebuild installiert es und hält es auf dem neuesten Stand, aber es wird nie die Voreinstellung. Du schaltest es selbst unter Anpassen → Themes ein.

Es ist schwarz-weiß, mit hauchdünnen Rahmen, abgerundeten Ecken und der Geist-Schrift. Hell und dunkel sind exakte Gegensätze, und es gibt ein weicheres JTech Dim für Leute, die OLED-Schwarz zu hart finden.

  • Themen-Karten statt Tabellenzeilen, mit dem ersten Bild neben dem Titel und Schnellansicht, um ein Thema zu lesen, ohne die Liste zu verlassen.
  • Ein Befehlsmenü auf ⌘K / Ctrl+K, das zu Seiten, Kategorien, Themen und Personen springt, mit Tastenkürzeln neben jedem Befehl aufgelistet.
  • Ein Startseiten-Banner mit einem Planeten aus Punkten, der sich dreht, deiner Maus folgt und für alle stillsteht, die ihrem Gerät reduzierte Bewegung wünschen. Plus ein neu gestaltetes Header, Sidebar, Profile, Benutzerkarten, Anmeldeseite und Über-Seite.
  • Es ersetzt etwa ein Dutzend Theme-Komponenten, die wir früher liefen, jede jetzt eine Einstellung: Lesemodus, ein Inhaltsverzeichnis für Guides, eine Druck/PDF-Button, ein QR-Code in Teilen, Sprachnachrichten aus dem Editor, Beitrags-Badges, eine Als-Markdown-kopieren-Button, ein Antworten-Filter, Suche aus markiertem Text, die Antwort-Warnung für geschlossene Themen und mehr. Unser Forum läuft jetzt mit null Theme-Komponenten.
  • Wir haben eine lächerliche Menge Zeit für Barrierefreiheit aufgewendet: WCAG AA Kontrast für grauen Text in allen drei Paletten, Fokus-Ringe, die man an jeder Steuerung tatsächlich sehen kann, größere Touch-Ziele auf Handys, Windows High Contrast Modus, Rechts-nach-Links-Sprachen und 320px breite Handys.
Die kleineren: Mini-mod, Dislike, intelligente Suche, Pop-ups, Another SMTP, Übersetzer


Desktop-Pop-ups (aus unseren Dokumentationen, fiktive Benutzer).

  • Mini-mod. Einige zusätzliche Rechte für Leute, die eine Kategorie über eine Gruppe moderieren: Kategorien erstellen und bearbeiten, Themen hinein verschieben, Tags. Jedes Recht hat seinen eigenen Schalter und keines reicht über das hinaus, was diese Person bereits sehen kann. Es kann auch Rechte entziehen, wie das Wiedereröffnen geschlossener Themen. @ars18s ursprüngliches Thema hat mehr, und hier ist die Art von Anfrage, die es beantwortet.
  • Dislike. In den Kategorien, die du auswählst, zählen Likes nicht mehr: keine Benachrichtigung, keine „Erhaltene Likes“-Historie und sie zählen nicht auf der Leaderboard. Du kannst den Button dort auch komplett ausblenden oder nur bestimmten Gruppen erlauben zu liken.
  • Intelligente Suche. Wenn eine Suche fast nichts findet, versucht sie leise erneut mit Synonymen, damit „k8s“ „kubernetes“ findet und „js“ „javascript“. Es verwendet WordNet plus eine kleine Tech-Jargon-Liste, läuft in-process ohne API-Keys, behält alle Filter und Berechtigungen und fällt auf normale Suche zurück, wenn etwas schiefgeht.
  • Desktop-Pop-ups. Eine kleine Karte in der Ecke, wenn eine Benachrichtigung eingeht. Jedes Mitglied optet ein, es ist still während „Nicht stören“ und funktioniert mit Tastatur und Screenreader.
  • Another SMTP. Forum-E-Mails über einen anderen Mailserver als den in app.yml senden, von der Admin-Oberfläche aus eingestellt.
  • Übersetzer-Anpassungen. Für Seiten, die noch auf dem alten discourse-translator-Plugin mit Google sind: Leite seine Anfragen an deinen eigenen Proxy.

Installation

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/TripleU613/JtechTools.git jtech-tools

Behalte den Ordnernamen jtech-tools bei, klein geschrieben. Discourse baut die Stylesheet-URL daraus.

Dann Rebuild ausführen und zu Admin → Plugins → Jtech Tools gehen. Es gibt einen Tab pro Modul und die Dokumentationsseite jedes Moduls sagt, was zuerst eingestellt werden soll.

Wir tracken main auf Discourse 2026.8 und neuer, und .discourse-compatibility pinnt ältere Versionen. Die CHANGELOG sagt, was sich geändert hat und was nach einem Update geprüft werden sollte.

Ehrlich darüber sein

Wir sind das Admin-Team eines Forums, kein Discourse-Shop. Ein fairer Teil davon wurde mit KI-Hilfe gebaut. Was mich okay damit macht, es zu teilen, sind die Schutzvorrichtungen: Regeln im Repo, die jede Änderung einhalten muss (Berechtigungen zuerst, nie über das hinausreichen, was der Core erlaubt, nichts, was der Core bereits tut), etwa 1.700 Tests über 119 Spec-Dateien, die bei jedem PR laufen, und der größte Teil davon läuft jeden Tag auf unserem eigenen Forum. Es wird immer noch Bugs und seltsame Randfälle geben. Bitte sag uns Bescheid, wenn du einen findest.

Issues und PRs sind sehr willkommen auf GitHub. Sicherheitsprobleme gehen privat über SECURITY.md.

Dank an @ars18 und Shalom Karr, die einen großen Teil davon mit mir gebaut haben, an alle auf JTech, die Bugs gemeldet und halbfertige Dinge ausprobiert haben, und an die Leute in den Dumbcourse- und Mini-mod-Threads, deren Fragen es besser gemacht haben.

Viel Spaß :lion:

7 „Gefällt mir“