# CHANGELOG — Nexxis Toolkit

Historique global du MU-plugin. Pour le détail par module, voir les CHANGELOGs dédiés :
- [ariane-seo](modules/ariane-seo/CHANGELOG.md)
- [sommaire](modules/sommaire/CHANGELOG.md)
- [floating-toolbar](modules/floating-toolbar/CHANGELOG.md)
- [nav-mobile](modules/nav-mobile/CHANGELOG.md)
- [rich-snippets](modules/rich-snippets/CHANGELOG.md)
- [analytics](modules/analytics/CHANGELOG.md)

---

## 2026-05-05 — Nouveau module Analytics + helper toolkit-level

### Nouveau module
- **[analytics v1.0.0](modules/analytics/CHANGELOG.md)** : service centralisé de tracking GA4 / dataLayer pour les CTA des modules. Auto-détection CMP RGPD (Cookiebot, Axeptio, CookieYes) avec file d'attente jusqu'au consentement. Trois modes : `auto` (push si dispo), `force_ga4` (injection gtag.js), `disabled`. Page admin strict admin. Préfixe d'events configurable (défaut `nxt_`). Métadonnées additionnelles fusionnées dans chaque event. Mode debug avec console.log. **Opt-in (default OFF)** — ne se déclenche que si l'admin l'active explicitement.

### Bootstrap
- Nouveau helper toolkit-level **`nxt_user_is_module_admin()`** (dans `nexxis-toolkit.php`) — strict admin, refuse les Editors qui auraient `manage_options` par escalation accidentelle. Réutilisable par tous les futurs modules. Aligné sur le pattern de `nrs_user_is_module_admin()` du module rich-snippets (qui garde sa version locale).
- Dashboard Toolkit (`core/class-admin.php`) : icône 📊 + URL réglages pour la nouvelle carte « Analytics ».

### Versions bumpées
| Module | Avant | Après |
|---|---|---|
| floating-toolbar | 1.3.0 | **1.4.0** — tracking CTA + ouverture toolbar/bottom sheet via `window.nxtAnalytics?.track()` |
| analytics | — | **1.0.0** (nouveau) |

### Floating Toolbar v1.4.0
- Tracking GA4/dataLayer via le service `nxtAnalytics`. No-op silencieux si module Analytics désactivé.
- Listener en capture phase pour garantir le push avant les `preventDefault()` et navigations natives (`tel:`, `mailto:`).
- Events poussés : `nxt_cta_click` (sur chaque action), `nxt_menu_open` (ouverture toolbar desktop + ouverture bottom sheet mobile).

---

## 2026-04-16 — grosse session de fixes et de nouveau module

### Nouveau module
- **[nav-mobile v1.0.0](modules/nav-mobile/CHANGELOG.md)** : drawer latéral mobile qui remplace le menu burger natif d'Enfold. Neutralisation automatique d'Enfold via filtres `wp_nav_menu_items` + `avf_burger_menu_active` + `avf_alternate_mobile_menu`. Switch admin burger-dans-header / burger-flottant. Accordéon inline pour sous-menus. Bloc contact optionnel. Fallback menu principal si pas de menu dédié.

### Versions bumpées
| Module | Avant | Après |
|---|---|---|
| ariane-seo | 3.2.0 | **3.3.0** |
| sommaire | 2.2.0 | **2.4.0** |
| floating-toolbar | 1.0.0 | **1.3.0** |
| rich-snippets | 3.2.2 | **3.2.5** |
| nav-mobile | — | **1.0.0** (nouveau) |

### Ariane-SEO v3.3.0
- Page ACF Options remplacée par page WP native (position + tableau d'exclusions).
- Tableau d'exclusions synchronisé avec le champ ACF `ariane_masquer` par page (source de vérité unique).
- Retrait des classes Enfold `breadcrumb breadcrumbs avia-breadcrumbs` du wrapper (fix des flèches doubles `› >`).
- Migration automatique de l'ancienne valeur ACF Options vers option WP native.

### Sommaire v2.4.0
- Tableau admin synchronisé avec le champ ACF `sommaire_masquer` (même pattern que ariane-seo).
- Migration automatique de l'ancienne option `nxt_sommaire_exclusions` vers ACF.

### Floating Toolbar v1.3.0
- **Catalogue d'icônes unifié** avec types `font` (Entypo) et `svg` (inline natif).
- Nouvelle icône `svg-list-bullets` + icône éclair pour le trigger + vrai logo WhatsApp en SVG.
- **Compatibilité plugins d'obfuscation d'emails** (Email Address Encoder & co) : `href="#"` + `data-nxt-email="<base64>"` au lieu de `mailto:` — reconstruit en JS au clic.
- Fix items décalés au focus-visible (outline → box-shadow inset).
- Fix sublabel email qui poussait l'icône (min-width: 0 + ellipsis).
- Toolbar reste ouverte au clic Sommaire (feedback visuel).

### Rich Snippets v3.2.3 → v3.2.5
- **Clé OpenAI préservée** si non resoumise (était écrasée par `''` car champ masqué en UI quand clé déjà configurée).
- **Apostrophes échappées** (`\'Azur`) résolues via `wp_unslash()` au save + à la lecture des options (nettoie les données déjà polluées en DB).
- **Clics « Synchroniser » / « Importer »** — résolution progressive :
  - v3.2.3 : delegated events (anti plugin-cache)
  - v3.2.4 : `data-cfasync="false"` (anti Cloudflare Rocket Loader)
  - v3.2.5 : **double-clic de confirmation** au lieu de `confirm()` natif (Chrome supprimait les dialogs dans les handlers `async` delegated)
- Fail-safe `nrs_encrypt()` : si le chiffrement échoue, la clé existante est préservée + notice d'erreur.

---

## Version globale

La constante `NXT_VERSION` (dans [nexxis-toolkit.php](nexxis-toolkit.php)) n'a pas été bumpée à cette occasion — elle reste à `1.0.0`. Les versions par module sont indépendantes et reflètent les évolutions ciblées. Bumper la version globale si et quand un changement structurel du core / du module-manager l'exige.
