← Roadmap publique

CHANGELOG

Hub Client AWM V1.11.50Snapshot sécurisé de la version effectivement publiée. Les lignes potentiellement sensibles sont masquées automatiquement.
# Hub Client AWM 1.11.50 — déploiement manuel sans blocage Recovery

- Le canal manuel signé venant de Core peut installer Hub Client/Tech avec sauvegarde fichiers locale et rollback même lorsque Recovery complet n'est pas encore validé sur le site.
- Les mises à jour automatiques restent bloquées tant que `recovery_ready_for_auto` n'est pas confirmé.
- Le mode manuel n'affaiblit pas l'appairage, l'authentification du canal, la signature HMAC, le SHA-256, le contrôle du domaine Alliance ni la validation de version.
- Le hook Recovery de l'upgrader n'est pas relancé dans ce mode manuel afin d'éviter le même blocage; la sauvegarde locale de module reste obligatoire avant remplacement.

# Hub Client AWM 1.11.49 - Suite 4.5.235

- L'autopilote Hub Client/Tech est désormais bloqué tant que Recovery n'a pas `recovery_ready_for_auto`; chaque mise à jour AWM admise crée un point complet fichiers + BD via `admit-deploy` et exige un redémarrage frais via `finish-deploy`.
## 1.11.49 — Recovery auto-amorcé et télémétrie de sécurité — 2026-09-15
- Installe et raccorde automatiquement Recovery avec repli exact avant WordPress lorsque le serveur ignore la règle `.htaccess`, sans créer de dossier `/hub`.
- Adopte le raccord Bootstrap 1.1.3 déjà présent et conserve la sauvegarde privée du `index.php` original.
- Remonte à Tech uniquement des booléens de sécurité : intégrité route, périmètre backup confirmé, test de restauration et prêt pour automatisation; aucun secret.
- Les mises à jour automatiques restent bloquées jusqu'à validation réelle du périmètre et du test fichiers + SQL.

Date : 2026-09-15

Recovery 1.2.0 embarque, copie independante et installation automatique. Route /hub/recovery sans chargement WordPress. Archivage local avant transfert a Alliance; meme contenu sur plusieurs clients: pas de nouvel upload ZIP. Mise a jour tierce uniquement par le chemin protege, avec verifications fraiches.

Retention: version courante + cinq precedentes; sauvegardes completes: cinq. Pas de comptes generiques Tech 1/Responsable. Aucune migration destructive de donnees metier.

Candidate de stabilisation. Aucun deploiement effectue. Recette reelle WordPress + MySQL/MariaDB + PHP-FPM/OPcache + HTTPS et watchdog systeme obligatoire avant activation. Autopilote Suite AWM toujours suspendu. Les paquets des nouvelles mises a jour tierces proviennent encore du fournisseur WordPress de chaque site; leur telechargement unique depuis Alliance reste au roadmap.

## Historique

## 1.11.47 — Recovery externe et retention cinq versions — 2026-09-14

- Ajoute `recovery_available`, `recovery_url` et `recovery_cli_ready` au `fleet_state` compact.
- Intercepte `upgrader_pre_install` pour archiver l extension dans Recovery avant remplacement lorsque Recovery est configure.
- Une erreur de sauvegarde Recovery bloque la mise a jour; l absence de configuration Recovery conserve le comportement historique.
- Passe la retention locale de rollback de trois a cinq copies pour les modules AWM et extensions WordPress tierces.
- Aucun secret Recovery, mot de passe DB ou chemin serveur n est transmis a Alliance.

## 1.11.46 — Fraîcheur de flotte dans fleet_state — 2026-09-12

- fleet_state transmet maintenant l âge et la fraîcheur de l inventaire en plus des versions/autopilote/canal.
- Aucun secret Connector, chemin serveur ou clé API n est ajouté au payload.

## 1.11.45 — Pulse opérationnel transversal — 2026-09-12

- Envoie un `fleet_state` compact avec inventaire : versions runtime, autopilote, canal, dernier inventaire et dernier statut de mise à jour.
- Aucun secret Connector, chemin serveur ou clé API n est inclus dans cet état de flotte.

## Hub Client AWM 1.11.44 — bibliothèque WordPress

- Nouvelle route sécurisée `tech/plugin/install` pour installer, vérifier et activer une extension officielle WordPress.org demandée par Tech AWM.
- Les slugs AWM restent explicitement interdits sur cette route et continuent d utiliser le canal signé Core.
- La route réutilise l authentification Connector existante et vérifie la présence/version du plugin après installation.

# Hub Client AWM 1.11.43 — contrôles WordPress frais à la demande

- La route privée `tech/inventory` accepte `force_checks=1`.
- Une demande forcée relance `wp_update_plugins()`, `wp_update_themes()` et la vérification du Core WordPress avant de retourner l inventaire.
- Le cache d indexabilité Tech est invalidé afin que le statut Index/No-index reflète le contrôle demandé.
- Le mécanisme existant de mise à jour plugin conserve sauvegarde, validation de version, réactivation et rollback.

# 1.11.42 — autopilote AWM Hub Client + Tech

- Étend l autopilote stable à Tech AWM en plus de Hub Client.
- Tech est traité avant Hub Client afin de conserver l agent courant intact jusqu à la fin du cycle.
- Les autres modules centraux AWM ne sont jamais installés automatiquement sur un site client.
- Chaque paquet continue d utiliser publication Core, signature, SHA-256, sauvegarde et rollback.
- L inventaire Hub Client relit la version réellement présente sur disque après une auto-mise à jour pour éviter un statut temporairement périmé.
- Le contrôle s exécute de façon répartie par WP-Cron (premier passage environ 5 à 35 minutes après activation, puis chaque heure).

## 1.11.41 — 2026-09-11

- Ajoute l autopilote Hub Client : après appairage, une tâche horaire vérifie uniquement le canal stable Core et applique une nouvelle version Hub Client sans approbation WordPress répétée.
- Réutilise le paquet signé Core, la vérification SHA-256, le canal authentifié du `site_id`, la sauvegarde locale et le rollback déjà utilisés par la maintenance distante AWM.
- Ajoute la route privée `tech/plugin/update` permettant à Tech de mettre à jour une extension WordPress tierce précise avec sauvegarde locale des fichiers et vérification de version.
- Les modules AWM sont refusés sur cette route générique et restent exclusivement gérés par le canal Suite signé.
- En cas d accès fichiers non direct (`filesystem_method != direct`), la mise à jour automatique est refusée proprement plutôt que de demander des identifiants FTP.
- Les sauvegardes de plugin conservent les trois dernières copies locales par extension; le rollback de fichiers tente aussi de rétablir l état actif précédent.

