JTech Tools: il plugin dietro JTech Forums (whispers, REQ-PM, Dumbcourse, ponte Telegram, il nostro tema)

:information_source: Sommario Tutto su JTech Forums gira su Discourse, all’interno di un unico plugin: strumenti per i moderatori, messaggi privati a persone selezionate, REQ-PM, Dumbcourse, un ponte con Telegram, elenchi di annunci di vendita, ricerca intelligente, popup e l’intero nostro tema. Ogni componente ha il proprio interruttore.
: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: Guida all’installazione Come installare i plugin in Discourse

Ciao a tutti,

Parte di questo è già stata discussa su Meta a pezzi. Dumbcourse ha avuto il suo stesso topic a febbraio, @ars18 ha pubblicato Mini-mod ad aprile e ad agosto ho pubblicato una lunga risposta nel thread di Dumbcourse elencando tutto il resto che avevamo inserito in un unico plugin. Meritava di meglio che essere sepolto nel post #38, quindi ecco la versione appropriata. Con molte immagini questa volta.

JTech è un forum tecnologico, principalmente telefoni, cellulari a conchiglia, filtri e ROM, e molti dei nostri membri usano telefoni a tastiera appositamente. Ogni strumento qui esiste perché il nostro stesso forum ne aveva bisogno.

“Perché è un unico plugin?”

merefield ha fatto questa domanda nel thread di Dumbcourse ed è una domanda legittima, quindi ecco la risposta in anticipo.

  • Ogni modulo ha il proprio interruttore on/off. Alcuni sono attivi di default (Dumbcourse, REQ-PM, gli strumenti per i moderatori), altri aspettano che tu li attivi (Mini-mod, ricerca intelligente, Disteleplus, Another SMTP) e alcuni di quelli “attivi” non fanno nulla finché non li punti a una categoria o a un topic. Dopo l’installazione, passa attraverso le schede e disattiva ciò che non vuoi.
  • jtech_enabled blocca tutto in una volta, inclusi i cambiamenti di permessi e i job in background. @satonotdead, hai chiesto nel topic di Mini-mod perché Mini-mod continuasse a funzionare dopo aver disattivato il bundle. Avevi ragione, lo faceva: il codice integrato nel core e i job pianificati controllavano solo il loro interruttore. È stato corretto dal 24 settembre. Ora ogni modulo controlla anche l’interruttore principale.
  • Disattivare le funzioni non lascia mai nulla esposto. Disattivare i messaggi privati, ad esempio, non rende pubblico un messaggio esistente.
  • Ogni modulo è mantenuto separatamente all’interno: il suo file in sub_plugins/, la sua scheda di impostazioni, la sua pagina di documentazione. Se vuoi solo una cosa, forkallo e separalo, vai pure. Il vecchio repository standalone di Mini-mod è archiviato, e qui è dove viene mantenuto ora.

Cosa c’è dentro

Ognuno è piegato, quindi apri ciò che sembra interessante. Ogni immagine è uno schermo reale del nostro forum a meno che non sia indicato diversamente. Le cose private (chat dello staff, dettagli di contatto, note dei mod) sono sfocate.

Dumbcourse: l'intero forum su un telefono a conchiglia

L’intero forum in /dumb, per telefoni a conchiglia, KaiOS e vecchi browser Android che non possono eseguire il sito normale. È guidato dal D-pad e dalla tastiera come le app proprie del telefono, e funziona ancora con il touch e il mouse.

  • Lettura: Ultimi, Nuovi, Non letti, Top, Caldi, categorie e tag. ↑↓ legge (un post lungo scorre prima che il focus si sposti), ←→ cambia scheda, i topic non letti si aprono al tuo primo post non letto e Back ti riporta esattamente dove eri.
  • Azioni: OK su un post apre like, reazione, risposta, citazione, segnalibro, modifica, segnalazione, copia link, ogni link nel post, spoiler e le sue immagini. C’è un compositore a schermo intero con menzioni, emoji, upload, anteprima e controllo ortografico opzionale (LanguageTool).
  • Tasti: * menu, # ricerca, 0 aiuto, 3 risposta, 5 like, 2/8 pagina su e giù. I telefoni che nominano le loro chiavi soft in modo strano possono essere insegnati nelle Preferenze.
  • Accesso senza digitare una password su una tastiera: approva il telefono da un dispositivo su cui sei già autenticato, oppure usa un link o un codice via email. Anche i login social e la 2FA funzionano.
  • I vecchi browser lo trovano da soli. Un browser che non può eseguire l’intero forum viene inviato alla pagina Dumbcourse corrispondente, incluso dai link nelle email. I motori di ricerca non vengono reindirizzati.
  • È ES5 puro, e CI verifica che continui a funzionare su Chrome 30, Firefox 30 e Android 4.4.

