Détail des versions

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

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) administration en 21 langues (0.18.0) et paquet npm (0.18.1).

0.18.2 — 2026-11-14

  • Page du registre : nouvelles captures d’écran et un onglet de description avec des liens vers ce site. Le lien Guide de configuration des réglages renvoie vers le nouveau nom du dépôt (eventual-rsvp-core).
  • Aucun changement de fonctionnement, de permissions ni de schéma.

0.18.1 — 2026-11-14

  • Sur npm sous le nom @vermeulen.solutions/eventual. Les intégrateurs installent les outils Astro, de schéma et de transfert avec npm install @vermeulen.solutions/eventual au lieu de télécharger une archive source. Les imports passent de eventual/… à @vermeulen.solutions/eventual/… ; l’identifiant de l’extension reste eventual.
  • Rien ne change pour les administrateurs : aucun changement d’exécution, de permissions ni de schéma.

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.1 (14 nov. 2026 · MIT · npm et registre EmDash)

Eventual RSVP – Registrations

Notes de version d’Eventual RSVP – Registrations 0.1.1 (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.1 — 2026-11-14

  • Page du registre : captures d’écran, onglets d’installation et d’historique, et le lien vers le dépôt public. Aucun changement de code ni de permissions.

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.3 (licence commerciale)

Eventual RSVP – Tickets

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

0.1.3 (2026-11-14)

Page du registre

  • Captures d’écran, onglets d’installation et d’historique, et une description plus claire. Aucun changement de code ni de permissions.

0.1.2 (2026-11-14)

Corrigé

  • Hôtes Node qui exécutent les extensions en bac à sable : une fois l’URL du site définie, la page d’administration de Tickets et le paiement échouaient avec « URL.canParse is not a function ». C’est corrigé ; les hôtes Cloudflare n’étaient pas concernés.

0.1.1 (2026-11-14)

Licence en abonnement annuel

  • Les licences sont des abonnements annuels (licence version 1.2) : elles se renouvellent chaque année jusqu’à ce que vous les annuliez, avec un rappel environ 30 jours avant chaque renouvellement. Un renouvellement garde le même code de licence.
  • Votre site reprend la clé renouvelée de lui-même : une fois par jour, d’une semaine avant la fin de l’année payée jusqu’à un mois après, Tickets demande au service de licences la clé de ce site, en n’envoyant que le code et le nom d’hôte.

0.1.0 (2026-11-14)

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 →