diff --git a/src/background/background.js b/src/background/background.js
index 65ce6f0f30bbd97b902b68b9586eb754cba8b5c8..cd3d0126e50b61e76c825b31e464ed2f9e77e2e9 100644
--- a/src/background/background.js
+++ b/src/background/background.js
@@ -347,6 +347,10 @@ function initWorker() {
   }
 }
 
+function handleWorkerError(error) {
+  console.error("Erreur du WebWorker :", error.message);
+}
+
 function handleWorkerMessage(event) {
   const data = event.data;
   console.log("[Background] Message du WebWorker :", data);
@@ -357,6 +361,10 @@ function handleWorkerMessage(event) {
         console.log("[Background] Pyodide et Simplemma prêts. Mise à jour de l'état.");
         browser.storage.local.set({ pyodideSimplemmaReady: true });
         checkAndUpdateTracking();
+      } else if (data.status === "error") {
+        console.error("[Background] Erreur lors du chargement :", data.message);
+      } else if (data.status === "already_loaded") {
+        console.log("[Background] Pyodide et Simplemma déjà chargés.");
       }
       break;
     case "update-frequencies":
@@ -376,10 +384,6 @@ function handleWorkerMessage(event) {
   }
 }
 
-function handleWorkerError(error) {
-  console.error("[Background] Erreur dans le WebWorker :", error);
-}
-
 // Initialisation du worker dès le démarrage
 initWorker();
 
@@ -411,6 +415,7 @@ browser.runtime.onMessage.addListener(async (message, sender, sendResponse) => {
   return true;
 });
 
+
 // ─────────────────────────────────────────────────────────────────────────────
 // Chargement et sauvegarde des fréquences stockées
 // ─────────────────────────────────────────────────────────────────────────────