Dato che il nome è stato menzionato l’ultima volta: il percorso è un’impostazione (dumbcourse_base_path), quindi /simple o /lite è a un solo cambio di distanza.

Abbiamo anche un app Android che incapsula Dumbcourse per telefoni a tastiera, con notifiche push. È configurato per il nostro forum, ma il codice è lì se vuoi crearne uno per il tuo. I nostri membri lo hanno martellato nel thread dell’app (450+ risposte) e nell’ultimo grande aggiornamento.

Strumenti per i moderatori: messaggi privati a persone selezionate, note private, avvisi per lo staff


I messaggio privato e la nota nella riga centrale sono dalla nostra documentazione, con utenti inventati. Il resto è l’interfaccia reale.

Messaggi privati a persone specifiche. La gente chiede questo su Meta da anni (lasciare che l’autore del post veda un messaggio privato, messaggi privati per gruppi diversi dallo staff). Rispondi all’interno di un topic solo a pochi utenti, a un gruppo o a tutti coloro che hanno un badge. Solo lo staff, l’autore e quelle persone possono vederlo. Non appare da nessun’altra parte: non nella ricerca, nell’attività, nelle email, nelle notifiche, nelle anteprime dei link, in RSS, in Dumbcourse o nel ponte Telegram. Le risposte a un messaggio privato restano private per le stesse persone automaticamente, e un messaggio privato non fa mai salire il topic per nessun altro. Lo staff può trasformare un post esistente in un messaggio privato o viceversa, e ogni cambiamento va nel registro dello staff.

Note private. Una nota solo per lo staff su un topic, con un thread di risposte e una riga “visto da”. Le nuove note appaiono nella campanella e in una scheda scudo nel menu utente, ma solo per lo staff che può effettivamente vedere quel topic.

Avvisi per lo staff. Vieni informato quando un altro membro dello staff elimina un post, approva o rifiuta un post in coda, o aggiunge una nota a un utente o a una segnalazione. Ogni tipo ha il proprio interruttore.

Checklist e strumenti per i topic. Una checklist che i nuovi membri spuntano prima del loro primo post (con un registro di chi ha accettato quale versione), checklist rivolte a utenti specifici o collegate a un singolo topic, un messaggio nel piè di pagina sotto un topic, un post fissato copiato in fondo, approvazione delle risposte per un singolo topic, una nota “prima di postare” per categoria, e un selettore di badge per aggiungere tutti con un badge a un messaggio privato.

La regola per tutto questo: i moderatori non vedono tutto. Uno strumento non mostra mai a un moderatore un messaggio privato o una categoria riservata che il core non mostrerebbe loro, e gli avvisi vanno solo allo staff che può aprire ciò a cui puntano.

REQ-PM: dettagli di contatto invece di messaggi privati

Il nostro forum non ha messaggi privati, appositamente. Quindi come fanno due membri a mettersi in contatto? Si chiedono i dettagli di contatto. (Il nostro thread di lancio, se vuoi vedere come l’hanno preso i membri.)

  • Premi REQ-PM sulla scheda utente di qualcuno, spunta ciò che vorresti (telefono, WhatsApp, email, Telegram, Signal…) e invia. Non c’è una casella di testo, quindi non può diventare una porta di scappatoia per i messaggi.
  • Loro spuntano esattamente quali dettagli ottieni. Qualsiasi parte può ritirare ciò che ha condiviso, in qualsiasi momento, in silenzio. Dire no è anche in silenzio: la persona che ha chiesto vede solo “in attesa” e poi “scaduto”.
  • /reqpm contiene le tue richieste, i tuoi contatti (con pulsanti Chiama / Testo / Chat), la tua scheda e con chi hai condiviso.
  • Privacy: i valori sono crittografati a riposo (AES-256-GCM) e restituiti solo al loro proprietario e alle persone scelte dal proprietario. Non c’è una schermata di amministrazione per loro, e gli endpoint rifiutano le chiavi API e l’impersonificazione.
