From f377174bf2bb6051d2158a324e821d25e24ac900 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Tue, 28 Oct 2025 14:56:52 +0100 Subject: [PATCH 1/3] Mark all the unknown achievements as done and remove the survey one during the installation --- src/js/background/backgroundLogic.js | 15 +++++++++++++++ src/js/popup.js | 25 ++++++++++++++++--------- src/manifest.json | 2 +- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/js/background/backgroundLogic.js b/src/js/background/backgroundLogic.js index 7f347b8..fb90ba6 100644 --- a/src/js/background/backgroundLogic.js +++ b/src/js/background/backgroundLogic.js @@ -38,6 +38,7 @@ const backgroundLogic = { browser.runtime.onInstalled.addListener((details) => { this.updateTranslationInManifest(); this._undoDefault820SortTabsKeyboardShortcut(details); + this._removeSurveyAchievement(); }); browser.runtime.onStartup.addListener(this.updateTranslationInManifest); }, @@ -68,6 +69,20 @@ const backgroundLogic = { } }, + /** + * We left an achievement entry in storage during a user research study in + * version 8.3.1. This method removes that entry to prevent broken logic in + * the achievement views. + */ + async _removeSurveyAchievement() { + const achievementsStorage = await browser.storage.local.get({ achievements: [] }); + const achievements = achievementsStorage.achievements; + const filtered = achievements.filter(a => a.name !== "survey"); + if (filtered.length !== achievements.length) { + await browser.storage.local.set({achievements: filtered}); + } + }, + updateTranslationInManifest() { for (let index = 0; index < 10; index++) { const ajustedIndex = index + 1; // We want to start from 1 instead of 0 in the UI. diff --git a/src/js/popup.js b/src/js/popup.js index dd2492a..d552009 100644 --- a/src/js/popup.js +++ b/src/js/popup.js @@ -137,19 +137,26 @@ const Logic = { }, async showAchievementOrContainersListPanel() { - // Do we need to show an achievement panel? - let showAchievements = false; const achievementsStorage = await browser.storage.local.get({ achievements: [] }); - for (const achievement of achievementsStorage.achievements) { - if (!achievement.done) { - showAchievements = true; + const achievements = achievementsStorage.achievements; + + let saveAchivements = false; + for (const achievement of achievements.filter(a => !a.done)) { + if (achievement.name === "manyContainersOpened") { + this.showPanel(P_CONTAINERS_ACHIEVEMENT); + return; } + + // We have found an unknown achievement. Let's mark it as done. + achievement.done = true; + saveAchivements = true; } - if (showAchievements) { - this.showPanel(P_CONTAINERS_ACHIEVEMENT); - } else { - this.showPanel(P_CONTAINERS_LIST); + + if (saveAchivements) { + browser.storage.local.set({ achievements }); } + + this.showPanel(P_CONTAINERS_LIST); }, // In case the user wants to click multiple actions, diff --git a/src/manifest.json b/src/manifest.json index b533866..ad0c257 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Firefox Multi-Account Containers", - "version": "8.3.2", + "version": "8.3.4", "incognito": "not_allowed", "description": "__MSG_extensionDescription__", "icons": { From 1406ad34b4aef9ad774b33ec04326b9def30686e Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Tue, 28 Oct 2025 14:59:51 +0100 Subject: [PATCH 2/3] 8.3.4 version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b0911f8..d5e3409 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "testpilot-containers", "title": "Multi-Account Containers", "description": "Containers helps you keep all the parts of your online life contained in different tabs. Custom labels and color-coded tabs help keep different activities — like online shopping, travel planning, or checking work email — separate.", - "version": "8.3.2", + "version": "8.3.4", "author": "Andrea Marchesini, Luke Crouch, Lesley Norton, Kendall Werts, Maxx Crawford, Jonathan Kingston", "bugs": { "url": "https://github.com/mozilla/multi-account-containers/issues" From 0cf1e1473115301ec5baddc273c022acdbbd5a40 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Tue, 28 Oct 2025 15:01:04 +0100 Subject: [PATCH 3/3] Fix a typo --- src/js/popup.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/js/popup.js b/src/js/popup.js index d552009..e2a1203 100644 --- a/src/js/popup.js +++ b/src/js/popup.js @@ -140,7 +140,7 @@ const Logic = { const achievementsStorage = await browser.storage.local.get({ achievements: [] }); const achievements = achievementsStorage.achievements; - let saveAchivements = false; + let saveAchievements = false; for (const achievement of achievements.filter(a => !a.done)) { if (achievement.name === "manyContainersOpened") { this.showPanel(P_CONTAINERS_ACHIEVEMENT); @@ -149,10 +149,10 @@ const Logic = { // We have found an unknown achievement. Let's mark it as done. achievement.done = true; - saveAchivements = true; + saveAchievements = true; } - if (saveAchivements) { + if (saveAchievements) { browser.storage.local.set({ achievements }); }