diff --git "a/barre_lat\303\251rale/content.js" "b/barre_lat\303\251rale/content.js"
index da428ce66fc6bc6ab1f6a4fb9930abf82d7e96d8..1b524aae836c80e33bb9159b9f4753bca4a08633 100644
--- "a/barre_lat\303\251rale/content.js"
+++ "b/barre_lat\303\251rale/content.js"
@@ -12,7 +12,7 @@ document.addEventListener('mouseup', () => {
       // Envoie un message au script de la barre latérale pour lui transmettre le mot sélectionné
       browser.runtime.sendMessage({ 
         action: "mot_selectionne", // Action identifiant le type de message
-        mot: selection              // Le texte sélectionné
+        mot: window.getSelection().toString().trim()              // Le texte sélectionné
       });
     }
   });
diff --git "a/barre_lat\303\251rale/sidebar.html" "b/barre_lat\303\251rale/sidebar.html"
index 5c3949b65166ede91b9bc0f5595f3dd24ef951d6..55e12d5593c893291d7b81230180cb818133ab82 100644
--- "a/barre_lat\303\251rale/sidebar.html"
+++ "b/barre_lat\303\251rale/sidebar.html"
@@ -4,6 +4,7 @@
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>BaLex - Barre Latérale</title>
+  <script src="sidebar.js"></script>
   <style>
     /* Style global */
     body {
@@ -18,8 +19,8 @@
     /* Conteneurs */
     #menu, #etat {
       padding: 10px;
-      margin-bottom: 10px;
-      border-radius: 5px;
+      margin-bottom: 0px;
+      border-radius: 10px;
       background-color: #a08e9f;
       box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
     }
@@ -87,6 +88,13 @@
       margin-left: 10px;
     }
 
+    /* Texte explicatif */
+    #highlight-note {
+      font-size: small;
+      margin-bottom: 10px;
+      text-align: center;
+    }
+
     /* Espace pour les pictogrammes */
     .lexique-icon {
         width: 25px;
@@ -105,6 +113,14 @@
       border-radius: 5px;
       color: white;
     }
+    
+
+    /* Activer/désactiver le surlignage */
+    #highlighting-options p {
+      margin: 5px 0;
+      font-size: small;
+      color: #333;
+    }
   </style>
 </head>
 <body>
@@ -112,19 +128,34 @@
   <!-- Menu des lexiques -->
   <div id="menu">
     <h3>Lexiques</h3>
+    <p id="highlight-note" style="display: none;">Cochez un/des lexique(s) pour activer le surlignage des mots sur la page.</p>
     <div id="lexiques">Chargement...</div>
-  </div>
 
+    <div id="auth-section">
+      <button id="auth-button">Se connecter</button>
+    </div>
+  </div>
+  
   <!-- État de la sélection -->
+  <hr>
   <div id="etat">
     <h3>Mot sélectionné</h3>
     <p id="motSelectionne">Aucun mot sélectionné</p>
+    <div id="add-to-lexiques" style="display: none;">
+      <button id="add-word-button">Ajouter le mot sélectionné</button>
+    </div>
+    
     <button id="chercherDef">Chercher la/les définition(s)</button>
+    <div id="possible-definitions" style="display: none;">
+      <label style="font-size: small;">
+        <input type="checkbox" id="toggle-definitions">
+        Afficher toutes les définitions
+      </label>
+    </div>
   </div>
 
   <!-- Définition affichée -->
   <div id="definition"></div>
-  <script src="sidebar.js"></script>
 
 </body>
 </html>
diff --git "a/barre_lat\303\251rale/sidebar.js" "b/barre_lat\303\251rale/sidebar.js"
index dbb8788c323e8cefc4dca9622a8b04b6c067914c..4a13c485e6c4e96d92a2c61d0fd25a72df469ea2 100644
--- "a/barre_lat\303\251rale/sidebar.js"
+++ "b/barre_lat\303\251rale/sidebar.js"
@@ -1,86 +1,198 @@
-// Confirme le chargement du script dans la console
-console.log("sidebar.js chargé avec succès !");
+console.log("✅ sidebar.js chargé avec succès !");
 
-// Écoute les messages envoyés par le script de contenu pour afficher le mot sélectionné dans la barre latérale
+let authToken = '';
+
+// Gestionnaire global des erreurs
+window.addEventListener('error', (e) => {
+  console.error("❗️ Erreur globale détectée :", e.message, "dans", e.filename, ":", e.lineno);
+});
+
+// 📩 Écoute des messages pour recharger la barre latérale
 browser.runtime.onMessage.addListener((message) => {
+  console.log("📩 Message reçu dans la barre latérale :", message);
+
+  if (message.action === "refreshSidebar") {
+    console.log("🔄 Rafraîchissement de la barre latérale déclenché.");
+    window.location.reload();
+  }
+
   if (message.action === "mot_selectionne") {
-    // Met à jour l'affichage du mot sélectionné
-    document.getElementById('motSelectionne').textContent = message.mot;
-    console.log("Mot reçu dans la barre latérale :", message.mot);
+    const selectedWordElement = document.getElementById('motSelectionne');
+    if (selectedWordElement) {
+      selectedWordElement.textContent = message.mot;
+      console.log(`📝 Mot sélectionné affiché : ${message.mot}`);
+    } else {
+      console.warn("⚠️ Élément #motSelectionne introuvable.");
+    }
+  }
+
+  if (message.action === "updateUI") {
+    updateAuthButton(message.isLoggedIn);
+    toggleHighlightMessage(message.isLoggedIn);
   }
 });
 