## 1.11.40 — 2026-09-10
- Ajoute un fallback GeoIP serveur gratuit via **FreeIPAPI** lorsque les en-têtes de l hébergeur ne fournissent pas une vraie localité exploitable.
- Résout automatiquement ville, région, code région, pays, code postal et latitude/longitude approximatives pour les nouveaux visiteurs.
- FreeIPAPI n est appelé que si ville + coordonnées manquent; les en-têtes Cloudflare/GeoIP locaux et le filtre MaxMind local restent prioritaires.
- Cache le résultat GeoIP 12 h via une clé HMAC irréversible et limite volontairement Hub Client à 45 appels/minute pour rester sous la limite gratuite du fournisseur.
- L adresse IP brute n est jamais enregistrée dans WordPress ni envoyée à Alliance; elle est utilisée uniquement côté site client pendant le lookup GeoIP externe.
- Ajoute `geo_source` et `geo_precision` au contrat d événement afin que Stats sache distinguer localité GeoIP, région/pays et simple repli de fuseau.
- Le repli fuseau navigateur reste disponible pour diagnostic, mais ne doit plus créer artificiellement un point de visite sur la carte.


## 1.11.39 — 2026-09-10
- Corrige la carte historique Stats vide : le fuseau IANA du navigateur est maintenant envoyé avec tous les événements Web, pas seulement avec le heartbeat `presence`.
- Le contexte GeoIP approximatif déjà disponible côté hébergeur/reverse proxy est attaché aux page views, formulaires, conversions et engagements avant passage dans la file Connector.
- Ajoute les en-têtes de localisation courants Cloudflare, Vercel, CloudFront et GeoIP serveur comme sources facultatives.
- Aucune adresse IP ni position GPS n est transmise à Alliance; latitude/longitude restent arrondies à deux décimales.
- Cette évolution permet à Stats AWM d afficher les nouveaux points sur Aujourd hui / 30 jours / 3 mois au lieu de limiter la géographie au mode temps réel.

## 1.11.38 — 2026-09-09
- Ajoute le fuseau IANA du navigateur aux heartbeats `presence` comme repli cartographique approximatif lorsque le GeoIP local est incomplet.
- Le fuseau n'est envoyé que pour la présence temps réel et reste lié au contrat `client_id + site_id + instance_uuid`.
- Aucun GPS ni adresse IP n'est ajouté au tracker; GeoIP local reste prioritaire.

## 1.11.37 — 2026-09-09
- Ajoute le heartbeat `presence` Stats toutes les 20 secondes lorsque la page est visible.
- Accélère la remontée du heartbeat via wp-cron non bloquant afin d'alimenter la vue Visiteurs en direct.
- Résout localement une localisation GeoIP approximative depuis les en-têtes de l'hébergeur/reverse proxy lorsqu'ils existent.
- N'envoie jamais l'adresse IP ni une position GPS à Alliance; latitude/longitude GeoIP sont arrondies à deux décimales.
- Le heartbeat conserve le contrat `client_id + site_id + instance_uuid` et respecte la file Connector existante.

## 1.11.36 — 2026-09-09

- Après un appairage `AWM-SITE-*` réussi, Hub Client synchronise immédiatement le répertoire WordPress puis l inventaire Hub/Tech vers Core.
- Évite le cas où un site secondaire reste `Hub à vérifier` / inventaire non synchronisé jusqu à une action manuelle supplémentaire.
- La liaison reste valide même si le premier inventaire échoue; Hub Client journalise uniquement le code d erreur local et relance automatiquement au prochain cycle.
- Conserve le contrat `client_id + site_id + instance_uuid` et le tracker Stats first-party existant.

# CHANGELOG — Hub Client AWM

## 1.11.35 — 2026-09-09
- Migration automatique depuis les anciens plugins « Alliance Web Marketing Hub Connector », « AWM Hub Connector » et « CallInk Client Connector » : les anciennes copies actives sont désactivées lors de l'activation du Hub Client canonique.
- Génère l'`instance_uuid` dès l'activation afin qu'une nouvelle clé `AWM-SITE-*` puisse être appairée immédiatement à un site secondaire.
- Redirige les anciennes pages de réglages Connector vers `Hub > État de la liaison` pour éviter qu'un administrateur continue à utiliser une interface obsolète.
- Conserve le contrat multi-sites `client_id + site_id + instance_uuid`; aucun secret ou code de liaison n'est exposé dans l'interface ou les logs.
- La preuve runtime continue d'indiquer les anciennes copies désactivées automatiquement.

## 1.11.34 — 2026-09-08

- Ajoute le tracker Stats AWM automatique sur les pages publiques des sites jumelés.
- Les événements sont assainis localement puis envoyés en lot par le Connector; le secret Alliance n'est jamais exposé au navigateur.
- Chaque lot conserve le `client_id`, le `site_id` et l'`instance_uuid` du site connecté afin de distinguer site principal et sites secondaires.
- Suit pages vues, sessions/visiteurs pseudonymes, engagement, formulaires, conversions explicites, clics téléphone/courriel, référent et UTM.
- Ne collecte ni adresse IP dans les données Stats, ni valeur de champ, ni contenu de formulaire, ni chaîne de requête de l'URL.
- Évite le double comptage lorsqu'un ancien script `stats-awm.js` est encore installé manuellement.
- Met en file locale et expédie par lots afin de ne pas ralentir le rendu de la page.
- Dès qu'un Hub Client est jumelé, son `site_id` devient automatiquement une source Stats/Health du client; aucun ajout manuel du site n'est requis.

# 1.11.32 — inventaire Tech à la demande
- Ajoute la route privée `tech/inventory`, authentifiée par le canal de scan Hub Client existant.
- Permet au dashboard Tech côté Alliance de demander immédiatement le profil logiciel complet sans attendre le prochain contact spontané du runtime.
- La route reste invisible côté client et ne transmet aucun secret Alliance ni clé de vulnérabilités.
- Conserve le logo Alliance officiel strictement intact.

# 1.11.31 — contenu long, image Elementor et génération média Tech
- Étend le contexte de texte sélectionné afin que Tech puisse réécrire des paragraphes plus longs sans tronquer prématurément le contenu utile.
- Autorise le réglage `image` uniquement sur les widgets Elementor image et valide l attachment local avant écriture.
- Ajoute le transport privé `tech/generate-image` sur les canaux Connector résilients.
- Le média généré est importé localement et peut être appliqué au widget ciblé avec snapshot et rollback.
- Tech demeure totalement invisible dans le Hub Client.

