Écho du Huit

Extension Firefox qui aide les bénévoles de L'Atelier du Huit (café associatif, Cugnaux) à publier une sélection de leurs événements sur l'agenda de la mairie.

Source des événements : le calendrier Nextcloud du café. Cible : le formulaire « Proposer un événement » du site de la mairie.

Le besoin

Tous les événements du café ne vont pas sur le site de la mairie — seulement certains. L'extension sert de TODO list : pour chaque événement à venir, on voit s'il est à faire, soumis, publié (avec le lien direct) ou ignoré, et on peut le pousser vers le formulaire mairie en un clic (pré-rempli, à relire et envoyer soi-même).

Comment ça marche

  1. L'extension lit le calendrier Nextcloud via la session du navigateur (aucun mot de passe stocké).
  2. Sa page affiche les événements à venir et leur statut.
  3. Bouton Créer → ouvre le formulaire mairie pré-rempli ; tu relis, complètes (image à glisser à la main), puis envoies.
  4. Bouton Ignorer → marque l'événement (tag partagé, visible dans Nextcloud).
  5. Le statut publié est vérifié sur l'agenda public de la mairie.

Installation (dev)

Extension non signée, chargée comme module temporaire (pas de build, pas de runtime à installer) :

  1. Ouvrir about:debugging → Ce Firefox.
  2. Charger un module complémentaire temporaire…
  3. Sélectionner extension/manifest.json.
  4. Cliquer l'icône de la barre d'outils → la page de la liste s'ouvre dans un onglet.

⚠️ Un module temporaire disparaît au redémarrage de Firefox : il faut le recharger via about:debugging à chaque session (comportement de dev attendu).

🔴 Après toute modification de manifest.json (permission ajoutée…) : Décharger puis Charger le module. « Recharger » et F5 ne suffisent pas. Firefox relit les scripts de la page à chaque ouverture, mais le manifest seulement à l'installation : on se retrouve sinon avec le code le plus récent et les permissions figées de l'ancien. Symptôme : browser.<api> is undefined alors que le manifest déclare bien la permission. Piège de dev uniquement (en module signé, les permissions déclarées sont accordées d'office) — mais il a déjà coûté deux passes de test.

Pense aussi à fermer les anciens onglets de la liste avant de recharger : une page orpheline rend les clics inertes.

Configuration (optionnelle)

Le formulaire de la mairie demande un organisateur et un email : ils sont personnels, donc absents du dépôt. Pour qu'ils soient pré-remplis :

cp extension/config.local.json.example extension/config.local.json

puis édite le fichier (il est gitignoré, il ne partira jamais sur le dépôt) :

{
  "organisateur": "L'Atelier du Huit",
  "email": "contact@atelier-huit.fr"
}

Ce fichier est facultatif. Sans lui, tout le reste est pré-rempli (titre, dates, heures, lieu, thème, tarifs) : seuls l'organisateur et l'email restent vides, et le bandeau du formulaire te le dit.

⚠️ Ce fichier ne surcharge que organisateur et email. Les autres valeurs par défaut (thème « Culture », tarifs « Gratuit », adresse et coordonnées du café) vont ensemble et vivent dans extension/config.js : c'est là qu'on les change. Y mettre un cafe partiel produirait des coordonnées invalides.

Après avoir créé ou modifié config.local.json : recharge le module dans about:debugging. L'extension lit le fichier au réveil de son arrière-plan, pas à chaque ouverture du formulaire.

Vérifier l'extension

bunx web-ext lint --source-dir=extension

Documentation

  • docs/RECHERCHE.md — faits techniques vérifiés (CalDAV, champs du formulaire, valeurs du dropdown thème, structure de l'agenda, cas limites de l'ICS).
  • docs/DECISIONS.md — choix d'architecture et leur pourquoi.
  • CLAUDE.md — guide pour les agents qui implémentent.

Suivi

Backlog géré dans Piaire : http://localhost:3117/perso/project/echo-du-huit

S
Description
Extension Firefox permettant de partager les évènements de l'Atelier du 8 sur le site de la mairie de Cugnaux
Readme
30 KiB
Languages
TypeScript 51.6%
JavaScript 45.4%
CSS 2.5%
HTML 0.5%