lists.torproject.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

tbb-commits

Thread Start a new thread
Threads by month
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
tbb-commits@lists.torproject.org

  • 1 participants
  • 19730 discussions
[Git][tpo/applications/tor-browser-bundle-testsuite][main] Bug 40092: Remove torbrowser-nightly-linux-i686
by boklm (@boklm) 24 Nov '25

24 Nov '25
boklm pushed to branch main at The Tor Project / Applications / tor-browser-bundle-testsuite Commits: 0d7e065b by Nicolas Vigier at 2025-11-24T16:54:15+01:00 Bug 40092: Remove torbrowser-nightly-linux-i686 See tor-browser-build#41601. - - - - - 1 changed file: - TBBTestSuite/TestSuite/TorBrowserBuild.pm Changes: ===================================== TBBTestSuite/TestSuite/TorBrowserBuild.pm ===================================== @@ -55,27 +55,6 @@ sub set_tests { publish_dir => 'nightly-linux-x86_64', projectname => 'torbrowser', }, - { - name => 'torbrowser-nightly-linux-i686', - descr => 'build tor-browser nightly linux-i686', - type => 'rbm_build', - project => 'release', - targets => [ - 'noversiondir', - 'nightly', - 'browser-single-platform', - 'browser-linux-i686', - 'torbrowser', - ], - publish_dir => 'nightly-linux-i686', - }, - { - name => 'torbrowser-incrementals-nightly-linux-i686', - descr => 'create incrementals for tor-browser nightly linux-i686', - type => 'make_incrementals', - publish_dir => 'nightly-linux-i686', - projectname => 'torbrowser', - }, { name => 'torbrowser-nightly-linux-aarch64', descr => 'build tor-browser nightly linux-aarch64', View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-145.0a1-16.0-1] fixup! BB 43615: Add Gitlab Issue and Merge Request templates
by Pier Angelo Vendrame (@pierov) 24 Nov '25

24 Nov '25
Pier Angelo Vendrame pushed to branch base-browser-145.0a1-16.0-1 at The Tor Project / Applications / Tor Browser Commits: e2ed272c by Pier Angelo Vendrame at 2025-11-24T17:37:07+01:00 fixup! BB 43615: Add Gitlab Issue and Merge Request templates Update GitLab templates. Avoid mentioning existing issues/MRs, and update the channels. - - - - - 3 changed files: - .gitlab/issue_templates/040 Feature.md - .gitlab/issue_templates/050 Backport.md - .gitlab/merge_request_templates/Default.md Changes: ===================================== .gitlab/issue_templates/040 Feature.md ===================================== @@ -18,11 +18,11 @@ Provide an overview of the technical/implementation aspects of this feature ### Proposal <!-- Add links to associated proposal issues (or delete block) --> -- tor-browser#12345 +- tor-browser#xxxxx ### Design <!-- Add links to associated design issues (or delete block) --> -- tpo/UX/Design#123 +- tpo/UX/Design#xyz <!-- Do not edit beneath this line <3 --> ===================================== .gitlab/issue_templates/050 Backport.md ===================================== @@ -13,12 +13,12 @@ please ensure the title has the following format: ## Bookkeeping ### Issue(s) -- tor-browser#12345 -- mullvad-browser#123 -- https://bugzilla.mozilla.org/show_bug.cgi?id=1234567 +- tor-browser#xxxxx +- mullvad-browser#xyz +- https://bugzilla.mozilla.org/show_bug.cgi?id=xxxxxxx ### Merge Request(s) -- tor-browser!123 +- tor-browser!xxxx ### Target Channels ===================================== .gitlab/merge_request_templates/Default.md ===================================== @@ -27,8 +27,8 @@ #### Target Channels -- [ ] **Alpha**: esr140-15.0 -- [ ] **Stable**: esr128-14.5 +- [ ] **Alpha**: rapid release, 16.0 +- [ ] **Stable**: esr140-15.0 - [ ] **Legacy**: esr115-13.5 ### Backporting View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/e2ed272… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/e2ed272… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-145.0a1-16.0-1] 3 commits: fixup! BB 43140: Tighten up fonts on Linux.
by Pier Angelo Vendrame (@pierov) 24 Nov '25