# 1.11.30 — styles Elementor sécurisés pour Tech
- Étend le moteur privé de modification Elementor utilisé par Tech AWM aux couleurs, fonds, alignements, tailles de police responsive, marges et padding.
- Valide strictement les unités, valeurs, couleurs et types d éléments avant toute écriture.
- Continue de créer un snapshot avant modification et de restaurer automatiquement si le document ou le rendu devient invalide.
- Expose uniquement le sous-ensemble de styles nécessaires à l intervention Alliance; aucun PHP, JavaScript ou CSS arbitraire n est accepté.

# 1.11.29 — handoff Elementor autonome dans Hub Client

- La route privée `tech/intervention/prepare` ne dépend plus du runtime Tech déjà chargé dans la requête courante.
- Hub Client peut valider directement la session auprès d Alliance via le Connector résilient puis créer le handoff Elementor à usage unique.
- Le handoff conserve le même format sécurisé attendu par Tech AWM et reste limité au domaine jumelé, à la page ciblée et à la durée de la session.
- La version Tech réellement présente sur disque est relue avant la redirection et les caches PHP du dossier Tech sont invalidés.
- Si le runtime Tech courant sait déjà préparer Elementor, la délégation normale reste prioritaire; le nouveau mécanisme n est qu un repli déterministe.

# 1.11.28 — auto-réparation propre de Tech AWM

- Ajoute un second passage de réparation propre pour Tech AWM lorsqu une mise à jour distante reste bloquée sur une ancienne version.
- La réparation sauvegarde Tech, désactive le runtime courant, retire uniquement le dossier canonique `tech-awm`, réinstalle le paquet officiel signé, réactive le module puis invalide OPcache.
- Le paquet reste vérifié par SHA-256 et signature Core; aucun autre plugin client n est touché.
- Retourne `success_repaired` et `clean_repair=true` pour que Core puisse distinguer une mise à jour normale d une récupération automatique.
- Futur : ajouter un diagnostic de permissions/fichiers verrouillés avant remplacement afin d éviter même le second passage.

# 1.11.27 — paquet canonique à racine unique

- Corrige uniquement la distribution du module : le ZIP contient maintenant **un seul dossier racine** `hub-client-awm/`.
- Supprime le dossier parasite `hc/` qui faisait refuser le paquet par Core avant installation.
- Conserve la route privée `awm-client-hub/v1/tech/intervention/prepare` et la délégation Tech introduites en 1.11.26.
- Conserve le logo Alliance officiel strictement intact et son SHA-256 canonique.

# 1.11.26 — route Elementor privee toujours disponible

- Deplace le point d entree prive `awm-client-hub/v1/tech/intervention/prepare` sous la responsabilite de Hub Client afin d eviter les 404 lorsque Tech vient d etre mis a jour.
- `update/status` remonte maintenant `tech_prepare_route_ready` en plus de la version runtime Tech reellement chargee.
- La route delegue ensuite la preparation a Tech AWM et retourne une erreur explicite si le runtime Tech n est pas disponible, au lieu de `No route was found`.
- Conserve le logo Alliance canonique strictement intact.

# 1.11.25 — preuve runtime Tech et invalidation PHP

- Après une installation distante, invalide les scripts PHP du module dans OPcache et nettoie le cache des extensions WordPress.
- Désactive les copies actives historiques de Tech AWM ou Hub Client qui pourraient charger un ancien runtime avant le dossier canonique.
- `update/status` retourne maintenant `tech_runtime_version`, soit la constante Tech réellement chargée dans la requête courante.
- Permet à Core de distinguer une version de fichier installée d un runtime PHP réellement actif avant d ouvrir Elementor.
- Conserve le logo Alliance officiel strictement intact.

# 1.11.24 — administration locale épurée

- Retire complètement le grand panneau explicatif **Sécurité** de l’administration locale Hub Client.
- Les protections HTTPS, sessions chiffrées, validation Connector et contrôles de domaine restent actives en arrière-plan; seule leur exposition visuelle côté client est supprimée.
- Confirme la séparation d’architecture : Tech AWM et les détails opérationnels de sécurité sont réservés à Alliance Web Marketing.
- Conserve le provisioning silencieux de Tech AWM et les mécanismes de mise à jour sans ajouter de service ou d’outil Tech au Hub Client.
- Le logo Alliance officiel reste strictement identique au fichier canonique fourni.

# 1.11.23 — Tech AWM devient invisible côté client

- Retire Tech AWM de la navigation, des cartes, des sections et des écrans du portail `/hub/`.
- Une URL historique `?section=tech_awm` est ramenée vers l accueil du Hub.
- Retire la carte Tech de l administration locale Hub Client; le provisioning et la télémétrie restent strictement en arrière-plan.
- Tech AWM demeure installable et maintenable par Alliance, mais n est plus présenté comme un service client.
- Le logo Alliance officiel reste strictement identique au fichier canonique fourni.

# 1.11.22 — télémétrie Connector pour Tech AWM 1.4.3
- Mémorise localement le dernier transport Connector fonctionnel, sa latence et les erreurs récentes, sans stocker le secret.
- Expose à Tech AWM un test contrôlé des quatre transports : REST en-têtes, REST corps HTTPS, admin-ajax et pont frontal.
- Enrichit le profil Tech sécurisé avec le dernier transport, le dernier succès et le dernier événement diagnostic.
- Le logo Alliance officiel reste strictement identique au fichier canonique fourni.

# 1.11.21 — auto-provision du paquet Tech AWM manquant
- Lorsque Tech AWM est **activé par Alliance** mais absent du WordPress client, Hub Client demande à Core l'offre signée du paquet Tech et tente son installation automatiquement.
- Ajoute le bouton **Installer / réparer Tech AWM** dans l'administration Hub Client pour forcer une nouvelle tentative et afficher le diagnostic exact.
- Répare les installations partielles : un dossier `tech-awm` incomplet est sauvegardé en quarantaine puis retiré avant une nouvelle installation propre.
- Accepte les variantes `www` / sans `www` du même domaine Alliance pour le lien HTTPS signé du paquet, sans élargir l'autorisation à un autre domaine.
- Affiche la méthode de système de fichiers lorsqu'un hébergement refuse l'installation distante afin de rendre l'erreur exploitable.
- Le logo Alliance officiel reste strictement inchangé et conserve son SHA-256 canonique `1b0dcbd96e1ed931ce785cda2918e7dc38597c214735e21c92243c02eb43b13a`; le badge Hub orange demeure séparé.