Formato elenco: thread di vendita che restano ordinati


Un annuncio reale dal nostro thread di vendita di telefoni e computer.

Abbiamo un grande thread “telefoni e computer in vendita”, e un tempo era un caos di “ancora disponibile?” e “mandami un messaggio privato”. Ora, nei topic che scegli, ogni post deve essere un annuncio nel formato del thread, altrimenti viene rifiutato (con la ragione) prima di essere salvato.

  • I membri ottengono un pulsante Crea annuncio invece di Rispondi. Apre un modulo con una casella per ogni sezione (articolo, quantità, condizione, specifiche, ritiro o spedizione), scelte da selezionare per la condizione, e l’editor normale per immagini e note.
  • Gli annunci appaiono come schede come quella sopra. Il venditore (o lo staff) può marcarne uno venduto, e poi si attenua e viene barrato.
  • Nessun link ad altri siti. Numeri di telefono e email sono ok, e gli acquirenti usano il pulsante REQ-PM del venditore invece di rispondere.
  • Lo staff è esentato, e i post vecchi vengono lasciati intatti.
Disteleplus: una chat per lo staff collegata in entrambi i modi con Telegram

Questo è cresciuto fino a diventare una cosa importante. Non tutto il nostro staff aveva (o voleva) WhatsApp, e non tutti avevano Telegram. Quindi: una chat a una stanza dentro Discourse che è specchiata in entrambi i modi con un gruppo Telegram.

  • In Discourse: una cassetta o una pagina completa con risposte, modifiche, reazioni, note vocali, sondaggi, file, menzioni, ricerca, anteprime dei link e indicatori di digitazione. Il testo dei messaggi è crittografato nel database. Non ha bisogno del plugin Chat ufficiale.
  • In Telegram: le persone che hai collegato pubblicano come il loro account del forum e tutti gli altri appaiono con il loro nome Telegram. Opzionalmente puoi annunciare nuovi post del forum nel gruppo, e specchiare la coda di revisione in un topic Segnalazioni con pulsanti Approva / Rifiuta che funzionano per lo staff direttamente lì in Telegram.
  • La configurazione richiede circa cinque minuti: crea un bot con @BotFather, aggiungilo al gruppo come amministratore, incolla il token, premi Registra webhook.

Se ciò che vuoi è collegare i canali Discourse Chat a Telegram, guarda Discourse-Telegram chat bridge o Discourse Chat Bridge (Telegram) invece. Il nostro è una stanza per lo staff, senza Chat.

Il tema JTech (viene fornito con il plugin)

Il tema del nostro forum ora viene fornito con il plugin. Una ricostruzione lo installa e lo mantiene aggiornato, ma non viene mai reso predefinito. Lo attivi tu stesso sotto Personalizza → Temi.

È bianco e nero, con bordi sottili, angoli arrotondati e il font Geist. Chiaro e scuro sono opposti esatti, e c’è un JTech Dim più morbido per chi trova il nero OLED troppo duro.

  • Schede topic invece di righe di tabella, con la prima immagine accanto al titolo e Sguardo rapido per leggere un topic senza lasciare l’elenco.
  • Un menu comandi su ⌘K / Ctrl+K che salta a pagine, categorie, topic e persone, con scorciatoie da tastiera elencate accanto a ogni comando.
  • Un banner della pagina frontale con un pianeta di punti che gira, segue il mouse e resta fermo per chiunque chieda al proprio dispositivo la riduzione del movimento. Inoltre un’intestazione ridisegnata, sidebar, profili, schede utente, pagina di accesso e pagina info.
  • Sostituisce circa una dozzina di componenti del tema che usavamo in passato, ognuno ora un’impostazione: modalità lettore, un indice per le guide, un pulsante stampa/PDF, un codice QR in Condividi, messaggi vocali dal compositore, badge dei post, un pulsante Copia come Markdown, un filtro delle risposte, ricerca dal testo selezionato, l’avviso di risposta al topic chiuso, e altro. Il nostro forum ora funziona con zero componenti del tema.
  • Abbiamo speso una quantità ridicola di tempo sull’accessibilità: contrasto WCAG AA sul testo grigio in tutte e tre le palette, anelli di focus che puoi effettivamente vedere su ogni controllo, bersagli di tocco più grandi sui telefoni, modalità ad alto contrasto di Windows, lingue da destra a sinistra, e telefoni larghi 320px.
