Skip to content

OctoGuard : la conversation autour et ce que l'auteur a modifié (lot 3) - #949

Merged
Pokled merged 1 commit into
mainfrom
feat/octoguard-contexte
Nov 7, 2026
Merged

Pokled merged 1 commit into
mainfrom
feat/octoguard-contexte

Conversation

@Pokled

@Pokled Pokled commented Nov 7, 2026 •

Copy link
Copy Markdown
Owner

Lot 3 de la mise en conformité avec la maquette validée (CDC E4h, D18 validée le 04/11).

Posée sur #951, elle-même posée sur #947. Ordre de fusion : #947, #951, puis celle-ci. Chacune rebasculera sur main après la précédente.

Ce que voit l'équipe dans Signalements

  • La conversation autour : 5 messages avant et 5 après le message signalé, dans le même salon ou le même fil. Le message signalé est mis en évidence ; un message supprimé reste masqué. Pour un message retenu, on voit l'endroit où il viendrait s'insérer.
  • Ce que l'auteur a modifié : l'ancien texte barré, le nouveau souligné, comme sur la maquette (« va crever quitte le serveur »). Avec l'heure, « N min après le signalement », et le nom de quiconque a modifié s'il ne s'agit pas de l'auteur.
  • La fiche courte : ancienneté, avertissements actifs, sourdine en cours.
  • Titres et file comme sur la maquette : « Message de Rémi dans #jeux », « Signalé par Léa, Max et OctoGuard ».

Reste à venir sur cette page : l'échelle du barème et « Appliquer le barème » (lot 4), l'onglet Contestations (lot 8).

Historique des modifications (migration 132)

L'ancien texte est écrit dans la même requête que la modification, pour le chat comme pour le forum : aucune modification ne peut échapper à l'historique. Il n'est lisible que par l'équipe (D18) et est effacé au bout de 90 jours. Les modifications faites avant le déploiement ne sont pas récupérables.

Deux trous corrigés en construisant le lot

  • La modification d'un message du chat ne passait par aucune règle. On pouvait publier un message propre, puis le modifier en spam ou en insulte. Elle passe maintenant par OctoGuard comme un envoi. Au cran Retenir, elle est refusée : une modification n'est jamais publiée sans relecture.
  • Une sourdine n'empêchait pas de réécrire ses anciens messages du chat.

Preuves

  • Cœur : 1384 tests. Frontend : 415 tests, 0 erreur de types, les 5 portes i18n vertes (fr et en).
  • SQL : 17 vérifications dans un vrai PostgreSQL (PGlite), dont les deux modifications qui gardent l'ancien texte et la migration rejouée.
  • Bout en bout, sur un banc jetable (vrai cœur, aucune donnée de production), avec la scène de la maquette rejouée (Léa, Max, Rémi) : 16 vérifications. Elles couvrent la conversation, « va crever » retrouvé, un membre qui ne peut pas lire l'ancien texte, la modification avec un lien refusée et la sourdine qui bloque la modification.
  • Navigateur : 6 vérifications, zéro erreur JS, en clair, en sombre et au format téléphone.

Le texte affiché vient d'auteurs potentiellement malveillants : il est rendu en texte, jamais interprété, et lu en un seul passage (voir la revue de sécurité de #951).

Lot 3 de la mise en conformité avec la maquette validée (CDC E4h, D18).

On ne juge jamais un message seul. Dans Signalements (et pour un message
retenu), l'équipe voit maintenant :
- la conversation autour : 5 messages avant, 5 après, même salon ou même
  fil, le message signalé mis en évidence, un message supprimé reste masqué ;
- ce que l'auteur a modifié : l'ancien texte barré, le nouveau souligné,
  l'heure, « N min après le signalement », et qui a modifié ;
- la fiche courte : ancienneté, avertissements actifs, sourdine en cours.
Titres et file comme la maquette (« Message de Rémi dans #jeux »,
« Signalé par Léa, Max et OctoGuard »).

Historique des modifications (migration 132, table message_edits) : l'ancien
texte est écrit dans la MÊME requête que la modification, chat et forum, rien
ne peut y échapper. Lu par l'équipe seulement (D18), effacé après 90 jours.

Deux trous corrigés au passage, trouvés en construisant le lot :
- la modification d'un message du chat ne passait par AUCUNE règle : on
  publiait propre puis on modifiait en spam ou en insulte. Elle passe
  maintenant par OctoGuard comme un envoi (« Retenir » y vaut refus : une
  modification n'est jamais publiée sans relecture) ;
- une sourdine n'empêchait pas de réécrire ses anciens messages du chat.
@Pokled
Pokled force-pushed the feat/octoguard-contexte branch from 1c76ef8 to 3d97ff9 Compare November 7, 2026 16:22
@Pokled
Pokled merged commit 12f9271 into main Nov 7, 2026
10 checks passed
@Pokled
Pokled deleted the feat/octoguard-contexte branch November 7, 2026 16:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant