Ceci est une application Terminal (TUI), juste pour le plaisir… et un peu expérimentale à ce stade !
Résumé
Une interface utilisateur en terminal pour parcourir et publier sur les forums Discourse avec des listes de sujets, des vues complètes de sujets, des réponses, des “j’aime”, la recherche et un compositeur intégré.
README.md dans le dépôt (section Démarrage rapide)
Parrainage
Veuillez envisager de devenir un sponsor continu de mon travail open source (Sponsor @merefield on GitHub Sponsors · GitHub) à un niveau qui convient à vos ressources et à celles de votre organisation afin de garantir que ce projet reçoive la maintenance qu’il mérite et continue de fonctionner pour votre site à l’avenir.
Vous appréciez termcourse ? Veuillez lui donner une sur GitHub
> termcourse est un client basé sur terminal pour Discourse. Il se comporte comme une session de navigateur légère avec connexion basée sur les cookies (nom d’utilisateur/email + mot de passe) et prend en charge TOTP/codes de secours pour l’authentification multifacteur (MFA). Il existe également une solution de secours par clé API pour les sites verrouillés ou uniquement par SSO (Single Sign-On).
Fonctionnalités
Parcourir les listes de sujets Derniers / Populaires / Nouveaux / Non lus / Meilleurs, avec cyclage de la période pour les Meilleurs.
Ouvrir des sujets via les flèches + Entrée, ou les raccourcis numériques (1-0) pour les 10 premiers sujets visibles.
Afficher les sujets complets avec des publications défilables, un en-tête/pied de page fixe et une barre de progression/position de publication.
Développer les publications sélectionnées en contenu complet ; les publications non sélectionnées affichent des extraits compacts.
Répondre à des sujets entiers ou à des publications spécifiques.
Créer de nouveaux sujets avec titre, sélecteur de catégorie et compositeur de corps en ligne.
Aimer/ne plus aimer les publications avec un état visuel de cœur par publication.
Rechercher des publications et sauter directement au contexte de sujet/publication correspondant.
Le compositeur en ligne prend en charge le mouvement du curseur, l’insertion, les nouvelles lignes, la touche retour arrière et un compteur de longueur minimale en direct.
Rendu sensible au Markdown, y compris les liens enveloppés et la prise en charge de l’aperçu d’images en ligne (chafa / viu).
Substitutions d’emoji pour les jetons :emoji: courants et les émoticônes de style :)-.
Prise en charge des informations d’identification multi-sites via des variables d’environnement + un fichier credentials.yml par hôte (avec invite pour les champs de connexion manquants).
Connexion nom d’utilisateur/mot de passe avec session par cookie et prise en charge de l’authentification multifacteur (TOTP + code de secours), ainsi qu’une solution de secours par clé API.
Thèmes pilotés par YAML avec des éléments intégrés (défaut, ardoise, champ de foire) et des remplacements locaux via theme.yml.
Redessin réactif au redimensionnement avec intervalle de sondage configurable (TERMCOURSE_TICK_MS).
Journalisation de débogage optionnelle pour le diagnostic HTTP/authentification et le rendu de l’interface utilisateur.
Démarrage rapide
Consultez le dernier README pour plus d’informations
git clone https://github.com/merefield/termcourse
cd termcourse
bundle install
Ainsi, vous pouvez vous connecter rapidement à plusieurs sites (une seule session à la fois par onglet, évidemment), j’ai apporté les améliorations suivantes :
Améliorations de l’authentification et de la configuration de termcourse
Le nom d’utilisateur/mot de passe est désormais le chemin de connexion par défaut.
Vous n’avez plus besoin d’inclure https:// - c’est facultatif.
Les champs de connexion manquants sont demandés de manière interactive (par exemple : nom d’utilisateur connu, mot de passe manquant).
L’aide de l’interface de ligne de commande (CLI) inclut les variables d’environnement principales et les emplacements des fichiers journaux de débogage.
Informations d’identification et comportement des variables d’environnement (ENV)
Prend en charge le fichier d’informations d’identification mappé à l’hôte avec l’ordre de recherche suivant :
TERMCOURSE_CREDENTIALS_FILE (si défini)
./credentials.yml
~/.config/termcourse/credentials.yml
Précedence de l’authentification :
Indicateurs (flags) de la CLI
Informations d’identification de l’hôte à partir du fichier YAML
Variables d’environnement génériques DISCOURSE_*
Invite interactive
Pour l’authentification : les valeurs manquantes de nom d’utilisateur/mot de passe lors de la connexion sont demandées.
Pour l’authentification API, le nom d’utilisateur API et la clé doivent tous deux aboutir à des valeurs non vides.
Vous devez avoir viu ou chafa installé - et cela peut être un projet en soi
En mode haute qualité sur chafa ou avec viu, Windows Terminal est supérieur au terminal MacOS car il prend en charge beaucoup plus de couleurs (merci Microsoft !)
Notes de version : Rendu d’images (dans le terminal !)
Rendu d’images
Ajout d’aperçus d’images de publication intégrés avec sélection du backend :
essaie chafa en premier, puis viu automatiquement.
TERMCOURSE_CHAFA_MODE=stable|quality
stable : sortie conservatrice pour la stabilité du terminal.
quality : rendu de symboles avec plus de détails/couleurs.
Ajout du contrôle de la hauteur de l’aperçu :
TERMCOURSE_IMAGE_LINES (défaut : 14)
S’applique à la hauteur des lignes d’aperçu ; utile pour ajuster la densité visuelle.
Amélioration du comportement d’aspect de viu :
Passage au rendu ciblé par ligne (-h) pour mieux préserver le rapport d’aspect.
Ajout des contrôles de filtre de qualité d’aperçu :
TERMCOURSE_IMAGE_QUALITY_FILTER=1 filtre les aperçus bruyants composés uniquement de blocs.
Réglez sur 0 pour toujours afficher la sortie du moteur de rendu.
Ajout d’une limite de sécurité pour le téléchargement d’images :
TERMCOURSE_IMAGE_MAX_BYTES (défaut : 5242880)
Empêche les téléchargements d’images surdimensionnées d’affecter les performances.
Ajout de la prise en charge des liens d’image Discourse upload://… :
Résolution automatique vers /uploads/short-url/…
Amélioration de la désinfection/stabilité du terminal :
Conserve les codes de couleur SGR valides si nécessaire.
Supprime les séquences de contrôle/graphiques déstabilisantes.
Empêche l’affichage des fragments d’échappement ANSI sous forme de texte brut.
Une note : J’ai trouvé un site qui bloque le nom d’utilisateur/mot de passe à distance, donc ce client ne fonctionnera pas dans cette situation (à moins que vous ne le possédiez et que vous puissiez définir une clé d’API !) - suggestions bienvenues, mais aucun support actuellement dans ces cas.
Je ne suis pas sûr de l’utiliser dans le monde réel, je n’en vois pas l’utilité pour moi, mais je l’ai essayé et c’est délicieux. J’adore pouvoir interagir avec une plateforme de forum de nouvelle génération depuis une interface primitive, bare-metal.
D’une certaine manière, c’est très esthétiquement plaisant.