I più piccoli: Mini-mod, Dislike, ricerca intelligente, popup, Another SMTP, traduttore


Popup desktop (dalla nostra documentazione, utenti inventati).

  • Mini-mod. Alcuni diritti extra per le persone che moderano una categoria tramite un gruppo: creazione e modifica delle categorie, spostamento dei topic, tag. Ogni diritto ha il proprio interruttore, e nessuno di essi va oltre ciò che quella persona può già vedere. Può anche togliere diritti, come riaprire i topic chiusi. Il topic originale di @ars18 ha di più, ed ecco il tipo di richiesta a cui risponde.
  • Dislike. Nelle categorie che scegli, i like smettono di contare: nessuna notifica, nessuna cronologia “like ricevuti”, e non contano nella classifica. Puoi anche nascondere completamente il pulsante lì, o permettere solo ad alcuni gruppi di mettere like.
  • Ricerca intelligente. Quando una ricerca trova quasi nulla, riprova silenziosamente con sinonimi, quindi “k8s” trova “kubernetes” e “js” trova “javascript”. Usa WordNet più una piccola lista di gergo tecnologico, funziona in-process senza chiavi API, mantiene ogni filtro e permesso, e fa fallback alla ricerca normale se qualcosa va storto.
  • Popup desktop. Una piccola scheda nell’angolo quando arriva una notifica. Ogni membro opta in, è silenzioso durante Non disturbare, e funziona con tastiera e screen reader.
  • Another SMTP. Invia email del forum attraverso un server di posta diverso da quello in app.yml, impostato dall’amministratore.
  • Rettifiche al traduttore. Per i siti ancora sul vecchio plugin discourse-translator con Google: punta le sue richieste al tuo proxy.

Installazione

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

Mantieni il nome della cartella jtech-tools, minuscolo. Discourse costruisce l’URL del foglio di stile da esso.

Poi ricostruisci e vai su Admin → Plugins → Jtech Tools. C’è una scheda per ogni modulo, e la pagina di documentazione di ogni modulo dice cosa impostare per primo.

Tracciamo main su Discourse 2026.8 e versioni successive, e .discourse-compatibility fissa le versioni più vecchie. Il CHANGELOG dice cosa è cambiato e qualsiasi cosa valga la pena controllare dopo un aggiornamento.

Essere onesti al riguardo

Siamo il team di amministrazione di un forum, non un negozio Discourse. Una buona parte di questo è stata costruita con l’aiuto dell’AI. Ciò che mi fa stare tranquillo nel condividerlo sono le regole di sicurezza: regole nel repository che ogni modifica deve seguire (permessi prima, non andare mai oltre ciò che il core consente, nulla che il core faccia già), circa 1.700 test in 119 file spec che vengono eseguiti su ogni PR, e la maggior parte di esso che gira sul nostro stesso forum ogni giorno. Ci saranno ancora bug e casi limite strani. Per favore dicci quando ne trovi uno.

Le issue e i PR sono molto benvenuti su GitHub. I problemi di sicurezza vanno in privato tramite SECURITY.md.

Grazie a @ars18 e Shalom Karr, che hanno costruito una grande parte di questo con me, a tutti su JTech che hanno segnalato bug e provato cose a metà, e alle persone nei thread di Dumbcourse e Mini-mod le cui domande lo hanno reso migliore.

godetevi :lion:

4 Mi Piace