# 1.11.20 — logo Alliance strict dans toutes les sections du Hub Client
- Applique une source de rendu unique du logo Alliance officiel à toutes les sections du portail `/hub/` : Accueil, CallTracker et ses sous-sections, Stats, Tech AWM, Mon compte, Profil, Apparence et Facturation.
- Les écrans de connexion et d’état non lié utilisent exactement le même composant de marque.
- Renforce la protection CSS afin qu’aucun style de module ne puisse filtrer, recolorer, masquer, déformer, recadrer ou redessiner le PNG Alliance.
- Le badge orange Hub demeure un asset distinct superposé et n’altère jamais le fichier du logo.
- Le PNG officiel est recopié octet pour octet depuis le fichier canonique et conserve son SHA-256 `1b0dcbd96e1ed931ce785cda2918e7dc38597c214735e21c92243c02eb43b13a`.

# 1.11.19 — logo Alliance strict et vérifié par empreinte
- Verrouille le logo Alliance officiel avec son SHA-256 canonique `1b0dcbd96e1ed931ce785cda2918e7dc38597c214735e21c92243c02eb43b13a`.
- Ajoute une vérification d'intégrité avant chaque utilisation du logo dans le menu WordPress, le bandeau Hub Client et le portail `/hub/`.
- En cas de fichier absent ou modifié, Hub Client refuse d'afficher une variante : le logo de fond est masqué plutôt que redessiné, recoloré ou remplacé.
- Conserve le badge orange Hub comme asset indépendant superposé, sans modifier le PNG Alliance.
- Ajoute `assets/images/alliance-logo.sha256` comme référence d'intégrité de livraison.

# 1.11.18 — logo Alliance officiel intact sur toutes les surfaces
- Étend l'identité 1.11.17 au portail public `/hub/` : logo Alliance PNG officiel + badge Hub orange séparé.
- Supprime l'ancien SVG composite qui redessinait le logo Alliance afin qu'aucune surface Hub Client ne puisse utiliser une variante du logo.
- Le menu WordPress conserve le logo Alliance original comme icône et ajoute le badge Hub par CSS.
- Le bandeau d'administration et le portail utilisent deux assets superposés sans filtre, recoloration, déformation ni redessin du logo Alliance.
- L'empreinte SHA-256 du PNG Alliance est conservée identique au fichier officiel fourni.

# 1.11.17 — vrai logo Alliance + badge Hub séparé
- Intègre le logo Alliance officiel fourni, pixel pour pixel, dans `assets/images/alliance-logo.png`.
- Le logo Alliance n'est plus redessiné ni recoloré dans l'administration.
- Conserve le pictogramme orange Hub comme badge indépendant superposé au logo.
- Applique cette composition dans l'onglet WordPress Hub et dans le bandeau supérieur à côté du titre Hub.
- Le badge du menu est ajouté en CSS afin que le fichier du logo Alliance reste intact.

# 1.11.16 — logo Hub canonique sans cache
- Remplace toutes les références à l'ancien asset `hub-client-menu-icon.svg` par `hub-awm-product-logo.svg`.
- Le menu WordPress, l'en-tête admin et le portail `/hub/` utilisent tous le même logo Hub AWM avec badge orange.
- Ajoute un versionnement explicite de l'URL du logo pour empêcher l'ancien logo de rester en cache.

## 1.11.15 - 2026-09-05

- Repare les installations Hub Client dupliquees : lors de l activation, la copie 1.11.15 desactive automatiquement les anciennes copies actives du meme module.
- Affiche le runtime et le chemin plugin reel dans l administration locale pour confirmer quelle copie est chargee.
- Force un cache-busting du CSS Premium avec filemtime afin que le nouveau shell ne reste pas masque par un ancien cache navigateur/CDN.
- Conserve les donnees, le Connector, les options et le client_id CRM; aucune re-liaison n est requise.

## 1.11.15 - 2026-09-05
- Hub Client reconnait toujours le plugin qui execute l agent, meme si son dossier historique ne s appelle pas hub-client-awm.
- L inventaire renvoie le vrai plugin_file actif et la version AWM_CLIENT_HUB_VERSION.
- Une mise a jour depuis un ancien dossier migre vers le dossier canonique hub-client-awm avec sauvegarde et reactivation.
- Les prochaines mises a jour distantes ne dependent plus du nom du dossier historique.

# Hub Client AWM 1.11.13 — interface admin Hub Premium

- Utilise le logo produit Hub AWM avec badge orange Hub dans le menu et l'en-tete local.
- Aligne l'ecran Hub Client sur le shell Premium sombre de Hub AWM : cartes, badges, boutons, formulaires et responsive.
- Regroupe l'etat Connector et Tech en donnees compactes; les blocs Relier et Securite deviennent repliables.
- Conserve la liaison CRM canonique, le Connector chiffre et toutes les fonctions existantes.

## 1.11.12 — 2026-09-04
- Ajoute un transport Connector résilient REST en-tête → REST corps HTTPS → admin-ajax.
- Le statut Tech et les échanges Tech utilisent automatiquement le canal disponible.
- Les erreurs finales indiquent les codes HTTP des transports sans exposer le secret.

## 1.11.11 — 2026-09-04
- Renforce le canal de déploiement distant utilisé par Core AWM 4.5.97.
- Accepte le secret de scan dans l'en-tête habituel ou, en repli, dans le corps HTTPS lorsque l'hébergement filtre les en-têtes personnalisés.
- Retourne des erreurs REST explicites pour distinguer Hub non lié, canal non synchronisé et authentification refusée.
- Télécharge les paquets avec un client HTTP sécurisé dédié et rapporte clairement le code HTTP si Alliance refuse le paquet.
- Compatible avec le nouvel endpoint de téléchargement REST signé de Core, sans exposer de chemin serveur ni d'URL permanente de fichier.

## 1.11.10 — 2026-09-04

- Corrige le statut Tech AWM qui pouvait être refusé par certains hébergements malgré une activation Alliance valide.
- Ajoute le transport Connector Tech compatible via le corps HTTPS lorsque les en-têtes personnalisés sont filtrés.
- Répare automatiquement le `client_id` local si Core authentifie le Connector sur une autre fiche CRM canonique.
- Affiche l'identifiant de fiche CRM dans l'administration Hub Client et le client CRM confirmé par Tech.

