Détail des versions

  • @vermeulen.solutions/eventual
  • 0.18.0 (14 nov. 2026 · MIT · registre EmDash)

Eventual RSVP – Core

Historique des versions, du premier calendrier sandboxé (0.5.0) aux collections natives EmDash, métadonnées de cache opt-in (0.15.0) liens calendrier multilingues (0.17.0) et administration en 21 langues (0.18.0).

Note : Core est publié sur le registre EmDash ; un paquet npm suivra dans une prochaine version.

0.18.0 — 2026-11-14

  • Nouveau nom : Eventual RSVP – Core (anciennement Eventual). L’identifiant du plugin reste eventual : les sites se mettent à jour sans changement ; l’administration renvoie à la page Event settings.
  • Administration en 21 langues, dont l’arabe et l’hébreu de droite à gauche. L’anglais est intégré ; les autres langues sont des paquets de langue vérifiés par empreinte, issus de @vermeulen.solutions/eventual-locales et téléchargés à la première utilisation. Les boutons de tableau et les statuts sont traduits aussi.
  • Nouvelle permission : network:request vers cdn.jsdelivr.net, uniquement pour ces paquets de langue. Les administrateurs approuvent de nouveau le plugin lors de la mise à jour.
  • Les mois chargés ne cassent plus le calendrier public : les adresses web sont demandées une fois par langue au lieu d’une fois par événement, ce qui reste dans la limite de 10 appels du sandbox.

0.17.0 — 2026-11-07

  • Dictionnaires complets d’interface en allemand (de), néerlandais (nl) et espagnol (es) aux côtés du français (fr) et de l’anglais (en), avec résolution normalisée (resolveLanguage).
  • Liens « Ajouter au calendrier » en un clic (buildCalendarLinks) pour Google Calendar, Outlook Web, Office 365 et téléchargement direct .ics Apple/bureau dans PublicEvent et <EventList showCalendarLinks={true} />.
  • Prise en charge de la requête unitaire par paramètre eventId sur publicEvents (identifiant parent ou d’occurrence).
  • Rétrocompatibilité complète : aucune nouvelle permission, aucun nouveau schéma (EmDash >=1.2.0 <2.0.0).

0.16.0 — 2026-11-02

  • Parallélisation de l’hydratation du flux public et des résolutions de lieux/médias via Promise.all, réduisant nettement les appels RPC du bac à sable.
  • En-tête Cache-Control: public, max-age=3600, must-revalidate sur publicEventImage.
  • Métadonnées optionnelles imageMedia (src, width, height, alt) sur PublicEvent pour optimisation directe côté Astro tout en conservant imageUrl.

0.15.0 — 2026-11-01 (version registre EmDash)

  • Métadonnées typées opt-in de dépendance et d’expiration de cache sur les flux publics natifs (plafonnées à 15 secondes de durée de vie restante, sans servir de contenu périmé ; requiert EmDash >=1.4.0 <2.0.0).
  • Assistants Astro de répartition SSR directe, bornes de minuit par fuseau horaire et option pluginId pour les installations issues du registre.

0.14.1 — 2026-10-30

  • Validation de compatibilité sur EmDash 1.2.0 et 1.4.0 (1.4.0 recommandé pour les formulaires Block Kit imbriqués et les mutations sur Cloudflare).

0.14.0 — 2026-10-14 (changement majeur)

  • Les lectures publiques ne se replient plus silencieusement sur les anciens enregistrements internes du plugin lorsque les collections natives ne sont pas reliées ; l’administrateur active explicitement Afficher les anciens événements enregistrés dans l’extension (legacyReads) pendant une migration.

0.13.0 – 0.13.4 — 7 au 11 octobre 2026 (modernisation vers les collections natives)

  • Propriété des événements, lieux et organisateurs transférée aux collections natives EmDash (texte enrichi, brouillons, révisions, traductions).
  • Comptage strict des appels RPC (<= 10), diffusion publique des images mises en avant et option publicUrls=false.