@@ -538,8 +543,3 @@ function sendStoplistToWorker() {
 browser.runtime.onStartup.addListener(loadStoplist);
 browser.runtime.onInstalled.addListener(loadStoplist);
 
-// ─────────────────────────────────────────────────────────────────────────────
-// (Code commenté concernant l'activation/désactivation de l'analyse)
-// ─────────────────────────────────────────────────────────────────────────────
-// async function initializeExtensionState() { ... }
-// initializeExtensionState();
diff --git a/src/popup/popup.html b/src/popup/popup.html
index b9c17fddfb04dec8a1da18f3cc299c4e0bf35c65..33f6c8c372b71e04963be5910ffe3c16baef763c 100644
--- a/src/popup/popup.html
+++ b/src/popup/popup.html
@@ -348,9 +348,10 @@
   <button id="toggleExtensionBtn">Activer/Désactiver</button>
   <button id="toggleStatsBtn">Statistiques</button>
   <button id="open-stats">Afficher les statistiques</button>
+  <div id="pyodide-loading"></div>
   
   <div id="stats-options" class="option-container">
-    <div class="option-row auto-add-row">
+    <div id="auto-add-container" class="option-row auto-add-row">
       <span>Ajout automatique</span>
       <label class="toggle-switch">
         <input type="checkbox" id="auto-add">
diff --git a/src/popup/popup.js b/src/popup/popup.js
index 8ccc3fc7a8c0bfe94054880a340beec952ca25bf..ddbec903c1aa28ababcb6b3150e05768a3fdc695 100644
--- a/src/popup/popup.js
+++ b/src/popup/popup.js
@@ -46,12 +46,9 @@ async function updateLanguageSelection() {
     return;
   }
 
-  // Utilisation de la fonction de récupération de lexiques
-  // Choisissez ici entre getLexicons et getUserLexicons en fonction de votre implémentation
   const lexicons = await getLexicons(accessToken);
   const userLanguages = [...new Set(lexicons.map(lex => lex.language))];
 
-  // Récupérer les langues suivies depuis le stockage
   const { trackedLanguages } = await browser.storage.local.get("trackedLanguages") || { trackedLanguages: [] };
 
   languageSelection.innerHTML = "";
@@ -84,6 +81,11 @@ async function updateOptionsUI() {
   const accessToken = await getAccessToken();
   const isLoggedIn = !!accessToken;
   const statsOptions = document.getElementById("stats-options");
+
+  if (statsOptions) {
+    statsOptions.style.display = isLoggedIn ? "block" : "none";
+  }
+
   const autoAddContainer = document.getElementById("auto-add")?.parentElement;
   const autoAddCheckbox = document.getElementById("auto-add");
   const autoAddOptions = document.getElementById("auto-add-options");
@@ -92,10 +94,10 @@ async function updateOptionsUI() {
   const toggleStatsBtn = document.getElementById("toggleStatsBtn");
   const openStats = document.getElementById("open-stats");
 
-  // Affichage de l'option "Ajout automatique" selon la connexion
-  if (autoAddContainer) {
-    autoAddContainer.style.display = isLoggedIn ? "block" : "none";
-  }
+  // // Affichage de l'option "Ajout automatique" selon la connexion
+  // if (autoAddContainer) {
+  //   autoAddContainer.style.display = isLoggedIn ? "block" : "none";
+  // }
 
   // Chargement des préférences
   const { isTrackingActive, autoAdd, threshold } = await browser.storage.local.get([
@@ -210,6 +212,23 @@ async function proceedToggleExtension() {
   await updateOptionsUI();
 }
 
+async function displayLoadingMessage() {
+  const statusContainer = document.getElementById('pyodide-loading');
+  if (!statusContainer) return;
+  
+  const { pyodideSimplemmaReady } = await browser.storage.local.get("pyodideSimplemmaReady");
+  const accessToken = await getAccessToken();
+
+  if (!accessToken) {
+    statusContainer.innerHTML = "";
+  } else if (!pyodideSimplemmaReady) {
+    statusContainer.innerHTML = "<p style='color: gray; text-align: center; font-size: 10px;'>Activation en cours, veuillez patienter...</p>";
+  } else {
+    statusContainer.innerHTML = "";
+  }
+}
+
+
 // ==========================
 // Écouteurs d'événements
 // ==========================
@@ -220,6 +239,18 @@ document.addEventListener("DOMContentLoaded", async () => {
   await updateExtensionToggleButton();
 });
 
+document.addEventListener("DOMContentLoaded", () => {
+  displayLoadingMessage();
+  const loadingCheck = setInterval(async () => {
+    await displayLoadingMessage();
+    const { pyodideSimplemmaReady } = await browser.storage.local.get("pyodideSimplemmaReady");
+    if (pyodideSimplemmaReady) {
+      clearInterval(loadingCheck);
+    }
+  }, 500);
+});
+
+
 // Gestion des statistiques et options
 document.getElementById("toggleStatsBtn")?.addEventListener("click", async () => {
   const accessToken = await getAccessToken();
@@ -229,7 +260,6 @@ document.getElementById("toggleStatsBtn")?.addEventListener("click", async () =>
   const newState = !current.isTrackingActive;
   await browser.storage.local.set({ isTrackingActive: newState });
 
-  // Si désactivation, désactiver aussi l'ajout automatique
   if (!newState) {
     await browser.storage.local.set({ autoAdd: false });
     document.getElementById("auto-add").checked = false;
@@ -240,11 +270,9 @@ document.getElementById("toggleStatsBtn")?.addEventListener("click", async () =>
   document.getElementById("toggleStatsBtn").textContent = newState ? "Désactiver les statistiques" : "Activer les statistiques";
   document.getElementById("stats-options").classList.toggle("hidden", !newState);
 
-  // Envoi du message au background pour le changement de tracking
   browser.runtime.sendMessage({ command: "toggle-stats", isActive: newState });
   if (newState) {
     log("[Popup] Demande d'initialisation de Pyodide et Simplemma");
-    // Garder la commande de file 2 pour l'initialisation de Pyodide/Simplemma
     browser.runtime.sendMessage({ command: "pyodide-simplemma" });
   }
 });
@@ -298,10 +326,8 @@ browser.runtime.onMessage.addListener(async (message) => {
     await updateConnectionButton();
     await updateOptionsUI();
     await updateLanguageSelection();
-    // Possibilité de mettre à jour d'autres éléments via le message
-  } else if (message.action === "showNotification") {
-    // Gestion des notifications si besoin
-    showNotification(message.text);
+  } else if (message.action === "notify") {
+    alert(message.message);
   }
 });
 
@@ -331,3 +357,16 @@ function showNotification(message) {
     console.error("❌ Impossible d'afficher la notification : élément manquant.");
   }
 }
+
+function handleWorkerMessage(event) {
+  const data = event.data;
+  console.log("[Background] Message du WebWorker :", data);
+  
+  if (data.type === "process-text" && data.status === "error") {
+    browser.runtime.sendMessage({
+      action: "notify",
+      message: data.message
+    });
+    return;
+  }
+}
diff --git a/src/sidebar/sidebar.js b/src/sidebar/sidebar.js
index 48b3e3727a3cf018be35202c364e8ee385c09c1f..fb257195746d627e04290543a4f93b08718f2e1e 100644
--- a/src/sidebar/sidebar.js
+++ b/src/sidebar/sidebar.js
@@ -46,8 +46,6 @@ function updateAuthButton(isLoggedIn) {
   }
 }
 
-
-
 function toggleElementsVisibility(isLoggedIn) {
   const elementsToShowOrHide = [
     { id: "add-to-lexiques", shouldShow: isLoggedIn },
@@ -578,7 +576,6 @@ browser.runtime.onMessage.addListener(async (message) => {
 // ─────────────────────────────────────────────────────────────────────────────
 document.addEventListener("DOMContentLoaded", async () => {
   log("📦 DOM entièrement chargé. Initialisation de la sidebar.");
-  
   authToken = await getAuthTokenFromStorage();
   window.authToken = authToken;
   await refreshSidebarState();
diff --git a/src/utils/stats.js b/src/utils/stats.js
index 213f34a91d1b8f59401d25c0ccf9f5481fa0c672..c03c4a1077084b3ec238dee7c5e705b734c2bbb4 100644
--- a/src/utils/stats.js
+++ b/src/utils/stats.js
@@ -111,25 +111,12 @@
                 if (!readContent.has(text)) {
                     startReadingTimer(element, text, minReadTime);
                 }
-                highlightElement(element, true);
             } else {
                 stopReadingTimer(element, text);
-                highlightElement(element, false);
             }
         });
     }
     
-    /**
-     * Ajoute une bordure rouge autour de l'élément
-     */
-    function highlightElement(element, shouldHighlight) {
-        if (shouldHighlight) {
-            element.style.outline = "3px solid red";
-        } else {
-            element.style.outline = "";
-            removeReadingIndicator(element);
-        }
-    }
     
     /**
      * Démarre un chronomètre pour vérifier si l'élément est lu
diff --git a/src/workers/pyodide_worker.js b/src/workers/pyodide_worker.js
index ca68c90ce2c935777186b5aad206ba938485ca45..29f199caabc4566fe2eef1df19e657eb4a8184f8 100644
--- a/src/workers/pyodide_worker.js
+++ b/src/workers/pyodide_worker.js
@@ -30,16 +30,16 @@ self.onmessage = async (event) => {
       if (!pyodideLoaded) {
         console.log("[Worker] Chargement de Pyodide...");
         try {
-          importScripts(`${LATEST_BASE_URL}pyodide.js`);
+            importScripts(`${LATEST_BASE_URL}pyodide.js`);
+            pyodide = await loadPyodide({ indexURL: LATEST_BASE_URL });
+            await pyodide.loadPackage("lzma");
+            await pyodide.loadPackage("micropip");
+            pyodideLoaded = true;
         } catch (err) {
           console.error("[Worker] Erreur lors de l'import de pyodide.js :", err);
           self.postMessage({ type: "pyodide-simplemma", status: "error", message: err.toString() });
           return;
         }
-        pyodide = await loadPyodide({ indexURL: LATEST_BASE_URL });
-        await pyodide.loadPackage("lzma");
-        await pyodide.loadPackage("micropip");
-        pyodideLoaded = true;
         console.log("[Worker] Pyodide chargé avec succès !");
       }
 
@@ -83,9 +83,10 @@ await main()
 
   // --- Traitement du texte envoyé par stats.js ---
   if (data.command === "process-text") {
-    if (!pyodideLoaded) {
+    if (!pyodideLoaded || !simplemmaLoaded) {
+      const errorMessage = "Les statistiques ne sont pas encore activées. Veuillez patienter..."
       console.log("[Worker] Pyodide non chargé.");
-      self.postMessage({ type: "process-text", status: "error", message: "Pyodide pas encore chargé" });
+      self.postMessage({ type: "process-text", status: "error", message: errorMessage });
       return;
     }
     console.log("[Worker] Texte reçu pour analyse :", data.text);