=== Dalilou ===
Contributors: chabirllc
Tags: ai, chatbot, sales, leads, assistant
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 0.6.13
License: Proprietary

Dalilou Sales Agent pour WordPress.



== Version 0.6.12 ==

- Ajoute un branding discret « Propulsé par Dalilou / Powered by Dalilou » en bas du widget.
- Le nom Dalilou ouvre dalilou.com dans un nouvel onglet avec attribution UTM du widget.
- Le lien utilise rel="nofollow noopener" afin de privilégier le trafic référent et la marque sans créer de schéma de liens SEO artificiel.
- Le libellé suit automatiquement la langue FR/EN réellement affichée dans le widget.
- Aucun changement du pairing, Booking, Content Index, Usage V2, quota, n8n ou sécurité des tokens.


== Version 0.6.11 ==

- Le nom affiché du widget n'utilise plus « Your company / Votre entreprise » lorsque ce placeholder Dalilou est encore intact.
- Priorité au business_name authentifié renvoyé par Dalilou lorsqu'il est disponible, avec le titre du site WordPress comme fallback local sûr.
- Les nouvelles installations utilisent directement le titre du site WordPress comme identité affichée par défaut.
- Un nom personnalisé par le client n'est jamais écrasé.
- Aucun changement du pairing, Booking, Content Index, Usage V2, quota, n8n ou sécurité des tokens.


== Version 0.6.10 ==

- Les contenus par défaut du widget suivent désormais la langue du site WordPress (anglais ou français), indépendamment de la langue personnelle de l’administrateur.
- Mise à niveau sûre : les anciennes valeurs françaises sont migrées vers les valeurs anglaises uniquement lorsqu’elles correspondent exactement aux defaults Dalilou connus.
- Les textes personnalisés par le client ne sont jamais écrasés.
- Un changement ultérieur de langue du site peut relocaliser les defaults Dalilou encore intacts sans toucher aux personnalisations.
- Aucun changement du pairing, Booking, Content Index, Usage V2, quota, n8n ou sécurité des tokens.


== Version 0.6.4 ==
- Booking V1: motif du rendez-vous conservé, demandé uniquement s’il manque, puis transmis au backend et à Google Calendar.

- Action rapide premium : Trial, Pro et Business affichent « Prendre rendez-vous / Book an appointment » à la place de « Être recontacté / Request a callback ».
- Starter conserve l’action « Être recontacté » et ne reçoit pas le raccourci calendrier.
- Un clic sur « Prendre rendez-vous » ouvre directement le mini-calendrier, sans obliger le visiteur à taper une demande.
- Après choix du créneau, si les coordonnées du prospect ne sont pas encore connues, Dalilou conserve le créneau, collecte prénom/téléphone/email puis tente automatiquement la réservation.
- Le créneau est revalidé côté serveur au moment de la création ; s’il a été pris entre-temps, les disponibilités sont rafraîchies.
- Synchronisation i18n renforcée : identité par défaut, statut, confidentialité, message proactif et actions rapides suivent la langue détectée pendant la conversation.
- Le message de bienvenue par défaut peut lui aussi basculer FR/EN lorsqu’il n’a pas été personnalisé.
- Aucun changement n8n et aucun secret n’est exposé au navigateur.


== Version 0.6.2 ==

- Traduction publique complète anglais / français pour les textes système du widget.
- Le widget suit la langue de la page puis la langue réellement détectée dans la conversation.
- Booking traduit dynamiquement : calendrier, jours, mois, créneaux, confirmation, erreurs et reprise de conversation.
- Les libellés système (ouvrir/fermer, envoyer, conversation terminée, nouvelle conversation) ne sont plus codés en dur en français.
- Les contenus par défaut du widget sont automatiquement servis en français ou en anglais sans écraser les personnalisations du client.
- Nouveau mini-calendrier mensuel natif avec dates disponibles cliquables puis choix de l’horaire.
- Recherche des disponibilités sur 28 jours par fenêtres de 7 jours, sans iframe Google Calendar.
- Aucun changement n8n ni exposition du token d’installation au navigateur.


== Version 0.5.9 ==

- Administration WordPress bilingue anglais / français, automatiquement selon la langue du compte administrateur WordPress.
- Les libellés, états, connexion/reconnexion, Content Index, apparence, messages et actions rapides de l’administration sont traduits.
- Les messages d’erreur affichés dans l’administration sont également localisés en anglais/français, sans modifier les réponses de l’API ni le widget public.
- Les valeurs enregistrées du widget ne sont jamais traduites ni réécrites lors d’un changement de langue WordPress.
- Aucun changement du pairing, du widget public, du Content Index, du quota, des conversations, de l’avatar ou de l’onboarding.