## 1.11.9 — 2026-09-04
- Le portail `/hub/` utilise maintenant le logo produit Hub AWM canonique, avec la même identité visuelle que Hub AWM; le logo CRM du client ne remplace plus le logo du produit.
- L administration locale Hub utilise le même logo Hub AWM canonique.
- Conserve le nom et le contexte du client à côté du logo sans créer une variante graphique Hub Client.
- Prépare l intégration Tech AWM 1.4.0 avec fenêtre front-end contextuelle et ciblage d URL internes.

## 1.11.8 — 2026-09-04
- Affiche Tech AWM dans la navigation du portail dès que l activation centrale Alliance est active, même avant installation du paquet runtime.
- Ajoute dans l administration Hub Client une carte d état Tech AWM : autorisation Alliance, paquet installé, version et action attendue.
- Si Tech est activé mais absent, le portail affiche une explication plutôt que de masquer silencieusement le module.
- Le statut Tech est lu via le Connector Hub Client existant et mis en cache brièvement; aucun secret supplémentaire n est créé.

## 1.11.7 — 2026-09-04
- Hub Client utilise désormais exactement le même logo Hub AWM que le module Hub, sans badge/variante client.
- L’absence de campagne CallTracker n’est plus traitée comme une erreur Hub Client : CallTracker reste entièrement optionnel.
- Le bloc Réception directe des formulaires affiche un état informatif non bloquant lorsqu’aucune campagne n’existe.
- Le loader d’administration ne transforme plus les alertes passives de sous-modules en fenêtres d’erreur; seuls les résultats explicites d’une action ouvrent le message Premium.

# Changelog Hub Client AWM

## 1.11.6 — 2026-09-04
- Corrige l’erreur critique dans l’administration Hub Client lors du rendu de « Réception directe des formulaires ».
- Le hook `awm_client_hub_admin_after_connection` déclare maintenant explicitement 2 arguments pour `AWM_Client_Hub_Form_Capture::render_admin()`.
- `render_admin()` conserve une valeur de secours pour l’autorisation runtime afin d’éviter une erreur fatale si la méthode est invoquée par une intégration plus ancienne.
- Vérifie les autres consommateurs du même hook : l’agent de mise à jour utilisait déjà correctement 2 arguments.

## 1.11.5 — 2026-09-04
- Extrait le runtime Tech AWM vers le paquet autonome Tech AWM 1.1.0.
- Le portail /hub/ conserve la section Tech AWM lorsque le paquet autonome est actif et autorisé par Alliance.
- Ajoute Tech AWM à l inventaire et au moteur de mises à jour AWM.
- Autorise Core à installer automatiquement Tech AWM lorsqu il est absent, avec SHA-256, activation contrôlée et rollback pour les mises à jour ultérieures.

## 1.11.4 — 2026-09-04

- Intègre **Tech AWM** directement dans Hub Client; aucun plugin ou bridge Tech séparé n est requis.
- Ajoute une section Tech AWM au portail `/hub/` uniquement lorsque Alliance l active dans Thech AWM.
- Ajoute une bulle contextuelle sur les pages WordPress pour discuter, joindre des fichiers, sélectionner un élément Elementor et proposer des modifications.
- Réutilise le Connector Hub Client existant et les routes Studio sécurisées de document/patch/snapshot/restore.
- Sépare les permissions Chat, Diagnostics, Écriture Elementor, Actions WordPress sûres et Fichiers.
- Revérifie l activation Alliance avant toute application ou restauration et refuse une écriture si le hash Elementor a changé depuis l analyse.
- Permet les diagnostics/actions WordPress sûres depuis la section Hub même sans page sélectionnée; les modifications de page exigent un contexte WordPress éditable.

## 1.11.3 — 2026-09-03

- Refonte visuelle **Premium adaptative** de CallTracker → Routage inspirée du modèle 3 validé.
- Tous les contours, halos, fonds, icônes et CTA dérivent automatiquement des couleurs `brand` et `secondary` configurées pour le client; aucune palette bleue fixe n est imposée.
- Ajoute un calcul de contraste pour garder le texte des actions principales lisible même avec une couleur client très claire ou très foncée.
- Agrandit les pictogrammes de campagne, route, horaire, fuseau, délai et destinations avec SVG monochromes pilotés par `currentColor`.
- Renforce la graisse des titres, valeurs et boutons dans le parcours CallTracker sans remplacer les polices choisies par le client.
- Transforme les quatre étapes du funnel en stepper premium relié et rend l étape active beaucoup plus évidente.
- Passe le résumé routage à quatre cartes : route actuelle, état, fuseau et délai de débordement.
- Recompose l horaire en deux tableaux compacts avec en-têtes Jour / Ouverture / Fermeture, tout en conservant le responsive mobile.
- Rend **Enregistrer le routage**, Voir la campagne et Configurer le routage visuellement identifiables comme de vrais boutons dans toutes les palettes client.

## 1.11.2 — 2026-09-03

- Refonte UX de **CallTracker → Routage** pour condenser les réglages sans retirer de fonction.
- Regroupe destinations, fuseau et délai dans une grille compacte à deux rangées.
- Affiche l horaire hebdomadaire sur deux colonnes en bureau afin de réduire fortement la hauteur de page.
- Remplace les champs `time` natifs par des listes d heures 24 h par tranches de 15 minutes pour supprimer le grand sélecteur blanc du navigateur.
- Ajoute un interrupteur compact pour activer l horaire et des blocs distincts pour fermetures spéciales et Message 2.
- Améliore les espacements, tailles de contrôles, responsive et contraste en thème sombre.

## 1.11.1 — 2026-09-03

- Transforme chaque carte **Campagnes** en point d entrée vers une fiche de campagne dédiée.
- Le **nom de la campagne** et son numéro restent visibles dans la liste puis dans l en-tête de la fiche.
- La fiche affiche uniquement les **appels**, **formulaires** et **CPL** de la campagne sélectionnée.
- Ajoute un accès direct au routage de la campagne depuis sa fiche.
- Conserve l isolation stricte : une campagne d un autre client ne peut pas être ouverte par modification de l URL.

## 1.11.0 — 2026-09-02

