É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
- L'extension lit le calendrier Nextcloud via la session du navigateur (aucun mot de passe stocké).
- Sa page affiche les événements à venir et leur statut.
- Bouton Créer → ouvre le formulaire mairie pré-rempli ; tu relis, complètes (image à glisser à la main), puis envoies.
- Bouton Ignorer → marque l'événement (tag partagé, visible dans Nextcloud).
- 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) :
- Ouvrir
about:debugging→ Ce Firefox. - Charger un module complémentaire temporaire…
- Sélectionner
extension/manifest.json. - 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 undefinedalors 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
organisateuretextension/config.js: c'est là qu'on les change. Y mettre uncafepartiel produirait des coordonnées invalides.
Après avoir créé ou modifié
config.local.json: recharge le module dansabout: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