Skip to content

Releases

NeoFrag Reborn 1.2.55

Choose a tag to compare

Sécurité

Une revue de sécurité complète du cœur, des modules, des widgets et des thèmes. Aucune faille critique ; tout ce
qu'elle a relevé est corrigé dans cette version.

  • Mises à jour et marketplace signés. Les manifestes de la mise à jour du cœur et le catalogue du marketplace sont
    désormais signés (Ed25519) ; un site refuse un fichier dont la signature manque ou ne correspond pas. Jusqu'ici, seule
    l'empreinte de chaque archive était vérifiée, et elle venait du même serveur que l'archive.
  • La politique de sécurité du contenu arrête un script injecté. Le nonce n'est plus ajouté d'office à chaque
    <script> de la page : seuls les scripts écrits par le site le portent, et les fenêtres et listes rechargées
    n'exécutent que ceux-là. La politique part aussi sur les pages qui n'ont aucun script.
  • Fichiers envoyés. Un .js ou un .css déposé dans les envois n'est plus jamais interprété par le serveur ; une
    image est enregistrée sous l'extension de son type réel ; les fichiers qu'un navigateur exécuterait (.js, .css,
    .xml…) sont refusés ; un renommage dans le gestionnaire de fichiers ne peut plus changer une extension refusée ; les
    fichiers du gestionnaire ne se servent plus directement, mais par le site, selon le droit de les lire.
  • Installation. L'assistant d'installation appartient au navigateur qui l'a commencé : un autre visiteur ne peut
    plus la terminer à sa place.
  • Connexion et sessions. Un code de double authentification ne sert qu'une fois, sur une fenêtre resserrée ; la
    base ne garde plus l'identifiant de session lui-même, seulement son empreinte, et il change à la déconnexion ; les
    limites d'essais comptent juste même sous des essais simultanés ; derrière un relais déclaré, l'adresse du visiteur ne
    se falsifie plus.
  • Administration. Installer un addon par archive demande le mot de passe webmaster ; les liens des e-mails partent
    toujours de l'adresse du site fixée à l'installation.
  • Paiements Stripe. Un paiement n'est crédité qu'une fois l'argent encaissé : un prélèvement SEPA ou un virement
    l'est à sa réception, plus dès la fin du paiement.
  • Forum et messagerie. Un message retiré par la modération ne peut plus être republié par son auteur, ni un message
    signalé modifié avant examen ; un sujet qui a des réponses d'autres membres ne se supprime plus que par la
    modération ; les mentions sont limitées et ne préviennent que qui peut lire le sujet ; la publication a une limite de
    débit ; on n'invite plus un tiers dans une conversation à deux.
  • Sondages. Le vote est réservé aux membres connectés.
  • Widgets. Le nom annoncé par un serveur de jeu ou TeamSpeak est échappé ; un serveur de jeu éteint ne ralentit
    plus les pages ; les secrets de TeamSpeak, Twitch et YouTube sont enregistrés chiffrés et ne se réaffichent plus ;
    serveurs de jeu et TeamSpeak refusent une adresse privée.
  • Et aussi : des textes échappés à l'affichage (galerie, commentaires, titres, pseudos) ; une annonce validée qui
    est modifiée repasse en modération ; une page programmée reste cachée jusqu'à sa date ; les compteurs de clics ne se
    gonflent plus ; l'export CSV des membres ne laisse plus passer de formule ; le livre d'or ne garde plus l'adresse IP
    des signataires ; la recherche a une limite de débit ; les webhooks ne visent plus que les ports 80 et 443.