- Remplace le parcours client centré sur l achat direct par **CallTracker → Nouveaux services → Nouveau funnel → Configuration du numéro → Formulaire/Webhook → Routage**.
- Ajoute **Mes funnels** et **Nouveau funnel** sous Nouveaux services; la liste reflète l état commercial fourni par CRM.
- Étape 1 : le client confirme le Funnel CallTracker à **10 $/mois** et CRM crée le service sans démarrer la facturation tant que le numéro n est pas attribué.
- Étape 2 : recherche, achat et attribution du numéro au funnel déjà créé.
- Étape 3 : webhook du formulaire, copie, test et documentation intégrée.
- Étape 4 : routage complet avec destination principale, fuseau, horaires, jours fermés, destination hors heures, débordement et délai.
- L ancien écran Numéros reste accepté comme alias de compatibilité mais n est plus un onglet principal du CallTracker client.
- Les campagnes existantes renvoient vers l écran Routage dédié au lieu de dupliquer un éditeur simplifié.

## 1.10.2 — 2026-09-02

- Ajoute **CallTracker → Formulaires** dans l espace client.
- Affiche pour chaque funnel son URL de webhook unique avec bouton **Copier**.
- Affiche le dernier formulaire reçu et un bouton **Tester la configuration** sans créer de faux lead.
- Intègre directement la documentation Elementor Pro, Gravity Forms, WPForms et formulaire personnalisé.
- Fournit un exemple JSON et recommande `submission_id` pour améliorer le dédoublonnage.
- Rappelle que l URL du webhook est secrète et doit rester privée.

## 1.10.1 — 2026-09-02

- Ajoute **CallTracker → Numéros** dans le Hub Client.
- Le client peut rechercher un numéro local ou sans frais par pays, indicatif, province/État, ville ou chiffres souhaités.
- Chaque résultat permet de nommer le funnel, confirmer le service à 10 $/mois puis acheter et attribuer le numéro.
- Le Hub n accède jamais aux identifiants Twilio; toutes les recherches et opérations facturables passent par Core AWM.
- L écran est responsive et affiche clairement la formule **1 numéro + 1 formulaire**.

## 1.10.0 — 2026-08-31
- Ajoute les routes privées Studio `page-document`, `update-page-content` et `restore-page-snapshot`.
- Expose à Studio un outline Elementor contrôlé avec IDs et contenu éditable des widgets standards, sans exposer de secret local.
- Applique uniquement des opérations autorisées sur Heading, Text Editor et Button; aucun widget inconnu n est supprimé ni remplacé.
- Autorise l ajout de sections contrôlées à la fin d une page en réutilisant le moteur Elementor local Containers/legacy.
- Crée une sauvegarde avant chaque modification Elementor ou SEOPress, avec empreinte SHA-256 et restauration sécurisée.
- Refuse l écriture si le document Elementor a changé depuis l analyse afin d éviter d écraser une modification concurrente.

## 1.9.5 — 2026-08-27
- Ajoute `/awm-client-hub/v1/studio/publish-page`.
- La publication est limitée aux pages créées par Studio et aux statuts brouillon/en attente/privé.
- Conserve la création initiale en brouillon et les protections SEO existantes.

## 1.9.4 — 2026-08-27
- Ajoute Hero `split` et `image-background` au moteur Studio.
- Ajoute largeur contrôlée 1080/1180/1280/1360 px et échelle typographique responsive.
- Applique réellement l alternance image/texte détectée dans la page de référence.
- Dérive les surfaces sombres/claires depuis la palette du client plutôt que d imposer une couleur générique.
- Conserve Containers, repli Sections/Colonnes, brouillon, noindex et validation du rendu.

## 1.9.3 — 2026-08-27
- Expose la typographie Elementor du site client à Core Studio.
- Applique le profil de design Studio contrôlé aux pages Elementor générées.
- Ajoute effets de survol statiques accessibles et respecte prefers-reduced-motion.

## 1.9.2 — 2026-08-27
- L agent Studio accepte maintenant les modes Photos IA, Photos du client et Mixte.
- Une page peut être créée sans images générées lorsque le mode Photos du client est choisi.
- Le mode Mixte accepte une seule image IA principale; le mode Photos IA conserve l exigence de deux images minimum.
- Le score SEO et le rendu Elementor s adaptent au mode photo sans supprimer les protections de brouillon/noindex.

# Changelog — Hub Client AWM

## 1.9.1 — 2026-08-27
- Ajoute `/awm-client-hub/v1/studio/pages-scan` pour analyser toutes les pages existantes par lots de 100.
- Analyse Elementor ou le contenu WordPress : H1/H2/H3, nombre de mots, images et ALT.
- Lit titre SEO, méta description, mot-clé, canonical, métas sociales et noindex SEOPress.
- Calcule un score SEO pour chaque page et signale les pages système sensibles.
- Ajoute `/awm-client-hub/v1/studio/update-page-seo` pour une révision SEOPress explicite depuis Alliance.
- Refuse la modification des pages système sensibles sans confirmation spécifique.
- Conserve toutes les routes de création, médias et réparation Studio 1.9.0.

## 1.9.0 — 2026-08-27
- Détecte SEOPress et SEOPress Pro dans l’état Studio du site.
- Reçoit au moins deux images générées par Core et les enregistre localement dans la médiathèque.
- Nomme les fichiers `nom-de-la-page-0001.jpg`, `-0002.jpg` et suivants.
- Définit `0001` comme image mise en avant et renseigne titre, ALT et description des médias.
- Intègre la première image dans le Hero et la deuxième dans le contenu Elementor.
- Configure les métadonnées SEOPress et maintient noindex sur le brouillon; noindex est retiré à la publication.
- Retourne un score SEO Studio et les informations médias à Hub.


## 1.8.9 — 2026-08-27
- Corrige la génération Studio pouvant produire une page Elementor blanche.
- Ajoute `isInner` à tous les widgets générés conformément à la structure Elementor.
- Détecte l activation réelle des Flexbox Containers.
- Génère automatiquement une structure legacy Section / Colonne / Widget lorsque Containers n est pas disponible.
- Valide le JSON enregistré, le nombre d éléments et le rendu frontend avant de retourner un succès.
- Retente automatiquement en Sections/Colonnes si un rendu Containers est vide.
- Ajoute `/awm-client-hub/v1/studio/repair-page` pour réparer uniquement les brouillons Studio existants.
- Conserve la publication directe bloquée et les secrets hors du site client.