-// Recherche la définition d'un mot sur le Wiktionnaire
-async function chercherDefinition(mot) {
-  const url = `https://fr.wiktionary.org/api/rest_v1/page/summary/${encodeURIComponent(mot)}`;
-  console.log("URL de la requête :", url);
+// Vérification du format du token
+function validateToken(token) {
+  const isValid = /^\S+\.\S+\.\S+$/.test(token);
+  if (!isValid) {
+    console.warn("⚠️ Le format du token semble incorrect :", token);
+  }
+  return isValid;
+}
+
+// Lecture du token depuis le local storage
+async function readTokenFromStorage() {
+  const { accessToken } = await browser.storage.local.get("accessToken");
+  if (accessToken && validateToken(accessToken)) {
+    authToken = accessToken;
+    console.log(`🔑 Token récupéré depuis le stockage local : [${authToken}]`);
+    return true;
+  } else {
+    console.error("❌ Token invalide ou non trouvé dans le stockage local.");
+    return false;
+  }
+}
+
+// Affichage des lexiques avec cases à cocher et pictogrammes
+function displayLexicons(lexicons) {
+  const lexiquesContainer = document.getElementById('lexiques');
+  lexiquesContainer.innerHTML = '';
+
+  if (lexicons.length === 0) {
+    lexiquesContainer.textContent = 'Aucun lexique disponible.';
+    return;
+  }
+
+  // Ajouter les lexiques à la liste
+  lexicons.forEach(lexique => {
+    const lexiqueDiv = document.createElement('div');
+    lexiqueDiv.className = 'lexique-item';
+
+    const iconDiv = document.createElement('div');
+    iconDiv.className = 'lexique-icon';
+    iconDiv.style.backgroundColor = '#ccc';
+
+    const labelSpan = document.createElement('span');
+    labelSpan.className = 'lexique-label';
+    labelSpan.textContent = lexique.name;
+
+    const checkbox = document.createElement('input');
+    checkbox.type = 'checkbox';
+    checkbox.className = 'lexique-checkbox';
+    checkbox.checked = lexique.active || false;
+
+    checkbox.addEventListener('change', () => {
+      console.log(`🔄 Changement de surlignage pour ${lexique.name}: ${checkbox.checked ? 'activé' : 'désactivé'}`);
+      // Implémentez ici la logique pour activer/désactiver le surlignage
+    });
+
+    lexiqueDiv.appendChild(iconDiv);
+    lexiqueDiv.appendChild(labelSpan);
+    lexiqueDiv.appendChild(checkbox);
+
+    lexiquesContainer.appendChild(lexiqueDiv);
+  });
+}
+
+// Gestion de l'affichage du message d'information
+function toggleHighlightMessage(isLoggedIn) {
+  const highlightNote = document.getElementById('highlight-note');
+  if (highlightNote) {
+    highlightNote.style.display = isLoggedIn ? 'block' : 'none';
+  }
+}
+
+// Récupération des lexiques avec diagnostics détaillés
+async function fetchLexicons() {
+  console.log("🚀 La fonction fetchLexicons() est appelée.");
+
+  const lexiquesContainer = document.getElementById('lexiques');
+  const authSection = document.getElementById('auth-section');
+  lexiquesContainer.innerHTML = '';
+
+  if (!authToken) {
+    console.warn('⚠️ Token non disponible ou vide.');
+    lexiquesContainer.textContent = 'Lexiques non disponibles. Veuillez vous connecter.';
+    if (authSection) {
+      authSection.style.display = 'block';
+    }
+    return;
+  }
 
   try {
-    // Effectue la requête API vers le Wiktionnaire
-    const response = await fetch(url);
+    console.log(`📡 Tentative d'envoi de la requête GET avec le token : Bearer ${authToken}`);
+    const response = await fetch('https://babalex.lezinter.net/api/user/lexicons', {
+      method: 'GET',
+      headers: {
+        'Authorization': `Bearer ${authToken}`,
+        'Content-Type': 'application/json'
+      }
+    });
+
+    console.log(`📊 Statut de la réponse API : ${response.status}`);
+
     if (!response.ok) {
-      throw new Error(`Erreur HTTP : ${response.status}`);
+      const errorBody = await response.text();
+      throw new Error(`❌ Erreur API Babalex : ${response.status} - ${errorBody}`);
     }
 
-    // Récupère et affiche la définition si elle existe
-    const data = await response.json();
-    const definitionDiv = document.getElementById('definition');
-
-    if (data.extract) {
-      definitionDiv.innerHTML = `<strong>Définition de ${mot} :</strong><p>${data.extract}</p>`;
-    } else {
-      definitionDiv.innerHTML = `<p>Aucune définition trouvée pour : ${mot}</p>`;
+    const lexicons = await response.json();
+    console.log('📚 Lexiques récupérés :', lexicons);
+    displayLexicons(lexicons);
+    if (authSection) {
+      authSection.style.display = 'block'; // Toujours afficher la section auth
     }
   } catch (error) {
-    console.error("Erreur lors de la récupération de la définition :", error);
-    document.getElementById('definition').innerHTML = "<p>Erreur lors de la recherche de la définition.</p>";
+    console.error('❗️ Erreur pendant la récupération des lexiques :', error);
+    lexiquesContainer.textContent = 'Impossible de charger les lexiques. Vérifiez votre connexion ou le token.';
+    if (authSection) {
+      authSection.style.display = 'block';
+    }
   }
 }
 
-// Lance la recherche de la définition lorsque le bouton est cliqué
-document.getElementById('chercherDef').addEventListener('click', () => {
-  const mot = document.getElementById('motSelectionne').textContent;
-  if (mot && mot !== "Aucun mot sélectionné") {
-    chercherDefinition(mot);
-  } else {
-    alert("Veuillez sélectionner un mot avant de rechercher sa définition.");
+function toggleElementsVisibility(isLoggedIn) {
+  const addToLexiques = document.getElementById('add-to-lexiques');
+  const possibleDefinitions = document.getElementById('possible-definitions');
+
+  if (addToLexiques) {
+    addToLexiques.style.display = isLoggedIn ? 'block' : 'none';
   }
-});
 
-// Charge dynamiquement les lexiques de l'utilisateur avec des cases à cocher
-async function chargerLexiques() {
-  const lexiques = ["Lexique 1", "Lexique 2", "Lexique 3"];
-  const container = document.getElementById('lexiques');
-  container.innerHTML = '';
-
-  lexiques.forEach(lexique => {
-    const div = document.createElement('div');
-    div.className = 'lexique-item';
-  
-    // Pictogramme
-    const icon = document.createElement('div');
-    icon.className = 'lexique-icon';
-    icon.id = `icon_${lexique.replace(/\s/g, '_')}`;
-  
-    // Nom du lexique
-    const label = document.createElement('label');
-    label.htmlFor = `chk_${lexique}`;
-    label.className = 'lexique-label';
-    label.textContent = lexique;
-  
-    // Case à cocher
-    const checkbox = document.createElement('input');
-    checkbox.type = 'checkbox';
-    checkbox.id = `chk_${lexique}`;
-    checkbox.className = 'lexique-checkbox';
-  
-    // Ordre : Pictogramme → Nom → Case à cocher
-    div.appendChild(icon);
-    div.appendChild(label);
-    div.appendChild(checkbox);
-    container.appendChild(div);
-  });  
+  if (possibleDefinitions) {
+    possibleDefinitions.style.display = isLoggedIn ? 'block' : 'none';
+  }
+}
+
+// Lancement automatique après le chargement de la page
+window.onload = async () => {
+  console.log("📦 Page complètement chargée. Récupération du token depuis le stockage local et récupération des lexiques...");
+  const isLoggedIn = await readTokenFromStorage();
+  updateAuthButton(isLoggedIn);
+  toggleHighlightMessage(isLoggedIn); 
+  toggleElementsVisibility(isLoggedIn);
+  await fetchLexicons();
+
+  // Gestion du bouton de connexion/déconnexion
+  const authButton = document.getElementById("auth-button");
+  if (authButton) {
+    authButton.addEventListener("click", () => {
+      browser.runtime.sendMessage({ action: "toggleAuth" }).then(() => {
+        browser.runtime.sendMessage({ action: "checkAuthStatus" }).then((isLoggedIn) => {
+          updateAuthButton(isLoggedIn);
+          toggleHighlightMessage(isLoggedIn);
+          toggleElementsVisibility(isLoggedIn);
+        });
+      });
+    });
+  }
+};
+
+function updateAuthButton(isLoggedIn) {
+  const authButton = document.getElementById("auth-button");
+  if (authButton) {
+    authButton.textContent = isLoggedIn ? "Se déconnecter" : "Se connecter";
+  }
 }
 
-// Chargement des lexiques dès l'ouverture de la barre latérale
-chargerLexiques();
diff --git a/menu_extension/manifest.json b/manifest.json
similarity index 63%
rename from menu_extension/manifest.json
rename to manifest.json
index b36ec6cbc65f6a2aa18394ccb1b7de2835223131..8a83e2dcf2f25a6584a09634be934b16d525eab7 100644
--- a/menu_extension/manifest.json
+++ b/manifest.json
@@ -3,19 +3,25 @@
   "name": "ff2BaLex",
   "version": "1.0",
   "description": "Extension Firefox avec paramètres personnalisés.",
+  
   "permissions": [
-  "storage",
-  "activeTab",
-  "tabs",
-  "contextMenus",
-  "webNavigation",
-  "scripting",
-  "*://babalex.lezinter.net/*",
-  "*://prisms.lezinter.net/*"],
+    "storage",
+    "activeTab",
+    "tabs",
+    "contextMenus",
+    "webNavigation",
+    "webRequest",
+    "webRequestBlocking",
+    "notifications",
+    "*://babalex.lezinter.net/*",
+    "*://prisms.lezinter.net/*"
+  ],
+
   "background": {
     "scripts": ["menu_extension/background.js"],
     "persistent": true
   },
+
   "browser_action": {
     "default_popup": "menu_extension/popup.html",
     "default_icon": {
@@ -25,10 +31,12 @@
     },
     "default_title": "ff2BaLex"
   },
+
   "options_ui": {
     "page": "menu_extension/options.html",
     "open_in_tab": false
   },
+
   "sidebar_action": {
     "default_title": "BaLex",
     "default_panel": "barre_latérale/sidebar.html",
@@ -37,10 +45,18 @@
       "48": "icons/icon-48.png"
     }
   },
+
   "content_scripts": [
-  {
-    "matches": ["<all_urls>"],
-    "js": ["barre_latérale/content.js"]
-  }
+    {
+      "matches": ["https://prisms.lezinter.net/*"],
+      "js": ["barre_latérale/content.js"],
+      "run_at": "document_end"
+    }
+  ],
+
+  "web_accessible_resources": [
+    "icons/*",
+    "menu_extension/*",
+    "barre_latérale/*"
   ]
 }
diff --git a/menu_extension/background.js b/menu_extension/background.js
index 88538aa4409de3f11f4a7986afb6969a6063fe7a..584b3b1da6bf5ca942cea65aad114a1105f32be1 100644
--- a/menu_extension/background.js
+++ b/menu_extension/background.js
@@ -1,122 +1,214 @@
+// === 1. Variables globales ===
 let isExtensionActive = true;
 let areStatsActive = false;
 
-console.log("ff2BaLex est chargé.");
+console.log("🚀 ff2BaLex est chargé.");
 
-// === 1. Installation de l'extension ===
+// === 2. Installation de l'extension ===
 browser.runtime.onInstalled.addListener(() => {
-  console.log("ff2BaLex est installé.");
+  console.log("🔔 Extension ff2BaLex installée.");
+});
 
-  // Création d'un bouton unique de connexion/déconnexion
-  browser.contextMenus.create({
-    id: "toggle_connection",
-    title: "Se connecter à la base lexicale",
-    contexts: ["all"]
-  });
+browser.runtime.onStartup.addListener(() => {
+  console.log("🔄 Extension démarrée.");
 });
 
-// === 2. Suivi des changements de paramètres ===
+// === 3. Suivi des changements de paramètres ===
 browser.storage.onChanged.addListener((changes) => {
   if (changes.extensionActive) {
     isExtensionActive = changes.extensionActive.newValue;
-    console.log("Extension activée :", isExtensionActive);
+    console.log("✅ Extension activée :", isExtensionActive);
   }
-
   if (changes.statsActive) {
     areStatsActive = changes.statsActive.newValue;
-    console.log("Statistiques activées :", areStatsActive);
+    console.log("📊 Statistiques activées :", areStatsActive);
   }
 });
 
-// === 3. Gestion des messages provenant du bouton Connexion/Déconnexion ===
-browser.runtime.onMessage.addListener(async (message) => {
-  if (message.action === "toggleConnection") {
+// === 4. Gestion des connexions/déconnexions ===
+browser.runtime.onMessage.addListener(async (message, sender, sendResponse) => {
+  console.log("📩 Message reçu dans background.js :", message);
+
+  if (message.action === "toggleAuth") {
     const isConnected = await isUserConnected();
+    console.log("🔍 État actuel de connexion :", isConnected ? "Connecté" : "Déconnecté");
     if (isConnected) {
-      disconnectFromLexicalDB();
+      await disconnectFromLexicalDB();
     } else {
       openLoginPage();
     }
+  } else if (message.action === "checkAuthStatus") {
+    const isConnected = await isUserConnected();
+    sendResponse(isConnected);
+  } else if (message.action === "authStatusChanged") {
+    console.log("🔄 Mise à jour de l'état d'authentification :", message.isLoggedIn);
+    browser.runtime.sendMessage({ action: "updateUI", isLoggedIn: message.isLoggedIn });
+  } else if (message.action === "refreshSidebar") {
+    refreshSidebar();
+  } else if (message.action === "refreshMenu") {
+    refreshExtensionMenu();
+  } else if (message.action === "showNotification") {
+    showNotification(message.title, message.message, message.iconUrl);
   }
+  return true; 
 });
 
-// === 4. Ouvrir la page de connexion Prisms ===
 function openLoginPage() {
   const authUrl = "https://prisms.lezinter.net/fr/login";
+  console.log("🔗 Ouverture de la page de connexion :", authUrl);
   browser.tabs.create({ url: authUrl });
+  browser.runtime.sendMessage({ action: "authStatusChanged", isLoggedIn: false });
 }
 
-// === 5. Suivi du parcours de connexion et récupération du token ===
+// === 5. Afficher le popup après redirection vers Prisms ===
 browser.webNavigation.onCompleted.addListener(async (details) => {
   const url = new URL(details.url);
 
-  // Si connecté, rediriger vers la page BaLex dans Prisms
   if (url.hostname === "prisms.lezinter.net" && url.pathname === "/fr/login") {
-    console.log("Connecté à Prisms, veuillez cliquer sur 'Se connecter avec BaLex'...");
+    console.log("📘 Injection du popup d'instruction sur Prisms.");
+    showInstructionPopup(details);
   }
 
-  // Une fois sur la page du tableau de bord BaLex, récupérer le token
   if (url.hostname === "prisms.lezinter.net" && url.pathname === "/fr/headquarters/balex") {
-    console.log("Tentative de récupération du token depuis Prisms...");
-
+    console.log("🟢 L'utilisateur est sur la page /balex. Tentative de récupération du token.");
     try {
-      await new Promise(resolve => setTimeout(resolve, 3000));  // Pause pour chargement complet
+      await new Promise(resolve => setTimeout(resolve, 3000));
       await browser.tabs.executeScript(details.tabId, {
         code: `
-          (function() {
-            const tokenElement = document.getElementById("accesToken");
-            console.log("Token détecté :", tokenElement ? tokenElement.innerText : "Non trouvé");
-            return tokenElement ? tokenElement.innerText.trim() : null;
-          })();
+          console.log("🔍 Recherche du token...");
+          const tokenElement = document.getElementById("accesToken");
+          if (tokenElement) {
+            const token = tokenElement.innerText.trim();
+            console.log("🔐 Token détecté :", token);
+            browser.runtime.sendMessage({ action: "saveToken", token });
+          } else {
+            console.error("❌ Token introuvable.");
+          }
         `
-      }).then(async (results) => {
-        const token = results[0];
-        if (token) {
-          await browser.storage.local.set({ accessToken: token });
-          console.log("Token récupéré et stocké :", token);
-          alert("Connexion réussie !");
-          updateContextMenu();
-        } else {
-          console.error("Token non trouvé sur la page Prisms.");
-        }
       });
     } catch (error) {
-      console.error("Erreur lors de la récupération du token :", error);
+      console.error("❌ Erreur lors de la récupération du token :", error);
     }
   }
 }, { url: [{ hostContains: "prisms.lezinter.net" }] });
 
-// === 6. Déconnexion ===
+
+// === 6. Redirection immédiate vers /balex ===
+browser.webRequest.onBeforeRequest.addListener(
+  function(details) {
+    if (details.url === "https://prisms.lezinter.net/fr/headquarters/") {
+      console.log("🚀 Redirection automatique vers /balex.");
+      return { redirectUrl: "https://prisms.lezinter.net/fr/headquarters/balex" };
+    }
+  },
+  { urls: ["https://prisms.lezinter.net/fr/headquarters/*"] },
+  ["blocking"]
+);
+
+// // === 7. Injection du popup dans la page ===
+function showInstructionPopup(details) {
+  console.log("📘 Injection du message d'instruction centré sur la page Prisms.");
+
+  browser.tabs.executeScript(details.tabId, {
+    code: `
+      if (!document.getElementById("balex-instruction-popup")) {
+        const popup = document.createElement("div");
+        popup.id = "balex-instruction-popup";
+        popup.style.position = "fixed";
+        popup.style.top = "50%";
+        popup.style.left = "50%";
+        popup.style.transform = "translate(-50%, -50%)";
+        popup.style.backgroundColor = "#a08e9f";
+        popup.style.color = "#323046";
+        popup.style.padding = "20px";
+        popup.style.borderRadius = "10px";
+        popup.style.boxShadow = "0 2px 10px rgba(0, 0, 0, 0.3)";
+        popup.style.zIndex = "10000";
+        popup.style.fontFamily = "Helvetica, sans-serif";
+        popup.style.fontSize = "14px";
+        popup.style.width = "300px";
+        popup.style.textAlign = "center";
+
+        popup.innerHTML = \`
+          <h5 style="color: #fff; font-weight: bold; margin-top: 0;">🔑 Connexion à l'extension</h5>
+          <p style="margin: 15px 0;">Après avoir renseigné vos identifiants, cliquez sur <strong>"Se connecter avec BaLex"</strong>.</p>
+          <button id="close-popup-btn" style="
+            width: 100%;
+            margin-top: 15px;
+            padding: 10px;
+            border: none;
+            background-color: #8d5c70;
+            color: #fbfcfc;
+            font-weight: bold;
+            cursor: pointer;
+            border-radius: 5px;
+          ">Fermer</button>
+        \`;
+
+        document.body.appendChild(popup);
+
+        document.getElementById("close-popup-btn").onclick = () => {
+          popup.remove();
+        };
+      }
+    `
+  });
+}
+
+
+
+// === 8. Sauvegarde du token ===
+browser.runtime.onMessage.addListener(async (message) => {
+  if (message.action === "saveToken" && message.token) {
+    console.log("✅ Sauvegarde du token :", message.token);
+    await browser.storage.local.set({ accessToken: message.token });
+    showNotification('Connexion réussie', 'La barre latérale va se recharger.', 'icons/success.png');
+    refreshSidebar();
+    refreshExtensionMenu();
+    browser.runtime.sendMessage({ action: "updateUI", isLoggedIn: true });
+  }
+});
+
 async function disconnectFromLexicalDB() {
+  console.log("🔓 Déconnexion en cours...");
   await browser.storage.local.remove("accessToken");
-  console.log("Token supprimé, déconnexion réussie.");
-  alert("Déconnexion réussie.");
-  updateContextMenu();
+  console.log("🔓 Token supprimé avec succès.");
+  showNotification('Déconnexion réussie', 'La barre latérale va se recharger.', 'icons/logout.png');
+  refreshSidebar();
+  refreshExtensionMenu();
+  browser.runtime.sendMessage({ action: "updateUI", isLoggedIn: false });
 }
 
-// === 7. Vérifier si l'utilisateur est connecté ===
 async function isUserConnected() {
   const result = await browser.storage.local.get("accessToken");
+  console.log("🔑 État actuel du token :", result.accessToken);
   return result.accessToken !== undefined;
 }
 
-// === 8. Mise à jour dynamique du menu contextuel ===
-browser.runtime.onStartup.addListener(() => {
-  updateContextMenu();
-});
+function refreshSidebar() {
+  console.log("🔄 Rafraîchissement de la barre latérale.");
+  browser.runtime.sendMessage({ action: "refreshSidebar" });
+}
 
-async function updateContextMenu() {
-  const isConnected = await isUserConnected();
-  browser.contextMenus.update("toggle_connection", {
-    title: isConnected ? "Se déconnecter de la base lexicale" : "Se connecter à la base lexicale"
-  });
+function refreshExtensionMenu() {
+  console.log("🔄 Rafraîchissement du menu de l'extension.");
+  browser.runtime.sendMessage({ action: "refreshMenu" });
 }
 
-// === 9. Rafraîchissement périodique du token (désactivé) ===
-function refreshToken() {
-  console.warn("Aucune API de rafraîchissement disponible. Rafraîchissement désactivé.");
+function showNotification(title, message, iconUrl) {
+  console.log(`🔔 Notification : ${title} - ${message}`);
+  if (browser.notifications) {
+    browser.notifications.create({
+      type: 'basic',
+      iconUrl: iconUrl || "icons/info.png",
+      title: title,
+      message: message
+    });
+  } else {
+    console.warn("⚠️ Notifications non supportées.");
+  }
 }
 
 setInterval(() => {
-  refreshToken();
-}, 15 * 60 * 1000); // Désactivé faute d'API de rafraîchissement
+  console.warn("⚠️ Aucune API de rafraîchissement disponible.");
+}, 15 * 60 * 1000);
diff --git a/menu_extension/login.html b/menu_extension/login.html
deleted file mode 100644
index 1f537473fb5d30a313f9da4f237993aa9450cdd5..0000000000000000000000000000000000000000
--- a/menu_extension/login.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<html lang="fr">
-<head>
-  <meta charset="UTF-8">
-  <title>Connexion à BaLex</title>
-  <style>
-    body {
-      background-color: #323046;
-      color: white;
-      font-family: Arial, sans-serif;
-      text-align: center;
-      padding-top: 50px;
-    }
-    input {
-      width: 80%;
-      padding: 10px;
-      margin: 10px 0;
-    }
-    button {
-      padding: 10px 20px;
-      background-color: #94608a;
-      color: white;
-      border: none;
-      cursor: pointer;
-    }
-  </style>
-</head>
-<body>
-  <h2>Connexion à BaLex</h2>
-  <input type="text" id="username" placeholder="Nom d'utilisateur"><br>
-  <input type="password" id="password" placeholder="Mot de passe"><br>
-  <button id="loginButton">Se connecter</button>
-
-  <script src="login.js"></script>
-</body>
-</html>
diff --git a/menu_extension/login.js b/menu_extension/login.js
deleted file mode 100644
index 04a877695d80c75da55a033587f2aac5bfc3cf7c..0000000000000000000000000000000000000000
--- a/menu_extension/login.js
+++ /dev/null
@@ -1,36 +0,0 @@
-document.getElementById('loginButton').addEventListener('click', async () => {
-    const username = document.getElementById('username').value;
-    const password = document.getElementById('password').value;
-  
-    if (username && password) {
-      const apiUrl = "https://babalex.lezinter.net/login";
-  
-      try {
-        const response = await fetch(apiUrl, {
-          method: "POST",
-          headers: {
-            "Content-Type": "application/json"
-          },
-          body: JSON.stringify({ username, password })
-        });
-  
-        const data = await response.json();
-        if (data.accessToken && data.refreshToken) {
-          await browser.storage.local.set({
-            accessToken: data.accessToken,
-            refreshToken: data.refreshToken
-          });
-          alert("Connexion réussie !");
-          window.close();  // Ferme la fenêtre de connexion
-        } else {
-          alert("Identifiants incorrects.");
-        }
-      } catch (error) {
-        console.error("Erreur lors de la connexion :", error);
-        alert("Erreur de connexion.");
-      }
-    } else {
-      alert("Veuillez remplir tous les champs.");
-    }
-  });
-  
\ No newline at end of file
diff --git a/menu_extension/options.js b/menu_extension/options.js
index cbfd4cfcb2274d8f74445918a52f9184b23e093a..22cba4c05d9dda2553051080e284eaccbbd1b921 100644
--- a/menu_extension/options.js
+++ b/menu_extension/options.js
@@ -2,10 +2,15 @@ document.getElementById('connectBtn').addEventListener('click', () => {
   browser.runtime.sendMessage({ action: "openLoginPage" });
 });
 
-document.getElementById('disconnectBtn').addEventListener('click', async () => {
-  await browser.storage.local.remove(["accessToken", "refreshToken"]);
+async function disconnectFromLexicalDB() {
+  await browser.storage.local.remove("accessToken");
+  console.log("Token supprimé, déconnexion réussie.");
   alert("Déconnexion réussie.");
-});
+  updateContextMenu();
+
+  // Envoi d'un message pour mettre à jour l'UI
+  browser.runtime.sendMessage({ action: "updateUI" });
+}
   
 document.getElementById("toggleExtensionBtn").addEventListener("click", async () => {
   const { extensionActive } = await browser.storage.local.get("extensionActive");
diff --git a/menu_extension/popup.html b/menu_extension/popup.html
index 3c45bee873b39f4faa06584872d2763a65045f78..dbc12fff629458817cb2e5d275cfb26c3a122ab8 100644
--- a/menu_extension/popup.html
+++ b/menu_extension/popup.html
@@ -31,7 +31,7 @@
 </head>
 <body>
   <h3>Extension BaLex</h3>
-  <button id="connectBtn">Se connecter</button>
+  <button id="auth-button">Se connecter</button>
   <button id="toggleExtensionBtn">Activer/Désactiver l'extension</button>
   <button id="toggleStatsBtn">Activer les statistiques</button>
   <script src="popup.js"></script>
diff --git a/menu_extension/popup.js b/menu_extension/popup.js
index 458e207b3e38b0c452426cdee2e3f93100c03ec4..702d38be02be801acf93282a7109ab031b83cb56 100644
--- a/menu_extension/popup.js
+++ b/menu_extension/popup.js
@@ -1,24 +1,32 @@
-// === 1. Gestion du bouton unique Connexion/Déconnexion ===
+console.log("✅ popup.js chargé avec succès !");
+
+// === 1. Mise à jour du bouton Connexion/Déconnexion ===
 async function updateConnectionButton() {
   const { accessToken } = await browser.storage.local.get("accessToken");
-  const button = document.getElementById("connectBtn");
+  const button = document.getElementById("auth-button");
 
-  button.textContent = accessToken ? "Se déconnecter" : "Se connecter";
+  if (button) {
+    button.textContent = accessToken ? "Se déconnecter" : "Se connecter";
+    button.onclick = async () => {
+      await browser.runtime.sendMessage({ action: "toggleAuth" });
+    };
+  } else {
+    console.error("❌ Le bouton de connexion n'a pas été trouvé.");
+  }
 }
 
-// Action au clic du bouton Connexion/Déconnexion
-document.getElementById("connectBtn").addEventListener("click", () => {
-  console.log("Redirection vers la page de connexion...");
-  browser.runtime.sendMessage({ action: "connectToBaLex" });
-});
-
+// === 2. Écoute des messages depuis background.js ===
 browser.runtime.onMessage.addListener((message) => {
-  if (message.action === "tokenSaved") {
-    alert("Connexion réussie !");
+  if (message.action === "updateUI") {
+    console.log("📩 Mise à jour reçue : État connecté :", message.isLoggedIn);
+    updateConnectionButton();
+  } else if (message.action === "refreshMenu") {
+    console.log("🔄 Actualisation du menu de l'extension déclenchée.");
+    updateConnectionButton();
   }
 });
 
-// === 2. Activer/Désactiver l'extension ===
+// === 3. Gestion des actions des boutons ===
 document.getElementById("toggleExtensionBtn").addEventListener("click", async () => {
   const { extensionActive } = await browser.storage.local.get("extensionActive");
   const newState = !extensionActive;
@@ -26,7 +34,6 @@ document.getElementById("toggleExtensionBtn").addEventListener("click", async ()
   alert(`Extension ${newState ? "activée" : "désactivée"}.`);
 });
 
-// === 3. Activer/Désactiver les statistiques ===
 document.getElementById("toggleStatsBtn").addEventListener("click", async () => {
   const { statsActive } = await browser.storage.local.get("statsActive");
   const newState = !statsActive;
@@ -34,25 +41,8 @@ document.getElementById("toggleStatsBtn").addEventListener("click", async () =>
   alert(`Statistiques ${newState ? "activées" : "désactivées"}.`);
 });
 
-// === 4. Mise à jour initiale du bouton Connexion/Déconnexion ===
-updateConnectionButton();
-
-// Vérification pour le bouton de connexion
+// === 4. Initialisation ===
 document.addEventListener("DOMContentLoaded", () => {
-  const connectBtn = document.getElementById("connectBtn");
-
-  if (connectBtn) {
-    connectBtn.addEventListener("click", async () => {
-      console.log("Clic détecté sur le bouton Connexion");
-      try {
-        await browser.runtime.sendMessage({ action: "toggleConnection" });
-        console.log("Message envoyé au background.");
-      } catch (error) {
-        console.error("Erreur lors de l'envoi du message :", error);
-      }
-    });
-  } else {
-    console.error("Le bouton de connexion n'a pas été trouvé.");
-  }
+  console.log("🌐 Initialisation du menu de l'extension...");
+  updateConnectionButton();
 });
-
diff --git "a/s\303\251lection_recherche/.gitkeep" "b/s\303\251lection_recherche/.gitkeep"
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git "a/s\303\251lection_recherche/icons/border-48.png" "b/s\303\251lection_recherche/icons/border-48.png"
deleted file mode 100644
index 90687de26d71e91b7c82565772a7df470ae277a6..0000000000000000000000000000000000000000
Binary files "a/s\303\251lection_recherche/icons/border-48.png" and /dev/null differ
diff --git "a/s\303\251lection_recherche/icons/loupe-256.png" "b/s\303\251lection_recherche/icons/loupe-256.png"
deleted file mode 100644
index a34fc08ba086b2dcd791fe7962ffb74e6b17203b..0000000000000000000000000000000000000000
Binary files "a/s\303\251lection_recherche/icons/loupe-256.png" and /dev/null differ
diff --git "a/s\303\251lection_recherche/main.js" "b/s\303\251lection_recherche/main.js"
deleted file mode 100644
index aaa3124a34ddde087bcf340311212be0f6c878cb..0000000000000000000000000000000000000000
--- "a/s\303\251lection_recherche/main.js"
+++ /dev/null
@@ -1,193 +0,0 @@
-// Création de la zone blanche initiale(prototype menu contextuel)
-if (!document.getElementById('whiteBox')) {
-  // Création de la zone blanche
-  const whiteBox = document.createElement('div');
-  whiteBox.id = 'whiteBox';
-
-  // Ajout de contenu dans la zone
-  whiteBox.innerHTML = '<p id="selectedWord"> Mot sélectionné </p>';
-
-  // Ajouter la zone au document
-  document.body.appendChild(whiteBox);
-}
-
-
-
-// Variable globale pour stocker le token
-let authToken = '';
-
-// Fonction pour lire et afficher le contenu du fichier token
-function readTokenFile() {
-  const tokenFilePath = browser.runtime.getURL('token.txt');
-  console.log('Chemin du fichier token :', tokenFilePath);
-
-  return fetch(tokenFilePath)
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error(`Erreur lors de la lecture du fichier token : ${response.statusText}`);
-      }
-      return response.text();
-    })
-    .then((token) => {
-      console.log('Contenu du fichier token :', token);
-      authToken = token.trim(); // Stocke le token dans une variable globale
-    })
-    .catch((error) => {
-      console.error('Erreur lors de la lecture du fichier token :', error);
-    });
-}
-
-// Appeler la fonction et attendre qu’elle soit terminée
-readTokenFile().then(() => {
-  console.log("Le token est bien enregistré : ", authToken);
-});
-
-
-
-// Ecouteur de la sélection de texte
-document.addEventListener('contextmenu', (event) => {
-  const selectedText = window.getSelection().toString().trim();  // Récupérer le texte sélectionné
-
-  // SI on a du texte sélectionné, on modifie le contenu et affiche le bouton de recherche dans le lexique
-  if (selectedText) {
-    console.log("Texte sélectionné :", selectedText);
-
-    // Modifier le contenu de la boîte blanche avec le texte sélectionné
-    const selectedWordElement = document.getElementById('selectedWord');
-    if (selectedWordElement) {
-      selectedWordElement.textContent = selectedText;
-    }
-
-
-
-    // Bouton de recherche dans le lexique perso
-    if (!document.getElementById('searchLexiconButton')) {
-      // Création du bouton "Rechercher dans le lexique" (lexique perso)
-      const searchLexiconButton = document.createElement('input');
-      searchLexiconButton.id = 'searchLexiconButton';
-      searchLexiconButton.type = 'button';
-      searchLexiconButton.value = 'Rechercher dans le lexique personnel';
-      searchLexiconButton.className = 'searchButton';
-
-      // Événement sur le bouton de recherche
-      searchLexiconButton.addEventListener('click', () => {
-        console.log("Recherche du mot dans le lexique:", selectedText);
-        searchInLexicon(selectedText); 
-      });
-
-      // Ajout du bouton sous le texte 
-      const whiteBox = document.getElementById('whiteBox');
-      whiteBox.appendChild(searchLexiconButton);
-    }
-
-
-
-    // Bouton de recherche requête sur le wiktionnaire
-    if (!document.getElementById('searchWikiButton')) {
-      // Création du bouton "Recherche sur le Wiktionnaire"
-      const searchWikiButton = document.createElement('input');
-      searchWikiButton.id = 'searchWikiButton';
-      searchWikiButton.type = 'button';
-      searchWikiButton.value = 'Rechercher sur le Wiktionnaire';
-      searchWikiButton.className = 'searchButton';
-
-      // // Évènement sur le bouton de recherche
-      searchWikiButton.addEventListener('click', () => {
-        console.log("Recherche du mot dans le Wiktionnaire:", selectedText);
-        searchInWiki(selectedText);
-      });
-
-      // Ajout du bouton sous le texte 
-      const whiteBox = document.getElementById('whiteBox');
-      whiteBox.appendChild(searchWikiButton);
-    }
-  }
-
-
-  
-// Définition des fonctions APPELS API
-
-// Fonction pour rechercher dans le lexique personnel (français)
-function searchInLexicon(selectedText) {
-  const lexiconsApiUrl = 'https://babalex.lezinter.net/api/user/lexicons';
-
-  if (!authToken) {
-    console.error('Token non disponible.');
-    return;
-  }
-
-  //Récupérer les lexiques de l'utilisateur
-  fetch(lexiconsApiUrl, {
-    method: 'GET',
-    headers: {
-      'Authorization': `Bearer ${authToken}`,
-      'Content-Type': 'application/json',
-    },
-  })
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error(`Erreur lors de la récupération des lexiques : ${response.statusText}`);
-      }
-      return response.json();
-    })
-    .then((lexicons) => {
-      console.log('Lexiques de l’utilisateur :', lexicons);
-
-      //todo : Utiliser la variable "lang" pour chercher le mot dans le bon lexique
-
-      // Rechercher l'ID du lexique français
-      const frenchLexicon = lexicons.find((lexicon) => lexicon.language === 'fr');
-
-      if (!frenchLexicon) {
-        throw new Error('Aucun lexique pour la langue française trouvé.');
-      }
-
-      const idLexicon = frenchLexicon.id;
-      console.log('ID du lexique français :', idLexicon);
-
-      //Récupérer les graphies du lexique français
-      const entriesApiUrl = `https://babalex.lezinter.net/api/lexicon/entries/${idLexicon}`;
-
-      return fetch(entriesApiUrl, {
-        method: 'GET',
-        headers: {
-          'Authorization': `Bearer ${authToken}`,
-          'Content-Type': 'application/json',
-        },
-      });
-    })
-    .then((response) => {
-      if (!response.ok) {
-        throw new Error(`Erreur lors de la récupération des graphies : ${response.statusText}`);
-      }
-      return response.json();
-    })
-    .then((entries) => {
-      console.log('Graphies dans le lexique français :', entries);
-
-      //Comparer les graphies avec le mot sélectionné
-      let isWordPresent = false;
-      for (const entry of entries) {
-        console.log("Mots dans le lexique :", entry);
-        if (entry.graphy === selectedText) { 
-          isWordPresent = true;
-          break;
-        }
-      }
-      
-      if (isWordPresent) {
-        alert(`Mot présent dans le lexique : "${selectedText}"`);
-      } else {
-        alert(`Le mot "${selectedText}" n'est pas présent dans le lexique.`);
-      }
-    })
-    .catch((error) => {
-      console.error('Erreur lors de la requête API :', error);
-    });
-}
-
-//console.log('Token utilisé :', authToken);
-
-
-});
-
diff --git "a/s\303\251lection_recherche/manifest.json" "b/s\303\251lection_recherche/manifest.json"
deleted file mode 100644
index 163425207d2c6afcdbb96831e790dc50032ff4cd..0000000000000000000000000000000000000000
--- "a/s\303\251lection_recherche/manifest.json"
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "manifest_version": 2,
-    "name": "Rechercher si le mot est dans le lexique",
-    "version": "1.0",
-    "description": "Sélectionne un mot et affiche le mot sélectionné dans la zone pour vérifier s'il est dans un lexique",
-    "icons": {
-      "48": "icons/loupe-256.png"
-    },
-    "permissions": [
-    "https://babalex.lezinter.net/*",
-    "activeTab"],
-    "content_scripts": [
-      {
-        "matches": ["<all_urls>"], 
-        "js": ["main.js"],
-        "css": ["style.css"]
-      }
-    ],
-    "web_accessible_resources": [
-      "token", 
-      "token.txt"
-    ],    
-    
-    "browser_action": {
-      "default_icon": "icons/loupe-256.png",
-      "default_title": "Recherche du mot"
-    }
-  }
-  
\ No newline at end of file
diff --git "a/s\303\251lection_recherche/style.css" "b/s\303\251lection_recherche/style.css"
deleted file mode 100644
index 60e994e0c3e489b7981b06a20af04964cd8c49b2..0000000000000000000000000000000000000000
--- "a/s\303\251lection_recherche/style.css"
+++ /dev/null
@@ -1,37 +0,0 @@
-#whiteBox {
-  position: fixed;
-  top: 10px;  
-  right: 10px;  
-  background-color: rgb(255, 255, 255);
-  border: 5px solid rgb(0, 0, 0);
-  padding: 10px;
-  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
-  z-index: 10000;
-}
-
-#selectedWord {
-  margin: 0;
-  font-size: 14px;
-  line-height: 1.5;
-  color: black; 
-  font-weight: bold;
-}
-
-/* Style des boutons */
-.searchButton {
-  margin-top: 10px;
-  padding: 8px 12px;
-  background-color: #4CAF50;
-  color: white;
-  border: none;
-  cursor: pointer;
-  font-size: 14px;
-  border-radius: 5px;
-  display: block;
-  width: 100%;
-}
-
-.searchButton:hover {
-  background-color: #45a049;
-}
-
diff --git "a/s\303\251lection_recherche/token.txt" "b/s\303\251lection_recherche/token.txt"
deleted file mode 100644
index d1a05116c9ea5c3172fd4bcb43d453c48f7a5ce8..0000000000000000000000000000000000000000
--- "a/s\303\251lection_recherche/token.txt"
+++ /dev/null
@@ -1 +0,0 @@
-eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJwcmlzbXMiLCJqdGkiOiJkYWU4Mzc5OGJkMTk1Y2M1NzIyMGM5MTZiZDBjYjNjZDkwNjQ0NzYyNjViNWY4YzgwOWYwYTBkNWQyYzFlNjNhNTk1M2ZmZWM2ZmEzNWQ0YyIsImlhdCI6MTczNjk3Mjk4OS4wMjk2MiwibmJmIjoxNzM2OTcyOTg5LjAyOTYzMiwiZXhwIjoxNzM2OTc2NTg5LjAwNDQzMiwic3ViIjoiYXNvdW5hbGF0aCIsInNjb3BlcyI6WyJlbWFpbCIsInBzZXVkbyIsInV1aWQiXSwia2lkIjoiMSIsImN1c3RvbSI6eyJmb28iOiJiYXIifX0.AKd1wP8mCWSkZ9iPhuyDxb5OEeLf6pyu3b4iv4yDOYqzjEXEm3He2umAYHvvTLEt701NW_6_6uzzGKt8tm-sqsGp_sff6LEBZE9j2108nonBtYS6Hi4LtSTPS9Ls9DeKvQ_mRxpT2ENOF7Lnfgy2a7PHIYrxfV3Q4jc_1LE9K4rStJdwX-UjSyzdJzmlpJ651knsg32yLDAUWzgcfyf4Vn41vqMnwn3gXi3Yez4biVM1cxOX9iwL8QdIDiPlcF83KOULrtvErLSlWzKgmmwrT8b1o2PqxEdhbehSgkpiyAU9ewmwVoZSXqql4ITg9tzOvUcLR4qyJGceAnLrNJdRnw
\ No newline at end of file