Emoji Reactions

Des boutons de réaction emoji pour vos articles. Une réaction par lecteur, compteurs facultatifs, sans cookies et sans stockage des adresses IP brutes.

Extension

Emoji Reactions

Des boutons de réaction emoji pour vos articles. Une réaction par lecteur, compteurs facultatifs, sans cookies et sans stockage des adresses IP brutes.

  • Catégorie: reactions
  • Statut: Disponible
  • Version: 0.2.1
  • Prix: Inconnu
  • Source: Registre officiel de plugins
  • Installation: Plugin isolé du registre
  • Vérifié: 2026-10-21

Description

Reactions ajoute à vos articles des boutons de réaction emoji (💗 🤔 😗 par défaut). Chaque lecteur choisit une seule réaction par article : un nouveau clic la retire, un clic sur une autre la remplace.

Fonctionnalités

  • Jusqu’à 6 boutons, configurés depuis la page d’administration (key=emoji:label).
  • Libellés facultatifs à côté de chaque emoji et compteurs publics facultatifs.
  • Une page d’administration qui liste vos 10 articles les plus réactifs.
  • La page d’administration suit la langue de l’administration (anglais ou japonais).
  • Aucune base de données supplémentaire : les données se trouvent dans le stockage EmDash propre au plugin.
  • Aucune permission ni accès réseau demandés.

Confidentialité

  • Les lecteurs sont reconnus par un hachage SHA-256 de leur adresse IP et de leur User-Agent, avec un sel aléatoire propre au site. L’adresse IP et le User-Agent eux-mêmes ne sont jamais stockés.
  • Stocké pour chaque vote : l’ID de l’article, le hachage, la réaction choisie et un horodatage. Aucun cookie.

Remarque : le plugin n’affiche rien par lui-même. Après l’avoir installé, ajoutez le composant Reactions.astro à votre modèle d’article (voir Installation).

Prérequis

  • EmDash 1.x sur Cloudflare (D1)
  • Offre Workers Paid (les plugins en bac à sable s’exécutent dans la liaison Worker Loader)

Installation

1. Installer le plugin

Installez Reactions depuis cette page avec Open in EmDash, ou compilez-le à partir des sources :

pnpm install
pnpm run build   # dist/

Si vous compilez depuis les sources, ajoutez le paquet à votre site (pnpm add file:../emdash-plugin-emoji-reactions) et listez-le dans astro.config.mjs sous sandboxed: [reactions].

2. Activer le bac à sable des plugins

Les plugins en bac à sable ont besoin de la liaison Worker Loader. Dans wrangler.jsonc (commentée dans les modèles) :

"worker_loaders": []

Vérifiez que src/worker.ts exporte PluginBridge (les modèles *-cloudflare le font déjà) et que astro.config.mjs définit sandboxRunner: sandbox().

3. Ajouter les boutons à votre modèle d’article (obligatoire)

Copiez site-snippets/Reactions.astro dans src/components/ et placez-le sur votre page d’article :

---
import Reactions from "../../components/Reactions.astro";
// `post` comes from getEmDashEntry()
---

Utilisez post.data.id (l’ID de la base de données), pas post.id (le slug). Les slugs changent lorsqu’un article est renommé, et les slugs traduits contiennent /, que le plugin rejette.

Propriétés : contentId (obligatoire), heading (une chaîne vide le masque), label (nom accessible du groupe de boutons). Définissez --rx-accent dans votre CSS pour l’accorder à votre couleur d’accent.

4. Choisir vos boutons

Ouvrez Reactions dans la barre latérale de l’administration et modifiez le champ, par exemple :

love=💗:Love, hmm=🤔:Hmm, whistle=😗:Whoa

Jusqu’à 6 entrées. Les clés commencent par une lettre minuscule. Les compteurs sont conservés par clé : renommer une clé crée un nouveau bouton ; en supprimer une la masque mais conserve ses compteurs.

FAQ

