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
  • ----- 2026 -----
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 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
  • 20885 discussions
[Git][tpo/applications/mullvad-browser][mullvad-browser-153.0esr-16.0-1] fixup! BB 9173: Change the default Firefox profile directory to be relative.
by morgan (@morgan) 28 Jul '26

28 Jul '26
morgan pushed to branch mullvad-browser-153.0esr-16.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 88be53ba by Pier Angelo Vendrame at 2026-07-28T13:34:27+00:00 fixup! BB 9173: Change the default Firefox profile directory to be relative. BB 45074: Do not promote Tor Browser as a PDF viewer. This functionality does not work when in portable mode. - - - - - 1 changed file: - toolkit/actors/AboutPDFParent.sys.mjs Changes: ===================================== toolkit/actors/AboutPDFParent.sys.mjs ===================================== @@ -29,7 +29,14 @@ export class AboutPDFParent extends JSWindowActorParent { } #canSetDefaultPDFHandler() { - if (!ShellService || AppConstants.platform != "win") { + const xreDirProvider = Cc[ + "@mozilla.org/xre/directory-provider;1" + ].getService(Ci.nsIXREDirProvider); + if ( + !ShellService || + AppConstants.platform != "win" || + xreDirProvider.isPortableMode + ) { return false; } View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/88b… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/88b… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-153.0esr-16.0-1] fixup! BB 9173: Change the default Firefox profile directory to be relative.
by morgan (@morgan) 28 Jul '26

28 Jul '26
morgan pushed to branch tor-browser-153.0esr-16.0-1 at The Tor Project / Applications / Tor Browser Commits: 572ec37e by Pier Angelo Vendrame at 2026-07-28T13:33:06+00:00 fixup! BB 9173: Change the default Firefox profile directory to be relative. BB 45074: Do not promote Tor Browser as a PDF viewer. This functionality does not work when in portable mode. - - - - - 1 changed file: - toolkit/actors/AboutPDFParent.sys.mjs Changes: ===================================== toolkit/actors/AboutPDFParent.sys.mjs ===================================== @@ -29,7 +29,14 @@ export class AboutPDFParent extends JSWindowActorParent { } #canSetDefaultPDFHandler() { - if (!ShellService || AppConstants.platform != "win") { + const xreDirProvider = Cc[ + "@mozilla.org/xre/directory-provider;1" + ].getService(Ci.nsIXREDirProvider); + if ( + !ShellService || + AppConstants.platform != "win" || + xreDirProvider.isPortableMode + ) { return false; } View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/572ec37… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/572ec37… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-153.0esr-16.0-1] 6 commits: fixup! BB 41916: Letterboxing preferences UI
by henry (@henry) 28 Jul '26