== Version 0.5.8 ==

- Supprime l’ancienne activation directe par clé de licence dans WordPress.
- La connexion et la reconnexion utilisent désormais exclusivement le pairing sécurisé par code temporaire Dalilou.
- Supprime le mécanisme legacy d’activation directe côté plugin.
- Aucun changement du widget, du Content Index, du quota, de la conversation, de l’avatar ou du parcours dashboard existant.


== Version 0.5.7 ==

- Renforce l’isolation CSS du widget face aux styles globaux de certains thèmes WordPress.
- Force la lisibilité des libellés des actions rapides et de leur flèche.
- Protège la couleur du texte et du placeholder du champ de message.
- Aucun changement de logique API, onboarding, contenu indexé, quota ou conversation.


== Version 0.5.4 ==

- Continuité visuelle de la conversation entre les pages du même site dans le même onglet.
- Restauration des messages après navigation ou rechargement.
- Conservation de l'état ouvert/fermé du widget pendant la navigation.
- Historique UI stocké uniquement en sessionStorage afin de limiter la persistance locale des données personnelles.
- La même session Dalilou continue côté API grâce au session_id existant.

== Version 0.5.3 ==

Cette version ajoute l’avatar officiel Dalilou à la médiathèque WordPress au lieu de l’utiliser directement depuis le dossier du plugin.

Avatar officiel
- Le WebP Dalilou 500×500 est copié automatiquement dans la médiathèque WordPress lors d’une nouvelle installation.
- Le widget utilise ensuite l’URL de la médiathèque / uploads.
- Un avatar personnalisé déjà choisi par le client n’est jamais écrasé lors de la mise à jour.
- Les anciennes installations utilisant encore l’avatar intégré au plugin sont migrées automatiquement vers la copie de la médiathèque.
- Nouveau bouton « Rétablir l’avatar Dalilou » dans l’administration.
- Si l’avatar officiel est supprimé de la médiathèque, Dalilou peut le recréer automatiquement depuis sa source d’installation.


== Version 0.5.2 ==

Cette version conserve Content Index V1 et rend les liens fournis par l’assistant directement cliquables dans le widget.