## 1.8.8 — 2026-08-27
- Ajoute l’agent local privé **Studio AWM**.
- Ajoute `/awm-client-hub/v1/studio/status` pour analyser Elementor, Elementor Pro, thème, WordPress, PHP, logo et palette.
- Ajoute `/awm-client-hub/v1/studio/create-page` pour créer uniquement des brouillons WordPress/Elementor.
- Réutilise le secret de commande Hub Client 256 bits déjà synchronisé avec Core; aucune nouvelle clé n’est exposée.
- Rend les commandes de création idempotentes par identifiant de requête.
- Reconstruit localement les widgets Elementor depuis une liste de sections autorisées; aucun PHP, JavaScript ou HTML arbitraire du brief n’est exécuté.
- Conserve les fonctions portail, CallTracker, Stats, Facturation, profil, apparence et mises à jour existantes.

---

## 1.8.7 — 2026-08-25

- Ajoute la lecture des enregistrements CallTracker par proxy local de session.
- Ne reçoit plus d URL Twilio brute dans le contrat client.
- Utilise Core pour vérifier la propriété puis récupérer le média avec les secrets conservés côté Alliance.
- Ajoute un contrôle audio dans Appels uniquement lorsqu un enregistrement autorisé existe.
- Affiche les appels dans le fuseau de leur campagne à partir de la date UTC canonique.
- Conserve l état CPL en validation et les contrôles fail-closed de 1.8.6.

---

## 1.8.6 — 2026-08-25

- Affiche un état **CPL en validation** lorsque des campagnes CallTracker du client ne sont pas encore approuvées.
- Indique le nombre de campagnes approuvées par rapport au total sans exposer les détails administratifs internes.
- Masque les lignes CPL des campagnes en attente et n’affiche jamais les données d’une autre campagne comme remplacement.
- Conserve les campagnes, appels, formulaires et Dialer accessibles selon les services et permissions existants.
- Remplace les confirmations navigateur natives de suppression du Message 2 et d’une attribution de formulaire par des confirmations AWM intégrées avec contrôle serveur.
- Exige Core AWM 4.5.39 et CallTracker AWM 1.9.2 pour la validation complète.

---

## 1.8.5 — 2026-08-24

- Mon compte → Facturation affiche maintenant les avoirs appliqués aux factures natives CRM.
- Le solde visible tient compte des paiements et des crédits.
- Ajoute les statuts Réglée et Créditée à l’affichage client.
- Le résumé de facturation distingue le total des avoirs et regroupe les factures soldées.
- Une facture sans solde n’affiche plus d’action de paiement.
- Aucun détail du grand livre interne ni aucune donnée sensible de paiement n’est exposé au portail.

---

# Changelog — Hub Client AWM

## 1.8.4 — 2026-08-24

- Remplace les bandeaux `.awm-alert` de l’administration Hub par un loader local.
- Supprime aussi les notices réseau/utilisateur WordPress et les update nags sur la page Hub.
- Conserve les erreurs importantes ouvertes jusqu’à fermeture; les succès disparaissent automatiquement.
- Aucun changement au Connector, aux sessions, à la facturation ou au Dialer.

## 1.8.3 — 2026-08-24

- Ajoute sur `/hub/` deux modes clairement séparés : **Connexion Alliance** et **Compte WordPress autorisé**.
- Permet de saisir directement un identifiant/courriel et un mot de passe WordPress sur `/hub/`; le mot de passe est validé localement par WordPress et n’est jamais transmis à Alliance.
- Après authentification locale, Core vérifie toujours que la référence cryptographique du compte fait partie des utilisateurs explicitement autorisés dans la fiche client.
- Conserve le bouton de continuation pour un utilisateur WordPress déjà connecté.
- Remplace l’icône visible du menu `Hub` par la base graphique AWM officielle utilisée par les autres modules, avec un petit badge portail/client.
- Conserve les dimensions 20 × 20 px et l’alignement WordPress.
- Aucun changement de Connector, session, facturation, Dialer ou données client.

## 1.8.2 — 2026-08-24

- Corrige la taille de l’icône **Hub** dans le menu WordPress du site client.
- Force l’icône AWM à 20 × 20 px dans le menu afin de l’aligner sur les autres entrées WordPress.
- Conserve le libellé visible **Hub** côté client et l’identité technique **Hub Client AWM** dans Core/diagnostics.
- Aucun changement des sessions, du Connector, de la facturation, du Dialer ou des données métier.

---

## 1.8.1 — 2026-08-24

- Déplace **Facturation** dans **Mon compte → Facturation**; elle n’est plus présentée comme un module CRM client.
- Retire le module interne `crm_awm` de la navigation et des cartes de services du Hub côté client.
- La facturation du compte Alliance reste disponible indépendamment de l’activation d’un éventuel service CRM destiné aux propres clients du client.
- Ajoute au sous-onglet Facturation le résumé du solde, des factures à payer, en retard et payées.
- Conserve le paiement sécurisé via SSO WHMCS sans faire transiter de numéro de carte ni de CVV dans AWM.

---

## 1.7.0 — 2026-08-24