Modifié

  • À faire après la mise à jour :
    • chaque membre se reconnecte une fois : les sessions ouvertes avant la mise à jour ne sont plus reconnues ;
    • si vous acceptez des paiements Stripe, ajoutez l'événement checkout.session.async_payment_succeeded au webhook
      déclaré chez Stripe (l'administration des paiements le rappelle).
  • L'installation en ligne de commande exige --site-url.
  • Pour les auteurs de thèmes et d'addons : un <script> écrit dans une vue porte le nonce,
    <script<?php echo nf_nonce_attr() ?>> ; sans lui, le navigateur le refuse. Les scripts servis par le site (src)
    n'en ont pas besoin.
  • Dépendances à jour (league/commonmark 2.10.7 et les bibliothèques qu'elle emploie) ; docker-compose.yml, prévu
    pour le développement, n'écoute plus que sur la machine elle-même.

Documentation

  • L'accueil de la documentation ne répète plus cinq fois la ligne « Lire dans une autre langue » ; le
    contrôle de la documentation refuse désormais un paragraphe qui recopie le précédent.

NeoFrag Reborn 1.2.54

Choose a tag to compare

Sécurité

  • La réinitialisation du mot de passe disait, à la seconde demande, qu'une adresse a un compte. La réponse est la
    même que l'adresse soit inscrite ou non ; mais une seconde demande aussitôt, pour une adresse inscrite seulement,
    répondait « patiente » au lieu de la réponse commune. Elle répond désormais toujours pareil ; les limites par
    adresse et par connexion, qui valent pour toutes, freinent les demandes répétées.
  • Un captcha réussi dispensait aussi le message suivant. La dispense, faite pour renvoyer un formulaire refusé pour
    une autre raison, survivait à un envoi réussi : un robot qui résolvait un seul défi envoyait deux messages. Elle
    tombe désormais dès que le formulaire est accepté.

Corrigé

  • L'écran d'un groupe, ouvert dans une langue où il n'a pas encore de nom, proposait celui d'une autre langue —
    le français, à défaut : l'enregistrer sans le retoucher l'écrivait sous la nouvelle langue. Il s'ouvre désormais
    vide, comme les autres contenus qui se traduisent. Et le nom d'un groupe créé par l'administrateur ne passe plus par
    les traductions de l'interface : un groupe « Modérateur » écrivait une alerte au journal à chaque page affichée hors
    du français.
  • L'écran d'une carte ou d'un mode de jeu, ouvert dans une langue où il n'a pas encore de nom, proposait le nom
    français
    — l'enregistrer sans le retoucher l'écrivait comme nom de la nouvelle langue. Il s'ouvre désormais vide,
    comme celui d'un groupe.
  • Renommer un salon public dans une autre langue que le français changeait aussi son nom de secours, celui qu'il
    montre quand aucune traduction ne convient. Ce nom suit désormais le français.
  • La navigation passait un lien de menu par les textes de l'interface quand il n'avait pas de traduction dans la
    langue de la page : « À propos » devenait « About » en anglais et « Über » en allemand, au lieu du titre écrit par
    l'administrateur. Elle montre désormais le titre français, comme les autres contenus qui se traduisent.
  • Le formulaire de contact, sur sa page, affichait après l'envoi une réponse technique
    ({"modal":"dispose",…}) au lieu de revenir à la page avec « Message envoyé ». Un second message trop rapproché
    affichait de même le mot « anti_flood » ; il dit désormais d'attendre quelques minutes, dans les six langues.
  • Le refus du captcha s'écrivait deux fois sous le widget.
  • En anglais, le bouton « Connexion » de l'en-tête disait « Login » (le nom) sur Nebula, Chronique et le petit
    widget de l'espace membre, et « Log in » (le verbe) sur les autres thèmes. Il dit « Log in » partout, comme les
    autres langues disent un verbe.

NeoFrag Reborn 1.2.53

Choose a tag to compare

Sécurité

  • Les fichiers privés d'un site se lisaient en ajoutant une langue devant leur adresse. Toute adresse à extension
    passait par le site, qui lisait le fichier de ce nom n'importe où dans son dossier : /fr/logs/php.log rendait le
    journal du site, et de même ses sauvegardes (backups/, base comprise), son cache, les pièces jointes privées du
    forum et de la messagerie, ou un dossier caché comme .git/. Les règles du serveur web refusaient ces dossiers,
    mais pas le même chemin derrière une langue. Le site ne sert plus désormais que ses feuilles de style, ses scripts,
    ses images, ses polices et les fichiers publics envoyés par les membres. Mettez à jour sans attendre.
  • Les configurations livrées pour Apache, nginx et Caddy refusent les chemins cachés (.git/, .env…) : un site
    déployé par git clone gardait son dépôt entier lisible. /.well-known/ reste joignable, pour les certificats.

Corrigé

  • Une mise à jour efface enfin les fichiers que la nouvelle version retire. Depuis plusieurs versions, la liste
    de ces fichiers sortait vide de la fabrique des paquets : ils restaient sur le site, et le Monitoring signalait par
    exemple « Le fichier fonts/fontawesome/fa-solid-900.ttf ne devrait pas se trouver là ». Cette mise à jour retire
    les 99 fichiers que le produit a livrés puis abandonnés (anciennes polices, anciennes langues de l'éditeur, vues
    remplacées…). Un module, un widget ou un thème retiré du produit en entier reste en place : il peut encore servir.
  • Le menu de navigation signalait parfois une erreur dans la console du navigateur (« ResizeObserver loop
    completed with undelivered notifications »), selon le moment où les polices arrivaient : sa mesure, qui replie le
    menu derrière son bouton quand il ne tient plus sur une ligne, attend désormais l'image suivante.

NeoFrag Reborn 1.2.52

Choose a tag to compare

Corrigé

  • Les pages du forum se déclaraient canoniques dans une autre langue. Un forum garde un nom par défaut pour les
    langues où il n'est pas traduit ; la 1.2.51 ne regardait que ses traductions, et une page du forum dans la langue
    du nom par défaut renvoyait les moteurs vers une autre langue, à une adresse qui redirigeait. Chaque forum est de
    nouveau annoncé dans toutes les langues, chacune à l'adresse de son nom.

NeoFrag Reborn 1.2.51

Choose a tag to compare

Ajouté

  • Désinstaller un module ou un widget, et remettre un module à zéro, depuis sa carte. Jusqu'ici, un module ou
    un widget se désactivait seulement. Désinstaller retire ses tables, ses données et ses fichiers ; un module dont
    un autre addon a besoin est refusé, et la fenêtre dit lesquels. Remettre à zéro efface les données d'un module
    et le fait repartir comme au jour de son installation ; ses réglages, ses permissions et les liens qui y mènent
    restent. Les deux prennent d'abord une sauvegarde (dossier backups/addons du serveur), et la confirmation dit
    combien de lignes partent. Les addons du cœur ne se retirent pas.

Corrigé

  • Les aperçus du marketplace restaient les anciens dans le navigateur. Une vignette garde son adresse d'une
    version à l'autre : un visiteur qui l'avait déjà vue gardait l'ancienne en cache — les vignettes dessinées de la
    1.2.50 paraissaient encore en captures. L'adresse porte désormais l'empreinte de l'archive.
  • Un album des Galeries ne se traduisait pas. Dans l'administration d'une autre langue, un album pas encore
    traduit manquait à la liste, et son écran d'édition répondait « page introuvable ». Il y paraît maintenant, et son
    écran s'ouvre avec ses champs vides, prêts pour la traduction ; le texte des autres langues ne bouge pas.
  • Nebula : « Déconnexion » introuvable sur les actualités, le forum et les profils. Ces pages n'ont pas de
    colonne, donc pas le bloc de l'espace membre, et le pseudo en haut menait seulement à « Mon espace ». Il ouvre
    maintenant le menu du compte, le même que dans les autres thèmes : profil, compte, messagerie, administration,
    déconnexion.
  • Le menu d'un thème restait dans la langue de l'administrateur qui l'avait activé. Activé ou réinstallé depuis
    une administration en anglais, un thème écrivait « Home », « News »… et tous les visiteurs, français compris, les
    lisaient ainsi. Ses liens s'écrivent maintenant en français, la langue source, et la navigation les montre dans la
    langue de chaque page. Un thème déjà installé garde son menu : « Réinstaller par défaut » le réécrit.
  • Les moteurs de recherche connaissent les traductions du contenu. Les événements, le palmarès, les offres de
    recrutement, les sondages, les campagnes de dons, les pages du wiki, les téléchargements, la FAQ, les liens et la
    boutique se disaient encore sans langue : une seule adresse annoncée, en français. Ils annoncent maintenant les
    langues où ils sont écrits, et une langue où ils ne le sont pas renvoie sa canonique vers celle qui l'est. Et les
    liens entre langues des actualités, des billets du Blog, des forums et des rubriques d'annonces menaient, dans les
    autres langues, à une redirection vers le titre traduit — les moteurs écartent un tel lien : chacun mène
    maintenant à l'adresse de son titre.

NeoFrag Reborn 1.2.50

Choose a tag to compare

Ajouté

  • Un thème affiche le choix de la langue en une ligne : nf_selecteur_langue(), à côté de
    nf_selecteur_theme() et de nf_liens_legaux(). Les thèmes livrés en recopiaient chacun le formulaire.
  • La documentation et le journal des versions, dans les six langues. Les guides du wiki — installation, premiers
    pas, administration, marketplace, site multilingue, bot Discord, framework, création d'un thème, d'un module ou d'un
    widget — n'existaient qu'en français et en anglais : ils s'écrivent désormais aussi en allemand, en espagnol, en
    italien et en portugais, avec les libellés exacts que l'écran affiche dans chaque langue, et le wiki les sert dans la
    langue du visiteur. Le journal des versions suit : la page « Journal des versions » du wiki et les billets du Blog se
    lisent dans les six langues. Le français reste la référence ; un test refuse une traduction qui sauterait une
    version ou la daterait autrement.
  • Les vignettes des modules et des widgets, refaites. Dans Thèmes & addons et sur la place de marché, l'aperçu
    d'une extension était une photo de l'extension à l'œuvre — illisible quand elle n'avait aucune donnée à montrer :
    un cadre, un titre, des lignes. Chaque module et chaque widget reçoit désormais une carte dessinée, à l'image des
    visuels du projet : son icône, son nom et ce qu'il fait, lisibles à toute taille. Les thèmes, eux, gardent la photo
    de leur page d'accueil : un thème se montre.
  • Les bibliothèques embarquées à jour, et un garde-fou pour qu'elles le restent. L'éditeur de texte passe en
    TinyMCE 8 (la ligne 7 perdait son support le 14 novembre, et la 8.9.3 corrigeait une faille de son greffon
    « media ») et les icônes en Font Awesome 7 — les 363 icônes employées par le site ont été confrontées à la
    nouvelle collection avant de poser, aucune ne manque. Les polices en double (.ttf) partent : la 7 ne sert plus
    que le format moderne, soit 715 Ko de moins dans le paquet. Surtout, un contrôle neuf veille : il ne crie pas à
    chaque publication de l'amont, mais refuse quand les versions livrées n'ont pas été confrontées au registre
    depuis plus de trois mois. Une dépendance ne devient pas dangereuse d'un coup : elle dérive, et c'est la dérive
    qui est maintenant visible.
  • Les notifications push. Un membre peut recevoir ses notifications dans son navigateur, même site fermé : un
    message du forum, une réaction, un rappel d'événement. L'administrateur le propose (Paramètres → Préférences
    générales → Notifications push) ; chaque membre l'active ensuite appareil par appareil, dans ses préférences de
    notifications, choisit type par type ce qu'il reçoit ainsi, et peut s'envoyer un essai. Sans bibliothèque ajoutée :
    le message est chiffré pour ce seul navigateur (RFC 8291) et signé au nom du site (VAPID, RFC 8292) — le service de
    push du navigateur le transporte sans pouvoir le lire. Le serveur n'écrit qu'aux services de push connus (Google,
    Mozilla, Apple, Microsoft), jamais à une adresse qu'un membre aurait inventée.
  • Nebula et la vitrine ont leur page de couleurs, et les huit thèmes un aperçu en direct. Accent, fond, texte :
    la palette de Nebula et celle de la vitrine étaient écrites dans leur feuille ; elles se règlent désormais comme
    celles des six autres thèmes, avec le même refus d'une couleur illisible. Et sous les sélecteurs de chaque thème, une
    vraie page du site — l'accueil, les actualités ou le forum — prend les couleurs à mesure qu'on les choisit, sans rien
    enregistrer, avec les contrastes mesurés en direct : on voit le résultat avant de cliquer sur « Enregistrer ».
  • Les liens des menus, les salons publics, le titre donné à un widget et les pages du wiki se traduisent. Avec
    eux, plus aucun texte qu'écrit l'exploitant n'est sans langue. Une page du wiki garde un historique PAR LANGUE :
    traduire en italien n'archive rien de la version française, et l'historique italien ne montre que ses révisions.
    Une conversation entre membres, elle, garde un seul nom pour tous ses participants — seuls les salons publics se
    traduisent. La page « Journal des versions » du wiki existe désormais aussi en anglais.
  • La boutique, les dons, les publicités, les packs de paiement et le recrutement se traduisent. Le nom et la
    description d'un article de la boutique, le titre et la description d'une campagne de dons, le titre d'une
    publicité, le libellé d'un pack, et une offre de recrutement entière — son titre, son accroche, sa description,
    ses prérequis et les questions de son formulaire de candidature — s'écrivent désormais langue par langue. Les
    questions n'avaient pas d'écran pour être modifiées (on ne pouvait que les ajouter ou les supprimer) : un crayon
    les ouvre, et c'est là qu'on les traduit. Restent communs ce qui n'est pas du texte : le prix, le stock, l'adresse
    d'une campagne, le code d'une régie, le rôle donné dans l'équipe — et les réponses des candidats, qui gardent la
    question telle qu'ils l'ont lue.
  • Les modes de jeu, les cartes, les émissions de la webradio et les champs de profil se traduisent. « Compétitif
    5v5 » devient « Competitive 5v5 » pour un visiteur anglais, « Le réveil du serveur » devient « The server
    wake-up », et le libellé d'un champ de profil s'écrit dans chaque langue. Un nom de carte reste un nom propre,
    mais il s'écrit lui aussi par langue, pour qui veut traduire « Faille de l'invocateur ». Un choix est fait, et
    il est dit dans l'écran : la LISTE D'OPTIONS d'un champ de profil reste commune — une option est enregistrée
    telle quelle dans la réponse du membre, et la traduire rendrait les réponses déjà données introuvables.
  • Les types de rendez-vous, les rôles d'équipe et les rubriques de petites annonces se traduisent. « Tournoi »,
    « Capitaine », « Matériel » : trois noms courts que l'exploitant écrit, et qu'un site en six langues montrait
    dans une seule. Ils s'écrivent désormais langue par langue, et le visiteur les voit dans la sienne partout où
    ils apparaissent — la liste des événements et leurs fiches, le calendrier, l'effectif d'une équipe, l'annuaire
    des petites annonces, et les écrans de l'administration.
  • Un sondage se modifie sans perdre ses votes — et il se traduit. Jusqu'ici, enregistrer un sondage effaçait
    toutes ses réponses pour les recréer, et tous les VOTES avec : corriger une virgule dans la question coûtait le
    sondage entier (l'écran le disait, ce qui ne le rendait pas moins coûteux). Désormais une réponse garde ses
    votes tant qu'elle reste dans la liste — corrigée, déplacée ou traduite ; seule une réponse RETIRÉE perd les
    siens, et l'écran le dit en les comptant. C'est ce qui permet enfin de traduire un sondage : la question, sa
    description et le libellé de chaque réponse s'écrivent langue par langue, et écrire la version italienne ne
    touche plus à la française.
  • Les téléchargements, les liens utiles et la FAQ se traduisent. Le titre et la description d'un fichier ou d'un lien, la question et sa
    réponse, et les titres de leurs rubriques, n'avaient pas de langue : un site en six langues les montrait dans une seule — on
    le voyait sur la démonstration en anglais, qui annonçait « Pack de fonds d'écran » et « Chaîne Twitch ». Ils
    s'écrivent désormais langue par langue, comme les actualités ou les événements : l'écran d'édition ouvre la
    langue où l'on travaille et dit laquelle, et le visiteur les voit dans sa langue — dans la bibliothèque, dans
    l'annuaire de liens, dans les widgets et dans les blocs. Ce qui n'a pas de langue (l'adresse, la taille, le
    type, la version, les compteurs) reste commun, et ce qui n'est écrit que dans une langue reste visible dans les
    cinq autres.
  • Une couleur de thème qui rendrait le site illisible est refusée. Les six thèmes qui laissent choisir leur
    accent, leur couleur de texte et leur couleur de fond acceptaient n'importe quoi : un accent presque identique au
    fond, et les liens et les boutons disparaissaient ; un texte trop pâle, et la page ne se lisait plus. Rien ne
    l'annonçait, et il fallait retrouver soi-même la couleur d'avant. Chaque couleur est désormais mesurée contre les
    deux autres — celles qui sont enregistrées, puisque les deux formulaires s'enregistrent séparément — et refusée
    avec son chiffre quand elle ne se détache pas assez : 4,5 pour 1 pour du texte, 3 pour 1 pour un accent, comme la
    norme d'accessibilité le demande. Les couleurs d'origine des neuf thèmes passent toutes.
  • Les bibliothèques embarquées remises à jour. L'éditeur de texte (TinyMCE 7.6.1 → 7.9.3, qui embarque un
    nettoyeur de HTML plus récent), les graphiques des statistiques (Chart.js 4.4.7 → 4.5.1) et les listes
    déroulantes (Tom Select 2.6.1 → 2.6.2). Les trois autres — Bootstrap, flatpickr, Sortable — étaient déjà à la
    dernière version publiée. Les traductions de l'éditeur, corrigées à la main, sont conservées.
  • Trente et un titres d'écran parlaient français dans les six langues. « Mises à jour », « Nouvelle carte »,
    « Mon avis sur la candidature », « Gérer mon compte », « Partenaires », « Offres de recrutement »… : les titres
    de panneaux, de fenêtres et de boutons ne passaient pas par les traductions, et s'affichaient en français quelle
    que soit la langue du site. Leur traduction existait pourtant déjà, dans les six langues : seul le passage
    manquait. Le contrôle qui veille sur les textes en dur les laissait passer parce qu'il supposait ces titres
    traduits par le produit — ce que seules les étiquettes de FORMULAIRE font réellement ; il sait désormais
    distinguer les deux.
  • Trois écrans retrouvent le dessin de leur thème. La feuille d'un widget est servie après celle du thème :
    quand les deux disaient la même chose avec la même force, c'est le widget qui gagnait, et le thème dessinait
    dans le vide — écran présentable, dessin voulu jamais servi, rien pour le dire. Le panneau de droite d'Extend
    (qui est en ligne, le salon) et s...
Read more

NeoFrag Reborn 1.2.49

Choose a tag to compare

Un gros lot : une adresse au mauvais titre mène à la bonne, le relevé des pages introuvables, l'éditeur de texte dans
la langue de la page, le module Événements utilisable sans les jeux — pour une association ou un club —, les images
des tickets venues de Discord, et une longue liste de corrections trouvées en relisant tout le journal des versions,
dont la fiche d'un match qui n'affichait plus son match. Le bot Discord passe en version 0.2.7 (voir son propre
journal des versions).

Ajouté

  • Les images d'un ticket du Bugtracker : une capture jointe sur Discord à un ticket ou à une idée, à son
    ouverture ou dans une réponse, s'affiche dans le ticket du site — avec le bot 0.2.7, qui la confie au site comme il
    le fait déjà pour le forum. Le texte des tickets reste du texte brut : seules les images gardées par le site s'y
    affichent ; l'adresse d'une image hébergée ailleurs reste du texte.
  • Le relevé des pages introuvables, dans Monitoring → Diagnostic : chaque adresse que le site n'a pas
    trouvée — sans la langue ni les paramètres —, combien de visiteurs et de robots l'ont demandée, la dernière fois
    qu'on l'a demandée et la dernière page d'où l'on venait. Un bouton « Rediriger » ouvre le formulaire des
    redirections, l'adresse déjà remplie ; les sondes des robots qui cherchent une faille sont rangées à part. Ni
    adresse IP, ni navigateur ; une adresse qu'on ne demande plus depuis 90 jours s'oublie.
  • Les images abandonnées de l'éditeur, dans Monitoring → Diagnostic : une image envoyée dans un texte puis
    retirée, ou celle d'un brouillon jamais enregistré, restait sur le disque. La page les retrouve — aucun texte du
    site ne les affiche plus, ni contenu, ni message, ni réglage, ni révision, ni corbeille, et elles ont plus de
    30 jours —, les montre, et efface celles qu'on coche.
  • L'éditeur de texte parle la langue de la page : ses menus, boutons et fenêtres étaient en anglais partout ; ils
    sont désormais en français, allemand, espagnol, italien ou portugais selon la langue de la page.
  • Un GIF animé reste animé dans l'éditeur : il devenait une image fixe. Il est réécrit sans rien garder d'autre
    que ses images, leur minutage et sa boucle. Un GIF de plus de 2 000 px de côté ou de plus de 1 000 images devient,
    comme avant, une image fixe.
  • Les événements sans les jeux : le module Événements ne demande plus les modules Jeux et Équipes. Une
    association, un club l'installent seul — invitations, réponses, récurrence, rappels ; les matchs, leurs adversaires
    et leurs scores viennent avec les modules Jeux et Équipes. Il entre dans les profils « Communauté » et
    « Association / club » de l'installation.

Corrigé

  • Une adresse au mauvais titre redirige vers la bonne (redirection permanente, 301) : le titre d'un contenu a
    changé, le lien vient d'une autre langue ou porte une faute. Les billets, catégories, auteurs et séries du Blog, le
    Palmarès, les tickets du Bugtracker, les événements du Calendrier, les petites annonces, les sondages et les
    recettes répondaient à n'importe quel titre — des doublons pour les moteurs de recherche ; les actualités, les
    événements, les offres de recrutement, les équipes, les albums et images de la Galerie, les forums et sujets, les
    profils, les groupes et les partenaires répondaient « introuvable » à l'ancienne adresse d'un titre changé. La page
    d'une catégorie du blog porte son titre, et non plus le texte de l'adresse ; la page d'un type ou d'une équipe
    d'événements qui n'existe pas répond « introuvable ».
  • Une image envoyée dans l'éditeur ne déborde plus de la page sur les pages qui ne la bornaient pas (onglet
    « À propos » d'un profil, événements, partenaires, albums, offres de recrutement, équipes) ni sur un téléphone :
    elle prend au plus la largeur de la colonne.
  • Une taille de moins de 1 000 octets s'écrit « 685 o », et non plus « 685,00 o ».
  • Forge, de jour : les textes discrets (dates, auteurs, lieux, « Inscrit le… ») sont un peu plus foncés — ils
    restaient juste sous le seuil de lisibilité.
  • Forge et Extend : les fins traits qui choisissent l'image du diaporama se touchent facilement du doigt au
    téléphone (ils ne faisaient que 3 px de haut) ; rien ne change à l'œil.
  • Chronique : le nombre de notifications non lues, sur l'icône du compte, se lit nettement mieux, de jour comme
    de nuit.
  • Discord : quand un sujet ou un message du forum, un ticket ou un commentaire de ticket est supprimé, la
    trace qui le reliait à son fil Discord s'efface d'elle-même une semaine plus tard ; elle restait en base pour
    toujours.
  • Plus rien de collé au bord : la liste des IP bannies et son formulaire d'ajout (la phrase d'aide et le bouton
    touchaient les bords de leur carte), le champ de recherche de la liste des événements, la pagination d'un tableau
    dans Granite, la pagination et le bouton « Suivre » dans Nebula, un pseudo long dans la liste des membres. Au
    téléphone, les tableaux du diaporama et des permissions défilent dans leur carte au lieu d'en déborder.
  • Plus de boutons collés : « Inviter », « Quitter »… dans une conversation, au téléphone ; « Retour » et « Poster
    le sujet » sur le forum ; les deux boutons de la recherche du forum dans l'administration.
  • Forge : au téléphone, le menu de l'espace membre réapparaît — il passait sous la carte de la page ; sur
    ordinateur, il reste en vue quand on fait défiler. Le bouton vert « Voir ma candidature » redevient lisible.
  • La fiche d'un match montre de nouveau son match — l'équipe, l'adversaire, le score, le jeu et les manches,
    qu'elle n'affichait plus. L'équipe, le score et l'adversaire tiennent sur une ligne, comme chaque manche, au
    téléphone comme à l'ordinateur.
  • Recrutement : la page « Ma candidature » annonce de nouveau le bon poste et la bonne équipe — elle affichait
    le nom de l'icône à la place du poste. Forum : l'édition d'un forum, dans l'administration, montre de nouveau sa
    description et sa catégorie — elle montrait le titre à la place, et l'enregistrer pouvait ranger le forum ailleurs.
  • Modération : une sanction s'efface d'elle-même trois ans après sa fin (échue ou levée ; un avertissement, trois
    ans après avoir été donné) ; une sanction sans fin (un ban définitif, par exemple) reste tant qu'elle court. Elles
    se gardaient sans limite.
  • Le bouton de signalement (le drapeau « Signaler ce contenu ») se touche facilement du doigt au téléphone ; dans la
    liste Templates emails de l'administration, les variables du sujet d'un e-mail ({{date}}) se distinguent du
    texte.
  • Newsletter : la cible « Groupe » et la liste des campagnes nomment chaque groupe dans la langue de
    l'administration ; elles le prenaient dans une langue au hasard (« Criador de addons », « Mitwirkender »).
  • Des libellés justes : sur le profil d'un membre, le bouton « Contacter » s'affichait « Contact » ; le thème
    Extend écrit « À la une » et « Découvrir » dans la langue de la page (ils restaient en français) ; le bouton
    « Grille » du Blog et de la page des extensions ne se traduit plus « programme » en anglais, allemand, espagnol et
    italien ; le type de ticket « Demande de feature » devient « Demande de fonctionnalité ». En anglais, le bouton de
    connexion dit « Log in », le menu « Log out », et « Voir mon profil » se dit partout « View my profile ». Dans
    le Monitoring, la carte « Stockage » écrivait « Sauvegarde », « Libre » et « Total » en français dans toutes les
    langues ; le réglage des événements dit « Nombre d'événements par page ».
  • Pulse, de nuit : le nombre de notifications non lues, sur l'icône du compte, se lit — un chiffre sombre sur la
    brique claire ; blanc, il n'avait que 3,9:1.
  • Le widget Dons montre l'initiale d'un donateur dont le nom commence par une lettre accentuée ; il affichait
    « & ».
  • Réinitialiser son mot de passe refuse, comme l'inscription et le changement, un mot de passe identique au
    pseudo : la réinitialisation ne le comparait pas.
  • Le bot Discord passe en version 0.2.7 (0.2.6 puis 0.2.7) : il confie au site les images jointes aux tickets
    (voir plus haut), et son journal ne note plus les reconnexions ordinaires à Discord, seulement une coupure qui dure
    plus d'une minute (voir son propre journal des versions).

NeoFrag Reborn 1.2.48

Choose a tag to compare

Un gros lot : un audit de sécurité complet, la modération qui fonctionne enfin — ses sanctions s'appliquent à
toutes les écritures des membres —, une nouvelle adresse e-mail confirmée avant de compter, l'effacement des comptes
inactifs, et la connexion par Discord, GitHub ou Google réparée. Le bot Discord passe en version 0.2.5 (voir son
propre journal des versions). Après la mise à jour, chacun se reconnecte une fois : le cookie de session change
de nom.

Sécurité

  • La recherche du forum, ouverte aux visiteurs, laissait injecter du SQL par un mot écrit entre guillemets ; la
    recherche de la messagerie portait la même copie. Le mot est nettoyé comme les autres, et l'échappement est celui de
    la base.
  • Un envoi venu d'un autre site est refusé (POST, PUT, DELETE…), d'après ce que dit le navigateur
    (Sec-Fetch-Site, à défaut Origin) : une page piégée ne peut plus faire agir un membre connecté à son insu. Un
    client sans navigateur — le bot, un service de paiement — n'est pas concerné.
  • Vingt actions qui modifiaient quelque chose par un simple lien demandent désormais le jeton de la session, ou
    n'acceptent plus que POST : suivre un sujet, l'épingler, tout marquer comme lu, quitter, archiver, supprimer ou
    restaurer une conversation, réagir, marquer ses notifications comme lues, donner sa disponibilité à un événement,
    ouvrir ou fermer le site et les inscriptions, lancer une sauvegarde ou une mise à jour, supprimer un champ de
    recrutement… Une déconnexion par un lien sans jeton se confirme par un bouton.
  • En HTTPS, le cookie de session porte le préfixe __Host- : un sous-domaine (une démonstration, un webmail) ne
    le reçoit plus et ne peut plus en imposer un.
  • Les comptes :
    • le lien « mot de passe oublié » ouvrait aussi la validation d'une inscription, qui connecte sans rien demander
      pendant deux jours : chaque lien ne vaut plus que pour son usage ;
    • changer de mot de passe fait tomber une nouvelle adresse en attente et les liens « mot de passe oublié » ;
    • les erreurs de connexion se comptent par compte — quelle que soit la façon de l'écrire — et par réseau : une
      adresse IPv6 compte pour son réseau /64, dans toutes les limites d'essais du site ;
    • activer la double authentification ou lier un compte Discord, GitHub ou Google redemande le mot de passe ; cinq
      erreurs bloquent cette confirmation un quart d'heure ;
    • « mot de passe oublié » répond la même chose qu'une adresse soit inscrite ou non, et l'inscription ne dit plus
      sans limite qu'une adresse est déjà prise ;
    • l'historique des connexions note l'adresse de la connexion, plus un en-tête que le navigateur choisit.
  • Douze fuites d'accès fermées : l'historique et les révisions d'une page du wiki en brouillon ; les catégories
    du forum réservées au VIP, par la recherche et les profils ; les groupes cachés ; l'image d'un album fermé ; les
    matchs d'un type réservé ; la présence que des participants avaient cachée ; les commentaires et réactions d'un
    contenu invisible ; le signalement d'une conversation dont on ne fait pas partie.
  • Deux anciennes adresses de la messagerie rendaient les messages de n'importe quelle conversation, même privée,
    à qui avait le droit de lire — visiteurs compris : retirées. Poster une image dans la galerie demandait le seul
    droit de voir l'album.
  • Les pièces jointes du forum et des conversations sont servies par le site, à qui peut lire le sujet ou la
    conversation, et plus par le serveur web à quiconque avait leur adresse. Une image ou un PDF s'affichent, le reste
    se télécharge ; une pièce jointe qu'un navigateur exécuterait est refusée à l'envoi.
  • Ce que le serveur va chercher lui-même (relais d'images, flux RSS, webhooks) se limite aux adresses publiques au
    sens strict, sur les ports 80 et 443.
  • Les clés Stripe ne se relisent plus en clair dans l'administration : enregistrées chiffrées, jamais
    réaffichées.
  • Démonstration : les adresses IP, noms d'hôte et sites de provenance des visiteurs ne s'y montrent plus ; une
    publicité, un lien, un partenaire qui mène hors du site s'affiche sur une page qui dit où il mène, au lieu d'y
    rediriger.
  • Une adresse saisie par un membre ne sort plus en lien javascript: (pages d'où arrivent les sessions, liens d'un
    match), et l'adresse de contexte d'un signalement ne peut viser qu'une page du site.

Ajouté

  • Une nouvelle adresse e-mail attend sa confirmation : le lien part à la nouvelle adresse (valable deux jours),
    l'ancienne est prévenue, et « Mon compte » propose de renvoyer le lien ou d'annuler. Une faute de frappe coupait
    jusqu'ici le membre de tout ce que le site lui envoie.
  • Les comptes inactifs s'effacent : sans visite depuis trois ans — réglable dans Paramètres, 0 pour jamais —,
    un e-mail prévient le membre un mois avant, une visite annule tout. Jamais un administrateur.
  • Sanctionner un membre sans attendre un signalement, depuis son historique de modération, que sa fiche
    d'administration propose.
  • Un bouton « Signaler » sur le livre d'or, les images de la galerie, les petites annonces, les tickets et leurs
    commentaires.
  • « Mes sanctions » dans l'espace membre, pour qui en a eu une dans l'année : sa nature, son motif, sa période.
  • La médiation : depuis un signalement, le modérateur propose une conversation privée entre lui, le membre signalé
    et celui qui l'a signalé. Le membre signalé y verra qui l'a signalé : elle ne s'ouvre donc qu'avec l'accord de ce
    dernier, à qui une page explique ce qu'il accepte ; s'il refuse, son signalement reste anonyme et suit son cours.

Corrigé

  • Les sanctions de modération s'appliquent à toutes les écritures des membres : forum, messagerie,
    commentaires, livre d'or, Bugtracker, recrutement, petites annonces, galerie, profil, éditeur d'images. Seuls le
    muet du forum et de la messagerie étaient vérifiés, et après l'envoi. Le formulaire laisse place à un avis qui dit
    ce que la sanction interdit, jusqu'à quand, et pourquoi ; la restriction « Liens externes » refuse un texte qui en
    porte un, sans le perdre.
  • Aucune sanction ne se prononçait depuis l'écran de modération (une table supprimée en mai : erreur interne),
    et l'escalade ne s'est donc jamais déclenchée. Revus avec : les réglages (cases qui ne se décochaient pas, seuil du
    signaleur suspect), les portées, les durées (un bannissement temporaire sans durée devenait définitif), la
    validation par un modérateur plus haut placé, le panneau des modérateurs, les signalements en double, les pages 2
    et suivantes, la liste d'IP ; la levée d'une sanction refuse la sienne et celle d'un rang supérieur.
  • Le shadow ban fonctionne : ce qu'écrit un membre qui en fait l'objet ne se montre qu'à lui et aux
    modérateurs, et rien ne se diffuse — ni notification, ni Discord, ni abonnés.
  • Un rôle donné en plus — Modérateur — retirait les droits d'un membre : un modérateur perdait le forum et la
    messagerie. Un rôle ajoute des droits, il n'en retire plus.
  • Les e-mails partent dans la langue de celui qui les reçoit — sanctions, réponses du forum, messagerie —, et
    plus dans celle du membre qui les a déclenchés.
  • La connexion par Discord, GitHub ou Google tombait en erreur dès qu'un service était configuré (la
    bibliothèque OAuth avait changé), et envoyait au service une adresse de retour qu'il refusait. Un retour refusé dit
    maintenant pourquoi au lieu d'une page d'erreur, et l'avatar Discord est repris.
  • Livre d'or, administration : approuver, rejeter ou supprimer un message menait à une page introuvable.
  • L'erreur d'un champ de formulaire s'écrit sous le champ, au téléphone comme à l'ordinateur : elle ne se lisait
    que dans une bulle au survol.
  • La barre du haut de l'administration reste en haut au défilement ; au téléphone, seul le menu et le fil
    d'Ariane restent collés.
  • Quarante fautes de traduction dans treize fichiers de langue (« There are 1 user », des confirmations de
    suppression qui affichaient < br / >, des pluriels anglais…).
  • Les liens « site de l'extension » de 48 addons du cœur mènent au site du projet. La page Courriels de
    l'administration ne liste plus les modèles d'un module absent. Une erreur d'un formulaire classique ne mène plus à
    une page introuvable.
  • Démonstration : un membre ordinaire n'ouvrait aucun sujet, ne répondait nulle part, ne postulait à rien.
  • L'export « Mes données » contient les signalements faits par le membre : ils manquaient à l'archive.

Modifié

  • Un widget qui montre ce que fait un module le déclare (21 widgets) : sans ce module, ou s'il est désactivé, le
    widget ne s'affiche plus et l'éditeur en direct ne le propose plus ; « Ajouter » refuse une archive de widget sans
    son module.
  • La documentation du produit ne se livre plus dans le wiki d'un site neuf, qui arrive vide ; elle vit sur le site
    du projet. Une installation neuve ne reçoit plus les réglages de thèmes qu'elle n'a pas.

Retiré

  • Les anciennes adresses ajax/talks et l'ancien signalement d'un message de la messagerie (journal d'audit seul),
    avec sa page d'administration : un message se signale par la modération.

NeoFrag Reborn 1.2.47

Choose a tag to compare

La barre d'objets de Blockcraft, au téléphone.

Corrigé

  • La barre d'objets de Blockcraft occupe toute la largeur du téléphone : ses cases se partagent l'écran à parts
    égales et chaque nom tient dans la sienne — sur deux lignes pour « Mon espace », coupé au trait d'union pour un mot
    allemand ou portugais trop long (« Neuig-keiten »). Elle s'arrêtait à 326 px quelle que soit la largeur de
    l'écran : un vide à droite, des cases étroites et « Nouvelles » qui débordait de la sienne. Le cadre blanc de la
    case choisie ne touche plus son nom.

NeoFrag Reborn 1.2.46

Choose a tag to compare

Les bandeaux du haut de page ne recouvrent plus rien, la cloche arrive dans Nebula, et le panneau des extensions
réinstalle de nouveau un thème.

Corrigé

  • Ce qui colle en haut de l'écran se range sous les bandeaux du haut de page — celui de la démonstration, de la
    maintenance et de l'aperçu des droits. Dès qu'on faisait défiler, la moitié de l'en-tête d'Extend, de Chronique, de
    Pulse et de Nebula passait sous le bandeau de la démonstration ; le bas du rail de Forge et de la barre latérale de
    l'administration sortait de l'écran ; au téléphone, le blason et le compte de Forge étaient cachés. Le gabarit
    principal empile désormais les bandeaux et publie leur hauteur ; les thèmes, l'administration et l'éditeur en direct
    s'y calent, et les notifications à l'écran s'affichent dessous.
  • Les colonnes collées des modules se calent sous l'en-tête du thème, quel qu'il soit : le menu de l'espace membre
    (à 16 px du haut, il se glissait sous un en-tête collé de 60 à 70 px), le sommaire du wiki, le sommaire et l'encart
    d'un article. Une colonne plus haute que la place qu'il lui reste ne colle plus : son bas restait hors de l'écran
    jusqu'au bout de la page — le menu de l'espace membre d'Extend, sur un écran de portable.
  • Un lien vers une ancre s'arrête sous l'en-tête collé — un message du forum, une section du wiki ou d'un article —
    au lieu de poser son titre dessous : chaque thème fixait ce décalage à la main, sans compter les bandeaux.
  • « Réinstaller par défaut » et « Supprimer » un thème aboutissent depuis le panneau des extensions, et l'ordre des
    langues et des authentificateurs s'enregistre : la confirmation était refusée, « jeton de sécurité invalide ».
  • Le bandeau de la démonstration se lit : son texte, blanc sur vert (2,4:1 de contraste), passe en sombre.
  • Au téléphone, les boutons d'un en-tête de l'administration passent sous le titre : sur la page des articles,
    « Catégories », « Séries » et « Nouvel article » recouvraient « 4 publiés », et le dernier sortait de l'écran.
  • Un site joint sous un autre nom que celui qu'il déclare relaie aussi les images de ce nom (avec ou sans www.) :
    la politique de sécurité juge l'hôte que voit le navigateur, et refusait ces images, laissées en adresse directe.
  • check-mise-en-page ne crie plus à tort sur le contenu d'une entrée refermée (<details>), que Chrome garde en
    page sans l'afficher — 48 faux chevauchements dans le journal des erreurs —, ni sur les messages que ce journal
    montre à dessein.

Ajouté

  • La cloche des notifications dans Nebula, comme dans les autres thèmes : l'espace membre l'annonce « en haut de
    chaque page », et Nebula n'en avait pas.
  • Pour les auteurs de thèmes : l'en-tête collé d'un thème porte data-nf-entete, et tout ce qui colle en haut de
    l'écran se cale sur --nf-haut (et une colonne sur --nf-entete) ; un nouveau contrôle, check-colles, le vérifie
    — sur la 1.2.45, il relevait vingt règles (Créer un thème).

Retiré

  • Les règles de la vitrine restées dans la feuille de Nebula (sa barre, ses boutons, son pied) : aucun gabarit de
    Nebula ne les employait.