Compare commits

...

17 Commits

Author SHA1 Message Date
Andrea Marchesini 8b70aca184 Merge pull request #2828 from mozilla/surveyFinal
Final survey. #2827
2025-11-19 09:49:20 +01:00
Andrea Marchesini 0539c12ba2 Final survey 2025-11-18 10:41:30 +01:00
Andrea Marchesini d6cb8f7707 Merge pull request #2795 from loganrosen/upgrade-web-ext
Upgrade web-ext to 8.10.0
2025-11-11 10:29:09 +01:00
Logan Rosen 89aa2ffe5b Merge branch 'main' into upgrade-web-ext 2025-11-10 23:07:44 -05:00
Andrea Marchesini f072ad478c Merge pull request #2817 from mozilla/consent
Data consent dialog not required + version bump
2025-10-30 09:50:51 +01:00
Andrea Marchesini 91a92bd446 Data consent dialog not required + version bump 2025-10-29 15:04:41 +01:00
Lesley Norton f0274d1e45 Merge pull request #2816 from mozilla/achievements
Mark all the unknown achievements as done and remove the survey one during the installation
2025-10-28 09:24:22 -05:00
Andrea Marchesini 0cf1e14731 Fix a typo 2025-10-28 15:01:04 +01:00
Andrea Marchesini 1406ad34b4 8.3.4 version bump 2025-10-28 14:59:51 +01:00
Andrea Marchesini f377174bf2 Mark all the unknown achievements as done and remove the survey one during the installation 2025-10-28 14:56:52 +01:00
Andrea Marchesini f6a59ab54e Merge pull request #2810 from mozilla/temp-hide-survey
Temporarily hide research recruitment and bump version
2025-10-17 20:32:56 +02:00
Lesley Norton 542161f8b4 Also bump version in manifest.json 2025-10-17 12:49:32 -05:00
Lesley Norton a5cbb48907 Bump version 2025-10-17 12:31:50 -05:00
Lesley Norton 56c5838d2d Revert "Merge pull request #2803 from mozilla/survey"
This reverts commit c34c1c1e04, reversing
changes made to adbf310a17.
2025-10-17 12:31:00 -05:00
Lesley Norton 35956f132a Revert "Temporarily hide engagement survey and bump version"
This reverts commit b4ad47bf04.
2025-10-17 12:30:08 -05:00
Lesley Norton b4ad47bf04 Temporarily hide engagement survey and bump version 2025-10-17 12:19:00 -05:00
Logan Rosen 6a5e48e8b3 Upgrade web-ext to 8.10.0 2025-09-20 16:47:25 -04:00
9 changed files with 2410 additions and 14615 deletions
+2325 -14553
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -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.1",
"version": "8.3.5",
"author": "Andrea Marchesini, Luke Crouch, Lesley Norton, Kendall Werts, Maxx Crawford, Jonathan Kingston",
"bugs": {
"url": "https://github.com/mozilla/multi-account-containers/issues"
@@ -26,7 +26,7 @@
"stylelint": "^13.5.0",
"stylelint-config-standard": "^20.0.0",
"stylelint-order": "^4.0.0",
"web-ext": "^7.5.0",
"web-ext": "^8.10.0",
"webextensions-jsdom": "^1.2.1"
},
"homepage": "https://github.com/mozilla/multi-account-containers#readme",
+33 -38
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 23 KiB

