101 lines
4.1 KiB
Markdown
101 lines
4.1 KiB
Markdown
# É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 :
|
|
|
|
```sh
|
|
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) :
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```sh
|
|
bunx web-ext lint --source-dir=extension
|
|
```
|
|
|
|
## Documentation
|
|
|
|
- [`docs/RECHERCHE.md`](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`](docs/DECISIONS.md) — choix d'architecture et leur pourquoi.
|
|
- [`CLAUDE.md`](CLAUDE.md) — guide pour les agents qui implémentent.
|
|
|
|
## Suivi
|
|
|
|
Backlog géré dans Piaire : http://localhost:3117/perso/project/echo-du-huit
|