Les boutons n’apparaissent pas sur mon site

  1. Vérifiez que Reactions.astro est ajouté à votre modèle d’article. Le plugin lui-même n’affiche rien.
  2. Ouvrez la console du navigateur. Les échecs y sont consignés sous la forme [reactions] state: HTTP 403 CSRF_REJECTED ....
  3. Si vous avez copié dist/ dans votre site au lieu d’installer le paquet, vérifiez que dist/index.mjs contient "routes". Sans cela, EmDash traite les routes publiques comme privées et rejette les requêtes.

Puis-je masquer les compteurs ?

Oui. Désactivez Show counts dans la page d’administration. Les compteurs sont alors aussi exclus de l’API publique, et ne peuvent donc pas être lus depuis la page. Ils continuent d’être comptés et restent visibles pour vous dans la page d’administration.

Deux personnes de ma maison ou de mon bureau comptent pour un seul lecteur

Les lecteurs derrière la même IP avec le même navigateur sont traités comme un seul. C’est un bouton de réaction informel, pas un système de vote.

Peut-on spammer le bouton ?

Chaque lecteur n’a qu’une réaction par article, donc les clics répétés ne font que la basculer. Les routes sont toutefois publiques. Si nécessaire, ajoutez une règle de limitation de débit Cloudflare pour /_emdash/api/plugins/reactions/react.

Cela fonctionne-t-il en développement local ?

Oui. Lorsqu’aucune IP client n’est disponible, le navigateur envoie à la place un ID aléatoire conservé dans localStorage (rx-visitor).

Sécurité

Signaler une vulnérabilité

Merci de signaler les problèmes de sécurité en privé via le signalement privé de vulnérabilités de GitHub, et non dans les issues publiques.

À quoi le plugin peut accéder

  • Aucune permission ni accès réseau. Le plugin ne peut ni lire ni modifier votre contenu, vos médias, vos utilisateurs ou vos paramètres en dehors de son propre stockage, et il ne peut appeler aucun autre service.
  • Il ne stocke de données que dans son propre stockage EmDash : les compteurs par article, un enregistrement par vote et ses paramètres de boutons.

Données stockées sur les lecteurs

  • Un hachage SHA-256 tronqué de l’adresse IP et du User-Agent du lecteur, combiné à un sel aléatoire propre au site. L’adresse IP et le User-Agent eux-mêmes ne sont jamais stockés.
  • Pour chaque vote : l’ID de l’article, ce hachage, la réaction choisie et un horodatage. Aucun cookie.

Routes publiques

state (GET) et react (POST) sont publiques. Toutes deux valident leurs entrées : contentId doit correspondre à [A-Za-z0-9_\-:.], les réactions doivent être une clé configurée, et les corps de requête sont limités à 1 Ko. La route d’administration est privée. Pour limiter les abus, ajoutez une règle de limitation de débit Cloudflare pour /_emdash/api/plugins/reactions/react.

Journal des modifications

0.2.1 — 2026-10-18

  • Ajout de l’icône du registre.

0.2.0 — 2026-10-15

Première version sur le registre de plugins EmDash.

  • Interrupteurs Show labels et Show counts dans la page d’administration. Les libellés sont masqués par défaut et conservés comme info-bulles et texte pour lecteurs d’écran. Lorsque les compteurs sont masqués, l’API publique les exclut aussi.
  • Nécessite EmDash 1.x. Les paramètres des boutons passent dans ctx.settings ; les boutons enregistrés en 0.1.x sont conservés.
  • La page d’administration suit la langue de l’administration (anglais ou japonais). Les libellés par défaut sont désormais en anglais (Love / Hmm / Whoa) ; les clés sont inchangées, donc les compteurs existants restent rattachés.
  • Reactions.astro : consigne les échecs dans la console du navigateur au lieu de les masquer silencieusement, ajoute une propriété label et la variable CSS --rx-accent, et documente le passage de post.data.id.
  • pnpm run test se termine désormais par une compilation, de sorte que dist/ inclut toujours les déclarations des routes publiques.

0.1.0

  • Version initiale (non publiée sur le registre).