+15
View File
@@ -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.
+5 -4
View File
@@ -289,15 +289,16 @@ const messageHandler = {
return;
}
// Check if already shown in the past; if so, do not show again.
const { achievements } = await browser.storage.local.get({ achievements: [] });
const existing = achievements.find(a => a.name === "survey");
// Check if already scheduled in the past; if so, do not show again.
const achievementsStorage = await browser.storage.local.get({ achievements: [] });
const achievements = achievementsStorage.achievements;
const existing = achievements.find(a => a.name === "surveyFinal");
if (existing) {
return;
}
// Ensure the achievement exists and is pending.
achievements.push({ name: "survey", done: false });
achievements.push({ name: "surveyFinal", done: false });
browser.storage.local.set({ achievements });
browser.browserAction.setBadgeBackgroundColor({color: "rgba(0,217,0,255)"});
browser.browserAction.setBadgeText({text: "NEW"});
+18 -11
View File
@@ -138,21 +138,28 @@ const Logic = {
},
async showAchievementOrContainersListPanel() {
// Do we need to show an achievement panel?
const achievementsStorage = await browser.storage.local.get({ achievements: [] });
const pending = achievementsStorage.achievements.filter(a => !a.done);
const achievements = achievementsStorage.achievements;
if (pending.length) {
// Prefer showing the survey view first if present, otherwise fall back
// to the existing achievement panel.
const survey = pending.find(a => a.name === "survey");
if (survey) {
let saveAchievements = false;
for (const achievement of achievements.filter(a => !a.done)) {
if (achievement.name === "manyContainersOpened") {
this.showPanel(P_CONTAINERS_ACHIEVEMENT);
return;
}
if (achievement.name === "surveyFinal") {
this.showPanel(P_SURVEY_ACHIEVEMENT);
return;
}
this.showPanel(P_CONTAINERS_ACHIEVEMENT);
return;
// We have found an unknown achievement. Let's mark it as done.
achievement.done = true;
saveAchievements = true;
}
if (saveAchievements) {
browser.storage.local.set({ achievements });
}
this.showPanel(P_CONTAINERS_LIST);
@@ -2391,11 +2398,11 @@ Logic.registerPanel(P_SURVEY_ACHIEVEMENT, {
// This method is called when the object is registered.
initialize() {
Utils.addEnterHandler(document.querySelector("#survey-achievement-done-button"), async () => {
await Logic.setAchievementDone("survey");
await Logic.setAchievementDone("surveyFinal");
Logic.showPanel(P_CONTAINERS_LIST);
});
Utils.addEnterHandler(document.querySelector("#survey-button"), async () => {
await Logic.setAchievementDone("survey");
await Logic.setAchievementDone("surveyFinal");
window.close();
});
},
+5 -2
View File
@@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Firefox Multi-Account Containers",
"version": "8.3.1",
"version": "8.3.5",
"incognito": "not_allowed",
"description": "__MSG_extensionDescription__",
"icons": {
@@ -33,7 +33,10 @@
"browser_specific_settings": {
"gecko": {
"id": "@testpilot-containers",
"strict_min_version": "91.1.0"
"strict_min_version": "91.1.0",
"data_collection_permissions": {
"required": ["none"]
}
}
},
"commands": {
+6 -4
View File
@@ -108,11 +108,13 @@
<div class="panel survey-panel hide" id="survey-panel">
<img id="survey-img" alt="" src="/img/survey.svg" />
<h3 class="onboarding-title">Participate in Paid Research with Firefox</h3>
<p class="survey-blurb">We'd love to learn about your experiences with this add-on! Join a 1:1 Zoom interview and receive a $75 Amazon e-gift card or PayPal payment.</p>
<p class="survey-blurb">Thank you for helping us improve Firefox.</p>
<h3 class="onboarding-title">Help Improve Containers</h3>
<p class="survey-blurb">Please take 5 minutes to share your experiences with the add-on! This will help us effectively prioritize improvements.</p>
<p class="survey-blurb">Learn more about the research here.</p>
<br/><p class="survey-blurb">Thank you for using Multi-Account Containers!</p>
<p class="share-ctas survey-back">
<a class="cta-link onboarding-button keyboard-nav" href="https://qsurvey.mozilla.com/s3/Multi-Account-Containers-Research-Interest-Form" id="survey-button" target="_blank">Take Interest Survey</a>
<a class="cta-link onboarding-button keyboard-nav" href="https://mozilla.qualtrics.com/jfe/form/SV_2aSQMGyfp2DFLtI" id="survey-button" target="_blank">Take Survey</a>
</p>
<a href="#" id="survey-achievement-done-button">Back</a>
</div>