Emoji Reactions

Botões de reação com emojis para as suas publicações. Uma reação por leitor, contagens opcionais, sem cookies e sem guardar IPs em bruto.

Extensão

Emoji Reactions

Botões de reação com emojis para as suas publicações. Uma reação por leitor, contagens opcionais, sem cookies e sem guardar IPs em bruto.

  • Categoria: reactions
  • Estado: Disponível
  • Versão: 0.2.1
  • Preço: Desconhecido
  • Origem: Registro oficial de plugins
  • Instalação: Plugin sandbox do registro
  • Verificado: 2026-10-21

Descrição

O Reactions adiciona botões de reação com emojis (💗 🤔 😗 por predefinição) às suas publicações. Cada leitor escolhe uma reação por publicação: voltar a clicar remove-a, e clicar noutra troca-a.

Funcionalidades

  • Até 6 botões, configurados a partir da página de administração (key=emoji:label).
  • Etiquetas opcionais junto a cada emoji e contagens públicas opcionais.
  • Uma página de administração que lista as suas 10 publicações com mais reações.
  • A página de administração segue o idioma da administração (inglês ou japonês).
  • Sem base de dados adicional: os dados ficam no armazenamento EmDash próprio do plugin.
  • Não pede permissões nem acesso à rede.

Privacidade

  • Os leitores são reconhecidos através de um hash SHA-256 do seu endereço IP e do seu User-Agent com um sal aleatório por site. O IP e o User-Agent em si nunca são guardados.
  • Guardado por cada voto: o ID da publicação, o hash, a reação escolhida e um carimbo de data/hora. Sem cookies.

Nota: o plugin não mostra nada por si só. Depois de o instalar, adicione o componente Reactions.astro ao modelo das suas publicações (veja Instalação).

Requisitos

  • EmDash 1.x no Cloudflare (D1)
  • Plano Workers Paid (os plugins em sandbox correm na ligação Worker Loader)

Instalação

1. Instalar o plugin

Instale o Reactions a partir desta página com Open in EmDash, ou compile-o a partir do código-fonte:

pnpm install
pnpm run build   # dist/

Ao compilar a partir do código-fonte, adicione o pacote ao seu site (pnpm add file:../emdash-plugin-emoji-reactions) e indique-o em astro.config.mjs em sandboxed: [reactions].

2. Ativar a sandbox de plugins

Os plugins em sandbox precisam da ligação Worker Loader. Em wrangler.jsonc (comentada nos modelos):

"worker_loaders": []

Certifique-se de que src/worker.ts exporta PluginBridge (os modelos *-cloudflare já o fazem) e de que astro.config.mjs define sandboxRunner: sandbox().

3. Adicionar os botões ao modelo de publicações (obrigatório)

Copie site-snippets/Reactions.astro para src/components/ e coloque-o na página da sua publicação:

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

Use post.data.id (o ID da base de dados), não post.id (o slug). Os slugs mudam quando uma publicação é renomeada, e os slugs traduzidos contêm /, que o plugin rejeita.

Propriedades: contentId (obrigatória), heading (uma cadeia vazia oculta-o), label (nome acessível do grupo de botões). Defina --rx-accent no seu CSS para combinar com a sua cor de destaque.

4. Escolher os botões

Abra Reactions na barra lateral da administração e edite o campo, por exemplo:

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

Até 6 entradas. As chaves começam por uma letra minúscula. As contagens são guardadas por chave: renomear uma chave inicia um botão novo; remover uma oculta-a mas mantém as suas contagens.

Perguntas frequentes

Os botões não aparecem no meu site

  1. Verifique se Reactions.astro está adicionado ao modelo das suas publicações. O plugin em si não mostra nada.
  2. Abra a consola do navegador. As falhas são registadas como [reactions] state: HTTP 403 CSRF_REJECTED ....
  3. Se copiou dist/ para o seu site em vez de instalar o pacote, verifique se dist/index.mjs contém "routes". Sem isso, o EmDash trata as rotas públicas como privadas e rejeita os pedidos.

Posso ocultar as contagens?

Sim. Desative Show counts na página de administração. As contagens também ficam então fora da API pública, pelo que não podem ser lidas a partir da página. Continuam a ser contadas e permanecem visíveis para si na página de administração.

Duas pessoas na minha casa/escritório contam como um só leitor

Os leitores atrás do mesmo IP com o mesmo navegador são tratados como um. É um botão de reação informal, não um sistema de votação.

Podem fazer spam com o botão?

Cada leitor tem uma reação por publicação, por isso os cliques repetidos apenas a alternam. As rotas, no entanto, são públicas. Se for preciso, adicione uma regra de Cloudflare Rate Limiting para /_emdash/api/plugins/reactions/react.

Funciona no desenvolvimento local?

Sim. Quando não há um IP de cliente disponível, o navegador envia em vez disso um ID aleatório guardado em localStorage (rx-visitor).

Segurança

Comunicar uma vulnerabilidade

Comunique os problemas de segurança em privado através de a comunicação privada de vulnerabilidades do GitHub, e não em issues públicas.

A que o plugin pode aceder

  • Sem permissões nem acesso à rede. O plugin não pode ler nem alterar o seu conteúdo, multimédia, utilizadores ou definições fora do seu próprio armazenamento, e não pode chamar outros serviços.
  • Só guarda dados no seu próprio armazenamento EmDash: as contagens por publicação, um registo por voto e as definições dos seus botões.

Dados guardados sobre os leitores

  • Um hash SHA-256 truncado do endereço IP e do User-Agent do leitor, combinado com um sal aleatório por site. O endereço IP e o User-Agent em si nunca são guardados.
  • Por cada voto: o ID da publicação, esse hash, a reação escolhida e um carimbo de data/hora. Sem cookies.

Rotas públicas

state (GET) e react (POST) são públicas. Ambas validam a sua entrada: contentId tem de corresponder a [A-Za-z0-9_\-:.], as reações têm de ser uma chave configurada e os corpos dos pedidos estão limitados a 1 KB. A rota de administração é privada. Para limitar abusos, adicione uma regra de Cloudflare Rate Limiting para /_emdash/api/plugins/reactions/react.

Registo de alterações

0.2.1 — 2026-10-18

  • Adicionado o ícone do registo.

0.2.0 — 2026-10-15

Primeira versão no registo de plugins do EmDash.

  • Interruptores Show labels e Show counts na página de administração. As etiquetas estão ocultas por predefinição e mantêm-se como dicas e texto para leitores de ecrã. Com as contagens ocultas, a API pública também as omite.
  • Requer EmDash 1.x. As definições dos botões passam para ctx.settings; os botões guardados na 0.1.x são mantidos.
  • A página de administração segue o idioma da administração (inglês ou japonês). As etiquetas predefinidas passam a estar em inglês (Love / Hmm / Whoa); as chaves não mudam, por isso as contagens existentes continuam associadas.
  • Reactions.astro: regista as falhas na consola do navegador em vez de as ocultar em silêncio, acrescenta uma propriedade label e a variável CSS --rx-accent, e documenta a passagem de post.data.id.
  • pnpm run test passa a terminar com uma compilação, para que dist/ inclua sempre as declarações das rotas públicas.

0.1.0

  • Versão inicial (não publicada no registo).