# Changelog

Format : [Keep a Changelog](https://keepachangelog.com/fr/1.0.0/) · Versioning SemVer.

## [0.9.0] - 2026-09-02

Second lot de reports depuis le modèle fflv2 (commits partenaires, liens publicitaires, infos pratiques), adaptés au périmètre ENDS.

### Ajouté
- **Page publique « Nos partenaires » (`/partenaires`)** : vedettes en grand, puis groupes par catégorie (logo, présentation, lien), état vide soigné, bloc « Devenir partenaire » qui renvoie vers Yggi (aucune coordonnée directe). Lien dans le menu Découvrir (desktop et mobile) et dans le footer de toutes les pages, sitemap, emplacement de bannière `ends-hero-partenaires.jpg` dans le module Photos. Fiche partenaire enrichie (catégorie, présentation, en vedette) et `/api/v1/site` expose `category`, `category_label`, `description`, `featured`.
- **Module d'image des partenaires modernisé** (back-office) : zone de glisser-déposer avec aperçu immédiat, choix d'un fichier ou d'une image de la médiathèque, retrait du logo ; page en fiches. Sélecteur de médiathèque extrait en composant partagé `admin/partials/media-picker`. Une image de médiathèque est référencée telle quelle et jamais supprimée du disque.
- **Liens publicitaires `/go/{slug}`** : liens courts traçables à diffuser (réseaux, affiches, partenaires) qui redirigent vers la billetterie, l'accueil ou une URL libre, en enregistrant un clic anonyme (appareil, référent, hachage journalier sans IP). Back-office « Liens publicitaires » : création, activation, statistiques par lien (14 jours, appareils, référents). Bloc `campagnes` ajouté à `/api/v1/stats`. Détection d'audience mutualisée dans `App\Support\Audience` (partagée avec le suivi des pages).
- **Infos pratiques éditables** : les cartes de la page Infos & FAQ (dates, lieu, billetterie...) deviennent un module du back-office (icône Material Symbols, titre, texte, lien optionnel, ordre, publication). Rendu serveur entre les repères `<!--INFOS-->` avec repli sur le HTML statique si la table est absente ou vide. `GET /api/v1/infos` pour les autres sites. La validation refuse toute adresse e-mail ou numéro de téléphone (coordonnées directes interdites sur le site).

### Sécurité
- Les nouveaux modules respectent la règle « une livraison ne casse pas le site avant ses migrations » : `/go/{slug}` répond 404 et `/api/v1/stats`, `/api/v1/infos`, `/infos` se rabattent sur un contenu vide ou statique si leurs tables n'existent pas encore (tests de non-régression étendus).

## [0.8.0] - 2026-09-01

Lot de reports depuis le modèle fflv2 (audit large au-delà du registre autressites.md).

### Corrigé
- **Une livraison ne peut plus casser le site avant ses migrations** : entre le dépôt FTP et le clic « appliquer les migrations », le code neuf tournait sur l'ancienne base et une table pas encore créée provoquait une erreur 500. Les endpoints publics (suivi d'audience, config du site, FAQ, activités, exposants, photographes, carrousels, JSON-LD FAQ) vérifient désormais l'existence de la table via `App\Support\Tables::existe()` et se rabattent sur un contenu vide ; une base injoignable est traitée comme une table absente. Test de non-régression dédié.
- **Chatbot Yggi durci** : matching anti-faux-positifs (une réponse directe exige un vrai recouvrement sur les mots-clés/question, plus un simple mot commun dans le corps d'une réponse), message trop court ou vague accueilli par une demande de reformulation au lieu d'une réponse devinée, règles du prompt renumérotées et renforcées (INCONNU par défaut, jamais d'entrée proche mais hors-sujet).
- **Photographes : statut d'après le forfait du dossier** (le libellé « accrédité » l'emporte sur un type contradictoire) et **albums « sans compte »** (crédits d'anciennes éditions sans fiche) désormais importés hors annuaire mais visibles dans les albums, avec leur URL directe.

### Ajouté
- **Bouton « Tout resynchroniser »** sur le tableau de bord (super admin / admin) : relance en un clic les imports des trois connecteurs (La Comte, Orgexpo, Photographes) et récapitule le résultat de chacun.

## [0.7.1] - 2026-07-22

### Corrigé
- **Annuaire des activités : repli d'image sur le logo de la troupe** (reporté du modèle fflv2 via `autressites.md`). Dans `/api/v1/activities`, le champ `image` applique une chaîne de repli : image de l'activité, sinon 1re photo, sinon logo de la troupe, sinon null (vignette par défaut du site). Fini les vignettes par défaut quand la troupe a un logo.

## [0.7.0] - 2026-07-17

### Ajouté
- **API de statistiques `GET /api/v1/stats`** (contrat standard de l'écosystème Yggdrasil, reporté du modèle fflv2 via `autressites.md`) : endpoint lecture seule, service-à-service, pour agréger les stats de tous les sites du socle dans une app centrale. En-tête `X-Stats-Key` = `STATS_API_KEY` du `.env` (clé vide → 503, clé fausse → 401), throttle 30/min. Réponse : audience (vues, visiteurs, par jour, top pages/référents, appareils, événements), chatbot, contenus, IA. Aucune donnée personnelle (audience anonyme). Nouveau champ « Clé de l'API statistiques » dans l'éditeur .env du back-office.

## [0.6.4] - 2026-07-16

### Modifié
- **Back-office, connecteur Orgexpo** : la liste de choix des événements est triée par ordre alphabétique (nom, insensible à la casse).

## [0.6.3] - 2026-07-16

### Modifié
- **Back-office : barre latérale en violet** (palette ENDS, item actif en or) au lieu du bleu nuit hérité.

### Corrigé
- **Annuaire créateurs vide pour une édition à venir** : l'API n'exige plus de numéro de stand (héritage FFL). Tous les exposants validés de l'édition sont affichés, avec ou sans stand.

## [0.6.2] - 2026-07-16

### Ajouté
- **Page photographes** : bouton « S'inscrire en tant que photographe » relié au lien d'inscription du back-office (slug `photographes`). La section n'apparaît que si l'URL est renseignée dans les Liens du back-office.

## [0.6.1] - 2026-07-16

### Modifié
- **Page photographes, albums des éditions précédentes** : les éditions sont désormais triées de la plus récente (en haut) à la plus ancienne, et l'année est retirée du titre de chaque édition.

## [0.6.0] - 2026-07-16

### Vérification transverse site ↔ back-office
Audit complet (6 axes) de la liaison entre le site et le back-office : rendu/SEO des 7 pages, config dynamique (`/api/v1/site`), FAQ + chatbot Yggi, tracking/audit/leads, annuaires/carrousels/photos, intégrité back-office. Chaîne validée et testée. Corrections apportées :

### Modifié
- **Aucun émoji dans le back-office** : les ~96 émojis des vues admin sont retirés (préfixes décoratifs supprimés, statuts en ✓/✗, boutons icône via Material Symbols). Règle « aucun émoji » désormais respectée sur tout le projet (site + back-office).
- **Résidus FFL éliminés** : purge des ~38 Mo d'images FFL de `public/img/` (aucune n'était référencée), défaut `festorga.base` vidé (`config/services.php` + `.env.example`), placeholder `seo_image` et lieu de `site-settings` corrigés (ends-header, Fort de Bron), marque du back-office passée à « L'Étrange Noël des Sorciers ».
- **Installateur** : `APP_VERSION` du `.env` généré lit désormais la version courante (au lieu d'un repli figé).

### Ajouté
- **Vidéo teaser raccordée** : `/api/v1/site` expose l'état de la vidéo ; l'accueil affiche une section « teaser » (masquée par défaut) révélée dès qu'une vidéo est téléversée depuis le back-office (fin du module orphelin).
- **Pages légales CGU et Cookies** liées depuis le pied de page de toutes les pages.

### Supprimé
- Slot d'iframe `photographes` du seeder (la page utilise le rendu natif) ; la table `site_embeds` reste disponible.

## [0.5.0] - 2026-07-16

### Modifié
- **Module Photos entièrement raccordé aux pages ENDS.** Avant, la config listait encore les pages et fichiers FFL : aucun emplacement ne correspondait au site, donc rien n'était plaçable. Désormais chaque emplacement du back-office correspond à un endroit réel du site et la photo apparaît aussitôt (repli sur icône/dégradé tant que l'emplacement est vide).
  - **Bannière de fond de hero** sur les 7 pages (`.hero` / `.phero` + voile de lisibilité).
  - **Photo par carte** (échoppes, animations, photocalls, créateurs, tavernes, teasers de l'accueil) : `.card-media` avec la photo au-dessus de l'icône de repli.
  - **Photos des nouveautés 2026** (sorcières de Salem, magie du bayou) sur la page Univers.
  - `config/photos.php` réécrit (emplacements ENDS groupés par page, ~45 slots, fichiers préfixés `ends-`, images partagées accueil/boutiques).
  - Vignette de repli des annuaires et vidéo teaser renommées en `ends-` ; image de partage SEO ajoutée au module.

## [0.4.2] - 2026-07-15

### Modifié
- **Plus aucun tiret long nulle part** (règle éditoriale) : toutes les phrases du site, de la base de connaissances, du widget de chat, des pages légales, du back-office et des docs sont reformulées avec deux points, virgule ou coupure de phrase. Les plages de dates passent au trait d'union simple. Le prompt de Yggi lui interdit aussi le tiret long dans ses réponses.

## [0.4.1] - 2026-07-15

### Modifié
- **Menu restructuré** : Accueil · **Découvrir** (L'univers, Les boutiques magiques, Animations & spectacles, Le marché des créateurs, Les photographes) · Infos & FAQ · **Espace pro** (menu injecté depuis les liens du back-office, renommé « Pro » → « Espace pro », desktop + accordéon mobile). Le menu étant plus court, l'affichage desktop revient dès 900 px.

## [0.4.0] - 2026-07-15

### Modifié
- **Nouvelle palette « Noël » validée** : vert sapin profond en fond, or en accent principal, violet magique en secondaire, parchemin pour les sections claires : appliquée sur les 7 pages du site, l'en-tête et le pied de page (`header.css`), la page en construction, le favicon (étoile or) et la couleur de thème mobile.
- **Alternance des fonds de sections** : sur chaque page, les sections alternent vert sapin, violet profond et parchemin (nouvelle classe `.sec-violet` avec cartes, tuiles, FAQ et encarts assortis). Charte `ENDS-DESIGN.md` mise à jour.

## [0.3.1] - 2026-07-14

### Ajouté
- **Menu « Découvrir »** (desktop et mobile) regroupant Le marché des créateurs et une nouvelle page **Les photographes** (`/photographes`) : annuaire branché sur l'API Festorga Photographe (`/api/v1/photographes`, message d'attente tant que le connecteur n'est pas configuré) et section « Vos photos, offertes ».
- **Annuaire créateurs branché sur l'API Orgexpo** (`/api/v1/exposants`) : les exemples 2025 de la page Créateurs sont remplacés automatiquement par l'annuaire live (tuiles + fiche en pop-up) dès que le connecteur est configuré dans le back-office.

## [0.3.0] - 2026-07-14

### Modifié
- **Histoire corrigée : les deux week-ends racontent la même histoire**, un mélange d'Halloween et de Noël (et non « un week-end Halloween, un week-end Noël ») : accueil, page Univers, Infos & FAQ et base de connaissances de Yggi réécrits en conséquence.

### Ajouté
- **Nouveautés 2026** : l'anniversaire des sorcières de Salem et la magie du bayou de La Nouvelle-Orléans : section dédiée sur la page Univers, bandeau thème de l'accueil, entrées dans la base de connaissances.

## [0.2.2] - 2026-07-14

### Sécurité / confidentialité
- **Coordonnées directes retirées de tout le site** (email direction@ et téléphone, confidentiels) : section Contact remplacée par l'assistant Yggi + les réseaux publics, base de connaissances nettoyée, pages légales avec repli sur l'assistant. Nouveau réglage `ORG_PUBLIC_CONTACT_EMAIL` (vide par défaut) pour afficher, si souhaité, une adresse publique sur les pages légales ; `ORG_CONTACT_EMAIL` reste interne (réception des questions du chatbot) et n'est plus jamais affiché.

### Modifié
- **Menu retravaillé** : liens avec soulignement doré animé et fond au survol, entrée active dorée (desktop et mobile), et bascule vers le menu burger dès 1020 px (le nom long + 6 entrées s'écrasaient sur les largeurs intermédiaires).

## [0.2.1] - 2026-07-14

### Modifié
- **Aucun émoji nulle part** (règle éditoriale) : les pictogrammes du site vitrine passent en icônes Material Symbols, les flocons décoratifs en points CSS, le favicon en étoile SVG dorée, et les émojis sont retirés du widget de chat, de site-dynamic.js, des réponses de politesse et du prompt de Yggi, de la page en construction et de l'installateur.

## [0.2.0] - 2026-07-14

### Ajouté
- **Site vitrine ENDS complet (6 pages)** : accueil, L'univers, Les boutiques magiques (10 échoppes), Animations & spectacles (rue, grande salle, déambulations, dédicaces, photocalls), Le marché des créateurs (+ restauration, appel à candidatures) et Infos pratiques & FAQ (créneaux expliqués simplement, accordéon FAQ branché sur la base de connaissances). Contenu issu de l'édition 2025, présenté comme « aperçu de l'édition précédente ».
- **Charte graphique** `docs/ENDS-DESIGN.md` : palette « sorcellerie chaleureuse » (bordeaux, or vieilli, émeraude, parchemin), typos Grenze Gotisch/Cinzel/Mulish, navigation plate 6 entrées.
- **Base de connaissances Yggi ENDS** : 57 questions/réponses (générale, billetterie, visite, costume, boutiques, animations, photocalls, créateurs, contact) dans le seeder et `festival-knowledge.json`.
- **Mémo assets** `docs/site/ASSETS_A_FOURNIR_ENDS_2026.md` (affiche, logo, photos, réglages à renseigner).

### Modifié
- **Routing** : slugs ENDS (`/univers`, `/boutiques`, `/animations`, `/createurs`, `/infos`), redirections 301 des URLs fichiers, sitemap à jour.
- **header.css** aux tons bordeaux/or (en-tête, menus, footer, flèches carrousel).
- **SiteLinkSeeder** : liens d'inscription FFL retirés (à renseigner pour l'ENDS dans le back-office).

### Supprimé
- Les 13 pages FFL et les guides FFL de `docs/site/`.

### À faire
- Visuels ENDS (affiche, photos, logo) : voir le mémo assets. Purge des images FFL de `public/img/` et adaptation de `config/photos.php` quand les photos ENDS arriveront.

## [0.1.1] - 2026-07-14

### Ajouté
- **Anti-cache automatique des CSS/JS du site** (reporté du modèle fflv2, cf. `autressites.md`) : les URLs `/site/header.css`, `/site/site-dynamic.js` et `/widget/chat-widget.js` reçoivent `?v={version}` au rendu : chaque release invalide les caches navigateur/serveur.

### Modifié
- **Pop-up exposant** (reporté de fflv2) : l'image passe en carré centré cadré en haut : les visages et stands ne sont plus coupés.

## [0.1.0] - 2026-07-14

### Ajouté
- **Création du projet ENDS** (L'Étrange Noël des Sorciers 2026) à partir du socle [fflv2](https://github.com/jeremyloir/fflv2) v0.36 : back-office complet (base de connaissances, médias, partenaires, photos, liens, réglages, utilisateurs, audit, RGPD), chatbot IA Claude (Yggi), site vitrine, déploiement automatique GitHub Actions → FTP OVH.

### Modifié
- **Rebranding technique** : nom de l'application (« ENDS Back-office »), domaine `noeldessorciers.festyggdrasil.fr`, dossier de déploiement `endsv2/`, base de données `ends_bo`, SEO (nom du festival, JSON-LD), prompt du chatbot, page « en construction » aux couleurs ENDS (bordeaux, or vieilli, émeraude).

### À faire (prochaines versions)
- Identité graphique complète du site vitrine (palette « sorcellerie chaleureuse », logos, visuels).
- Réécriture du contenu des pages vitrines pour l'ENDS 2026 (dates, lieu, programmation).
- Base de connaissances du chatbot propre à l'ENDS.