0.5.0 – 0.11.1

  • Jalons précédents : première version MIT sandboxée (0.5.0), 15–16 outils MCP eventual__* et widget (0.6.0), gestion des exceptions de récurrence et règles avec passage à l’heure d’été (0.7.0), sept vues visiteur sans JavaScript (0.8.0), tableaux paginés Block Kit (0.9.0), détection d’édition obsolète (0.10.0), événements présentiels/virtuels/hybrides + JSON-LD + transfert CSV/ICS (0.11.0) et droits éditeur content:edit_any (0.11.1).
  • @vermeulen.solutions/eventual-attendance
  • 0.1.0 (14 nov. 2026 · MIT · npm et registre EmDash)

Eventual RSVP – Registrations

Notes de version d’Eventual RSVP – Registrations 0.1.0 (publiée le 14 novembre 2026) : inscriptions gratuites sous licence MIT, liste d’attente, approbations, liste d’accueil et effacement des données personnelles.

0.1.0 — 2026-11-14

Inscriptions, approbations et gestion des places

  • Inscriptions par occurrence pour les événements ponctuels et récurrents, avec capacité, liste d’attente et réglages partagés entre traductions d’un même événement.
  • Registre de places sans survente garanti par compare-and-set révisé (eventual-capacity) et soumissions idempotentes (commandId).
  • Fermé par défaut ; n’accepte d’inscriptions que sur les événements publiés non gérés par billetterie (inventory_mode != "tickets").
  • Questions personnalisées par événement (texte court, texte long, choix, case à cocher, obligatoires ou facultatives) validées côté serveur avec messages en français et en anglais.
  • Mode d’approbation manuelle par événement (requireApproval, fenêtre réglable 1–720 heures) retenant les places en attente jusqu’à décision ou expiration automatique par attendance-approvals (*/5 * * * *), avec avis facultatif à l’organisateur.
  • Écran de confirmation affichant le lien direct « Gérer ou annuler cette inscription » et ne promettant l’envoi d’un e-mail que si le serveur confirme email: "sent" | "queued".

Liste d’attente et liens autonomes sécurisés

  • Liste d’attente stricte premier arrivé, premier servi avec rang exact affiché au visiteur, promotion automatique à tour de rôle (waitlist-maintenance), offres retenues 2 heures par e-mail et action manuelle pour renvoyer la tête bloquée en fin de file.
  • Liens signés HMAC transmis dans le #fragment de l’URL (cancel, waitlist/claim), hachés en base via clé générée dans le KV du plugin (aucune EMDASH_ENCRYPTION_KEY requise), sans modification d’état en GET.
  • Intégration optionnelle de Cloudflare Turnstile (challenges.cloudflare.com), champ pot de miel et limitation à 10 inscriptions par tranche de 10 minutes par empreinte ipHash lorsque Turnstile est désactivé.

Opérations organisateur, rappels et protection des données

  • Tableau des créneaux les plus demandés (« Quand les séances se remplissent ») et carte thermique dans le fuseau local IANA de chaque séance (formatInZone, repli UTC).
  • Listes d’accueil HTML imprimables et CSV respectant les filtres événement/date (colonne Heure locale) et pointage à l’entrée sur mobile (Pointer l’arrivée / Annuler).
  • Pages Inscriptions, Liste d’accueil et Réglages des inscriptions séparées ; questions modifiées sous forme de lignes ; les pages suivent la langue de l’administration (21 langues, dont l’arabe et l’hébreu de droite à gauche), les libellés de la barre latérale restent en anglais.
  • Garde-fou empêchant la mise à la corbeille d’un événement ayant des inscriptions à venir.
  • E-mails bilingues (confirmations, liste d’attente, offre 2 h, décisions d’approbation, rappels automatiques attendance-reminders, liens .ics, adresse Reply-To).
  • Purge horaire configurable (attendance-retention, 30–3650 jours, 365 par défaut) et effacement manuel à la demande conservant les totaux anonymisés (Effacée / —).
  • Accessibilité WCAG 2.2 AA vérifiée (axe-core en 1280×800 et 320×640), personnalisation via --eventual-* en thèmes clair et sombre, navigation clavier, captures d’e-mails et parcours Playwright complets.
  • @vermeulen.solutions/eventual-tickets
  • 0.1.0 (bientôt disponible · licence commerciale)

Eventual RSVP – Tickets

Notes de version d’Eventual RSVP – Tickets 0.1.0 (bientôt disponible) : billetterie commerciale, Stripe Checkout, factures, billets QR, remboursements et licence vérifiée hors ligne.

0.1.0 (bientôt disponible)

