← 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.