Affichage des réponses
- Les liens Markdown [libellé](https://...) sont transformés en liens cliquables.
- Les URL https://... écrites en clair sont également cliquables.
- Ouverture dans un nouvel onglet avec rel="noopener noreferrer".
- Le rendu utilise exclusivement des nœuds DOM sûrs, sans injection HTML de la réponse IA.


== Version 0.5.1 ==

Cette version conserve la connexion et la personnalisation de la v0.5.0 et ajoute Content Index V1 pour synchroniser les contenus publics du site vers Dalilou.

Connexion
- Détection temps réel d'une installation revoked/disabled.
- L'ancien token local est neutralisé lorsqu'il n'est plus autorisé.
- Affichage automatique de l'état « Reconnexion requise ».
- Reconnexion avec le nouveau pairing Dalilou sans recréer le site ni son historique côté SaaS.
- Distinction entre installation déconnectée et abonnement inactif.

Apparence
- Avatar sélectionnable depuis la médiathèque WordPress.
- Aperçu de l'avatar dans l'administration.
- Couleur principale et couleur d'accent.
- Position gauche/droite.
- Taille du bouton 52–88 px.
- Animation : aucune, douce ou attirer l'attention.

Position / compatibilité boutons flottants
- Décalage horizontal ordinateur.
- Décalage vertical ordinateur.
- Décalage horizontal mobile.
- Décalage vertical mobile.
- Permet d'aligner Dalilou avec WhatsApp, panier, accessibilité et autres widgets flottants.

Mobile
- Conservation de la gestion du clavier et du visual viewport.
- Les utilisateurs qui préfèrent réduire les animations voient un widget sans animation forcée.

Sécurité
- Le navigateur ne reçoit jamais le token d'installation Dalilou.
- Le token reste chiffré dans les options WordPress.
- Les appels à l'API Dalilou sont effectués côté serveur WordPress.


== Changelog ==

= 0.6.13 =
* Dashboard Booking ON/OFF state is synchronized to WordPress through the authenticated status route.
* Fixes stale “Book an appointment” CTA after Booking is disabled in the Dalilou dashboard.
* Booking capability cache is now revision-aware, so dashboard changes invalidate prior positive capability state immediately.
* Bumps browser session capability cache key to avoid carrying stale v0.6.12 state after update.
* Plugin sends its current version with status checks so the API can keep installation version reporting current.



= 0.6.12 =
* Adds a discreet Powered by Dalilou referral link below the privacy footer with UTM attribution and nofollow/noopener.
* Branding label follows the live FR/EN widget language without affecting client customizations.
* No Booking, Content Index, Usage V2, quota, n8n or token-security changes.


= 0.6.11 =
* Automatic widget branding: untouched generic business-name placeholders adopt the authenticated Dalilou business name when available, otherwise the WordPress Site Title. Custom names remain untouched.

= 0.6.10 =
* WordPress site language now controls the untouched default widget copy (FR/EN).
* Safe migration converts only exact historical Dalilou defaults; customized client text is preserved.
* New English WordPress sites start with English widget identity, messages, privacy copy and quick actions.
* Administrator UI language remains independent from public widget defaults.
* No Booking, Content Index, Usage V2, quota, n8n or token-security changes.

= 0.6.9 =
* Stronger lightweight FR/EN detection for natural visitor sentences.
* Recognizes common French forms such as “je voulais savoir”, “vous avez”, “plusieurs”, “peux”, “bonjour”, etc.
* Booking switches language before rendering the calendar and relocalizes existing Booking prompts.
* No backend or n8n changes required.


= 0.6.8 =
* Existing Booking system bubbles are relocalized when the conversation language changes.
* Fixes the remaining English “What is the purpose of your appointment?” bubble after a visitor replies in French.
* Keeps Booking calendar, header, privacy text and prior Booking prompts in one consistent language.
* No backend or n8n changes required.


= 0.6.7 =
* Booking language is synchronized with the language actually visible in the widget before the quick-booking flow starts.
* Booking reason language is re-evaluated before contact collection and the synthetic appointment request sent to the AI.
* Fixes mixed FR/EN messages such as “What is the purpose…” on a French widget.
* No backend or n8n changes required.


= 0.6.6 =
* Booking button is shown only when the plan is entitled AND online booking is actually available.
* Automatic fallback to callback when Google Calendar is not connected, Booking is disabled, or Calendar needs reconnection.
* Lightweight cached Booking capability probe; no Google credentials are exposed to the browser.
* Improved FR/EN switching when a visitor enters a booking reason before the AI has detected the conversation language.


= 0.6.5 =
* Fix Booking reason prompt rendering and reason validation.
* Merge Booking translations safely with defaults.
* Include appointment reason in the generated booking request.


= 0.6.1 =
* Booking V1 natif dans le widget pour les offres éligibles.
* Sélection de jour et de créneau sans iframe Google Calendar.
* Réservation sécurisée via proxy WordPress ; le token d’installation reste côté serveur.
* Continuité de réservation entre les pages dans le même onglet.
* UX mobile : aucun clavier forcé pendant la sélection des créneaux.



= 0.5.6 =
* Nouveau parcours d’accès au compte depuis WordPress : « Créer un compte Dalilou » et « Se connecter » sur une installation neuve.
* Le bouton de reconnexion ouvre directement la page de connexion du dashboard.
* Un site déjà connecté ouvre directement le dashboard.
* Ajout des liens d’inscription et de connexion sous le formulaire de code sur une installation neuve.

= 0.5.5 =
* Corrige la sélection automatique de l’avatar officiel après migration depuis d’anciennes versions du plugin.
* Reconnaît les anciens dossiers de plugin (ex. dalilou-v0.1) et remplace leur URL d’avatar devenue invalide par la copie présente dans la médiathèque WordPress.
* Si un avatar local de la médiathèque a été supprimé, Dalilou rétablit automatiquement l’avatar officiel sans écraser un avatar personnalisé encore valide.


= 0.5.4 =
* Conversation persistante entre pages dans le même onglet (sessionStorage).
* Restauration du transcript et de l'état ouvert du widget.
* Aucun changement API, quota, lead ou Content Index.

= 0.5.3 =
* Nouvel avatar officiel Dalilou WebP 500×500.
* Import automatique de l’avatar officiel dans la médiathèque WordPress.
* Le runtime du widget utilise l’URL uploads de WordPress, pas l’asset du plugin.
* Préservation des avatars personnalisés existants pendant la mise à jour.
* Migration de l’ancien avatar intégré vers la médiathèque.
* Bouton « Rétablir l’avatar Dalilou » dans les réglages du widget.

= 0.5.2 =
* Liens Markdown et URL brutes rendus cliquables dans les réponses du chatbot.
* Rendu sécurisé sans innerHTML pour le contenu généré par l’assistant.
* Les liens externes s’ouvrent dans un nouvel onglet avec protections noopener/noreferrer.

= 0.5.1 =
* Ajout Content Index V1 : pages, articles, catégories, produits WooCommerce et catégories produits.
* Synchronisation sécurisée via le token d’installation Dalilou déjà chiffré.
* Synchronisation automatique différée après modification et réconciliation deux fois par jour.
* Ajout d’un tableau de statut et du bouton « Synchroniser maintenant » dans l’administration.