Catégories de billets, Stripe Checkout et paiement sur facture

  • Jusqu’à 20 catégories de billets par événement (nom, prix en unité minimale y compris devises sans décimale ou Gratuit, quota par date dans le plafond global, maximum par commande 1–50, fenêtre de vente) et questions sous forme de lignes.
  • Retenue atomique synchronisée avec Stripe Checkout (expiration 31 minutes conforme au minimum Stripe de 30 minutes) et idempotence par commandId.
  • Réception brute du webhook HMAC-SHA256 (stripe/webhook), contrôle strict amount_total et currency (AMOUNT_MISMATCH), traitement des paiements tardifs (PAID_NO_SEATS avec remboursement automatique) et renvoi 503 sur erreur temporaire.
  • Billets gratuits et paiement sur facture / virement bancaire actifs sans EMDASH_ENCRYPTION_KEY ni clés Stripe ; envoi des instructions bancaires avec référence (ord_…) et lien commande, puis délivrance des billets QR au clic sur Mark paid.
  • Vérification automatique des retenues échues (tickets-hold-sweep) interrogeant Stripe avant toute libération.

Espace commande, contrôle à l’entrée, remboursements et licence hors ligne

  • Espace acheteur <TicketOrder /> via jeton HMAC en #fragment, affichant codes QR générés côté navigateur (qrcode-generator), code hexadécimal 64 caractères et annulation avant l’échéance (libération ou remboursement Stripe).
  • Page <TicketCheckin /> pour l’équipe à l’entrée : lecture par lien caméra téléphone, scanner navigateur BarcodeDetector ou saisie directe ; refuse double validation et billets remboursés/impayés.
  • Remboursements automatiques (tickets-auto-refund toutes les 5 minutes) et manuels (charge.refunded), plus export CSV comptable à usage unique avec colonne Local time et protection anti-formules.
  • Clé de licence hors ligne Ed25519 (evt1.…) vérifiée par Web Crypto sans appel réseau sortant ; hôtes de test (localhost, *.workers.dev, *.pages.dev) exemptés ; commandes existantes et contrôle à l’entrée toujours maintenus.
  • Le panneau de l’événement, la page Commandes et la page de configuration suivent la langue de l’administration EmDash (21 langues).
  • Composants et e-mails acheteur en 21 langues (arabe et hébreu de droite à gauche ; textes d’administration et d’e-mail en paquets de langue vérifiés par empreinte depuis cdn.jsdelivr.net), conservation comptable des montants lors de l’effacement retentionDays, audits WCAG 2.2 AA axe-core, tests --et-* et suite Playwright complète.
  • @vermeulen.solutions/eventual-capacity
  • 0.1.0 (14 nov. 2026 · MIT · npm)

eventual-capacity

Notes de version de la bibliothèque partagée eventual-capacity 0.1.0 (publiée le 14 novembre 2026) : registre de places, budget d’appels, fuseaux horaires, champs de capacité et harnais de test.

0.1.0 — 2026-11-14

  • budget : RpcBudget, BudgetSlice et logWithin pour rester sous le plafond par défaut de 10 appels hôte par requête ou exécution cron.
  • ledger & holds : registre partagé par compare-and-set révisé (reserveSeats, holdSeats, adjustLedger, freeSeats) avec sous-quotas par billet, file d’attente FIFO et fuseau IANA validé.
  • inventory & field-pack : séparation stricte rsvp / tickets et script additif export-capacity-fields.mjs.
  • time : formatInZone, zonedParts, validTimeZone et eventTiming (lecture de start/end/all_day/timezone avec repli start_date/end_date).
  • tokens, secret, validation, questions, ics, reconcile, turnstile, schedules : jetons HMAC en #fragment, génération de clé KV, validation des questions (QuestionIssueCode), générateur .ics, rapprochement CAS en période calme, Turnstile et réenregistrement progressif des tâches cron.
  • testing : harnais de mesure des appels pont (withBudget, expectWithinBudget) sur l’hôte d’exécution EmDash.
  • Intégrée à Eventual RSVP – Registrations et Eventual RSVP – Tickets à la compilation ; ce n’est pas une extension. Le paquet npm sert à la commande des champs (npx -p @vermeulen.solutions/eventual-capacity eventual-capacity-fields).

Revenir à la documentation technique →