24 Nov '25
Pier Angelo Vendrame pushed to branch base-browser-145.0a1-16.0-1 at The Tor Project / Applications / Tor Browser Commits: 86495864 by Pier Angelo Vendrame at 2025-11-24T16:33:27+01:00 fixup! BB 43140: Tighten up fonts on Linux. BB 44315: Fix the fonts on the updater. - - - - - 6d3f1030 by Pier Angelo Vendrame at 2025-11-24T16:35:28+01:00 fixup! BB 43525: Skip Remote Settings for search engine customization. MB 483: Ship DDG without AI as a bundled search engine. MB 487: Use custom order for search engines. - - - - - 7d9ea4aa by Beatriz Rizental at 2025-11-24T16:35:51+01:00 fixup! Tweaks to the build system Skip downloading WPT artifacts when generating test artifacts. - - - - - 5 changed files: - testing/testsuite-targets.mk - toolkit/components/search/content/base-browser-search-engine-icons.json - toolkit/components/search/content/base-browser-search-engines.json - toolkit/components/search/tests/xpcshell/test_base_browser.js - toolkit/mozapps/update/updater/updater.cpp Changes: ===================================== testing/testsuite-targets.mk ===================================== @@ -151,7 +151,7 @@ download-wpt-manifest: $(call py_action,download_wpt_manifest) define package_archive -package-tests-$(1): stage-all package-tests-prepare-dest download-wpt-manifest +package-tests-$(1): stage-all package-tests-prepare-dest $$(call py_action,test_archive, \ $(1) \ '$$(abspath $$(test_archive_dir))/$$(PKG_BASENAME).$(1).tests.$(2)') ===================================== toolkit/components/search/content/base-browser-search-engine-icons.json ===================================== @@ -2,6 +2,9 @@ "ddg": [ { "url": "chrome://global/content/search/duckduckgo.ico", "imageSize": 32 } ], + "ddg-noai": [ + { "url": "chrome://global/content/search/duckduckgo.ico", "imageSize": 32 } + ], "startpage": [ { "url": "chrome://global/content/search/startpage-16.png", ===================================== toolkit/components/search/content/base-browser-search-engines.json ===================================== @@ -17,6 +17,24 @@ "recordType": "engine", "variants": [{ "environment": { "allRegionsAndLocales": true } }] }, + { + "base": { + "aliases": ["ddgnoai"], + "classification": "general", + "name": "DuckDuckGo (no AI)", + "urls": { + "search": { + "base": "https://noai.duckduckgo.com/", + "params": [], + "searchTermParamName": "q" + } + } + }, + "id": "91687f02-56dd-4fef-ba26-bf139dff3166", + "identifier": "ddg-noai", + "recordType": "engine", + "variants": [{ "environment": { "allRegionsAndLocales": true } }] + }, { "base": { "aliases": ["startpage", "sp"], @@ -39,5 +57,14 @@ "recordType": "defaultEngines", "globalDefault": "ddg", "globalDefaultPrivate": "ddg" + }, + { + "recordType": "engineOrders", + "orders": [ + { + "environment": { "allRegionsAndLocales": true }, + "order": ["ddg", "ddg-noai", "startpage"] + } + ] } ] ===================================== toolkit/components/search/tests/xpcshell/test_base_browser.js ===================================== @@ -4,12 +4,15 @@ /** * This tests the SearchService to check our override of the remote settings is * working as expected. + * + * When adding new engines, it should be enough to change expectedURLs below. */ "use strict"; const expectedURLs = { ddg: "https://duckduckgo.com/?q=test", + "ddg-noai": "https://noai.duckduckgo.com/?q=test", startpage: "https://www.startpage.com/sp/search?q=test", }; const defaultEngine = "ddg"; @@ -45,3 +48,11 @@ add_task(function test_checkSearchURLs() { Assert.equal(foundUrl, url, `The URL of ${engine.name} is not altered.`); } }); + +add_task(async function test_iconsDoesNotFail() { + for (const id of Object.keys(expectedURLs)) { + const engine = Services.search.getEngineById(id); + // No need to assert anything, as in case of error this method should throw. + await engine.getIconURL(); + } +}); ===================================== toolkit/mozapps/update/updater/updater.cpp ===================================== @@ -3326,6 +3326,10 @@ int NS_main(int argc, NS_tchar** argv) { putenv(const_cast<char*>("MOZ_USING_SERVICE=")); #endif +#if defined(XP_UNIX) && !defined(XP_MACOSX) + unsetenv("FONTCONFIG_PATH"); +#endif + if (argc == 2 && NS_tstrcmp(argv[1], NS_T("--channels-allowed")) == 0) { #ifdef MOZ_VERIFY_MAR_SIGNATURE int rv = PopulategMARStrings(); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c9beb7… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c9beb7… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-145.0a1-16.0-1] 6 commits: fixup! TB 7494: Create local home page for TBB.
by Pier Angelo Vendrame (@pierov) 24 Nov '25

24 Nov '25
Pier Angelo Vendrame pushed to branch tor-browser-145.0a1-16.0-1 at The Tor Project / Applications / Tor Browser Commits: 57842b65 by Henry Wilkes at 2025-11-20T17:47:36+01:00 fixup! TB 7494: Create local home page for TBB. TB 44314: Delay initial data for preloaded about:tor pages. - - - - - 7fe873d8 by Pier Angelo Vendrame at 2025-11-20T17:47:37+01:00 fixup! BB 43140: Tighten up fonts on Linux. BB 44315: Fix the fonts on the updater. - - - - - 5079b9ac by Pier Angelo Vendrame at 2025-11-20T17:47:38+01:00 fixup! BB 43525: Skip Remote Settings for search engine customization. MB 483: Ship DDG without AI as a bundled search engine. MB 487: Use custom order for search engines. - - - - - f940028c by Pier Angelo Vendrame at 2025-11-20T17:47:38+01:00 fixup! TB 42891: Set the bundled search engine for Tor Browser. MB 487: Use custom order for search engines. - - - - - 81b52668 by Beatriz Rizental at 2025-11-20T17:47:39+01:00 fixup! Tweaks to the build system Skip downloading WPT artifacts when generating test artifacts. - - - - - 851147b1 by clairehurst at 2025-11-20T17:47:40+01:00 fixup! [android] Disable features and functionality - - - - - 10 changed files: - browser/components/abouttor/AboutTorChild.sys.mjs - browser/components/abouttor/AboutTorParent.sys.mjs - browser/components/abouttor/content/aboutTor.js - browser/components/tabbrowser/NewTabPagePreloading.sys.mjs - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt - testing/testsuite-targets.mk - toolkit/components/search/content/base-browser-search-engine-icons.json - toolkit/components/search/content/base-browser-search-engines.json - toolkit/components/search/tests/xpcshell/test_base_browser.js - toolkit/mozapps/update/updater/updater.cpp Changes: ===================================== browser/components/abouttor/AboutTorChild.sys.mjs ===================================== @@ -6,11 +6,9 @@ export class AboutTorChild extends JSWindowActorChild { switch (event.type) { case "DOMContentLoaded": this.sendQuery("AboutTor:GetInitialData").then(data => { - const initialDataEvent = new this.contentWindow.CustomEvent( - "InitialData", - { detail: Cu.cloneInto(data, this.contentWindow) } - ); - this.contentWindow.dispatchEvent(initialDataEvent); + if (data) { + this.#dispatchInitialData(data); + } }); break; case "SubmitSearchOnionize": @@ -36,6 +34,9 @@ export class AboutTorChild extends JSWindowActorChild { receiveMessage(message) { switch (message.name) { + case "AboutTor:DelayedInitialData": + this.#dispatchInitialData(message.data); + break; case "AboutTor:DismissYEC": { this.contentWindow.dispatchEvent( new this.contentWindow.CustomEvent("DismissYEC") @@ -45,4 +46,16 @@ export class AboutTorChild extends JSWindowActorChild { } return undefined; } + + /** + * Send the initial data to the page. + * + * @param {object} data - The data to send. + */ + #dispatchInitialData(data) { + const initialDataEvent = new this.contentWindow.CustomEvent("InitialData", { + detail: Cu.cloneInto(data, this.contentWindow), + }); + this.contentWindow.dispatchEvent(initialDataEvent); + } } ===================================== browser/components/abouttor/AboutTorParent.sys.mjs ===================================== @@ -8,6 +8,8 @@ ChromeUtils.defineESModuleGetters(lazy, { }); const initializedActors = new Set(); +const onionizePref = "torbrowser.homepage.search.onionize"; +const surveyDismissVersionPref = "torbrowser.homepage.survey.dismiss_version"; /** * Actor parent class for the about:tor page. @@ -21,35 +23,76 @@ export class AboutTorParent extends JSWindowActorParent { */ static #dismissYEC = false; + /** + * Whether this instance has a preloaded browser. + * + * @type {boolean} + */ + #preloaded = false; + + /** + * Method to be called when the browser corresponding to this actor has its + * preloadedState attribute removed. + */ + preloadedRemoved() { + if (!this.#preloaded) { + return; + } + this.#preloaded = false; + // Send in the initial data now that the page is actually going to be + // visible. + this.sendAsyncMessage( + "AboutTor:DelayedInitialData", + this.#getInitialData() + ); + } + + /** + * Get the initial data for the page when it is about to be shown. + * + * @returns {object} - The initial data. + */ + #getInitialData() { + let appLocale = Services.locale.appLocaleAsBCP47; + if (appLocale === "ja-JP-macos") { + appLocale = "ja"; + } + + return { + torConnectEnabled: lazy.TorConnect.enabled, + messageData: lazy.AboutTorMessage.getNext(), + isStable: AppConstants.MOZ_UPDATE_CHANNEL === "release", + searchOnionize: Services.prefs.getBoolPref(onionizePref, false), + surveyDismissVersion: Services.prefs.getIntPref( + surveyDismissVersionPref, + 0 + ), + appLocale, + dismissYEC: AboutTorParent.#dismissYEC, + }; + } + didDestroy() { initializedActors.delete(this); } receiveMessage(message) { - const onionizePref = "torbrowser.homepage.search.onionize"; - const surveyDismissVersionPref = - "torbrowser.homepage.survey.dismiss_version"; switch (message.name) { case "AboutTor:GetInitialData": { // Track this actor to send future updates. initializedActors.add(this); - let appLocale = Services.locale.appLocaleAsBCP47; - if (appLocale === "ja-JP-macos") { - appLocale = "ja"; + const browser = this.browsingContext.top.embedderElement; + if (browser?.getAttribute("preloadedState") === "preloaded") { + // Wait until the page is actually about to be shown before sending + // the initial data. + // Otherwise the preloaded page might receive data that has expired by + // the time the page is shown. And it will iterate + // AboutTorMessage.getNext too early. See tor-browser#44314. + this.#preloaded = true; + return Promise.resolve(null); } - return Promise.resolve({ - torConnectEnabled: lazy.TorConnect.enabled, - messageData: lazy.AboutTorMessage.getNext(), - isStable: AppConstants.MOZ_UPDATE_CHANNEL === "release", - searchOnionize: Services.prefs.getBoolPref(onionizePref, false), - surveyDismissVersion: Services.prefs.getIntPref( - surveyDismissVersionPref, - 0 - ), - appLocale, - dismissYEC: AboutTorParent.#dismissYEC, - }); + return Promise.resolve(this.#getInitialData()); } case "AboutTor:SetSearchOnionize": Services.prefs.setBoolPref(onionizePref, message.data); ===================================== browser/components/abouttor/content/aboutTor.js ===================================== @@ -562,11 +562,35 @@ const YecArea = { }, }; +let gInitialData = false; +let gLoaded = false; + +function maybeComplete() { + if (!gInitialData || !gLoaded) { + return; + } + // Wait to show the content when the l10n population has completed. + if (document.hasPendingL10nMutations) { + window.addEventListener( + "L10nMutationsFinished", + () => { + document.body.classList.add("initialized"); + }, + { once: true } + ); + } else { + document.body.classList.add("initialized"); + } +} + window.addEventListener("DOMContentLoaded", () => { SearchWidget.init(); MessageArea.init(); SurveyArea.init(); YecArea.init(); + + gLoaded = true; + maybeComplete(); }); window.addEventListener("InitialData", event => { @@ -584,18 +608,8 @@ window.addEventListener("InitialData", event => { SurveyArea.potentiallyShow(surveyDismissVersion, isStable, appLocale); YecArea.potentiallyShow(dismissYEC, isStable, appLocale); - // Wait to show the content when the l10n population has completed. - if (document.hasPendingL10nMutations) { - window.addEventListener( - "L10nMutationsFinished", - () => { - document.body.classList.add("initialized"); - }, - { once: true } - ); - } else { - document.body.classList.add("initialized"); - } + gInitialData = true; + maybeComplete(); }); window.addEventListener("DismissYEC", () => { ===================================== browser/components/tabbrowser/NewTabPagePreloading.sys.mjs ===================================== @@ -178,6 +178,24 @@ export let NewTabPagePreloading = { this.browserCounts[countKey]--; browser.removeAttribute("preloadedState"); browser.setAttribute("autocompletepopup", "PopupAutoComplete"); + // Let a preloaded about:tor page know that it is no longer preloaded + // (about to be shown). See tor-browser#44314. + // NOTE: We call the AboutTorParent instance directly because it is not + // reliable for the AboutTorParent to wait for the "preloadedState" + // attribute to change via a MutationObserver on the browsingContext's + // browser element because the AboutTorParent's browsingContext's browser + // element may be swapped out. E.g. see the "SwapDocShells" event. + // NOTE: We assume that this is the only place that removes the + // "preloadedState" attribute. + // NOTE: Alternatively, we could have the AboutTorParent wait for + // MozAfterPaint, but this would be slightly delayed. + try { + browser.browsingContext?.currentWindowGlobal + ?.getActor("AboutTor") + .preloadedRemoved(); + } catch { + // Not an about:tor page with an AboutTorParent instance. + } } return browser; ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt ===================================== @@ -203,11 +203,9 @@ open class DefaultToolbarMenu( */ @VisibleForTesting(otherwise = PRIVATE) fun shouldShowTranslations(): Boolean { - val isEngineSupported = store.state.translationEngine.isEngineSupported - return selectedSession?.let { - isEngineSupported == true && - FxNimbus.features.translations.value().mainFlowBrowserMenuEnabled - } ?: false + // We need this because in FxNimbus.kt, mainFlowToolbarEnabled defaults to true + // ```mainFlowToolbarEnabled: Boolean = true``` + return false // bug_44304 Hide broken translat page action. } /** ===================================== testing/testsuite-targets.mk ===================================== @@ -151,7 +151,7 @@ download-wpt-manifest: $(call py_action,download_wpt_manifest) define package_archive -package-tests-$(1): stage-all package-tests-prepare-dest download-wpt-manifest +package-tests-$(1): stage-all package-tests-prepare-dest $$(call py_action,test_archive, \ $(1) \ '$$(abspath $$(test_archive_dir))/$$(PKG_BASENAME).$(1).tests.$(2)') ===================================== toolkit/components/search/content/base-browser-search-engine-icons.json ===================================== @@ -2,6 +2,9 @@ "ddg": [ { "url": "chrome://global/content/search/duckduckgo.ico", "imageSize": 32 } ], + "ddg-noai": [ + { "url": "chrome://global/content/search/duckduckgo.ico", "imageSize": 32 } + ], "ddg-onion": [ { "url": "chrome://global/content/search/duckduckgo.ico", "imageSize": 32 } ], ===================================== toolkit/components/search/content/base-browser-search-engines.json ===================================== @@ -17,6 +17,24 @@ "recordType": "engine", "variants": [{ "environment": { "allRegionsAndLocales": true } }] }, + { + "base": { + "aliases": ["ddgnoai"], + "classification": "general", + "name": "DuckDuckGo (no AI)", + "urls": { + "search": { + "base": "https://noai.duckduckgo.com/", + "params": [], + "searchTermParamName": "q" + } + } + }, + "id": "91687f02-56dd-4fef-ba26-bf139dff3166", + "identifier": "ddg-noai", + "recordType": "engine", + "variants": [{ "environment": { "allRegionsAndLocales": true } }] + }, { "base": { "aliases": ["ddgonion"], @@ -93,5 +111,21 @@ "recordType": "defaultEngines", "globalDefault": "ddg", "globalDefaultPrivate": "ddg" + }, + { + "recordType": "engineOrders", + "orders": [ + { + "environment": { "allRegionsAndLocales": true }, + "order": [ + "ddg", + "ddg-noai", + "ddg-onion", + "startpage", + "startpage-onion", + "wikipedia" + ] + } + ] } ] ===================================== toolkit/components/search/tests/xpcshell/test_base_browser.js ===================================== @@ -4,12 +4,15 @@ /** * This tests the SearchService to check our override of the remote settings is * working as expected. + * + * When adding new engines, it should be enough to change expectedURLs below. */ "use strict"; const expectedURLs = { ddg: "https://duckduckgo.com/?q=test", + "ddg-noai": "https://noai.duckduckgo.com/?q=test", "ddg-onion": "https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/?q=t…", startpage: "https://www.startpage.com/sp/search?q=test", @@ -50,3 +53,11 @@ add_task(function test_checkSearchURLs() { Assert.equal(foundUrl, url, `The URL of ${engine.name} is not altered.`); } }); + +add_task(async function test_iconsDoesNotFail() { + for (const id of Object.keys(expectedURLs)) { + const engine = Services.search.getEngineById(id); + // No need to assert anything, as in case of error this method should throw. + await engine.getIconURL(); + } +}); ===================================== toolkit/mozapps/update/updater/updater.cpp ===================================== @@ -3474,6 +3474,10 @@ int NS_main(int argc, NS_tchar** argv) { putenv(const_cast<char*>("MOZ_USING_SERVICE=")); #endif +#if defined(XP_UNIX) && !defined(XP_MACOSX) + unsetenv("FONTCONFIG_PATH"); +#endif + if (argc == 2 && NS_tstrcmp(argv[1], NS_T("--channels-allowed")) == 0) { #ifdef MOZ_VERIFY_MAR_SIGNATURE int rv = PopulategMARStrings(); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/4e3381… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/4e3381… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-140.5.0esr-15.0-1] fixup! BB 43525: Skip Remote Settings for search engine customization.
by Pier Angelo Vendrame (@pierov) 24 Nov '25

24 Nov '25
Pier Angelo Vendrame pushed to branch base-browser-140.5.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: f3db5fb9 by Pier Angelo Vendrame at 2025-11-24T10:57:39+01:00 fixup! BB 43525: Skip Remote Settings for search engine customization. Fix linting. - - - - - 1 changed file: - toolkit/components/search/content/base-browser-search-engines.json Changes: ===================================== toolkit/components/search/content/base-browser-search-engines.json ===================================== @@ -63,11 +63,7 @@ "orders": [ { "environment": { "allRegionsAndLocales": true }, - "order": [ - "ddg", - "ddg-noai", - "startpage" - ] + "order": ["ddg", "ddg-noai", "startpage"] } ] } View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f3db5fb… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f3db5fb… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-140.5.0esr-15.0-1] 2 commits: fixup! BB 43615: Add Gitlab Issue and Merge Request templates
by Pier Angelo Vendrame (@pierov) 24 Nov '25

24 Nov '25
Pier Angelo Vendrame pushed to branch mullvad-browser-140.5.0esr-15.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 3b7ce9ff by Pier Angelo Vendrame at 2025-11-24T10:34:54+01:00 fixup! BB 43615: Add Gitlab Issue and Merge Request templates Update GitLab templates. Avoid mentioning existing issues/MRs, and update the channels. - - - - - 9f32928c by Tom Ritter at 2025-11-24T10:34:55+01:00 Bug 1999126: Hide the value of the pdfjs pref from being disabled when RFP is enabled r=timhuang Differential Revision: https://phabricator.services.mozilla.com/D272930 - - - - - 8 changed files: - .gitlab/issue_templates/040 Feature.md - .gitlab/issue_templates/050 Backport.md - .gitlab/merge_request_templates/Default.md - browser/components/resistfingerprinting/test/browser/browser_navigator_iframes.js - dom/base/Navigator.cpp - dom/base/nsMimeTypeArray.cpp - dom/base/nsPluginArray.cpp - toolkit/components/resistfingerprinting/RFPTargets.inc Changes: ===================================== .gitlab/issue_templates/040 Feature.md ===================================== @@ -18,11 +18,11 @@ Provide an overview of the technical/implementation aspects of this feature ### Proposal <!-- Add links to associated proposal issues (or delete block) --> -- mullvad-browser#123 +- mullvad-browser#xyz ### Design <!-- Add links to associated design issues (or delete block) --> -- tpo/UX/Design#123 +- tpo/UX/Design#xyz <!-- Do not edit beneath this line <3 --> ===================================== .gitlab/issue_templates/050 Backport.md ===================================== @@ -13,12 +13,12 @@ please ensure the title has the following format: ## Bookkeeping ### Issue(s) -- tor-browser#12345 -- mullvad-browser#123 -- https://bugzilla.mozilla.org/show_bug.cgi?id=1234567 +- tor-browser#xxxxx +- mullvad-browser#xyz +- https://bugzilla.mozilla.org/show_bug.cgi?id=xxxxxxx ### Merge Request(s) -- tor-browser!123 +- tor-browser!xxxx ### Target Channels ===================================== .gitlab/merge_request_templates/Default.md ===================================== @@ -27,8 +27,8 @@ #### Target Channels -- [ ] **Alpha**: esr140-15.0 -- [ ] **Stable**: esr128-14.5 +- [ ] **Alpha**: rapid release, 16.0 +- [ ] **Stable**: esr140-15.0 ### Backporting ===================================== browser/components/resistfingerprinting/test/browser/browser_navigator_iframes.js ===================================== @@ -331,6 +331,13 @@ add_task(async () => { await simpleRFPTest(uri, testNavigator, expectedResults); }); +add_task(async () => { + expectedResults = structuredClone(allSpoofed); + await simpleRFPTest(uri, testNavigator, expectedResults, {}, [ + ["pdfjs.disabled", true], + ]); +}); + // In the below tests, we use the cross-origin domain as the base URI of a resource we fetch (on both the framer and framee) // so we can check that the HTTP header is as expected. ===================================== dom/base/Navigator.cpp ===================================== @@ -510,7 +510,11 @@ nsPluginArray* Navigator::GetPlugins(ErrorResult& aRv) { return mPlugins; } -bool Navigator::PdfViewerEnabled() { return !StaticPrefs::pdfjs_disabled(); } +bool Navigator::PdfViewerEnabled() { + return !StaticPrefs::pdfjs_disabled() || + nsContentUtils::ShouldResistFingerprinting(GetDocShell(), + RFPTarget::PdfjsSpoof); +} Permissions* Navigator::GetPermissions(ErrorResult& aRv) { if (!mWindow) { ===================================== dom/base/nsMimeTypeArray.cpp ===================================== @@ -79,7 +79,11 @@ void nsMimeTypeArray::GetSupportedNames(nsTArray<nsString>& retval) { } } -bool nsMimeTypeArray::ForceNoPlugins() { return StaticPrefs::pdfjs_disabled(); } +bool nsMimeTypeArray::ForceNoPlugins() { + return StaticPrefs::pdfjs_disabled() && + !nsContentUtils::ShouldResistFingerprinting( + mWindow ? mWindow->GetDocShell() : nullptr, RFPTarget::PdfjsSpoof); +} NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(nsMimeType, mPluginElement) ===================================== dom/base/nsPluginArray.cpp ===================================== @@ -97,7 +97,11 @@ void nsPluginArray::GetSupportedNames(nsTArray<nsString>& aRetval) { } } -bool nsPluginArray::ForceNoPlugins() { return StaticPrefs::pdfjs_disabled(); } +bool nsPluginArray::ForceNoPlugins() { + return StaticPrefs::pdfjs_disabled() && + !nsContentUtils::ShouldResistFingerprinting( + mWindow ? mWindow->GetDocShell() : nullptr, RFPTarget::PdfjsSpoof); +} NS_IMPL_CYCLE_COLLECTING_ADDREF(nsPluginArray) NS_IMPL_CYCLE_COLLECTING_RELEASE(nsPluginArray) ===================================== toolkit/components/resistfingerprinting/RFPTargets.inc ===================================== @@ -34,7 +34,8 @@ ITEM_VALUE(NavigatorHWConcurrency, 16) ITEM_VALUE(NavigatorOscpu, 17) ITEM_VALUE(NavigatorPlatform, 18) ITEM_VALUE(NavigatorUserAgent, 19) -// We no longer use PointerId, it can renamed and reused +// If the user disables PDFJS via a pref, we do not expose that to the web +ITEM_VALUE(PdfjsSpoof, 20) ITEM_VALUE(StreamVideoFacingMode, 21) ITEM_VALUE(JSDateTimeUTC, 22) ITEM_VALUE(JSMathFdlibm, 23) View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/c8… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/c8… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-140.5.0esr-15.0-1] 2 commits: fixup! BB 43615: Add Gitlab Issue and Merge Request templates
by Pier Angelo Vendrame (@pierov) 24 Nov '25

24 Nov '25
Pier Angelo Vendrame pushed to branch base-browser-140.5.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: aefedb35 by Pier Angelo Vendrame at 2025-11-24T10:31:55+01:00 fixup! BB 43615: Add Gitlab Issue and Merge Request templates Update GitLab templates. Avoid mentioning existing issues/MRs, and update the channels. - - - - - 6c7f3377 by Tom Ritter at 2025-11-24T10:31:58+01:00 Bug 1999126: Hide the value of the pdfjs pref from being disabled when RFP is enabled r=timhuang Differential Revision: https://phabricator.services.mozilla.com/D272930 - - - - - 8 changed files: - .gitlab/issue_templates/040 Feature.md - .gitlab/issue_templates/050 Backport.md - .gitlab/merge_request_templates/Default.md - browser/components/resistfingerprinting/test/browser/browser_navigator_iframes.js - dom/base/Navigator.cpp - dom/base/nsMimeTypeArray.cpp - dom/base/nsPluginArray.cpp - toolkit/components/resistfingerprinting/RFPTargets.inc Changes: ===================================== .gitlab/issue_templates/040 Feature.md ===================================== @@ -18,11 +18,11 @@ Provide an overview of the technical/implementation aspects of this feature ### Proposal <!-- Add links to associated proposal issues (or delete block) --> -- tor-browser#12345 +- tor-browser#xxxxx ### Design <!-- Add links to associated design issues (or delete block) --> -- tpo/UX/Design#123 +- tpo/UX/Design#xyz <!-- Do not edit beneath this line <3 --> ===================================== .gitlab/issue_templates/050 Backport.md ===================================== @@ -13,12 +13,12 @@ please ensure the title has the following format: ## Bookkeeping ### Issue(s) -- tor-browser#12345 -- mullvad-browser#123 -- https://bugzilla.mozilla.org/show_bug.cgi?id=1234567 +- tor-browser#xxxxx +- mullvad-browser#xyz +- https://bugzilla.mozilla.org/show_bug.cgi?id=xxxxxxx ### Merge Request(s) -- tor-browser!123 +- tor-browser!xxxx ### Target Channels ===================================== .gitlab/merge_request_templates/Default.md ===================================== @@ -27,8 +27,8 @@ #### Target Channels -- [ ] **Alpha**: esr140-15.0 -- [ ] **Stable**: esr128-14.5 +- [ ] **Alpha**: rapid release, 16.0 +- [ ] **Stable**: esr140-15.0 - [ ] **Legacy**: esr115-13.5 ### Backporting ===================================== browser/components/resistfingerprinting/test/browser/browser_navigator_iframes.js ===================================== @@ -331,6 +331,13 @@ add_task(async () => { await simpleRFPTest(uri, testNavigator, expectedResults); }); +add_task(async () => { + expectedResults = structuredClone(allSpoofed); + await simpleRFPTest(uri, testNavigator, expectedResults, {}, [ + ["pdfjs.disabled", true], + ]); +}); + // In the below tests, we use the cross-origin domain as the base URI of a resource we fetch (on both the framer and framee) // so we can check that the HTTP header is as expected. ===================================== dom/base/Navigator.cpp ===================================== @@ -510,7 +510,11 @@ nsPluginArray* Navigator::GetPlugins(ErrorResult& aRv) { return mPlugins; } -bool Navigator::PdfViewerEnabled() { return !StaticPrefs::pdfjs_disabled(); } +bool Navigator::PdfViewerEnabled() { + return !StaticPrefs::pdfjs_disabled() || + nsContentUtils::ShouldResistFingerprinting(GetDocShell(), + RFPTarget::PdfjsSpoof); +} Permissions* Navigator::GetPermissions(ErrorResult& aRv) { if (!mWindow) { ===================================== dom/base/nsMimeTypeArray.cpp ===================================== @@ -79,7 +79,11 @@ void nsMimeTypeArray::GetSupportedNames(nsTArray<nsString>& retval) { } } -bool nsMimeTypeArray::ForceNoPlugins() { return StaticPrefs::pdfjs_disabled(); } +bool nsMimeTypeArray::ForceNoPlugins() { + return StaticPrefs::pdfjs_disabled() && + !nsContentUtils::ShouldResistFingerprinting( + mWindow ? mWindow->GetDocShell() : nullptr, RFPTarget::PdfjsSpoof); +} NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(nsMimeType, mPluginElement) ===================================== dom/base/nsPluginArray.cpp ===================================== @@ -97,7 +97,11 @@ void nsPluginArray::GetSupportedNames(nsTArray<nsString>& aRetval) { } } -bool nsPluginArray::ForceNoPlugins() { return StaticPrefs::pdfjs_disabled(); } +bool nsPluginArray::ForceNoPlugins() { + return StaticPrefs::pdfjs_disabled() && + !nsContentUtils::ShouldResistFingerprinting( + mWindow ? mWindow->GetDocShell() : nullptr, RFPTarget::PdfjsSpoof); +} NS_IMPL_CYCLE_COLLECTING_ADDREF(nsPluginArray) NS_IMPL_CYCLE_COLLECTING_RELEASE(nsPluginArray) ===================================== toolkit/components/resistfingerprinting/RFPTargets.inc ===================================== @@ -34,7 +34,8 @@ ITEM_VALUE(NavigatorHWConcurrency, 16) ITEM_VALUE(NavigatorOscpu, 17) ITEM_VALUE(NavigatorPlatform, 18) ITEM_VALUE(NavigatorUserAgent, 19) -// We no longer use PointerId, it can renamed and reused +// If the user disables PDFJS via a pref, we do not expose that to the web +ITEM_VALUE(PdfjsSpoof, 20) ITEM_VALUE(StreamVideoFacingMode, 21) ITEM_VALUE(JSDateTimeUTC, 22) ITEM_VALUE(JSMathFdlibm, 23) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/0dd468… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/0dd468… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.5.0esr-15.0-1] Bug 1999126: Hide the value of the pdfjs pref from being disabled when RFP is enabled r=timhuang
by Pier Angelo Vendrame (@pierov) 24 Nov '25

24 Nov '25
Pier Angelo Vendrame pushed to branch tor-browser-140.5.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: d2aece5a by Tom Ritter at 2025-11-24T09:42:57+01:00 Bug 1999126: Hide the value of the pdfjs pref from being disabled when RFP is enabled r=timhuang Differential Revision: https://phabricator.services.mozilla.com/D272930 - - - - - 5 changed files: - browser/components/resistfingerprinting/test/browser/browser_navigator_iframes.js - dom/base/Navigator.cpp - dom/base/nsMimeTypeArray.cpp - dom/base/nsPluginArray.cpp - toolkit/components/resistfingerprinting/RFPTargets.inc Changes: ===================================== browser/components/resistfingerprinting/test/browser/browser_navigator_iframes.js ===================================== @@ -331,6 +331,13 @@ add_task(async () => { await simpleRFPTest(uri, testNavigator, expectedResults); }); +add_task(async () => { + expectedResults = structuredClone(allSpoofed); + await simpleRFPTest(uri, testNavigator, expectedResults, {}, [ + ["pdfjs.disabled", true], + ]); +}); + // In the below tests, we use the cross-origin domain as the base URI of a resource we fetch (on both the framer and framee) // so we can check that the HTTP header is as expected. ===================================== dom/base/Navigator.cpp ===================================== @@ -510,7 +510,11 @@ nsPluginArray* Navigator::GetPlugins(ErrorResult& aRv) { return mPlugins; } -bool Navigator::PdfViewerEnabled() { return !StaticPrefs::pdfjs_disabled(); } +bool Navigator::PdfViewerEnabled() { + return !StaticPrefs::pdfjs_disabled() || + nsContentUtils::ShouldResistFingerprinting(GetDocShell(), + RFPTarget::PdfjsSpoof); +} Permissions* Navigator::GetPermissions(ErrorResult& aRv) { if (!mWindow) { ===================================== dom/base/nsMimeTypeArray.cpp ===================================== @@ -79,7 +79,11 @@ void nsMimeTypeArray::GetSupportedNames(nsTArray<nsString>& retval) { } } -bool nsMimeTypeArray::ForceNoPlugins() { return StaticPrefs::pdfjs_disabled(); } +bool nsMimeTypeArray::ForceNoPlugins() { + return StaticPrefs::pdfjs_disabled() && + !nsContentUtils::ShouldResistFingerprinting( + mWindow ? mWindow->GetDocShell() : nullptr, RFPTarget::PdfjsSpoof); +} NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(nsMimeType, mPluginElement) ===================================== dom/base/nsPluginArray.cpp ===================================== @@ -97,7 +97,11 @@ void nsPluginArray::GetSupportedNames(nsTArray<nsString>& aRetval) { } } -bool nsPluginArray::ForceNoPlugins() { return StaticPrefs::pdfjs_disabled(); } +bool nsPluginArray::ForceNoPlugins() { + return StaticPrefs::pdfjs_disabled() && + !nsContentUtils::ShouldResistFingerprinting( + mWindow ? mWindow->GetDocShell() : nullptr, RFPTarget::PdfjsSpoof); +} NS_IMPL_CYCLE_COLLECTING_ADDREF(nsPluginArray) NS_IMPL_CYCLE_COLLECTING_RELEASE(nsPluginArray) ===================================== toolkit/components/resistfingerprinting/RFPTargets.inc ===================================== @@ -34,7 +34,8 @@ ITEM_VALUE(NavigatorHWConcurrency, 16) ITEM_VALUE(NavigatorOscpu, 17) ITEM_VALUE(NavigatorPlatform, 18) ITEM_VALUE(NavigatorUserAgent, 19) -// We no longer use PointerId, it can renamed and reused +// If the user disables PDFJS via a pref, we do not expose that to the web +ITEM_VALUE(PdfjsSpoof, 20) ITEM_VALUE(StreamVideoFacingMode, 21) ITEM_VALUE(JSDateTimeUTC, 22) ITEM_VALUE(JSMathFdlibm, 23) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d2aece5… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d2aece5… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.5.0esr-15.0-1] fixup! BB 43615: Add Gitlab Issue and Merge Request templates
by Pier Angelo Vendrame (@pierov) 24 Nov '25

24 Nov '25
Pier Angelo Vendrame pushed to branch tor-browser-140.5.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 83df098d by Pier Angelo Vendrame at 2025-11-24T09:42:56+01:00 fixup! BB 43615: Add Gitlab Issue and Merge Request templates Update GitLab templates. Avoid mentioning existing issues/MRs, and update the channels. - - - - - 4 changed files: - .gitlab/issue_templates/040 Feature.md - .gitlab/issue_templates/050 Backport.md - .gitlab/issue_templates/070 Uplift.md - .gitlab/merge_request_templates/Default.md Changes: ===================================== .gitlab/issue_templates/040 Feature.md ===================================== @@ -18,11 +18,11 @@ Provide an overview of the technical/implementation aspects of this feature ### Proposal <!-- Add links to associated proposal issues (or delete block) --> -- tor-browser#12345 +- tor-browser#xxxxx ### Design <!-- Add links to associated design issues (or delete block) --> -- tpo/UX/Design#123 +- tpo/UX/Design#xyz <!-- Do not edit beneath this line <3 --> ===================================== .gitlab/issue_templates/050 Backport.md ===================================== @@ -13,12 +13,12 @@ please ensure the title has the following format: ## Bookkeeping ### Issue(s) -- tor-browser#12345 -- mullvad-browser#123 -- https://bugzilla.mozilla.org/show_bug.cgi?id=1234567 +- tor-browser#xxxxx +- mullvad-browser#xyz +- https://bugzilla.mozilla.org/show_bug.cgi?id=xxxxxxx ### Merge Request(s) -- tor-browser!123 +- tor-browser!xxxx ### Target Channels ===================================== .gitlab/issue_templates/070 Uplift.md ===================================== @@ -9,11 +9,11 @@ This is an issue for tracking uplift of a patch-set to Firefox ## Book-keeping ### Gitlab Issue(s) -- tor-browser#12345 -- mullvad-browser#123 +- tor-browser#xxxxx +- mullvad-browser#xyz ### Merge Request(s) -- tor-browser!123 +- tor-browser!xyz ### Upstream Mozilla Issue(s): - https://bugzilla.mozilla.org/show_bug.cgi?id=12345 ===================================== .gitlab/merge_request_templates/Default.md ===================================== @@ -27,8 +27,8 @@ #### Target Channels -- [ ] **Alpha**: esr140-15.0 -- [ ] **Stable**: esr128-14.5 +- [ ] **Alpha**: rapid release, 16.0 +- [ ] **Stable**: esr140-15.0 - [ ] **Legacy**: esr115-13.5 ### Backporting View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/83df098… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/83df098… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.5.0esr-15.0-1] Bug 1941154 - Use shader to clear alpha targets on Adreno 510. a=diannaS DONTBUILD
by ma1 (@ma1) 24 Nov '25

24 Nov '25
ma1 pushed to branch tor-browser-140.5.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: f69a12e8 by Jamie Nicol at 2025-11-21T22:03:59+01:00 Bug 1941154 - Use shader to clear alpha targets on Adreno 510. a=diannaS DONTBUILD Recent refactoring of render target initialization caused stale contents of alpha render targets to be used as clip masks instead of valid masks on Adreno 510 devices. Presumably we were fortunate not to be hitting this previously, and it was regressed by a subtle accidental behavioural change introduced by the refactor. Using quads to clear alpha targets appears to be the most robust way of avoiding it. Original Revision: https://phabricator.services.mozilla.com/D260105 Differential Revision: https://phabricator.services.mozilla.com/D260301 - - - - - 1 changed file: - gfx/wr/webrender/src/device/gl.rs Changes: ===================================== gfx/wr/webrender/src/device/gl.rs ===================================== @@ -1819,7 +1819,10 @@ impl Device { // On Mali-Txxx devices we have observed crashes during draw calls when rendering // to an alpha target immediately after using glClear to clear regions of it. // Using a shader to clear the regions avoids the crash. See bug 1638593. - let supports_alpha_target_clears = !is_mali_midgard(&renderer_name); + // On Adreno 510 devices we have seen garbage being used as masks when clearing + // alpha targets with glClear. Using quads to clear avoids this. See bug 1941154. + let is_adreno_510 = renderer_name.starts_with("Adreno (TM) 510"); + let supports_alpha_target_clears = !is_mali_midgard(&renderer_name) && !is_adreno_510; // On Adreno 4xx devices with older drivers we have seen render tasks to alpha targets have // no effect unless the target is fully cleared prior to rendering. See bug 1714227. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f69a12e… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f69a12e… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • ...
  • 1973
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.