- Présente le module côté WordPress client simplement sous le nom visible **Hub** avec une icône AWM dédiée.
- Refonte le Dialer CallTracker sur le modèle administrateur : campagne, grand numéro, clavier 1–9/*/0/#, activation micro, appel, raccrochage, effacement et états Twilio.
- Ajoute DTMF pendant un appel lorsque le SDK Twilio le permet.
- Ajoute dans Campagnes la modification du numéro de réception et la gestion du Message 2 publicitaire.
- Permet au client de téléverser/remplacer/supprimer un MP3 Message 2 de 5 Mo maximum; le contenu reste stocké chez Alliance.
- Affiche Message 1 en lecture seule, sous contrôle Alliance.
- Affiche les appels sortants comme **Sortant** et rappelle qu’ils sont exclus des leads/CPL.
- Conserve le Connector, sessions, agent de mise à jour et personnalisation existants.

---

# Changelog

## 1.6.1 — 2026-08-24
- Premier test reel du deploiement distant Core → Hub Client.
- Force le bootstrap du secret de commande distante lorsque 1.6.0 a ete installe manuellement mais que Core ne l'a pas encore recu.
- La route locale de diagnostic indique maintenant explicitement si l'agent est pret.
- Aucun changement des sessions, du Connector, de Profil/Apparence ou des donnees client.
 — Hub Client AWM

## 1.6.0 — 2026-08-24

- Ajoute l’agent local de mises à jour AWM pilotable depuis Core sans connexion manuelle à wp-admin.
- Expose les endpoints privés `/awm-client-hub/v1/update/status`, `/update/apply` et `/update/rollback`, authentifiés avec le secret 256 bits déjà utilisé par le Connector.
- Synchronise l’inventaire des modules AWM installés, leurs versions et leur état actif/inactif vers Core.
- Vérifie que chaque commande provient de la plateforme Alliance liée, exige HTTPS, valide la signature HMAC et le SHA-256 du ZIP avant installation.
- Exécute l’installation avec les API WordPress locales seulement lorsque le système de fichiers est disponible en mode `direct`.
- Sauvegarde le dossier du module avant remplacement, conserve jusqu’à trois sauvegardes par module et restaure automatiquement en cas d’échec ou de version inattendue.
- Intègre aussi les publications Core au système natif de mises à jour WordPress comme voie de secours.
- Aucune donnée métier, session, Connector ou personnalisation client n’est supprimée par une mise à jour de fichiers.

---
## Historique conservé

## 1.5.0 — 2026-08-24

- Synchronise un annuaire minimal des utilisateurs WordPress vers Core AWM afin qu’Alliance puisse les autoriser depuis la fiche client.
- L’accès local à `/hub/` n’est plus accordé simplement parce qu’un compte possède `manage_options`; Core exige maintenant une autorisation explicite du compte scanné.
- Ajoute un callback privé de scan protégé par un secret aléatoire chiffré localement et dans le coffre Core.
- Synchronise aussi l’annuaire après création, modification, changement de rôle ou suppression d’un utilisateur.
- Corrige le sélecteur de couleur d’Apparence : le champ perd son focus après sélection et la molette retrouve immédiatement le défilement vertical.
- Conserve la liaison Hub Connector existante, les sessions chiffrées, le portail modulaire et les données métier chez Alliance.

---
## Historique conservé

# Changelog — Hub Client AWM

## 1.4.0 — 2026-08-23

- Transforme `/hub/` en portail **modulaire** : Accueil, CallTracker, Stats et Mon compte sont séparés en onglets de premier niveau.
- Regroupe Campagnes, Leads, Appels, CPL et Dialer dans le module CallTracker avec une sous-navigation dédiée.
- Stats AWM devient un module distinct et n’apparaît que lorsqu’il est activé pour le client.
- La navigation utilise le registre des services renvoyé par Core; un module non attribué au client n’est ni présenté ni ouvert par le portail.
- Ajoute un accueil par cartes de services actifs avec accès direct aux modules.
- Améliore le responsive téléphone/tablette : onglets défilables, cartes en une colonne, KPI adaptatifs et tableaux Leads/Appels/CPL convertis en cartes lisibles sur petit écran.
- Conserve Profil et Apparence dans un groupe Mon compte distinct des modules métier.
- Conserve la liaison Connector, la session chiffrée, le Dialer et les données historiques sans changement d’identifiant ni de stockage.

---
## Historique conservé

## 1.3.0 — 2026-08-23

- Ajoute l’onglet **Profil** dans `/hub/` pour modifier le nom affiché et la fonction du client.
- Le profil d’affichage reste séparé du nom canonique, du courriel et des données de facturation CRM/WHMCS.
- Ajoute l’onglet **Apparence** pour personnaliser les couleurs, polices et graisses du portail et de la page de connexion.
- Les valeurs sont envoyées à Alliance par la session Hub chiffrée; Core revalide le client et journalise chaque écriture.
- Les polices sont limitées à une liste autorisée et aucun CSS arbitraire n’est accepté.
- Un instantané local non sensible du profil et du style permet de personnaliser la page de connexion avant authentification; le jeton Alliance reste côté serveur.
- Les instantanés sont rafraîchis lors de la liaison, de la connexion, de l’accès administrateur et après chaque modification.
- Ajoute les styles responsive requis pour les formulaires Profil et Apparence.
- Conserve CPL, Dialer, campagnes, formulaires directs et toutes les protections Hub Connector 1.2.0.
---
## Historique des versions précédentes

## 1.1.1 — 2026-08-18
- Ajoute l’onglet Dialer directement dans `/hub/` avec sélection de campagne, microphone, appel et raccrochage.
- Le SDK Twilio Voice est livré localement avec l’extension; aucun CDN tiers n’est requis pour charger le Dialer.
[Ligne masquée automatiquement par Core AWM : contenu sensible potentiel]
- La vue Campagnes consomme la résolution canonique Core 4.5.4 et peut donc retrouver les anciennes campagnes sûres du même client.
- Le message vide parle désormais de campagne « liée » plutôt que seulement de campagne « active », puisque les campagnes publiées inactives restent visibles.

## 1.1.0 — 2026-08-18
- Corrige le cas « Identifiants invalides » pour les administrateurs : le formulaire distingue maintenant compte Alliance et accès administrateur du WordPress local.
- Ajoute une session administrateur locale déléguée au client lié, vérifiée par Core via l’autorisation runtime du Connector.
- Le Connector runtime est chiffré au repos sur le WordPress client; le code de pairing est à usage unique.
- Les administrateurs Alliance peuvent se connecter avec leur compte central tout en restant limités au client associé à ce domaine.


## Sécurité 1.0.1 — 2026-08-17

- Hub Client AWM 1.0.1 chiffre la totalité de la session locale côté serveur, lie la session au navigateur et exige HTTPS vers Alliance; aucune donnée Alliance exploitable n’est persistée en clair sur le site client.
# Changelog — Hub Client AWM

## 1.0.0 — 2026-08-17
- Première version installable sur le WordPress du client.
- Point d'entrée public `/hub/` sans création obligatoire d'une page WordPress.
- Liaison sécurisée par code Hub Connector généré dans la fiche client Alliance.
- Connexion distante au compte client Alliance sans stockage du mot de passe.
- Session locale HttpOnly avec jeton Alliance chiffré côté serveur.
- Vérification stricte que le compte connecté correspond au client lié au domaine.
- Vue responsive clair/sombre avec mémorisation du thème avant rendu.
- Identité visuelle client issue du profil Alliance lorsque disponible.
- Vues Vue d'ensemble, Campagnes, Leads, Appels et Stats AWM.
- Masquage des notices WordPress/tiers sur la page d'administration du module.

## 1.8.0 — 2026-08-24
- Ajout du module CRM avec sous-onglet Facturation.
- Affichage des factures, soldes, échéances, taxes et lignes de facture du client connecté.
- Bouton Payer maintenant utilisant un SSO WHMCS à usage unique; aucune donnée de carte n’est traitée par Hub.