28 Jul '26
henry pushed to branch tor-browser-153.0esr-16.0-1 at The Tor Project / Applications / Tor Browser Commits: 34750d3a by Henry Wilkes at 2026-07-28T13:15:52+00:00 fixup! BB 41916: Letterboxing preferences UI BB 44959: Swap about:manual link. - - - - - 1f471dc9 by Henry Wilkes at 2026-07-28T13:15:52+00:00 fixup! BB 40925: Implemented the Security Level component BB 44959: Swap about:manual link. - - - - - 2064e1c8 by Henry Wilkes at 2026-07-28T13:15:52+00:00 fixup! TB 11698: Incorporate Tor Browser Manual pages into Tor Browser TB 44959: Integrate the new manual. - - - - - 631c2c54 by Henry Wilkes at 2026-07-28T13:15:52+00:00 fixup! TB 30237: Add v3 onion services client authentication prompt TB 44959: Swap about:manual link. - - - - - da12add2 by Henry Wilkes at 2026-07-28T13:15:52+00:00 fixup! TB 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection TB 44959: Swap about:manual link. - - - - - 21d6cfe7 by Henry Wilkes at 2026-07-28T13:15:52+00:00 fixup! Add TorStrings module for localization TB 44959: Swap about:manual link. - - - - - 18 changed files: - browser/components/DesktopActorRegistry.sys.mjs - browser/components/about/AboutRedirector.cpp - + browser/components/aboutmanual/AboutManualChild.sys.mjs - + browser/components/aboutmanual/AboutManualParent.sys.mjs - + browser/components/aboutmanual/content/aboutManual.js - + browser/components/aboutmanual/jar.mn - + browser/components/aboutmanual/moz.build - browser/components/moz.build - browser/components/onionservices/content/authPopup.inc.xhtml - browser/components/preferences/config/passwords-autofill.mjs - browser/components/preferences/letterboxing.inc.xhtml - browser/components/securitylevel/content/securityLevelPanel.inc.xhtml - browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml - browser/components/torpreferences/config/connection.mjs - browser/components/torpreferences/content/connectionPane.inc.xhtml - browser/components/torpreferences/content/provideBridgeDialog.xhtml - toolkit/content/aboutNetError.mjs - toolkit/modules/TorStrings.sys.mjs Changes: ===================================== browser/components/DesktopActorRegistry.sys.mjs ===================================== @@ -126,6 +126,23 @@ let JSWINDOWACTORS = { remoteTypes: ["privilegedabout"], }, + AboutManual: { + parent: { + esModuleURI: + "moz-src:///browser/components/aboutmanual/AboutManualParent.sys.mjs", + }, + child: { + esModuleURI: + "moz-src:///browser/components/aboutmanual/AboutManualChild.sys.mjs", + + events: { + ManualLocaleSelected: { wantUntrusted: true }, + }, + }, + + matches: ["about:manual"], + }, + AboutMessagePreview: { parent: { esModuleURI: "resource:///actors/AboutMessagePreviewParent.sys.mjs", ===================================== browser/components/about/AboutRedirector.cpp ===================================== @@ -212,52 +212,45 @@ static nsAutoCString GetAboutModuleName(nsIURI* aURI) { return path; } -static nsTHashSet<nsCStringHashKey> GetManualLocales() { - nsTHashSet<nsCStringHashKey> locales; - RefPtr<nsZipArchive> zip = Omnijar::GetReader(Omnijar::APP); - if (!zip) { - // Probably a local build started with ./mach run - return locales; - } - UniquePtr<nsZipFind> find; - const nsAutoCString prefix("chrome/browser/content/browser/manual/"); - nsAutoCString needle = prefix; - needle.Append("*.html"); - if (NS_SUCCEEDED(zip->FindInit(needle.get(), getter_Transfers(find)))) { - const char* entryName; - uint16_t entryNameLen; - while (NS_SUCCEEDED(find->FindNext(&entryName, &entryNameLen))) { - // 5 is to remove the final `.html` - const size_t length = entryNameLen - prefix.Length() - 5; - locales.Insert(nsAutoCString(entryName + prefix.Length(), length)); - } - } - return locales; -} - static nsAutoCString GetManualChromeURI() { - static nsTHashSet<nsCStringHashKey> locales = GetManualLocales(); - - nsAutoCString reqLocale; - intl::LocaleService::GetInstance()->GetAppLocaleAsBCP47(reqLocale); - // Check every time the URL is needed in case the locale has changed. - // It might help also if we start allowing to change language, e.g., with a - // get parameter (see tor-browser#42675). - if (!locales.Contains(reqLocale) && reqLocale.Length() > 2 && - reqLocale[2] == '-') { - // At the moment, codes in our manual output are either 2 letters (en) or - // 5 letters (pt-BR) - reqLocale.SetLength(2); + nsTArray<nsCString> availableLocales; + nsCString availableLocalesStr; + if (NS_SUCCEEDED(mozilla::Preferences::GetCString( + "torbrowser.manual.available-locales", availableLocalesStr)) && + availableLocalesStr.Length() > 0) { + for (const nsACString& locale : availableLocalesStr.Split(',')) { + availableLocales.AppendElement(locale); + } } - if (!locales.Contains(reqLocale)) { - reqLocale = "en"; + nsCString tryLocale; + if (!NS_SUCCEEDED(mozilla::Preferences::GetCString("torbrowser.manual.locale", + tryLocale)) || + !availableLocales.Contains(tryLocale)) { + nsTArray<nsCString> appLocales; + intl::LocaleService::GetInstance()->GetAppLocalesAsBCP47(appLocales); + bool found = false; + for (size_t i = 0; i < appLocales.Length(); i++) { + tryLocale = appLocales[i]; + if (availableLocales.Contains(tryLocale)) { + found = true; + break; + } else if (tryLocale.Length() > 3 && tryLocale[2] == '-') { + // Strip the region code and see if the lang matches. + tryLocale.SetLength(2); + if (availableLocales.Contains(tryLocale)) { + found = true; + break; + } + } + } + if (!found) { + tryLocale.AssignLiteral("en"); + } } - - // %s is the language - constexpr char model[] = "chrome://browser/content/manual/%s.html"; - nsAutoCString url; - url.AppendPrintf(model, reqLocale.get()); - return url; + nsAutoCString uri; + uri.AppendPrintf("chrome://browser/content/aboutmanual/aboutManual-%s.html", + tryLocale.get()); + return uri; } NS_IMETHODIMP ===================================== browser/components/aboutmanual/AboutManualChild.sys.mjs ===================================== @@ -0,0 +1,15 @@ +/** + * Actor child class for the about:manual page. + */ +export class AboutManualChild extends JSWindowActorChild { + handleEvent(event) { + switch (event.type) { + case "ManualLocaleSelected": { + const locale = event.detail; + if (typeof locale === "string") { + this.sendAsyncMessage("AboutManual:LocaleSelected", locale); + } + } + } + } +} ===================================== browser/components/aboutmanual/AboutManualParent.sys.mjs ===================================== @@ -0,0 +1,21 @@ +/** + * Actor parent class for the about:manual page. + */ +export class AboutManualParent extends JSWindowActorParent { + receiveMessage(message) { + switch (message.name) { + case "AboutManual:LocaleSelected": { + const locale = message.data; + if ( + Services.prefs + .getStringPref("torbrowser.manual.available-locales", "") + .split(",") + .includes(locale) + ) { + Services.prefs.setStringPref("torbrowser.manual.locale", locale); + this.browsingContext.reload(Ci.nsIWebNavigation.LOAD_FLAGS_NONE); + } + } + } + } +} ===================================== browser/components/aboutmanual/content/aboutManual.js ===================================== @@ -0,0 +1,67 @@ +"use strict"; + +function changePage(initialLoad) { + let page; + const hash = location.hash; + const id = hash.startsWith("#") ? hash.substr(1) : null; + let targetEl = null; + if (id) { + targetEl = document.getElementById(id); + page = targetEl?.closest(".olm-page"); + } + if (!page) { + if (!initialLoad) { + // Make no change. + return; + } + page = document.getElementById("index"); + } + const currPage = document.querySelector(".olm-page:not(.d-none)"); + if (currPage === page) { + // No change in page. + return; + } + + currPage?.classList.add("d-none"); + page.classList.remove("d-none"); + + // If we are targeting an element that is not a page element, we want to + // scroll it into view (the focus position should have already shifted to + // point to it). + // Otherwise, if we have no target or the target is a page, we want to scroll + // to the top of the document so that the header is visible. + const doScroll = () => { + const scrollEl = targetEl && targetEl !== page ? targetEl : document.body; + scrollEl.scrollIntoView({ + behavior: "instant", + block: "start", + inline: "start", + }); + }; + if (initialLoad) { + window.addEventListener("load", doScroll, { once: true }); + } else { + doScroll(); + } +} + +window.addEventListener("DOMContentLoaded", () => { + const langDropdown = document.getElementById("language-menu-dropdown"); + for (const langButton of langDropdown.querySelectorAll("button")) { + langButton.addEventListener("click", () => { + dispatchEvent( + new CustomEvent("ManualLocaleSelected", { + // The button's lang attribute is expected to match the locale's code. + detail: langButton.getAttribute("lang"), + bubbles: true, + }) + ); + }); + } + + changePage(true); +}); + +window.addEventListener("hashchange", () => { + changePage(false); +}); ===================================== browser/components/aboutmanual/jar.mn ===================================== @@ -0,0 +1,2 @@ +browser.jar: + content/browser/aboutmanual/aboutManual.js (content/aboutManual.js) ===================================== browser/components/aboutmanual/moz.build ===================================== @@ -0,0 +1,6 @@ +JAR_MANIFESTS += ["jar.mn"] + +MOZ_SRC_FILES += [ + "AboutManualChild.sys.mjs", + "AboutManualParent.sys.mjs", +] ===================================== browser/components/moz.build ===================================== @@ -26,6 +26,7 @@ with Files("controlcenter/**"): DIRS += [ "about", + "aboutmanual", "aboutlogins", "abouttor", "aboutwelcome", ===================================== browser/components/onionservices/content/authPopup.inc.xhtml ===================================== @@ -6,7 +6,7 @@ <label class="text-link popup-notification-learnmore-link" is="text-link" - href="about:manual#onion-services_onion-service-authentication" + href="about:manual#features__onion-services___onion-service-auth" useoriginprincipal="true" data-l10n-id="onion-site-authentication-prompt-learn-more" /> ===================================== browser/components/preferences/config/passwords-autofill.mjs ===================================== @@ -792,7 +792,7 @@ SettingGroupManager.registerGroups({ onionSiteAuthentication: { l10nId: "onion-site-authentication-group", headingLevel: 2, - supportPage: "tor-manual:onion-services_onion-service-authentication", + supportPage: "tor-manual:features__onion-services___onion-service-auth", items: [ { id: "onionSiteSavedKeys", ===================================== browser/components/preferences/letterboxing.inc.xhtml ===================================== @@ -10,7 +10,7 @@ <html:span data-l10n-id="letterboxing-overview"></html:span> <html:a is="moz-support-link" - support-page="tor-manual:anti-fingerprinting_letterboxing" + support-page="tor-manual:features__fingerprinting-protections___letterboxing" data-l10n-id="letterboxing-learn-more" ></html:a> </description> ===================================== browser/components/securitylevel/content/securityLevelPanel.inc.xhtml ===================================== @@ -18,7 +18,7 @@ <html:a is="moz-support-link" id="securityLevel-learnMore" - support-page="tor-manual:security-settings" + support-page="tor-manual:features__security-levels" data-l10n-id="security-level-panel-learn-more-link" ></html:a> <html:img id="securityLevel-background-image" alt="" /> ===================================== browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml ===================================== @@ -13,7 +13,7 @@ ></html:span> <html:a is="moz-support-link" - support-page="tor-manual:security-settings" + support-page="tor-manual:features__security-levels" data-l10n-id="security-level-preferences-learn-more-link" ></html:a> </description> ===================================== browser/components/torpreferences/config/connection.mjs ===================================== @@ -13,7 +13,7 @@ SettingGroupManager.registerGroups({ connectionStatus: { inProgress: true, l10nId: "tor-connection-internet-status-group", - supportPage: "tor-manual:about", + supportPage: "tor-manual:getting-started__about-tor-browser", headingLevel: 2, items: [ { ===================================== browser/components/torpreferences/content/connectionPane.inc.xhtml ===================================== @@ -18,7 +18,7 @@ <label class="learnMore text-link" is="text-link" - href="about:manual#about" + href="about:manual#getting-started__about-tor-browser" useoriginprincipal="true" data-l10n-id="tor-connection-browser-learn-more-link" /> @@ -129,7 +129,7 @@ <label class="learnMore text-link" is="text-link" - href="about:manual#bridges" + href="about:manual#circumvention__unblocking-tor" useoriginprincipal="true" data-l10n-id="tor-bridges-learn-more-link" /> ===================================== browser/components/torpreferences/content/provideBridgeDialog.xhtml ===================================== @@ -37,7 +37,7 @@ <label is="text-link" class="learnMore text-link" - href="about:manual#bridges" + href="about:manual#circumvention__unblocking-tor" useoriginprincipal="true" data-l10n-id="user-provide-bridge-dialog-learn-more" /> ===================================== toolkit/content/aboutNetError.mjs ===================================== @@ -372,7 +372,7 @@ function initOnionError() { const learnMore = document.getElementById("learnMoreContainer"); learnMore.hidden = false; const learnMoreLink = document.getElementById("learnMoreLink"); - learnMoreLink.href = "about:manual#onion-services"; + learnMoreLink.href = "about:manual#features__onion-services"; setFocus("#netErrorButtonContainer > .try-again"); ===================================== toolkit/modules/TorStrings.sys.mjs ===================================== @@ -243,7 +243,7 @@ const Loader = { ); return { ...tsb.getStrings(strings), - learnMoreURL: "about:manual#onion-services", + learnMoreURL: "about:manual#features__onion-services", // XUL popups cannot open about: URLs, but we are online when showing the notification, so just use the online version learnMoreURLNotification: `https://tb-manual.torproject.org/${getLocale()}/onion-services/`, }; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/a527ea… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/a527ea… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-153.0esr-16.0-1] fixup! BB 44711: Hide unwanted setting controls in Base Browser.
by henry (@henry) 28 Jul '26

28 Jul '26
henry pushed to branch tor-browser-153.0esr-16.0-1 at The Tor Project / Applications / Tor Browser Commits: a527ea6b by Henry Wilkes at 2026-07-28T13:13:39+00:00 fixup! BB 44711: Hide unwanted setting controls in Base Browser. BB 45156: Hide "Customize Firefox Home" in appearance settings. - - - - - 1 changed file: - browser/components/preferences/config/appearance.mjs Changes: ===================================== browser/components/preferences/config/appearance.mjs ===================================== @@ -90,6 +90,8 @@ Preferences.addSetting({ Preferences.addSetting({ id: "related-settings-home-link", + // Hide the "Customize Firefox Home" link. tor-browser#45156. + visible: () => false, onUserClick: e => { e.preventDefault(); window.gotoPref("paneHome"); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/a527ea6… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/a527ea6… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-153.0esr-16.0-1] fixup! MB 1: Mullvad Browser branding
by morgan (@morgan) 28 Jul '26

28 Jul '26
morgan pushed to branch mullvad-browser-153.0esr-16.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 94c9c37a by Pier Angelo Vendrame at 2026-07-28T11:58:42+00:00 fixup! MB 1: Mullvad Browser branding MB 563: Hide Firefox's icon in about:pdf promo. - - - - - 1 changed file: - toolkit/components/aboutpdf/content/aboutPDF.html Changes: ===================================== toolkit/components/aboutpdf/content/aboutPDF.html ===================================== @@ -72,8 +72,6 @@ id="promo" hidden data-l10n-id="about-pdf-promo" - imagesrc="chrome://global/skin/illustrations/kit-in-circle.svg" - imagealignment="start" > <moz-button id="set-default" View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/94c… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/94c… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-153.0esr-16.0-1] fixup! BB 43322: Customize the font visibility lists.
by morgan (@morgan) 28 Jul '26

28 Jul '26
morgan pushed to branch mullvad-browser-153.0esr-16.0-1 at The Tor Project / Applications / Mullvad Browser Commits: d890f6b8 by Pier Angelo Vendrame at 2026-07-28T11:56:22+00:00 fixup! BB 43322: Customize the font visibility lists. BB 44257: Disable locale-based font rules. We already try to enable locale-specific font in all languages instead, as long as they are available, or we provide bundled fonts to replace them. And in any case, this is a defense-in-depth, as locale-specific fonts are exlcuded anyway in RFP. - - - - - 1 changed file: - gfx/thebes/StandardFonts-win10.inc Changes: ===================================== gfx/thebes/StandardFonts-win10.inc ===================================== @@ -278,7 +278,7 @@ static const FontSubstitute kFontSubstitutes[] = { #endif -#ifdef FontInclusionByLocaleRules +#if defined(FontInclusionByLocaleRules) && !defined(BASE_BROWSER_VERSION) FONT_RULE("arabic typesetting", {"ar", MatchSetting::StartsWith}, {"fa", MatchSetting::StartsWith}) View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/d89… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/d89… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-153.0esr-16.0-1] fixup! BB 43322: Customize the font visibility lists.
by morgan (@morgan) 28 Jul '26

28 Jul '26
morgan pushed to branch tor-browser-153.0esr-16.0-1 at The Tor Project / Applications / Tor Browser Commits: 0513b462 by Pier Angelo Vendrame at 2026-07-28T11:35:49+00:00 fixup! BB 43322: Customize the font visibility lists. BB 44257: Disable locale-based font rules. We already try to enable locale-specific font in all languages instead, as long as they are available, or we provide bundled fonts to replace them. And in any case, this is a defense-in-depth, as locale-specific fonts are exlcuded anyway in RFP. - - - - - 1 changed file: - gfx/thebes/StandardFonts-win10.inc Changes: ===================================== gfx/thebes/StandardFonts-win10.inc ===================================== @@ -278,7 +278,7 @@ static const FontSubstitute kFontSubstitutes[] = { #endif -#ifdef FontInclusionByLocaleRules +#if defined(FontInclusionByLocaleRules) && !defined(BASE_BROWSER_VERSION) FONT_RULE("arabic typesetting", {"ar", MatchSetting::StartsWith}, {"fa", MatchSetting::StartsWith}) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/0513b46… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/0513b46… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-153.0esr-16.0-1] fixup! TB 31286: Implementation of bridge, proxy, and firewall settings in...
by morgan (@morgan) 28 Jul '26

28 Jul '26
morgan pushed to branch tor-browser-153.0esr-16.0-1 at The Tor Project / Applications / Tor Browser Commits: 7bfb497b by Henry Wilkes at 2026-07-28T11:22:09+00:00 fixup! TB 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection TB 45125: Make sure observers are removed when the page in unloaded. Also remove a race condition between successive locale changes. - - - - - 1 changed file: - browser/components/torpreferences/content/bridgemoji/BridgeEmoji.js Changes: ===================================== browser/components/torpreferences/content/bridgemoji/BridgeEmoji.js ===================================== @@ -5,59 +5,89 @@ * Element to display a single bridge emoji, with a localized name. */ class BridgeEmoji extends HTMLElement { + /** + * The instances that are active (in the DOM). + * + * @type {Set<BridgeEmoji>} + */ static #activeInstances = new Set(); - static #observer(subject, topic) { - if (topic === "intl:app-locales-changed") { - BridgeEmoji.#updateEmojiLangCode(); - } - } - static #addActiveInstance(inst) { - if (this.#activeInstances.size === 0) { - Services.obs.addObserver(this.#observer, "intl:app-locales-changed"); - this.#updateEmojiLangCode(); - } - this.#activeInstances.add(inst); - } - - static #removeActiveInstance(inst) { - this.#activeInstances.delete(inst); - if (this.#activeInstances.size === 0) { - Services.obs.removeObserver(this.#observer, "intl:app-locales-changed"); - } - } + /** + * A promise that resolves with a list of emoji strings, in a specific + * order. Each BridgeEmoji instance has an `#index` in this list, which + * points to its corresponding emoji. + * + * @type {Promise<string[]>} + */ + static #emojiListPromise = fetch( + "chrome://browser/content/torpreferences/bridgemoji/bridge-emojis.json" + ).then(response => response.json()); /** - * The language code for emoji annotations. + * @typedef {{[key: string]: string}} EmojiAnnotations * - * null if unset. + * A map from an emoji's codepoint to a locale's annotation. + */ + /** + * A promise that resolves with a map from locales to their annotations. + * + * @type {Promise<{[key: string]: EmojiAnnotattions}>} + */ + static #annotationsPromise = fetch( + "chrome://browser/content/torpreferences/bridgemoji/annotations.json" + ).then(response => response.json()); + + /** + * @typedef {object} EmojiLocaleDetails * - * @type {string?} + * @property {string[]} [emojiList] - A list of emojis as strings, in a + * specific order. + * @property {EmojiAnnotations} [annotations] - The annotations for the + * locale. + * @property {string} [unknownString] - The string to use for emojis with + * undefined annotations. */ - static #emojiLangCode = null; /** - * A promise that resolves to two JSON structures for bridge-emojis.json and - * annotations.json, respectively. + * The cached locale details. * - * @type {Promise} + * @type {EmojiLocaleDetails} */ - static #emojiPromise = Promise.all([ - fetch( - "chrome://browser/content/torpreferences/bridgemoji/bridge-emojis.json" - ).then(response => response.json()), - fetch( - "chrome://browser/content/torpreferences/bridgemoji/annotations.json" - ).then(response => response.json()), - ]); + static #emojiLocaleDetails = {}; - static #unknownStringPromise = null; + /** + * A promise that resolves when the previous call to appLocalesChanged + * completes. + * + * @type {Promise?} + */ + static #prevAppLocalesChangedCall = null; /** - * Update #emojiLangCode. + * Update the locale used for bridge emoji widget. */ - static async #updateEmojiLangCode() { + static async appLocalesChanged() { + // Introduce a queue to ensure calls apply in the order they are invoked, + // so the last seen locale will eventually be the applied one. + const { promise, resolve } = Promise.withResolvers(); + const prevAppLocalesChangedCall = this.#prevAppLocalesChangedCall; + this.#prevAppLocalesChangedCall = promise; + try { + await prevAppLocalesChangedCall; + await this.#appLocalesChangedInternal(); + } finally { + resolve(); + } + } + + static async #appLocalesChangedInternal() { + let [emojiAnnotations, emojiList, unknownString] = await Promise.all([ + this.#annotationsPromise, + this.#emojiListPromise, + // Grab the string for the new locale. + document.l10n.formatValue("tor-bridges-emoji-unknown"), + ]); + let langCode; - const emojiAnnotations = (await BridgeEmoji.#emojiPromise)[1]; // Find the first desired locale we have annotations for. // Add "en" as a fallback. for (const bcp47 of [...Services.locale.appLocalesAsBCP47, "en"]) { @@ -71,14 +101,14 @@ break; } } - if (langCode !== this.#emojiLangCode) { - this.#emojiLangCode = langCode; - this.#unknownStringPromise = document.l10n.formatValue( - "tor-bridges-emoji-unknown" - ); - for (const inst of this.#activeInstances) { - inst.update(); - } + + this.#emojiLocaleDetails = { + emojiList, + annotations: emojiAnnotations[langCode], + unknownString, + }; + for (const inst of this.#activeInstances) { + inst.update(); } } @@ -86,22 +116,15 @@ * Update the bridge emoji to show their corresponding emoji with an * annotation that matches the current locale. */ - async update() { - if (!this.#active) { - return; - } + update() { + const { emojiList, annotations, unknownString } = + BridgeEmoji.#emojiLocaleDetails; - if (!BridgeEmoji.#emojiLangCode) { - // No lang code yet, wait until it is updated. + if (!this.#active || !emojiList || !annotations || !unknownString) { return; } const doc = this.ownerDocument; - const [unknownString, [emojiList, emojiAnnotations]] = await Promise.all([ - BridgeEmoji.#unknownStringPromise, - BridgeEmoji.#emojiPromise, - ]); - const emoji = emojiList[this.#index]; let emojiName; if (!emoji) { @@ -113,7 +136,7 @@ "src", `chrome://browser/content/torpreferences/bridgemoji/svgs/${cp}.svg` ); - emojiName = emojiAnnotations[BridgeEmoji.#emojiLangCode][cp]; + emojiName = annotations[cp]; } if (!emojiName) { doc.defaultView.console.error(`No emoji for index ${this.#index}`); @@ -157,13 +180,13 @@ } this.#active = true; - BridgeEmoji.#addActiveInstance(this); + BridgeEmoji.#activeInstances.add(this); this.update(); } disconnectedCallback() { this.#active = false; - BridgeEmoji.#removeActiveInstance(this); + BridgeEmoji.#activeInstances.delete(this); } /** @@ -196,4 +219,20 @@ } customElements.define("tor-bridge-emoji", BridgeEmoji); + + { + const appLocalesChanged = BridgeEmoji.appLocalesChanged.bind(BridgeEmoji); + Services.obs.addObserver(appLocalesChanged, "intl:app-locales-changed"); + window.addEventListener( + "unload", + () => { + Services.obs.removeObserver( + appLocalesChanged, + "intl:app-locales-changed" + ); + }, + { once: true } + ); + appLocalesChanged(); + } } View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/7bfb497… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/7bfb497… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/torbrowser-launcher][main] Update file org.torproject.torbrowser-launcher.png
by boklm (@boklm) 27 Jul '26

27 Jul '26
boklm pushed to branch main at The Tor Project / Applications / torbrowser-launcher Commits: e99e2dfa by harpia at 2026-07-27T14:26:21+02:00 Update file org.torproject.torbrowser-launcher.png - - - - - 1 changed file: - share/icons/hicolor/128x128/apps/org.torproject.torbrowser-launcher.png Changes: ===================================== share/icons/hicolor/128x128/apps/org.torproject.torbrowser-launcher.png ===================================== Binary files a/share/icons/hicolor/128x128/apps/org.torproject.torbrowser-launcher.png and b/share/icons/hicolor/128x128/apps/org.torproject.torbrowser-launcher.png differ View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/commit… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/commit… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/torbrowser-launcher][main] Drop bad mirrors from mirrorlist
by boklm (@boklm) 27 Jul '26

27 Jul '26
boklm pushed to branch main at The Tor Project / Applications / torbrowser-launcher Commits: 90ba4991 by Bernhard M. Wiedemann at 2026-07-27T14:15:22+02:00 Drop bad mirrors from mirrorlist tested with perl -ne 'chomp;print `curl -I ${_}torbrowser/15.0.14/tor-browser-linux-x86_64-15.0.14.tar.xz.asc`' share/torbrowser-launcher/mirrors.txt curl: (6) Could not resolve host: tor.127001.ovh curl: (6) Could not resolve host: mirror.torworld.org curl: (6) Could not resolve host: torproject.ph3x.at curl: (6) Could not resolve host: mirror.ntzk.de curl: (6) Could not resolve host: tor.ccc.de curl: (6) Could not resolve host: tormirror.snydernet.net curl: (6) Could not resolve host: tor.calyxinstitute.org curl: (6) Could not resolve host: torproject.mirror.metalgamer.eu https://108.248.87.242 hangs forever and 3 more have expired SSL certificates: https://tor.crazyhaze.de https://www.it-sicherheitschannel.de/dist/ https://sela.io/mirrors/torproject.org/dist/ - - - - - 1 changed file: - share/torbrowser-launcher/mirrors.txt Changes: ===================================== share/torbrowser-launcher/mirrors.txt ===================================== @@ -1,17 +1,12 @@ https://dist.torproject.org/ -https://tor.crazyhaze.de/dist/ https://creep.im/tor/dist/ https://tor.ybti.net/dist/ https://tor.0x3d.lu/dist/ -https://www.it-sicherheitschannel.de/dist/ https://mirror.freedif.org/TorProject/dist https://tor.secure.voyage/dist -https://tor.127001.ovh/dist/ https://mirror.oldsql.cc/tor/dist/ -https://mirror.torworld.org/dist/ https://tormirror.tb-itf-tor.de/dist/ https://tor.zilog.es/dist/ -https://torproject.ph3x.at/dist/ https://www.torservers.net/mirrors/torproject.org/dist/ https://tor.myrl.net/dist/ https://tor.stalkr.net/dist/ @@ -20,14 +15,7 @@ https://mirror.velcommuta.de/tor/dist/ https://tor.eff.org/dist/ https://tor.void.gr/dist/ https://www.moparisthebest.com/tor/dist/ -https://108.248.87.242/dist/ -https://mirror.ntzk.de/torproject.org/dist/ https://www.eprci.com/tor/dist/ -https://sela.io/mirrors/torproject.org/dist/ -https://tor.ccc.de/dist/ -https://tormirror.snydernet.net/dist/ -https://tor.calyxinstitute.org/dist/ -https://torproject.mirror.metalgamer.eu/dist/ https://nl.mirror.babylon.network/torproject/dist/ https://fr.mirror.babylon.network/torproject/dist/ https://cyberside.net.ee/sibul/dist/ View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/commit… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/commit… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • ...
  • 2089
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.