tbb-commits
Threads by month
- ----- 2026 -----
- 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
- 1 participants
- 20073 discussions
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.10.0esr-13.5-1] fixup! Base Browser strings
by ma1 (@ma1) 16 Apr '24
by ma1 (@ma1) 16 Apr '24
16 Apr '24
ma1 pushed to branch mullvad-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
9eaf8f6d by hackademix at 2024-04-16T13:14:32+02:00
fixup! Base Browser strings
MB 288: Standardize capitalization in Letterboxing preferences
- - - - -
1 changed file:
- browser/locales/en-US/browser/base-browser.ftl
Changes:
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -84,7 +84,7 @@ letterboxing-window-size-header = Window size
letterboxing-remember-size =
.label = Reuse last window size when opening a new window
.accesskey = R
-letterboxing-alignment-header = Content Alignment
+letterboxing-alignment-header = Content alignment
letterboxing-alignment-description = Choose where you want to align the website’s content.
letterboxing-alignment-top = Top
letterboxing-alignment-middle = Middle
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/9ea…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/9ea…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][base-browser-115.10.0esr-13.5-1] fixup! Base Browser strings
by ma1 (@ma1) 16 Apr '24
by ma1 (@ma1) 16 Apr '24
16 Apr '24
ma1 pushed to branch base-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
e98e00fa by hackademix at 2024-04-16T13:12:56+02:00
fixup! Base Browser strings
MB 288: Standardize capitalization in Letterboxing preferences
- - - - -
1 changed file:
- browser/locales/en-US/browser/base-browser.ftl
Changes:
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -84,7 +84,7 @@ letterboxing-window-size-header = Window size
letterboxing-remember-size =
.label = Reuse last window size when opening a new window
.accesskey = R
-letterboxing-alignment-header = Content Alignment
+letterboxing-alignment-header = Content alignment
letterboxing-alignment-description = Choose where you want to align the website’s content.
letterboxing-alignment-top = Top
letterboxing-alignment-middle = Middle
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/e98e00f…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/e98e00f…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] fixup! Base Browser strings
by ma1 (@ma1) 16 Apr '24
by ma1 (@ma1) 16 Apr '24
16 Apr '24
ma1 pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
1f1f3ab2 by hackademix at 2024-04-16T13:09:00+02:00
fixup! Base Browser strings
MB 288: Standardize capitalization in Letterboxing preferences
- - - - -
1 changed file:
- browser/locales/en-US/browser/base-browser.ftl
Changes:
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -84,7 +84,7 @@ letterboxing-window-size-header = Window size
letterboxing-remember-size =
.label = Reuse last window size when opening a new window
.accesskey = R
-letterboxing-alignment-header = Content Alignment
+letterboxing-alignment-header = Content alignment
letterboxing-alignment-description = Choose where you want to align the website’s content.
letterboxing-alignment-top = Top
letterboxing-alignment-middle = Middle
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/1f1f3ab…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/1f1f3ab…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] fixup! Bug 41803: Add some developer tools for working on tor-browser.
by ma1 (@ma1) 16 Apr '24
by ma1 (@ma1) 16 Apr '24
16 Apr '24
ma1 pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
bbc4a77b by hackademix at 2024-04-16T13:01:03+02:00
fixup! Bug 41803: Add some developer tools for working on tor-browser.
Bug 42516: Make tb-dev worktree-compatible
- - - - -
1 changed file:
- browser/locales/en-US/browser/base-browser.ftl
Changes:
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -84,7 +84,7 @@ letterboxing-window-size-header = Window size
letterboxing-remember-size =
.label = Reuse last window size when opening a new window
.accesskey = R
-letterboxing-alignment-header = Content Alignment
+letterboxing-alignment-header = Content alignment
letterboxing-alignment-description = Choose where you want to align the website’s content.
letterboxing-alignment-top = Top
letterboxing-alignment-middle = Middle
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/bbc4a77…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/bbc4a77…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-update-responses][main] release: new version, 13.0.14
by richard (@richard) 16 Apr '24
by richard (@richard) 16 Apr '24
16 Apr '24
richard pushed to branch main at The Tor Project / Applications / Tor Browser update responses
Commits:
56c533bf by Richard Pospesel at 2024-04-16T01:43:32+00:00
release: new version, 13.0.14
- - - - -
30 changed files:
- update_3/release/.htaccess
- − update_3/release/13.0.10-13.0.13-linux-i686-ALL.xml
- − update_3/release/13.0.10-13.0.13-linux-x86_64-ALL.xml
- − update_3/release/13.0.10-13.0.13-macos-ALL.xml
- − update_3/release/13.0.10-13.0.13-windows-i686-ALL.xml
- − update_3/release/13.0.10-13.0.13-windows-x86_64-ALL.xml
- − update_3/release/13.0.11-13.0.13-linux-i686-ALL.xml
- − update_3/release/13.0.11-13.0.13-linux-x86_64-ALL.xml
- − update_3/release/13.0.11-13.0.13-macos-ALL.xml
- − update_3/release/13.0.11-13.0.13-windows-i686-ALL.xml
- − update_3/release/13.0.11-13.0.13-windows-x86_64-ALL.xml
- + update_3/release/13.0.11-13.0.14-linux-i686-ALL.xml
- + update_3/release/13.0.11-13.0.14-linux-x86_64-ALL.xml
- + update_3/release/13.0.11-13.0.14-macos-ALL.xml
- + update_3/release/13.0.11-13.0.14-windows-i686-ALL.xml
- + update_3/release/13.0.11-13.0.14-windows-x86_64-ALL.xml
- − update_3/release/13.0.12-13.0.13-linux-i686-ALL.xml
- − update_3/release/13.0.12-13.0.13-linux-x86_64-ALL.xml
- − update_3/release/13.0.12-13.0.13-macos-ALL.xml
- − update_3/release/13.0.12-13.0.13-windows-i686-ALL.xml
- − update_3/release/13.0.12-13.0.13-windows-x86_64-ALL.xml
- + update_3/release/13.0.12-13.0.14-linux-i686-ALL.xml
- + update_3/release/13.0.12-13.0.14-linux-x86_64-ALL.xml
- + update_3/release/13.0.12-13.0.14-macos-ALL.xml
- + update_3/release/13.0.12-13.0.14-windows-i686-ALL.xml
- + update_3/release/13.0.12-13.0.14-windows-x86_64-ALL.xml
- + update_3/release/13.0.13-13.0.14-linux-i686-ALL.xml
- + update_3/release/13.0.13-13.0.14-linux-x86_64-ALL.xml
- + update_3/release/13.0.13-13.0.14-macos-ALL.xml
- + update_3/release/13.0.13-13.0.14-windows-i686-ALL.xml
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] 4 commits: fixup! Bug 40701: Add security warning when downloading a file
by richard (@richard) 15 Apr '24
by richard (@richard) 15 Apr '24
15 Apr '24
richard pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
49db61d8 by Henry Wilkes at 2024-04-15T18:16:31+00:00
fixup! Bug 40701: Add security warning when downloading a file
Bug 42221: Migrate downloads warning strings to Fluent.
- - - - -
93684ca3 by Henry Wilkes at 2024-04-15T18:16:31+00:00
fixup! Tor Browser strings
Bug 42221: Migrate downloads warning strings to Fluent.
- - - - -
4e772ce6 by Henry Wilkes at 2024-04-15T18:16:31+00:00
fixup! Add TorStrings module for localization
Bug 42221: Migrate downloads warning strings to Fluent.
- - - - -
e7445294 by Henry Wilkes at 2024-04-15T18:16:31+00:00
fixup! Tor Browser localization migration scripts.
Bug 42221: Migrate downloads warning strings to Fluent.
- - - - -
9 changed files:
- browser/components/downloads/content/contentAreaDownloadsView.js
- browser/components/downloads/content/contentAreaDownloadsView.xhtml
- browser/components/downloads/content/downloads.js
- browser/components/downloads/content/downloadsPanel.inc.xhtml
- browser/components/places/content/places.js
- browser/components/places/content/places.xhtml
- browser/locales/en-US/browser/tor-browser.ftl
- toolkit/torbutton/chrome/locale/en-US/torbutton.properties
- + tools/torbrowser/l10n/migrations/bug-42210-download-warning.py
Changes:
=====================================
browser/components/downloads/content/contentAreaDownloadsView.js
=====================================
@@ -62,53 +62,6 @@ var ContentAreaDownloadsView = {
if (!PrivateBrowsingUtils.isContentWindowPrivate(window)) {
view.place = "place:transition=7&sort=4";
}
-
- torWarningMessage.querySelector(
- ".downloads-tor-warning-title"
- ).textContent = this._getTorString("torbutton.download.warning.title");
-
- const tailsLink = document.createElement("a");
- tailsLink.href = "https://tails.net/";
- tailsLink.target = "_blank";
- tailsLink.textContent = this._getTorString(
- "torbutton.download.warning.tails_brand_name"
- );
-
- const [beforeLink, afterLink] = this._getTorString(
- "torbutton.download.warning.description"
- ).split("%S");
-
- torWarningMessage
- .querySelector(".downloads-tor-warning-description")
- .append(beforeLink, tailsLink, afterLink);
-
- torWarningMessage.querySelector(
- ".downloads-tor-warning-dismiss-button"
- ).textContent = this._getTorString("torbutton.download.warning.dismiss");
- },
-
- /**
- * Get a string from the properties bundle.
- *
- * @param {string} name - The string name.
- *
- * @return {string} The string.
- */
- _getTorString(name) {
- if (!this._stringBundle) {
- this._stringBundle = Services.strings.createBundle(
- "chrome://torbutton/locale/torbutton.properties"
- );
- }
- try {
- return this._stringBundle.GetStringFromName(name);
- } catch {}
- if (!this._fallbackStringBundle) {
- this._fallbackStringBundle = Services.strings.createBundle(
- "resource://torbutton/locale/en-US/torbutton.properties"
- );
- }
- return this._fallbackStringBundle.GetStringFromName(name);
},
};
=====================================
browser/components/downloads/content/contentAreaDownloadsView.xhtml
=====================================
@@ -21,6 +21,7 @@
<linkset>
<html:link rel="localization" href="toolkit/global/textActions.ftl"/>
<html:link rel="localization" href="browser/downloads.ftl" />
+ <html:link rel="localization" href="browser/tor-browser.ftl" />
</linkset>
<script src="chrome://global/content/globalOverlay.js"/>
@@ -36,20 +37,34 @@
</keyset>
#endif
- <html:message-bar id="aboutDownloadsTorWarning"
- class="downloads-tor-warning-message-bar"
- role="alert"
- aria-labelledby="aboutDownloadsTorWarningTitle"
- aria-describedby="aboutDownloadsTorWarningDescription">
+ <html:message-bar
+ id="aboutDownloadsTorWarning"
+ class="downloads-tor-warning-message-bar"
+ role="alert"
+ aria-labelledby="aboutDownloadsTorWarningTitle"
+ aria-describedby="aboutDownloadsTorWarningDescription"
+ >
<html:div class="downloads-tor-warning-grid">
- <html:p id="aboutDownloadsTorWarningTitle"
- class="downloads-tor-warning-title">
+ <html:p
+ id="aboutDownloadsTorWarningTitle"
+ class="downloads-tor-warning-title"
+ data-l10n-id="downloads-tor-warning-title"
+ ></html:p>
+ <html:p
+ id="aboutDownloadsTorWarningDescription"
+ class="downloads-tor-warning-description"
+ data-l10n-id="downloads-tor-warning-description"
+ >
+ <html:a
+ href="https://tails.net/"
+ target="_blank"
+ data-l10n-name="tails-link"
+ ></html:a>
</html:p>
- <html:p id="aboutDownloadsTorWarningDescription"
- class="downloads-tor-warning-description">
- </html:p>
- <html:button class="downloads-tor-warning-dismiss-button">
- </html:button>
+ <html:button
+ class="downloads-tor-warning-dismiss-button"
+ data-l10n-id="downloads-tor-warning-dismiss-button"
+ ></html:button>
</html:div>
</html:message-bar>
=====================================
browser/components/downloads/content/downloads.js
=====================================
@@ -167,38 +167,29 @@ var DownloadsPanel = {
);
if (!this._torWarningInitialized) {
- torWarningMessage.querySelector(
- ".downloads-tor-warning-title"
- ).textContent = this._getTorString("torbutton.download.warning.title");
-
- const tailsLink = document.createElement("a");
- tailsLink.href = "https://tails.net";
- tailsLink.textContent = this._getTorString(
- "torbutton.download.warning.tails_brand_name"
- );
- tailsLink.addEventListener("click", event => {
- event.preventDefault();
- this.hidePanel();
- openWebLinkIn(tailsLink.href, "tab");
- });
-
- const [beforeLink, afterLink] = this._getTorString(
- "torbutton.download.warning.description"
- ).split("%S");
-
+ // Intercept clicks on the tails link.
+ // NOTE: We listen for clicks on the parent instead of the
+ // <a data-l10n-name="tails-link"> element because the latter may be
+ // swapped for a new instance by Fluent when refreshing the parent.
torWarningMessage
.querySelector(".downloads-tor-warning-description")
- .append(beforeLink, tailsLink, afterLink);
+ .addEventListener("click", event => {
+ const tailsLink = event.target.closest(
+ ".downloads-tor-warning-tails-link"
+ );
+ if (!tailsLink) {
+ return;
+ }
+ event.preventDefault();
+ this.hidePanel();
+ openWebLinkIn(tailsLink.href, "tab");
+ });
- let dismissButton = torWarningMessage.querySelector(
- ".downloads-tor-warning-dismiss-button"
- );
- dismissButton.textContent = this._getTorString(
- "torbutton.download.warning.dismiss"
- );
- dismissButton.addEventListener("click", event => {
- Services.prefs.setBoolPref(PREF_SHOW_DOWNLOAD_WARNING, false);
- });
+ torWarningMessage
+ .querySelector(".downloads-tor-warning-dismiss-button")
+ .addEventListener("click", event => {
+ Services.prefs.setBoolPref(PREF_SHOW_DOWNLOAD_WARNING, false);
+ });
this._torWarningInitialized = true;
}
@@ -725,30 +716,6 @@ var DownloadsPanel = {
}
}, 0);
},
-
- /**
- * Get a string from the properties bundle.
- *
- * @param {string} name - The string name.
- *
- * @return {string} The string.
- */
- _getTorString(name) {
- if (!this._stringBundle) {
- this._stringBundle = Services.strings.createBundle(
- "chrome://torbutton/locale/torbutton.properties"
- );
- }
- try {
- return this._stringBundle.GetStringFromName(name);
- } catch {}
- if (!this._fallbackStringBundle) {
- this._fallbackStringBundle = Services.strings.createBundle(
- "resource://torbutton/locale/en-US/torbutton.properties"
- );
- }
- return this._fallbackStringBundle.GetStringFromName(name);
- },
};
XPCOMUtils.defineConstant(this, "DownloadsPanel", DownloadsPanel);
=====================================
browser/components/downloads/content/downloadsPanel.inc.xhtml
=====================================
@@ -125,19 +125,32 @@
<panelview id="downloadsPanel-mainView">
<vbox id="downloadsPanelTorWarning">
- <vbox role="alert"
- aria-labelledby="downloadsPanelTorWarningTitle"
- aria-describedby="downloadsPanelTorWarningDescription">
- <html:p id="downloadsPanelTorWarningTitle"
- class="downloads-tor-warning-title">
+ <vbox
+ role="alert"
+ aria-labelledby="downloadsPanelTorWarningTitle"
+ aria-describedby="downloadsPanelTorWarningDescription"
+ >
+ <html:p
+ id="downloadsPanelTorWarningTitle"
+ class="downloads-tor-warning-title"
+ data-l10n-id="downloads-tor-warning-title"
+ ></html:p>
+ <html:p
+ id="downloadsPanelTorWarningDescription"
+ class="downloads-tor-warning-description"
+ data-l10n-id="downloads-tor-warning-description"
+ >
+ <html:a
+ href="https://tails.net/"
+ data-l10n-name="tails-link"
+ class="downloads-tor-warning-tails-link"
+ ></html:a>
</html:p>
- <html:p id="downloadsPanelTorWarningDescription"
- class="downloads-tor-warning-description">
- </html:p>
-
<html:div class="panel-footer">
- <html:button class="downloads-tor-warning-dismiss-button">
- </html:button>
+ <html:button
+ class="downloads-tor-warning-dismiss-button"
+ data-l10n-id="downloads-tor-warning-dismiss-button"
+ ></html:button>
</html:div>
</vbox>
<toolbarseparator />
=====================================
browser/components/places/content/places.js
=====================================
@@ -176,32 +176,22 @@ var PlacesOrganizer = {
}
);
- // Initialize tor warning text content.
- torWarningMessage.querySelector(
- ".downloads-tor-warning-title"
- ).textContent = this._getTorString("torbutton.download.warning.title");
-
- const tailsLink = document.createElement("a");
- tailsLink.href = "https://tails.net/";
- tailsLink.textContent = this._getTorString(
- "torbutton.download.warning.tails_brand_name"
- );
- tailsLink.addEventListener("click", event => {
- event.preventDefault();
- openWebLinkIn(tailsLink.href, "tab");
- });
-
- const [beforeLink, afterLink] = this._getTorString(
- "torbutton.download.warning.description"
- ).split("%S");
-
- torWarningMessage
+ // Intercept clicks on the tor warning tails link.
+ // NOTE: We listen for clicks on the parent instead of the
+ // <a data-l10n-name="tails-link"> element because the latter may be
+ // swapped for a new instance by Fluent when refreshing the parent.
+ document
.querySelector(".downloads-tor-warning-description")
- .append(beforeLink, tailsLink, afterLink);
-
- torWarningMessage.querySelector(
- ".downloads-tor-warning-dismiss-button"
- ).textContent = this._getTorString("torbutton.download.warning.dismiss");
+ .addEventListener("click", event => {
+ const tailsLink = event.target.closest(
+ ".downloads-tor-warning-tails-link"
+ );
+ if (!tailsLink) {
+ return;
+ }
+ event.preventDefault();
+ openWebLinkIn(tailsLink.href, "tab");
+ });
ContentArea.init();
@@ -274,30 +264,6 @@ var PlacesOrganizer = {
ContentArea.focus();
},
- /**
- * Get a string from the properties bundle.
- *
- * @param {string} name - The string name.
- *
- * @returns {string} The string.
- */
- _getTorString(name) {
- if (!this._stringBundle) {
- this._stringBundle = Services.strings.createBundle(
- "chrome://torbutton/locale/torbutton.properties"
- );
- }
- try {
- return this._stringBundle.GetStringFromName(name);
- } catch {}
- if (!this._fallbackStringBundle) {
- this._fallbackStringBundle = Services.strings.createBundle(
- "resource://torbutton/locale/en-US/torbutton.properties"
- );
- }
- return this._fallbackStringBundle.GetStringFromName(name);
- },
-
QueryInterface: ChromeUtils.generateQI([]),
handleEvent: function PO_handleEvent(aEvent) {
=====================================
browser/components/places/content/places.xhtml
=====================================
@@ -40,6 +40,7 @@
<html:link rel="localization" href="browser/places.ftl"/>
<html:link rel="localization" href="browser/downloads.ftl"/>
<html:link rel="localization" href="browser/editBookmarkOverlay.ftl"/>
+ <html:link rel="localization" href="browser/tor-browser.ftl"/>
</linkset>
<script src="chrome://browser/content/places/places.js"/>
@@ -338,19 +339,33 @@
</tree>
<splitter collapse="none" persist="state"></splitter>
<vbox id="contentView">
- <html:message-bar id="placesDownloadsTorWarning"
- role="alert"
- aria-labelledby="placesDownloadsTorWarningTitle"
- aria-describedby="placesDownloadsTorWarningDescription">
+ <html:message-bar
+ id="placesDownloadsTorWarning"
+ role="alert"
+ aria-labelledby="placesDownloadsTorWarningTitle"
+ aria-describedby="placesDownloadsTorWarningDescription"
+ >
<html:div class="downloads-tor-warning-grid">
- <html:p id="placesDownloadsTorWarningTitle"
- class="downloads-tor-warning-title">
+ <html:p
+ id="placesDownloadsTorWarningTitle"
+ class="downloads-tor-warning-title"
+ data-l10n-id="downloads-tor-warning-title"
+ ></html:p>
+ <html:p
+ id="placesDownloadsTorWarningDescription"
+ class="downloads-tor-warning-description"
+ data-l10n-id="downloads-tor-warning-description"
+ >
+ <html:a
+ href="https://tails.net/"
+ class="downloads-tor-warning-tails-link"
+ data-l10n-name="tails-link"
+ ></html:a>
</html:p>
- <html:p id="placesDownloadsTorWarningDescription"
- class="downloads-tor-warning-description">
- </html:p>
- <html:button class="downloads-tor-warning-dismiss-button">
- </html:button>
+ <html:button
+ class="downloads-tor-warning-dismiss-button"
+ data-l10n-id="downloads-tor-warning-dismiss-button"
+ ></html:button>
</html:div>
</html:message-bar>
<vbox id="placesViewsBox" flex="1">
=====================================
browser/locales/en-US/browser/tor-browser.ftl
=====================================
@@ -548,3 +548,12 @@ crypto-safety-prompt-title = Cryptocurrency address copied from an insecure webs
crypto-safety-prompt-body = The copied text ({ $address }) appears to be a cryptocurrency address. Since the connection to { $host } is not secure, the address may have been modified and should not be trusted. You can try establishing a secure connection by reconnecting with a new circuit.
crypto-safety-prompt-reload-button = Reload Tab with a New Circuit
crypto-safety-prompt-dismiss-button = Dismiss Warning
+
+## Downloads warning.
+## Shown in downloads panel, about:downloads and Library window.
+
+downloads-tor-warning-title = Be careful opening downloads
+# "Tails" is the brand name for the Tails operating system and should be localized appropriately, and will be a link to its website. The name should be wrapped in '<a data-l10n-name="tails-link">' and '</a>'.
+downloads-tor-warning-description = Some files may connect to the internet when opened without using Tor. To be safe, open the files while offline or use a portable operating system like <a data-l10n-name="tails-link">Tails</a>.
+# Button to dismiss the warning forever.
+downloads-tor-warning-dismiss-button = Got it
=====================================
toolkit/torbutton/chrome/locale/en-US/torbutton.properties
=====================================
@@ -3,14 +3,6 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-# Download pane warning
-torbutton.download.warning.title = Be careful opening downloads
-# %S will be a link to the Tails operating system website. With the content given by torbutton.download.warning.tails_brand_name
-torbutton.download.warning.description = Some files may connect to the internet when opened without using Tor. To be safe, open the files while offline or use a portable operating system like %S.
-# Locale name for Tails operating system.
-torbutton.download.warning.tails_brand_name = Tails
-torbutton.download.warning.dismiss = Got it
-
# .Onion Page Info prompt.
pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
=====================================
tools/torbrowser/l10n/migrations/bug-42210-download-warning.py
=====================================
@@ -0,0 +1,39 @@
+import fluent.syntax.ast as FTL
+from fluent.migrate.helpers import transforms_from
+from fluent.migrate.transforms import CONCAT, COPY, REPLACE
+
+
+def migrate(ctx):
+ legacy_path = "torbutton.properties"
+
+ ctx.add_transforms(
+ "tor-browser.ftl",
+ "tor-browser.ftl",
+ transforms_from(
+ """
+downloads-tor-warning-title = { COPY(path, "torbutton.download.warning.title") }
+downloads-tor-warning-dismiss-button = { COPY(path, "torbutton.download.warning.dismiss") }
+""",
+ path=legacy_path,
+ )
+ + [
+ # Replace "%S" with link to Tails website.
+ FTL.Message(
+ id=FTL.Identifier("downloads-tor-warning-description"),
+ value=REPLACE(
+ legacy_path,
+ "torbutton.download.warning.description",
+ {
+ "%1$S": CONCAT(
+ FTL.TextElement('<a data-l10n-name="tails-link">'),
+ COPY(
+ legacy_path,
+ "torbutton.download.warning.tails_brand_name",
+ ),
+ FTL.TextElement("</a>"),
+ )
+ },
+ ),
+ ),
+ ],
+ )
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/a5b9b0…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/a5b9b0…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build] Pushed new tag tbb-13.0.14-build1
by Pier Angelo Vendrame (@pierov) 15 Apr '24
by Pier Angelo Vendrame (@pierov) 15 Apr '24
15 Apr '24
Pier Angelo Vendrame pushed new tag tbb-13.0.14-build1 at The Tor Project / Applications / tor-browser-build
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/tree/tbb…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 41099: Prepare Tor Browser Stable 13.0.14 (updated)
by Pier Angelo Vendrame (@pierov) 15 Apr '24
by Pier Angelo Vendrame (@pierov) 15 Apr '24
15 Apr '24
Pier Angelo Vendrame pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build
Commits:
a57006e3 by Pier Angelo Vendrame at 2024-04-15T18:44:40+02:00
Bug 41099: Prepare Tor Browser Stable 13.0.14 (updated)
Include the fix to #40992/#41122 and updated the changelogs.
- - - - -
2 changed files:
- projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
- rbm.conf
Changes:
=====================================
projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
=====================================
@@ -4,20 +4,25 @@ Tor Browser 13.0.14 - April 16 2024
* Bug 41676: Set privacy.resistFingerprinting.testing.setTZtoUTC as a defense-in-depth [tor-browser]
* Bug 42335: Do not localize the order of locales for app lang [tor-browser]
* Bug 42428: Timezone offset leak via document.lastModified [tor-browser]
- * Bug 42472: Timezone May leak from XSLT Date function [tor-browser]
+ * Bug 42472: Timezone may leak from XSLT Date function [tor-browser]
* Bug 42508: Rebase Tor Browser stable onto 115.10.0esr [tor-browser]
* Windows + macOS + Linux
* Updated Firefox to 115.10.0esr
+ * Bug 42172: browser.startup.homepage and TOR_DEFAULT_HOMEPAGE are ignored for the new window opened by New Identity [tor-browser]
* Bug 42236: Let users decide whether to load their home page on new identity. [tor-browser]
* Bug 42468: App languages not sorted correctly in stable [tor-browser]
- * Android
- * Updated GeckoView to 115.10.0esr
* Linux
* Bug 41110: Avoid Fontconfig warning about "ambiguous path" [tor-browser-build]
+ * Android
+ * Updated GeckoView to 115.10.0esr
+ * Bug 42509: Backport Android security fixes from Firefox 125 [tor-browser]
* Build System
* All Platforms
* Updated Go to 1.21.8
* Bug 41107: Update download-unsigned-sha256sums-gpg-signatures-from-people-tpo for new type of URL [tor-browser-build]
+ * Bug 41122: Add release date to rbm.conf [tor-browser-build]
+ * Android
+ * Bug 40992: Updated torbrowser_version number is not enough to change firefox-android versionCode number [tor-browser-build]
Tor Browser 13.5a6 - March 28 2024
* All Platforms
=====================================
rbm.conf
=====================================
@@ -80,7 +80,7 @@ var:
- '13.0.12'
- '[% IF c("var/tor-browser") %]13.0.11[% END %]'
- '[% IF c("var/mullvad-browser") %]13.0.10[% END %]'
- browser_release_date: '2024/03/28 01:02:03'
+ browser_release_date: '2024/04/16 15:00:00'
browser_release_date_timestamp: '[% USE date; date.format(c("var/browser_release_date"), "%s") %]'
updater_enabled: 1
build_mar: 1
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/a…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/a…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in...
by richard (@richard) 15 Apr '24
by richard (@richard) 15 Apr '24
15 Apr '24
richard pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
a5b9b03b by Henry Wilkes at 2024-04-15T17:15:04+00:00
fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
Bug 42496: Fix the refresh captcha button's command.
- - - - -
2 changed files:
- browser/components/torpreferences/content/requestBridgeDialog.js
- browser/components/torpreferences/content/requestBridgeDialog.xhtml
Changes:
=====================================
browser/components/torpreferences/content/requestBridgeDialog.js
=====================================
@@ -71,6 +71,9 @@ const gRequestBridgeDialog = {
selectors.refreshCaptchaButton
);
this._captchaRefreshButton.disabled = true;
+ this._captchaRefreshButton.addEventListener("command", () => {
+ this.onRefreshCaptcha();
+ });
this._incorrectCaptchaHbox = this._dialog.querySelector(
selectors.incorrectCaptchaHbox
=====================================
browser/components/torpreferences/content/requestBridgeDialog.xhtml
=====================================
@@ -31,7 +31,6 @@
<button
id="torPreferences-requestBridge-refreshCaptchaButton"
image="chrome://global/skin/icons/reload.svg"
- oncommand="requestBridgeDialog.onRefreshCaptcha();"
/>
</hbox>
<hbox id="torPreferences-requestBridge-incorrectCaptchaHbox" align="center">
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/a5b9b03…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/a5b9b03…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.10.0esr-13.5-1] fixup! MB 188: Customize Gitlab Issue and Merge templates
by richard (@richard) 15 Apr '24
by richard (@richard) 15 Apr '24
15 Apr '24
richard pushed to branch mullvad-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
1d3f7ac2 by Richard Pospesel at 2024-04-15T17:13:12+00:00
fixup! MB 188: Customize Gitlab Issue and Merge templates
emergency security issue for mullvad browser
- - - - -
1 changed file:
- .gitlab/issue_templates/Emergency Security Issue.md
Changes:
=====================================
.gitlab/issue_templates/Emergency Security Issue.md
=====================================
@@ -18,9 +18,7 @@
### Type of Issue: What are we dealing with?
- [ ] Security (sandbox escape, remote code execution, etc)
-- [ ] Proxy Bypass (traffic contents becoming MITM'able)
-- [ ] De-Anonymization (otherwise identifying which website a user is visiting)
-- [ ] Cross-Site Linkability (correlating sessions across circuits and websites)
+- [ ] Cross-Site Linkability (correlating sessions across websites)
- [ ] Disk Leak (persisting session information to disk)
- [ ] Other (please explain)
@@ -36,16 +34,11 @@
- [ ] **richard** : signing, release
- [ ] **thorin** : fingerprinting
- [ ] Other Engineering Teams
- - [ ] Networking (**ahf**, **dgoulet**)
- - [ ] Anti-Censorship (**meskio**, **cohosh**)
- [ ] UX (**donuts**)
- [ ] TPA (**anarcat**, **lavamind**)
- [ ] External Tor Partners
- - [ ] Mozilla
- - [ ] Mullvad
- - [ ] Brave
- - [ ] Guardian Project (Orbot, Onion Browser)
- - [ ] Tails
+ - [ ] Mozilla (**tjr**)
+ - [ ] Mullvad (**ruihildt**)
- [ ] Other (please list)
### Urgency: When do we need to act?
@@ -72,6 +65,7 @@ Sometimes fixes have side-effects: users lose their data, roadmaps need to be ad
- [ ] Start an initial email thread with the following people:
- [ ] **bella**
+ - [ ] **ruihildt**, **support(a)mullvadvpn.net**
- [ ] Relevant Applications Developers
- [ ] **(Optional)** **micah**
- if there are considerations or asks outside the Applications Team
@@ -84,6 +78,7 @@ Sometimes fixes have side-effects: users lose their data, roadmaps need to be ad
/cc @ma1
/cc @micah
/cc @richard
+/cc @ruihildt
/confidential
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/1d3…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/1d3…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][main] Bug 41122: Update stable release prep templates
by boklm (@boklm) 15 Apr '24
by boklm (@boklm) 15 Apr '24
15 Apr '24
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
8d829699 by Nicolas Vigier at 2024-04-15T17:44:25+02:00
Bug 41122: Update stable release prep templates
The patch for #41122 was backported to `maint-13.0`, so we need to
update the stable release prep gitlab issue templates.
- - - - -
2 changed files:
- .gitlab/issue_templates/Release Prep - Mullvad Browser Stable.md
- .gitlab/issue_templates/Release Prep - Tor Browser Stable.md
Changes:
=====================================
.gitlab/issue_templates/Release Prep - Mullvad Browser Stable.md
=====================================
@@ -39,6 +39,7 @@ Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MU
- [ ] Update `rbm.conf`
- [ ] `var/torbrowser_version` : update to next version
- [ ] `var/torbrowser_build` : update to `$(MULLVAD_BROWSER_BUILD_N)`
+ - [ ] `var/browser_release_date` : update to build date
- [ ] `var/torbrowser_incremental_from` : update to previous Desktop version
- **NOTE**: We try to build incrementals for the previous 3 desktop versions except in the case of a watershed update
- **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make mullvadbrowser-incrementals-*` step will fail
=====================================
.gitlab/issue_templates/Release Prep - Tor Browser Stable.md
=====================================
@@ -38,6 +38,7 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE
- [ ] Update `rbm.conf`
- [ ] `var/torbrowser_version` : update to next version
- [ ] `var/torbrowser_build` : update to `$(TOR_BROWSER_BUILD_N)`
+ - [ ] `var/browser_release_date` : update to build date
- [ ] ***(Desktop Only)***`var/torbrowser_incremental_from` : update to previous Desktop version
- **NOTE**: We try to build incrementals for the previous 3 desktop versions except in the case of a watershed update
- **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make torbrowser-incrementals-*` step will fail
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/8…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/8…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] 20 commits: fixup! Bug 40597: Implement TorSettings module
by Pier Angelo Vendrame (@pierov) 15 Apr '24
by Pier Angelo Vendrame (@pierov) 15 Apr '24
15 Apr '24
Pier Angelo Vendrame pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
3865ebab by Pier Angelo Vendrame at 2024-04-15T17:59:33+02:00
fixup! Bug 40597: Implement TorSettings module
Move TorSettings and TorLauncherUtil to lazy imnports.
Also removed XPCOMUtils in favor of ChromeUtils.
- - - - -
d53805c2 by Pier Angelo Vendrame at 2024-04-15T17:59:36+02:00
fixup! Temporary changes to about:torconnect for Android.
- - - - -
7720009e by Pier Angelo Vendrame at 2024-04-15T17:59:36+02:00
fixup! Bug 40933: Add tor-launcher functionality
Rename TorControlPort.sys.mjs's `TorError` to a less generic
`TorProtocolError`.
- - - - -
bb516579 by Pier Angelo Vendrame at 2024-04-15T17:59:37+02:00
dropme! Bug 42247: Android helpers for the TorProvider
Revert the changes to TorProvider*.sys.mjs to move them to the correct
commit.
- - - - -
76623561 by Dan Ballard at 2024-04-15T17:59:37+02:00
fixup! Bug 40933: Add tor-launcher functionality
Bug 41187: Add support for tor logs in android integration
- - - - -
8d41f191 by Pier Angelo Vendrame at 2024-04-15T17:59:37+02:00
fixup! Bug 40933: Add tor-launcher functionality
Do not localize errors in TorProcess, but keep it only as a pure backend
file. Moreover, the localized errors would be only shown in the console.
Instead, report an error code to let them bubble up to the
TorProviderBuilder, where we show them in the "Restart Tor" prompt.
- - - - -
05bda694 by Pier Angelo Vendrame at 2024-04-15T17:59:38+02:00
fixup! Bug 27476: Implement about:torconnect captive portal within Tor Browser
Formatted comments.
- - - - -
d783693d by Pier Angelo Vendrame at 2024-04-15T17:59:38+02:00
fixup! Bug 40933: Add tor-launcher functionality
Bug 42479: Remove localization from the backend files.
Also, use an Error object when the bootstrap fail, in preparation to the
removal of TorBootstrapRequest.
- - - - -
7dc831bf by Pier Angelo Vendrame at 2024-04-15T17:59:38+02:00
fixup! Add TorStrings module for localization
Load some torlauncher strings to show in about:torconnect in
TorStrings.sys.mjs.
We could move them to torConnect.properties, but maybe we are still in
time for moving all of them to Fluent, so I preferred reducing the
number of migrations.
Also, remove unused strings from torlauncher.properties.
- - - - -
04fbc3dc by Pier Angelo Vendrame at 2024-04-15T17:59:39+02:00
fixup! Bug 40597: Implement TorSettings module
Bug 42479: Improve TorConnect error handling.
To do so, also remove localized error messages.
Use error codes, and let the frontend use the localized messages.
- - - - -
00c53294 by Pier Angelo Vendrame at 2024-04-15T17:59:39+02:00
fixup! Bug 27476: Implement about:torconnect captive portal within Tor Browser
Bug 42479: Improve TorConnect error handling.
Consume the new error codes and transform them into localized error
messages.
- - - - -
13ca87b4 by Pier Angelo Vendrame at 2024-04-15T17:59:39+02:00
fixup! Bug 42247: Android helpers for the TorProvider
Bug 42479: Improve TorConnect error handling.
Pass the new TorConnect error codes to Android.
- - - - -
1e2083d7 by Pier Angelo Vendrame at 2024-04-15T17:59:40+02:00
fixup! Bug 40933: Add tor-launcher functionality
This partially reverts commit 34f7e83335cde6653d897717741c9c8d41f858b7.
It removes the errorCode logic, and throws non-localized error
messages.
Also, it removes the no-longer used getFormattedLocalizedString.
- - - - -
05516a28 by Pier Angelo Vendrame at 2024-04-15T17:59:40+02:00
fixup! Bug 40933: Add tor-launcher functionality
Changed a few calls to #stop since this method now expects an Erro
object.
Do not redefine topics, import them from TorProviderBuilder.sys.mjs.
Use lazy imports for our code.
- - - - -
01d7d557 by Pier Angelo Vendrame at 2024-04-15T17:59:40+02:00
fixup! Bug 40597: Implement TorSettings module
Various fixes to address tor-browser!968.
- - - - -
02df5609 by Pier Angelo Vendrame at 2024-04-15T17:59:41+02:00
fixup! Bug 27476: Implement about:torconnect captive portal within Tor Browser
Various fixes to address tor-browser!968.
- - - - -
76ee8c58 by Pier Angelo Vendrame at 2024-04-15T17:59:41+02:00
fixup! Bug 42247: Android helpers for the TorProvider
TorConnectTopics.BootstrapError is now just Error, and it passes
directly the Error object.
- - - - -
686fb7e7 by henry at 2024-04-15T17:59:41+02:00
fixup! Add TorStrings module for localization
Drop unused strings.
- - - - -
ec7b6520 by henry at 2024-04-15T17:59:42+02:00
fixup! Bug 27476: Implement about:torconnect captive portal within Tor Browser
Fix the offline error handler.
- - - - -
e162a17a by henry at 2024-04-15T17:59:42+02:00
fixup! Bug 40597: Implement TorSettings module
Remove an outdated comment.
- - - - -
12 changed files:
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorIntegrationAndroid.java
- toolkit/components/tor-launcher/TorBootstrapRequest.sys.mjs
- toolkit/components/tor-launcher/TorControlPort.sys.mjs
- toolkit/components/tor-launcher/TorLauncherUtil.sys.mjs
- toolkit/components/tor-launcher/TorProcess.sys.mjs
- toolkit/components/tor-launcher/TorProvider.sys.mjs
- toolkit/components/torconnect/TorConnectParent.sys.mjs
- toolkit/components/torconnect/content/aboutTorConnect.js
- toolkit/modules/TorAndroidIntegration.sys.mjs
- toolkit/modules/TorConnect.sys.mjs
- toolkit/modules/TorStrings.sys.mjs
- toolkit/torbutton/chrome/locale/en-US/torlauncher.properties
Changes:
=====================================
mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorIntegrationAndroid.java
=====================================
@@ -42,10 +42,10 @@ public class TorIntegrationAndroid implements BundleEventListener {
private static final String EVENT_TOR_STOP = "GeckoView:Tor:StopTor";
private static final String EVENT_MEEK_START = "GeckoView:Tor:StartMeek";
private static final String EVENT_MEEK_STOP = "GeckoView:Tor:StopMeek";
- private static final String EVENT_BOOTSTRAP_STATE_CHANGED = "GeckoView:Tor:BootstrapStateChanged";
+ private static final String EVENT_CONNECT_STATE_CHANGED = "GeckoView:Tor:ConnectStateChanged";
+ private static final String EVENT_CONNECT_ERROR = "GeckoView:Tor:ConnectError";
private static final String EVENT_BOOTSTRAP_PROGRESS = "GeckoView:Tor:BootstrapProgress";
private static final String EVENT_BOOTSTRAP_COMPLETE = "GeckoView:Tor:BootstrapComplete";
- private static final String EVENT_BOOTSTRAP_ERROR = "GeckoView:Tor:BootstrapError";
private static final String EVENT_TOR_LOGS = "GeckoView:Tor:Logs";
private static final String EVENT_SETTINGS_READY = "GeckoView:Tor:SettingsReady";
private static final String EVENT_SETTINGS_CHANGED = "GeckoView:Tor:SettingsChanged";
@@ -115,10 +115,10 @@ public class TorIntegrationAndroid implements BundleEventListener {
EVENT_MEEK_STOP,
EVENT_SETTINGS_READY,
EVENT_SETTINGS_CHANGED,
- EVENT_BOOTSTRAP_STATE_CHANGED,
+ EVENT_CONNECT_STATE_CHANGED,
+ EVENT_CONNECT_ERROR,
EVENT_BOOTSTRAP_PROGRESS,
EVENT_BOOTSTRAP_COMPLETE,
- EVENT_BOOTSTRAP_ERROR,
EVENT_TOR_LOGS,
EVENT_SETTINGS_OPEN);
}
@@ -148,28 +148,29 @@ public class TorIntegrationAndroid implements BundleEventListener {
} else {
Log.w(TAG, "Ignoring a settings changed event that did not have the new settings.");
}
- } else if (EVENT_BOOTSTRAP_STATE_CHANGED.equals(event)) {
+ } else if (EVENT_CONNECT_STATE_CHANGED.equals(event)) {
String state = message.getString("state");
for (BootstrapStateChangeListener listener: mBootstrapStateListeners) {
listener.onBootstrapStateChange(state);
}
+ } else if (EVENT_CONNECT_ERROR.equals(event)) {
+ String code = message.getString("code");
+ String msg = message.getString("message");
+ String phase = message.getString("phase");
+ String reason = message.getString("reason");
+ for (BootstrapStateChangeListener listener: mBootstrapStateListeners) {
+ listener.onBootstrapError(code, msg, phase, reason);
+ }
} else if (EVENT_BOOTSTRAP_PROGRESS.equals(event)) {
double progress = message.getDouble("progress");
- String status = message.getString("status");
boolean hasWarnings = message.getBoolean("hasWarnings");
for (BootstrapStateChangeListener listener: mBootstrapStateListeners) {
- listener.onBootstrapProgress(progress, status, hasWarnings);
+ listener.onBootstrapProgress(progress, hasWarnings);
}
} else if (EVENT_BOOTSTRAP_COMPLETE.equals(event)) {
for (BootstrapStateChangeListener listener: mBootstrapStateListeners) {
listener.onBootstrapComplete();
}
- } else if (EVENT_BOOTSTRAP_ERROR.equals(event)) {
- String msg = message.getString("message");
- String details = message.getString("details");
- for (BootstrapStateChangeListener listener: mBootstrapStateListeners) {
- listener.onBootstrapError(msg, details);
- }
} else if (EVENT_TOR_LOGS.equals(event)) {
String msg = message.getString("message");
String type = message.getString("logType");
@@ -575,9 +576,9 @@ public class TorIntegrationAndroid implements BundleEventListener {
public interface BootstrapStateChangeListener {
void onBootstrapStateChange(String state);
- void onBootstrapProgress(double progress, String status, boolean hasWarnings);
+ void onBootstrapProgress(double progress, boolean hasWarnings);
void onBootstrapComplete();
- void onBootstrapError(String message, String details);
+ void onBootstrapError(String code, String message, String phase, String reason);
void onSettingsRequested();
}
=====================================
toolkit/components/tor-launcher/TorBootstrapRequest.sys.mjs
=====================================
@@ -1,17 +1,15 @@
import { setTimeout, clearTimeout } from "resource://gre/modules/Timer.sys.mjs";
-import { TorProviderBuilder } from "resource://gre/modules/TorProviderBuilder.sys.mjs";
-import { TorLauncherUtil } from "resource://gre/modules/TorLauncherUtil.sys.mjs";
-
-/* tor-launcher observer topics */
-export const TorTopics = Object.freeze({
- BootstrapStatus: "TorBootstrapStatus",
- BootstrapError: "TorBootstrapError",
- LogHasWarnOrErr: "TorLogHasWarnOrErr",
+const lazy = {};
+
+ChromeUtils.defineESModuleGetters(lazy, {
+ TorProviderBuilder: "resource://gre/modules/TorProviderBuilder.sys.mjs",
+ TorProviderTopics: "resource://gre/modules/TorProviderBuilder.sys.mjs",
});
// modeled after XMLHttpRequest
// nicely encapsulates the observer register/unregister logic
+// TODO: Remove this class, and move its logic inside the TorProvider.
export class TorBootstrapRequest {
// number of ms to wait before we abandon the bootstrap attempt
// a value of 0 implies we never wait
@@ -20,7 +18,7 @@ export class TorBootstrapRequest {
// callbacks for bootstrap process status updates
onbootstrapstatus = (progress, status) => {};
onbootstrapcomplete = () => {};
- onbootstraperror = (message, details) => {};
+ onbootstraperror = error => {};
// internal resolve() method for bootstrap
#bootstrapPromiseResolve = null;
@@ -30,10 +28,10 @@ export class TorBootstrapRequest {
observe(subject, topic, data) {
const obj = subject?.wrappedJSObject;
switch (topic) {
- case TorTopics.BootstrapStatus: {
+ case lazy.TorProviderTopics.BootstrapStatus: {
const progress = obj.PROGRESS;
- const status = TorLauncherUtil.getLocalizedBootstrapStatus(obj, "TAG");
if (this.onbootstrapstatus) {
+ const status = obj.TAG;
this.onbootstrapstatus(progress, status);
}
if (progress === 100) {
@@ -47,9 +45,11 @@ export class TorBootstrapRequest {
break;
}
- case TorTopics.BootstrapError: {
+ case lazy.TorProviderTopics.BootstrapError: {
console.info("TorBootstrapRequest: observerd TorBootstrapError", obj);
- this.#stop(obj?.message, obj?.details);
+ const error = new Error(obj.summary);
+ Object.assign(error, obj);
+ this.#stop(error);
break;
}
}
@@ -65,17 +65,17 @@ export class TorBootstrapRequest {
this.#bootstrapPromiseResolve = resolve;
// register ourselves to listen for bootstrap events
- Services.obs.addObserver(this, TorTopics.BootstrapStatus);
- Services.obs.addObserver(this, TorTopics.BootstrapError);
+ Services.obs.addObserver(this, lazy.TorProviderTopics.BootstrapStatus);
+ Services.obs.addObserver(this, lazy.TorProviderTopics.BootstrapError);
// optionally cancel bootstrap after a given timeout
if (this.timeout > 0) {
- this.#timeoutID = setTimeout(async () => {
+ this.#timeoutID = setTimeout(() => {
this.#timeoutID = null;
- // TODO: Translate, if really used
- await this.#stop(
- "Tor Bootstrap process timed out",
- `Bootstrap attempt abandoned after waiting ${this.timeout} ms`
+ this.#stop(
+ new Error(
+ `Bootstrap attempt abandoned after waiting ${this.timeout} ms`
+ )
);
}, this.timeout);
}
@@ -83,15 +83,15 @@ export class TorBootstrapRequest {
// Wait for bootstrapping to begin and maybe handle error.
// Notice that we do not resolve the promise here in case of success, but
// we do it from the BootstrapStatus observer.
- TorProviderBuilder.build()
+ lazy.TorProviderBuilder.build()
.then(provider => provider.connect())
.catch(err => {
- this.#stop(err.message, err.torMessage);
+ this.#stop(err);
});
}).finally(() => {
// and remove ourselves once bootstrap is resolved
- Services.obs.removeObserver(this, TorTopics.BootstrapStatus);
- Services.obs.removeObserver(this, TorTopics.BootstrapError);
+ Services.obs.removeObserver(this, lazy.TorProviderTopics.BootstrapStatus);
+ Services.obs.removeObserver(this, lazy.TorProviderTopics.BootstrapError);
this.#bootstrapPromise = null;
});
@@ -103,7 +103,7 @@ export class TorBootstrapRequest {
}
// Internal implementation. Do not use directly, but call cancel, instead.
- async #stop(message, details) {
+ async #stop(error) {
// first stop our bootstrap timeout before handling the error
if (this.#timeoutID !== null) {
clearTimeout(this.#timeoutID);
@@ -112,7 +112,7 @@ export class TorBootstrapRequest {
let provider;
try {
- provider = await TorProviderBuilder.build();
+ provider = await lazy.TorProviderBuilder.build();
} catch {
// This was probably the error that lead to stop in the first place.
// No need to continue propagating it.
@@ -121,14 +121,13 @@ export class TorBootstrapRequest {
await provider?.stopBootstrap();
} catch (e) {
console.error("Failed to stop the bootstrap.", e);
- if (!message) {
- message = e.message;
- details = "";
+ if (!error) {
+ error = e;
}
}
- if (this.onbootstraperror && message) {
- this.onbootstraperror(message, details);
+ if (this.onbootstraperror && error) {
+ this.onbootstraperror(error);
}
this.#bootstrapPromiseResolve(false);
=====================================
toolkit/components/tor-launcher/TorControlPort.sys.mjs
=====================================
@@ -311,10 +311,10 @@ class AsyncSocket {
* @param {string} message The message to handle
*/
-class TorError extends Error {
+class TorProtocolError extends Error {
constructor(command, reply) {
super(`${command} -> ${reply}`);
- this.name = "TorError";
+ this.name = "TorProtocolError";
const info = reply.match(/(?<code>\d{3})(?:\s(?<message>.+))?/);
this.torStatusCode = info.groups.code;
if (info.groups.message) {
@@ -591,7 +591,7 @@ export class TorController {
async #sendCommandSimple(command) {
const reply = await this.#sendCommand(command);
if (!/^250 OK\s*$/i.test(reply)) {
- throw new TorError(command, reply);
+ throw new TorProtocolError(command, reply);
}
}
@@ -672,7 +672,7 @@ export class TorController {
reply.match(/^250-([^=]+)=(.*)$/m) ||
reply.match(/^250\+([^=]+)=\r?\n(.*?)\r?\n^\.\r?\n^250 OK\s*$/ms);
if (!match || match[1] !== key) {
- throw new TorError(cmd, reply);
+ throw new TorProtocolError(cmd, reply);
}
return match[2];
}
@@ -784,7 +784,7 @@ export class TorController {
TorParsers.unescapeString(m[1])
);
if (!values.length) {
- throw new TorError(cmd, reply);
+ throw new TorProtocolError(cmd, reply);
}
return values;
}
@@ -896,7 +896,7 @@ export class TorController {
const message = await this.#sendCommand(cmd);
// Either `250-CLIENT`, or `250 OK` if no keys are available.
if (!message.startsWith("250")) {
- throw new TorError(cmd, message);
+ throw new TorProtocolError(cmd, message);
}
const re =
/^250-CLIENT\s+(?<HSAddress>[A-Za-z2-7]+)\s+(?<KeyType>[^:]+):(?<PrivateKeyBlob>\S+)(?:\s(?<other>.+))?$/gim;
@@ -936,7 +936,7 @@ export class TorController {
const reply = await this.#sendCommand(cmd);
const status = reply.substring(0, 3);
if (status !== "250" && status !== "251" && status !== "252") {
- throw new TorError(cmd, reply);
+ throw new TorProtocolError(cmd, reply);
}
}
@@ -952,7 +952,7 @@ export class TorController {
const reply = await this.#sendCommand(cmd);
const status = reply.substring(0, 3);
if (status !== "250" && status !== "251") {
- throw new TorError(cmd, reply);
+ throw new TorProtocolError(cmd, reply);
}
}
@@ -1085,6 +1085,7 @@ export class TorController {
);
}
const status = {
+ // Type is actually StatusSeverity in the specifications.
TYPE: match[1],
...this.#getKeyValues(match[2]),
};
=====================================
toolkit/components/tor-launcher/TorLauncherUtil.sys.mjs
=====================================
@@ -417,70 +417,6 @@ export const TorLauncherUtil = Object.freeze({
return aStringName;
},
- // "torlauncher." is prepended to aStringName.
- getFormattedLocalizedString(aStringName, aArray, aLen) {
- if (!aStringName || !aArray) {
- return aStringName;
- }
- try {
- const key = kPropNamePrefix + aStringName;
- return this._stringBundle.formatStringFromName(key, aArray, aLen);
- } catch (e) {}
- return aStringName;
- },
-
- getLocalizedBootstrapStatus(aStatusObj, aKeyword) {
- if (!aStatusObj || !aKeyword) {
- return "";
- }
-
- let result;
- let fallbackStr;
- if (aStatusObj[aKeyword]) {
- let val = aStatusObj[aKeyword].toLowerCase();
- let key;
- if (aKeyword === "TAG") {
- // The bootstrap status tags in tagMap below are used by Tor
- // versions prior to 0.4.0.x. We map each one to the tag that will
- // produce the localized string that is the best fit.
- const tagMap = {
- conn_dir: "conn",
- handshake_dir: "onehop_create",
- conn_or: "enough_dirinfo",
- handshake_or: "ap_conn",
- };
- if (val in tagMap) {
- val = tagMap[val];
- }
-
- key = "bootstrapStatus." + val;
- fallbackStr = aStatusObj.SUMMARY;
- } else if (aKeyword === "REASON") {
- if (val === "connectreset") {
- val = "connectrefused";
- }
-
- key = "bootstrapWarning." + val;
- fallbackStr = aStatusObj.WARNING;
- }
-
- result = TorLauncherUtil.getLocalizedString(key);
- if (result === key) {
- result = undefined;
- }
- }
-
- if (!result) {
- result = fallbackStr;
- }
-
- if (aKeyword === "REASON" && aStatusObj.HOSTADDR) {
- result += " - " + aStatusObj.HOSTADDR;
- }
-
- return result ? result : "";
- },
-
/**
* Determine what kind of SOCKS port has been requested for this session or
* the browser has been configured for.
=====================================
toolkit/components/tor-launcher/TorProcess.sys.mjs
=====================================
@@ -193,54 +193,54 @@ export class TorProcess {
#makeArgs() {
this.#exeFile = lazy.TorLauncherUtil.getTorFile("tor", false);
+ if (!this.#exeFile) {
+ throw new Error("Could not find the tor binary.");
+ }
const torrcFile = lazy.TorLauncherUtil.getTorFile("torrc", true);
+ if (!torrcFile) {
+ // FIXME: Is this still a fatal error?
+ throw new Error("Could not find the torrc.");
+ }
// Get the Tor data directory first so it is created before we try to
// construct paths to files that will be inside it.
this.#dataDir = lazy.TorLauncherUtil.getTorFile("tordatadir", true);
+ if (!this.#dataDir) {
+ throw new Error("Could not find the tor data directory.");
+ }
const onionAuthDir = lazy.TorLauncherUtil.getTorFile(
"toronionauthdir",
true
);
- let detailsKey;
- if (!this.#exeFile) {
- detailsKey = "tor_missing";
- } else if (!torrcFile) {
- detailsKey = "torrc_missing";
- } else if (!this.#dataDir) {
- detailsKey = "datadir_missing";
- } else if (!onionAuthDir) {
- detailsKey = "onionauthdir_missing";
- }
- if (detailsKey) {
- const details = lazy.TorLauncherUtil.getLocalizedString(detailsKey);
- const key = "unable_to_start_tor";
- const err = lazy.TorLauncherUtil.getFormattedLocalizedString(
- key,
- [details],
- 1
- );
- throw new Error(err);
+ if (!onionAuthDir) {
+ throw new Error("Could not find the tor onion authentication directory.");
}
+ this.#args = [];
+ this.#args.push("-f", torrcFile.path);
+ this.#args.push("DataDirectory", this.#dataDir.path);
+ this.#args.push("ClientOnionAuthDir", onionAuthDir.path);
+
+ // TODO: Create this starting from pt_config.json (tor-browser#42357).
const torrcDefaultsFile = lazy.TorLauncherUtil.getTorFile(
"torrc-defaults",
false
);
- // The geoip and geoip6 files are in the same directory as torrc-defaults.
- const geoipFile = torrcDefaultsFile.clone();
- geoipFile.leafName = "geoip";
- const geoip6File = torrcDefaultsFile.clone();
- geoip6File.leafName = "geoip6";
-
- this.#args = [];
if (torrcDefaultsFile) {
this.#args.push("--defaults-torrc", torrcDefaultsFile.path);
+ // The geoip and geoip6 files are in the same directory as torrc-defaults.
+ // TODO: Change TorFile to return the generic path to these files to make
+ // them independent from the torrc-defaults.
+ const geoipFile = torrcDefaultsFile.clone();
+ geoipFile.leafName = "geoip";
+ this.#args.push("GeoIPFile", geoipFile.path);
+ const geoip6File = torrcDefaultsFile.clone();
+ geoip6File.leafName = "geoip6";
+ this.#args.push("GeoIPv6File", geoip6File.path);
+ } else {
+ logger.warn(
+ "torrc-defaults was not found, some functionalities will be disabled."
+ );
}
- this.#args.push("-f", torrcFile.path);
- this.#args.push("DataDirectory", this.#dataDir.path);
- this.#args.push("ClientOnionAuthDir", onionAuthDir.path);
- this.#args.push("GeoIPFile", geoipFile.path);
- this.#args.push("GeoIPv6File", geoip6File.path);
}
/**
=====================================
toolkit/components/tor-launcher/TorProvider.sys.mjs
=====================================
@@ -911,6 +911,7 @@ export class TorProvider {
* @param {object} status The status object
*/
onBootstrapStatus(status) {
+ logger.debug("Received bootstrap status update", status);
this.#processBootstrapStatus(status, true);
}
@@ -939,6 +940,7 @@ export class TorProvider {
this.#isBootstrapDone = false;
+ // Can TYPE ever be ERR for STATUS_CLIENT?
if (
isNotification &&
statusObj.TYPE === "WARN" &&
@@ -959,20 +961,7 @@ export class TorProvider {
} catch (e) {
logger.warn(`Cannot set ${Preferences.PromptAtStartup}`, e);
}
- // TODO: Move l10n to the above layers?
- const phase = TorLauncherUtil.getLocalizedBootstrapStatus(statusObj, "TAG");
- const reason = TorLauncherUtil.getLocalizedBootstrapStatus(
- statusObj,
- "REASON"
- );
- const details = TorLauncherUtil.getFormattedLocalizedString(
- "tor_bootstrap_failed_details",
- [phase, reason],
- 2
- );
- logger.error(
- `Tor bootstrap error: [${statusObj.TAG}/${statusObj.REASON}] ${details}`
- );
+ logger.error("Tor bootstrap error", statusObj);
if (
statusObj.TAG !== this.#lastWarning.phase ||
@@ -981,11 +970,19 @@ export class TorProvider {
this.#lastWarning.phase = statusObj.TAG;
this.#lastWarning.reason = statusObj.REASON;
- const message = TorLauncherUtil.getLocalizedString(
- "tor_bootstrap_failed"
- );
+ // FIXME: currently, this is observed only by TorBoostrapRequest.
+ // We should remove that class, and use an async method to do the
+ // bootstrap here.
+ // At that point, the lastWarning mechanism will probably not be necessary
+ // anymore, since the first error eligible for notification will as a
+ // matter of fact cancel the bootstrap.
Services.obs.notifyObservers(
- { message, details },
+ {
+ phase: statusObj.TAG,
+ reason: statusObj.REASON,
+ summary: statusObj.SUMMARY,
+ warning: statusObj.WARNING,
+ },
TorProviderTopics.BootstrapError
);
}
=====================================
toolkit/components/torconnect/TorConnectParent.sys.mjs
=====================================
@@ -37,10 +37,9 @@ export class TorConnectParent extends JSWindowActorParent {
State: TorConnect.state,
StateChanged: false,
PreviousState: TorConnectState.Initial,
- ErrorMessage: TorConnect.errorMessage,
+ ErrorCode: TorConnect.errorCode,
ErrorDetails: TorConnect.errorDetails,
BootstrapProgress: TorConnect.bootstrapProgress,
- BootstrapStatus: TorConnect.bootstrapStatus,
InternetStatus: TorConnect.internetStatus,
DetectedLocation: TorConnect.detectedLocation,
ShowViewLog: TorConnect.logHasWarningOrError,
@@ -59,36 +58,36 @@ export class TorConnectParent extends JSWindowActorParent {
this.state.QuickStartEnabled = false;
}
- // JSWindowActiveParent derived objects cannot observe directly, so create a member
- // object to do our observing for us
+ // JSWindowActiveParent derived objects cannot observe directly, so create a
+ // member object to do our observing for us.
//
- // This object converts the various lifecycle events from the TorConnect module, and
- // maintains a state object which we pass down to our about:torconnect page, which uses
- // the state object to update its UI
+ // This object converts the various lifecycle events from the TorConnect
+ // module, and maintains a state object which we pass down to our
+ // about:torconnect page, which uses the state object to update its UI.
this.torConnectObserver = {
observe(aSubject, aTopic, aData) {
let obj = aSubject?.wrappedJSObject;
- // update our state struct based on received torconnect topics and forward on
- // to aboutTorConnect.js
+ // Update our state struct based on received torconnect topics and
+ // forward on to aboutTorConnect.js.
self.state.StateChanged = false;
switch (aTopic) {
case TorConnectTopics.StateChange: {
self.state.PreviousState = self.state.State;
self.state.State = obj.state;
self.state.StateChanged = true;
-
- // clear any previous error information if we are bootstrapping
+ // Clear any previous error information if we are bootstrapping.
if (self.state.State === TorConnectState.Bootstrapping) {
- self.state.ErrorMessage = null;
+ self.state.ErrorCode = null;
self.state.ErrorDetails = null;
}
+ self.state.BootstrapProgress = TorConnect.bootstrapProgress;
+ self.state.ShowViewLog = TorConnect.logHasWarningOrError;
self.state.HasEverFailed = TorConnect.hasEverFailed;
break;
}
case TorConnectTopics.BootstrapProgress: {
self.state.BootstrapProgress = obj.progress;
- self.state.BootstrapStatus = obj.status;
self.state.ShowViewLog = obj.hasWarnings;
break;
}
@@ -96,9 +95,9 @@ export class TorConnectParent extends JSWindowActorParent {
// noop
break;
}
- case TorConnectTopics.BootstrapError: {
- self.state.ErrorMessage = obj.message;
- self.state.ErrorDetails = obj.details;
+ case TorConnectTopics.Error: {
+ self.state.ErrorCode = obj.code;
+ self.state.ErrorDetails = obj;
self.state.InternetStatus = TorConnect.internetStatus;
self.state.DetectedLocation = TorConnect.detectedLocation;
self.state.ShowViewLog = true;
@@ -134,7 +133,7 @@ export class TorConnectParent extends JSWindowActorParent {
},
};
- // observe all of the torconnect:.* topics
+ // Observe all of the torconnect:.* topics.
for (const key in TorConnectTopics) {
const topic = TorConnectTopics[key];
Services.obs.addObserver(this.torConnectObserver, topic);
@@ -158,7 +157,7 @@ export class TorConnectParent extends JSWindowActorParent {
}
willDestroy() {
- // stop observing all of our torconnect:.* topics
+ // Stop observing all of our torconnect:.* topics.
for (const key in TorConnectTopics) {
const topic = TorConnectTopics[key];
Services.obs.removeObserver(this.torConnectObserver, topic);
@@ -213,7 +212,8 @@ export class TorConnectParent extends JSWindowActorParent {
Services.obs.notifyObservers(message.data, BroadcastTopic);
break;
case "torconnect:get-init-args":
- // called on AboutTorConnect.init(), pass down all state data it needs to init
+ // Called on AboutTorConnect.init(), pass down all state data it needs
+ // to init.
// pretend this is a state transition on init
// so we always get fresh UI
=====================================
toolkit/components/torconnect/content/aboutTorConnect.js
=====================================
@@ -347,6 +347,59 @@ class AboutTorConnect {
this.elements.breadcrumbContainer.classList.add("hidden");
}
+ getLocalizedStatus(status) {
+ const aliases = {
+ conn_dir: "conn",
+ handshake_dir: "onehop_create",
+ conn_or: "enough_dirinfo",
+ handshake_or: "ap_conn",
+ };
+ if (status in aliases) {
+ status = aliases[status];
+ }
+ return TorStrings.torConnect.bootstrapStatus[status] ?? status;
+ }
+
+ getMaybeLocalizedError(state) {
+ if (!state?.ErrorCode) {
+ return "";
+ }
+ switch (state.ErrorCode) {
+ case "Offline":
+ return TorStrings.torConnect.offline;
+ case "BootstrapError": {
+ const details = state.ErrorDetails?.cause;
+ if (!details?.phase || !details?.reason) {
+ return TorStrings.torConnect.torBootstrapFailed;
+ }
+ let status = this.getLocalizedStatus(details.phase);
+ const reason =
+ TorStrings.torConnect.bootstrapWarning[details.reason] ??
+ details.reason;
+ return TorStrings.torConnect.bootstrapFailedDetails
+ .replace("%1$S", status)
+ .replace("%2$S", reason);
+ }
+ case "CannotDetermineCountry":
+ return TorStrings.torConnect.cannotDetermineCountry;
+ case "NoSettingsForCountry":
+ return TorStrings.torConnect.noSettingsForCountry;
+ case "AllSettingsFailed":
+ return TorStrings.torConnect.autoBootstrappingAllFailed;
+ case "ExternaError":
+ // A standard JS error, or something for which we do probably do not
+ // have a translation. Returning the original message is the best we can
+ // do.
+ return state.ErrorDetails.message;
+ default:
+ console.warn(
+ `Unknown error code: ${state.ErrorCode}`,
+ state.ErrorDetails
+ );
+ return state.ErrorDetails?.message ?? state.ErrorCode;
+ }
+ }
+
/*
These methods update the UI based on the current TorConnect state
*/
@@ -505,10 +558,10 @@ class AboutTorConnect {
}
}
- showOffline(error) {
+ showOffline(state) {
this.setTitle(TorStrings.torConnect.noInternet, "offline");
this.setLongText(TorStrings.torConnect.noInternetDescription);
- this.setProgress(error, false);
+ this.setProgress(this.getMaybeLocalizedError(state), false);
this.setBreadcrumbsStatus(
BreadcrumbStatus.Default,
BreadcrumbStatus.Active,
@@ -524,7 +577,7 @@ class AboutTorConnect {
showConnectionAssistant(state) {
this.setTitle(TorStrings.torConnect.couldNotConnect, "assist");
this.showConfigureConnectionLink(TorStrings.torConnect.assistDescription);
- this.setProgress(state?.ErrorDetails, false);
+ this.setProgress(this.getMaybeLocalizedError(state), false);
this.setBreadcrumbsStatus(
BreadcrumbStatus.Default,
BreadcrumbStatus.Active,
@@ -544,7 +597,7 @@ class AboutTorConnect {
this.showConfigureConnectionLink(
TorStrings.torConnect.errorLocationDescription
);
- this.setProgress(state.ErrorMessage, false);
+ this.setProgress(TorStrings.torConnect.cannotDetermineCountry, false);
this.setBreadcrumbsStatus(
BreadcrumbStatus.Default,
BreadcrumbStatus.Active,
@@ -564,7 +617,7 @@ class AboutTorConnect {
this.showConfigureConnectionLink(
TorStrings.torConnect.isLocationCorrectDescription
);
- this.setProgress(state.ErrorMessage, false);
+ this.setProgress(this.getMaybeLocalizedError(state), false);
this.setBreadcrumbsStatus(
BreadcrumbStatus.Default,
BreadcrumbStatus.Default,
@@ -582,7 +635,7 @@ class AboutTorConnect {
showFinalError(state) {
this.setTitle(TorStrings.torConnect.finalError, "final");
this.setLongText(TorStrings.torConnect.finalErrorDescription);
- this.setProgress(state ? state.ErrorDetails : "", false);
+ this.setProgress(this.getMaybeLocalizedError(state), false);
this.setBreadcrumbsStatus(
BreadcrumbStatus.Default,
BreadcrumbStatus.Default,
@@ -666,7 +719,7 @@ class AboutTorConnect {
}
initElements(direction) {
- const isAndroid = navigator.userAgent.indexOf("Android") !== -1;
+ const isAndroid = navigator.userAgent.includes("Android");
document.body.classList.toggle("android", isAndroid);
document.documentElement.setAttribute("dir", direction);
=====================================
toolkit/modules/TorAndroidIntegration.sys.mjs
=====================================
@@ -29,10 +29,10 @@ const logger = new ConsoleAPI({
const EmittedEvents = Object.freeze({
settingsReady: "GeckoView:Tor:SettingsReady",
settingsChanged: "GeckoView:Tor:SettingsChanged",
- bootstrapStateChanged: "GeckoView:Tor:BootstrapStateChanged",
+ connectStateChanged: "GeckoView:Tor:ConnectStateChanged",
+ connectError: "GeckoView:Tor:ConnectError",
bootstrapProgress: "GeckoView:Tor:BootstrapProgress",
bootstrapComplete: "GeckoView:Tor:BootstrapComplete",
- bootstrapError: "GeckoView:Tor:BootstrapError",
torLogs: "GeckoView:Tor:Logs",
});
@@ -98,15 +98,14 @@ class TorAndroidIntegrationImpl {
break;
case lazy.TorConnectTopics.StateChange:
lazy.EventDispatcher.instance.sendRequest({
- type: EmittedEvents.bootstrapStateChanged,
+ type: EmittedEvents.connectStateChanged,
state: subj.wrappedJSObject.state ?? "",
});
break;
case lazy.TorConnectTopics.BootstrapProgress:
lazy.EventDispatcher.instance.sendRequest({
type: EmittedEvents.bootstrapProgress,
- progress: subj.wrappedJSObject.progress ?? "",
- status: subj.wrappedJSObject.status ?? 0,
+ progress: subj.wrappedJSObject.progress ?? 0,
hasWarnings: subj.wrappedJSObject.hasWarnings ?? false,
});
break;
@@ -115,11 +114,13 @@ class TorAndroidIntegrationImpl {
type: EmittedEvents.bootstrapComplete,
});
break;
- case lazy.TorConnectTopics.BootstrapError:
+ case lazy.TorConnectTopics.Error:
lazy.EventDispatcher.instance.sendRequest({
- type: EmittedEvents.bootstrapError,
+ type: EmittedEvents.connectError,
+ code: subj.wrappedJSObject.code ?? "",
message: subj.wrappedJSObject.message ?? "",
- details: subj.wrappedJSObject.details ?? "",
+ phase: subj.wrappedJSObject.cause?.phase ?? "",
+ reason: subj.wrappedJSObject.cause?.reason ?? "",
});
break;
case lazy.TorProviderTopics.TorLog:
=====================================
toolkit/modules/TorConnect.sys.mjs
=====================================
@@ -2,7 +2,6 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
import { setTimeout, clearTimeout } from "resource://gre/modules/Timer.sys.mjs";
const lazy = {};
@@ -13,6 +12,9 @@ ChromeUtils.defineESModuleGetters(lazy, {
MoatRPC: "resource://gre/modules/Moat.sys.mjs",
TorBootstrapRequest: "resource://gre/modules/TorBootstrapRequest.sys.mjs",
TorProviderBuilder: "resource://gre/modules/TorProviderBuilder.sys.mjs",
+ TorProviderTopics: "resource://gre/modules/TorProviderBuilder.sys.mjs",
+ TorLauncherUtil: "resource://gre/modules/TorLauncherUtil.sys.mjs",
+ TorSettings: "resource://gre/modules/TorSettings.sys.mjs",
});
// TODO: Should we move this to the about:torconnect actor?
@@ -22,16 +24,6 @@ ChromeUtils.defineModuleGetter(
"resource:///modules/BrowserWindowTracker.jsm"
);
-import { TorLauncherUtil } from "resource://gre/modules/TorLauncherUtil.sys.mjs";
-import { TorSettings } from "resource://gre/modules/TorSettings.sys.mjs";
-
-import { TorStrings } from "resource://gre/modules/TorStrings.sys.mjs";
-
-const TorTopics = Object.freeze({
- LogHasWarnOrErr: "TorLogHasWarnOrErr",
- ProcessExited: "TorProcessExited",
-});
-
/* Relevant prefs used by tor-launcher */
const TorLauncherPrefs = Object.freeze({
prompt_at_startup: "extensions.torlauncher.prompt_at_startup",
@@ -60,7 +52,23 @@ export const TorConnectState = Object.freeze({
Disabled: "Disabled",
});
-XPCOMUtils.defineLazyGetter(
+export class TorConnectError extends Error {
+ static Offline = "Offline";
+ static BootstrapError = "BootstrapError";
+ static CannotDetermineCountry = "CannotDetermineCountry";
+ static NoSettingsForCountry = "NoSettingsForCountry";
+ static AllSettingsFailed = "AllSettingsFailed";
+ static ExternalError = "ExternalError";
+
+ constructor(code, cause) {
+ super(cause?.message ?? `TorConnectError: ${code}`, cause ? { cause } : {});
+ this.name = "TorConnectError";
+ this.code = code;
+ }
+}
+Object.freeze(TorConnectError);
+
+ChromeUtils.defineLazyGetter(
lazy,
"logger",
() =>
@@ -122,7 +130,7 @@ export const TorConnectTopics = Object.freeze({
StateChange: "torconnect:state-change",
BootstrapProgress: "torconnect:bootstrap-progress",
BootstrapComplete: "torconnect:bootstrap-complete",
- BootstrapError: "torconnect:bootstrap-error",
+ Error: "torconnect:error",
});
// The StateCallback is the base class to implement the various states.
@@ -173,7 +181,7 @@ class StateCallback {
`${this.#state}'s run threw, transitioning to the Error state.`,
err
);
- this.changeState(TorConnectState.Error, err?.message, err?.details);
+ this.changeState(TorConnectState.Error, err);
}
}
@@ -263,14 +271,13 @@ class ConfiguringState extends StateCallback {
}
run() {
- // The configuring state does not do anything.
+ TorConnect._bootstrapProgress = 0;
}
}
class BootstrappingState extends StateCallback {
#bootstrap = null;
- #bootstrapError = "";
- #bootstrapErrorDetails = "";
+ #bootstrapError = null;
#internetTest = null;
#cancelled = false;
@@ -291,13 +298,13 @@ class BootstrappingState extends StateCallback {
this.#bootstrap = new lazy.TorBootstrapRequest();
this.#bootstrap.onbootstrapstatus = (progress, status) => {
- TorConnect._updateBootstrapStatus(progress, status);
+ TorConnect._updateBootstrapProgress(progress, status);
};
this.#bootstrap.onbootstrapcomplete = () => {
this.#internetTest.cancel();
this.changeState(TorConnectState.Bootstrapped);
};
- this.#bootstrap.onbootstraperror = (message, details) => {
+ this.#bootstrap.onbootstraperror = error => {
if (this.#cancelled) {
// We ignore this error since it occurred after cancelling (by the
// user). We assume the error is just a side effect of the cancelling.
@@ -305,13 +312,12 @@ class BootstrappingState extends StateCallback {
// "Building circuits: Establishing a Tor circuit failed".
// TODO: Maybe move this logic deeper in the process to know when to
// filter out such errors triggered by cancelling.
- lazy.logger.warn(`Post-cancel error => ${message}; ${details}`);
+ lazy.logger.warn("Post-cancel error.", error);
return;
}
// We have to wait for the Internet test to finish before sending the
// bootstrap error
- this.#bootstrapError = message;
- this.#bootstrapErrorDetails = details;
+ this.#bootstrapError = error;
this.#maybeTransitionToError();
};
@@ -352,22 +358,23 @@ class BootstrappingState extends StateCallback {
// Do not transition to the offline error until we are sure that also the
// bootstrap failed, in case Moat is down but the bootstrap can proceed
// anyway.
- if (this.#bootstrapError === "") {
+ if (!this.#bootstrapError) {
return;
}
if (this.#internetTest.status === InternetStatus.Offline) {
this.changeState(
TorConnectState.Error,
- TorStrings.torConnect.offline,
- ""
+ new TorConnectError(TorConnectError.Offline)
);
} else {
// Give priority to the bootstrap error, in case the Internet test fails
TorConnect._hasBootstrapEverFailed = true;
this.changeState(
TorConnectState.Error,
- this.#bootstrapError,
- this.#bootstrapErrorDetails
+ new TorConnectError(
+ TorConnectError.BootstrapError,
+ this.#bootstrapError
+ )
);
}
}
@@ -393,10 +400,12 @@ class BootstrappingState extends StateCallback {
TorConnect._detectedLocation =
codes[Math.floor(Math.random() * codes.length)];
}
+ const err = new Error("Censorship simulation");
+ err.phase = "conn";
+ err.reason = "noroute";
this.changeState(
TorConnectState.Error,
- "Bootstrap failed (for debugging purposes)",
- "Error: Censorship simulation"
+ new TorConnectError(TorConnectError.BootstrapError, err)
);
return true;
}
@@ -461,8 +470,7 @@ class AutoBootstrappingState extends StateCallback {
if (!this.transitioning) {
this.changeState(
TorConnectState.Error,
- "Error: censorship simulation",
- ""
+ new TorConnectError(TorConnectError.AllSettingsFailed)
);
}
return true;
@@ -475,8 +483,7 @@ class AutoBootstrappingState extends StateCallback {
if (!this.transitioning) {
this.changeState(
TorConnectState.Error,
- "Error: Severe Censorship simulation",
- ""
+ new TorConnectError(TorConnectError.CannotDetermineCountry)
);
}
return true;
@@ -507,7 +514,7 @@ class AutoBootstrappingState extends StateCallback {
// them.
const maybeSettings = await Promise.race([
this.#moat.circumvention_settings(
- [...TorSettings.builtinBridgeTypes, "vanilla"],
+ [...lazy.TorSettings.builtinBridgeTypes, "vanilla"],
countryCode
),
// This might set maybeSettings to undefined.
@@ -523,7 +530,7 @@ class AutoBootstrappingState extends StateCallback {
// Keep consistency with the other call.
this.#settings = await Promise.race([
this.#moat.circumvention_defaults([
- ...TorSettings.builtinBridgeTypes,
+ ...lazy.TorSettings.builtinBridgeTypes,
"vanilla",
]),
// This might set this.#settings to undefined.
@@ -532,22 +539,12 @@ class AutoBootstrappingState extends StateCallback {
}
if (!this.#settings?.length && !this.transitioning) {
- // Both localized and fallback have, we can just throw to transition to
- // the error state (but only if we aren't already transitioning).
- // TODO: Let the UI layer localize the strings.
-
if (!TorConnect._detectedLocation) {
// unable to determine country
- this.#throwError(
- TorStrings.torConnect.autoBootstrappingFailed,
- TorStrings.torConnect.cannotDetermineCountry
- );
+ throw new TorConnectError(TorConnectError.CannotDetermineCountry);
} else {
// no settings available for country
- this.#throwError(
- TorStrings.torConnect.autoBootstrappingFailed,
- TorStrings.torConnect.noSettingsForCountry
- );
+ throw new TorConnectError(TorConnectError.NoSettingsForCountry);
}
}
}
@@ -585,17 +582,17 @@ class AutoBootstrappingState extends StateCallback {
// We need to merge with old settings, in case the user is using a proxy
// or is behind a firewall.
await provider.writeSettings({
- ...TorSettings.getSettings(),
+ ...lazy.TorSettings.getSettings(),
...currentSetting,
});
// Build out our bootstrap request.
const bootstrap = new lazy.TorBootstrapRequest();
bootstrap.onbootstrapstatus = (progress, status) => {
- TorConnect._updateBootstrapStatus(progress, status);
+ TorConnect._updateBootstrapProgress(progress, status);
};
- bootstrap.onbootstraperror = (message, details) => {
- lazy.logger.error(`Auto-Bootstrap error => ${message}; ${details}`);
+ bootstrap.onbootstraperror = error => {
+ lazy.logger.error("Auto-Bootstrap error", error);
};
// Begin the bootstrap.
@@ -620,14 +617,14 @@ class AutoBootstrappingState extends StateCallback {
}
if (success) {
// Persist the current settings to preferences.
- TorSettings.setSettings(currentSetting);
- TorSettings.saveToPrefs();
+ lazy.TorSettings.setSettings(currentSetting);
+ lazy.TorSettings.saveToPrefs();
// Do not await `applySettings`. Otherwise this opens up a window of
// time where the user can still "Cancel" the bootstrap.
// We are calling `applySettings` just to be on the safe side, but the
// settings we are passing now should be exactly the same we already
// passed earlier.
- TorSettings.applySettings().catch(e =>
+ lazy.TorSettings.applySettings().catch(e =>
lazy.logger.error("TorSettings.applySettings threw unexpectedly.", e)
);
this.changeState(TorConnectState.Bootstrapped);
@@ -638,19 +635,10 @@ class AutoBootstrappingState extends StateCallback {
// Only explicitly change state here if something else has not transitioned
// us.
if (!this.transitioning) {
- this.#throwError(
- TorStrings.torConnect.autoBootstrappingFailed,
- TorStrings.torConnect.autoBootstrappingAllFailed
- );
+ throw new TorConnectError(TorConnectError.AllSettingsFailed);
}
}
- #throwError(message, details) {
- let err = new Error(message);
- err.details = details;
- throw err;
- }
-
transitionRequested() {
this.#transitionResolve();
}
@@ -662,7 +650,7 @@ class AutoBootstrappingState extends StateCallback {
if (this.#changedSettings && nextState !== TorConnectState.Bootstrapped) {
try {
- await TorSettings.applySettings();
+ await lazy.TorSettings.applySettings();
} catch (e) {
// We cannot do much if the original settings were bad or
// if the connection closed, so just report it in the
@@ -698,17 +686,15 @@ class ErrorState extends StateCallback {
ErrorState.#hasEverHappened = true;
}
- run(errorMessage, errorDetails) {
- TorConnect._errorMessage = errorMessage;
- TorConnect._errorDetails = errorDetails;
- lazy.logger.error(
- `Entering error state (${errorMessage}, ${errorDetails})`
- );
+ run(error) {
+ if (!(error instanceof TorConnectError)) {
+ error = new TorConnectError(TorConnectError.ExternalError, error);
+ }
+ TorConnect._errorCode = error.code;
+ TorConnect._errorDetails = error;
+ lazy.logger.error(`Entering error state (${error.code})`, error);
- Services.obs.notifyObservers(
- { message: errorMessage, details: errorDetails },
- TorConnectTopics.BootstrapError
- );
+ Services.obs.notifyObservers(error, TorConnectTopics.Error);
this.changeState(TorConnectState.Configuring);
}
@@ -835,7 +821,6 @@ class InternetTest {
export const TorConnect = {
_stateHandler: new InitialState(),
_bootstrapProgress: 0,
- _bootstrapStatus: null,
_internetStatus: InternetStatus.Unknown,
// list of country codes Moat has settings for
_countryCodes: [],
@@ -851,7 +836,7 @@ export const TorConnect = {
})()
),
_detectedLocation: "",
- _errorMessage: null,
+ _errorCode: null,
_errorDetails: null,
_logHasWarningOrError: false,
_hasBootstrapEverFailed: false,
@@ -925,17 +910,15 @@ export const TorConnect = {
this._stateHandler.begin(...args);
},
- _updateBootstrapStatus(progress, status) {
+ _updateBootstrapProgress(progress, status) {
this._bootstrapProgress = progress;
- this._bootstrapStatus = status;
lazy.logger.info(
- `Bootstrapping ${this._bootstrapProgress}% complete (${this._bootstrapStatus})`
+ `Bootstrapping ${this._bootstrapProgress}% complete (${status})`
);
Services.obs.notifyObservers(
{
progress: TorConnect._bootstrapProgress,
- status: TorConnect._bootstrapStatus,
hasWarnings: TorConnect._logHasWarningOrError,
},
TorConnectTopics.BootstrapProgress
@@ -964,11 +947,13 @@ export const TorConnect = {
// So, we prefer initializing TorConnect as soon as possible, so that
// the UI will be able to detect it is in the Initializing state and act
// consequently.
- TorSettings.initializedPromise.then(() => this._settingsInitialized());
+ lazy.TorSettings.initializedPromise.then(() =>
+ this._settingsInitialized()
+ );
// register the Tor topics we always care about
- observeTopic(TorTopics.ProcessExited);
- observeTopic(TorTopics.LogHasWarnOrErr);
+ observeTopic(lazy.TorProviderTopics.ProcessExited);
+ observeTopic(lazy.TorProviderTopics.HasWarnOrErr);
}
},
@@ -976,11 +961,11 @@ export const TorConnect = {
lazy.logger.debug(`Observed ${topic}`);
switch (topic) {
- case TorTopics.LogHasWarnOrErr: {
+ case lazy.TorProviderTopics.HasWarnOrErr: {
this._logHasWarningOrError = true;
break;
}
- case TorTopics.ProcessExited: {
+ case lazy.TorProviderTopics.ProcessExited: {
// Treat a failure as a possibly broken configuration.
// So, prevent quickstart at the next start.
Services.prefs.setBoolPref(TorLauncherPrefs.prompt_at_startup, true);
@@ -1048,7 +1033,7 @@ export const TorConnect = {
// FIXME: This is called before the TorProvider is ready.
// As a matter of fact, at the moment it is equivalent to the following
// line, but this might become a problem in the future.
- return TorLauncherUtil.shouldStartAndOwnTor;
+ return lazy.TorLauncherUtil.shouldStartAndOwnTor;
},
get shouldShowTorConnect() {
@@ -1089,7 +1074,7 @@ export const TorConnect = {
get shouldQuickStart() {
// quickstart must be enabled
return (
- TorSettings.quickstart.enabled &&
+ lazy.TorSettings.quickstart.enabled &&
// and the previous bootstrap attempt must have succeeded
!Services.prefs.getBoolPref(TorLauncherPrefs.prompt_at_startup, true)
);
@@ -1103,10 +1088,6 @@ export const TorConnect = {
return this._bootstrapProgress;
},
- get bootstrapStatus() {
- return this._bootstrapStatus;
- },
-
get internetStatus() {
return this._internetStatus;
},
@@ -1123,8 +1104,8 @@ export const TorConnect = {
return this._detectedLocation;
},
- get errorMessage() {
- return this._errorMessage;
+ get errorCode() {
+ return this._errorCode;
},
get errorDetails() {
@@ -1195,7 +1176,7 @@ export const TorConnect = {
Further external commands and helper methods
*/
openTorPreferences() {
- if (TorLauncherUtil.isAndroid) {
+ if (lazy.TorLauncherUtil.isAndroid) {
lazy.EventDispatcher.instance.sendRequest({
type: "GeckoView:Tor:OpenSettings",
});
=====================================
toolkit/modules/TorStrings.sys.mjs
=====================================
@@ -51,11 +51,11 @@ class TorPropertyStringBundle {
return `$(${key})`;
}
- getStrings(strings) {
+ getStrings(strings, additionalPrefix = "") {
return Object.fromEntries(
Object.entries(strings).map(([key, fallback]) => [
key,
- this.getString(key, fallback),
+ this.getString(additionalPrefix + key, fallback),
])
);
}
@@ -143,7 +143,7 @@ const Loader = {
frequentLocations: "Frequently selected locations",
otherLocations: "Other locations",
- // TorConnect.jsm error messages
+ // TorConnect error messages
offline: "Internet not reachable",
autoBootstrappingFailed: "Automatic configuration failed",
autoBootstrappingAllFailed: "None of the configurations we tried worked",
@@ -158,11 +158,67 @@ const Loader = {
titlebarStatusConnected: "Connected",
};
+ // Some strings were used through TorLauncherUtils.
+ // However, we need to use them in about:torconnect, which cannot access
+ // privileged code.
+ const bootstrapStatus = {
+ starting: "Starting",
+ conn_pt: "Connecting to bridge",
+ conn_done_pt: "Connected to bridge",
+ conn_proxy: "Connecting to proxy",
+ conn_done_proxy: "Connected to proxy",
+ conn: "Connecting to a Tor relay",
+ conn_done: "Connected to a Tor relay",
+ handshake: "Negotiating with a Tor relay",
+ handshake_done: "Finished negotiating with a Tor relay",
+ onehop_create: "Establishing an encrypted directory connection",
+ requesting_status: "Retrieving network status",
+ loading_status: "Loading network status",
+ loading_keys: "Loading authority certificates",
+ requesting_descriptors: "Requesting relay information",
+ loading_descriptors: "Loading relay information",
+ enough_dirinfo: "Finished loading relay information",
+ ap_conn_pt: "Building circuits: Connecting to bridge",
+ ap_conn_done_pt: "Building circuits: Connected to bridge",
+ ap_conn_proxy: "Building circuits: Connecting to proxy",
+ ap_conn_done_proxy: "Building circuits: Connected to proxy",
+ ap_conn: "Building circuits: Connecting to a Tor relay",
+ ap_conn_done: "Building circuits: Connected to a Tor relay",
+ ap_handshake: "Building circuits: Negotiating with a Tor relay",
+ ap_handshake_done:
+ "Building circuits: Finished negotiating with a Tor relay",
+ circuit_create: "Building circuits: Establishing a Tor circuit",
+ done: "Connected to the Tor network!",
+ };
+ const bootstrapWarning = {
+ done: "done",
+ connectrefused: "connection refused",
+ misc: "miscellaneous",
+ resourcelimit: "insufficient resources",
+ identity: "identity mismatch",
+ timeout: "connection timeout",
+ noroute: "no route to host",
+ ioerror: "read/write error",
+ pt_missing: "missing pluggable transport",
+ };
+
const tsb = new TorPropertyStringBundle(
"chrome://torbutton/locale/torConnect.properties",
"torConnect."
);
- return tsb.getStrings(strings);
+ const tlsb = new TorPropertyStringBundle(
+ "chrome://torbutton/locale/torlauncher.properties",
+ "torlauncher."
+ );
+ return {
+ ...tsb.getStrings(strings),
+ bootstrapFailedDetails: tlsb.getString(
+ "tor_bootstrap_failed_details",
+ "%1$S failed (%2$S)."
+ ),
+ bootstrapStatus: tlsb.getStrings(bootstrapStatus, "bootstrapStatus."),
+ bootstrapWarning: tlsb.getStrings(bootstrapWarning, "bootstrapWarning."),
+ };
},
/*
=====================================
toolkit/torbutton/chrome/locale/en-US/torlauncher.properties
=====================================
@@ -4,20 +4,15 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
torlauncher.error_title=Tor Launcher
-
torlauncher.tor_exited_during_startup=Tor exited during startup. This might be due to an error in your torrc file, a bug in Tor or another program on your system, or faulty hardware. Until you fix the underlying problem and restart Tor, Tor Browser will not start.
torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, Tor Browser will not be able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
torlauncher.restart_tor=Restart Tor
-torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
-torlauncher.torrc_missing=The torrc file is missing and could not be created.
-torlauncher.datadir_missing=The Tor data directory does not exist and could not be created.
-torlauncher.onionauthdir_missing=The Tor onion authentication directory does not exist and could not be created.
-torlauncher.password_hash_missing=Failed to get hashed password.
+
+# Translation note: %1$S is a bootstrap phase from torlauncher.bootstrapStatus,
+# %2$S is the error from torlauncher.bootstrapWarning
+torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
torlauncher.bootstrapStatus.starting=Starting
torlauncher.bootstrapStatus.conn_pt=Connecting to bridge
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/89a5a7…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/89a5a7…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.5-1] 2 commits: fixup! Enable the connect assist experiments on alpha
by Pier Angelo Vendrame (@pierov) 15 Apr '24
by Pier Angelo Vendrame (@pierov) 15 Apr '24
15 Apr '24
Pier Angelo Vendrame pushed to branch firefox-android-115.2.1-13.5-1 at The Tor Project / Applications / firefox-android
Commits:
4a8875f4 by Pier Angelo Vendrame at 2024-04-09T20:09:45+02:00
fixup! Enable the connect assist experiments on alpha
Bug 42479: Improve TorConnect error handling
Updated the prototype of onBootstrapError.
- - - - -
c2db7c96 by Pier Angelo Vendrame at 2024-04-11T10:58:42+02:00
fixup! Add Tor integration and UI
Bug 42479: Improve TorConnect error handling
Updated the prototype of onBootstrapError.
- - - - -
3 changed files:
- fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt
- fenix/app/src/main/java/org/mozilla/fenix/tor/TorController.kt
- fenix/app/src/main/java/org/mozilla/fenix/tor/TorControllerGV.kt
Changes:
=====================================
fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt
=====================================
@@ -1383,12 +1383,12 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorIn
}
override fun onBootstrapStateChange(state: String) = Unit
- override fun onBootstrapProgress(progress: Double, status: String, hasWarnings: Boolean) = Unit
+ override fun onBootstrapProgress(progress: Double, hasWarnings: Boolean) = Unit
override fun onBootstrapComplete() {
components.useCases.tabsUseCases.removeAllTabs()
navHost.navController.navigate(NavGraphDirections.actionStartupHome())
}
- override fun onBootstrapError(message: String, details: String) = Unit
+ override fun onBootstrapError(code: String?, message: String?, phase: String?, reason: String?) = Unit
override fun onSettingsRequested() {
navHost.navController.navigate(NavGraphDirections.actionGlobalSettingsFragment())
}
=====================================
fenix/app/src/main/java/org/mozilla/fenix/tor/TorController.kt
=====================================
@@ -14,7 +14,9 @@ interface TorEvents {
}
class TorError(
var message: String,
- var details: String
+ var details: String,
+ var phase: String,
+ var reason: String,
) { }
interface TorLogs {
=====================================
fenix/app/src/main/java/org/mozilla/fenix/tor/TorControllerGV.kt
=====================================
@@ -301,8 +301,8 @@ class TorControllerGV(
}
// TorEventsBootstrapStateChangeListener
- override fun onBootstrapProgress(progress: Double, status: String?, hasWarnings: Boolean) {
- Log.d(TAG, "onBootstrapProgress($progress, $status, $hasWarnings)")
+ override fun onBootstrapProgress(progress: Double, hasWarnings: Boolean) {
+ Log.d(TAG, "onBootstrapProgress($progress, $hasWarnings)")
if (progress == 100.0) {
lastKnownStatus = TorConnectState.Bootstrapped
wasTorBootstrapped = true
@@ -312,7 +312,7 @@ class TorControllerGV(
onTorConnecting()
}
- onTorStatusUpdate(status, lastKnownStatus.toTorStatus().status, progress)
+ onTorStatusUpdate("", lastKnownStatus.toTorStatus().status, progress)
}
// TorEventsBootstrapStateChangeListener
@@ -322,8 +322,8 @@ class TorControllerGV(
}
// TorEventsBootstrapStateChangeListener
- override fun onBootstrapError(message: String?, details: String?) {
- lastKnownError = TorError(message ?: "", details ?: "")
+ override fun onBootstrapError(code: String?, message: String?, phase: String?, reason: String?) {
+ lastKnownError = TorError(code ?: "", message ?: "", phase ?: "", reason ?: "")
onBootstrapStateChange(TorConnectState.Error.state)
}
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/compare/7e…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/compare/7e…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 41122: Add var/browser_release_date
by boklm (@boklm) 15 Apr '24
by boklm (@boklm) 15 Apr '24
15 Apr '24
boklm pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build
Commits:
ebea2eb3 by Nicolas Vigier at 2024-04-15T17:17:44+02:00
Bug 41122: Add var/browser_release_date
Add a release date, and use it for MOZ_BUILD_DATE, and as timestamp on
files in projects/browser.
For nightly we use a release date based on the version number.
- - - - -
2 changed files:
- projects/browser/config
- rbm.conf
Changes:
=====================================
projects/browser/config
=====================================
@@ -1,6 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("var/torbrowser_version") %]'
filename: '[% c("var/project-name") %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
+timestamp: '[% c("var/browser_release_date_timestamp") %]'
container:
use_container: 1
=====================================
rbm.conf
=====================================
@@ -80,6 +80,8 @@ var:
- '13.0.12'
- '[% IF c("var/tor-browser") %]13.0.11[% END %]'
- '[% IF c("var/mullvad-browser") %]13.0.10[% END %]'
+ browser_release_date: '2024/03/28 01:02:03'
+ browser_release_date_timestamp: '[% USE date; date.format(c("var/browser_release_date"), "%s") %]'
updater_enabled: 1
build_mar: 1
mar_channel_id: '[% c("var/projectname") %]-torproject-[% c("var/channel") %]'
@@ -204,7 +206,8 @@ var:
[% END -%]
DOCSDIR_project: '[% project %]'
- set_MOZ_BUILD_DATE: 'export MOZ_BUILD_DATE=[% c("var_p/MOZ_BUILD_DATE") %]'
+ set_MOZ_BUILD_DATE: 'export MOZ_BUILD_DATE=[% c("var/MOZ_BUILD_DATE") %]'
+ MOZ_BUILD_DATE: '[% USE date; date.format(c("var/browser_release_date"), "%Y%m%d%H%M%S") %]'
# var/essential_deps is the same as var/deps, except that we never
# redefine it in projects config. This is for the packages we want to
@@ -246,6 +249,14 @@ targets:
GET c("var_p/nightly_torbrowser_version");
END;
-%]
+ browser_release_date: |
+ [%
+ IF (matches = c("var/torbrowser_version").match('^tbb-nightly\.(\d\d\d\d)\.(\d\d)\.(\d\d)$'));
+ GET matches.0 _ "/" _ matches.1 _ "/" _ matches.2 _ " 01:01:01";
+ ELSE;
+ GET "2000/01/01 01:01:01";
+ END
+ -%]
max_torbrowser_incremental_from: 2
build_infos_json: 1
@@ -725,31 +736,5 @@ gpg_allow_expired_keys: 1
}
return [@res];
},
- MOZ_BUILD_DATE => sub {
- use POSIX qw(strftime);
- my ($project, $options) = @_;
- my $nightly = project_config($project, 'var/nightly', $options);
- my $testbuild = project_config($project, 'var/testbuild', $options);
-
- if ($nightly && !$testbuild) {
- my $torbrowser_version = project_config($project, 'var/torbrowser_version', $options);
- return sprintf("%d%02d%02d000001", $1, $2, $3)
- if $torbrowser_version =~ m/^tbb-nightly\.([^\.]+)\.([^\.]+)\.([^\.]+)$/;
- return strftime("%Y%m%d000001", gmtime);
- }
-
- my $timestamp = project_config($project, 'timestamp', $options);
- if (!$nightly) {
- my $torbrowser_version = project_config($project, 'var/torbrowser_version', $options);
- my @n = reverse split /[\.\D]/, $torbrowser_version;
- my $i = 1;
- unshift @n, 0 if @n < 3;
- for my $n (@n) {
- $timestamp += $n * $i;
- $i = $i * 10;
- }
- }
- return strftime "%Y%m%d%H%M%S", gmtime($timestamp);
- },
},
)
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/e…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/e…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] fixup! Bug 41803: Add some developer tools for working on tor-browser.
by ma1 (@ma1) 15 Apr '24
by ma1 (@ma1) 15 Apr '24
15 Apr '24
ma1 pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
89a5a7fd by hackademix at 2024-04-15T11:52:47+02:00
fixup! Bug 41803: Add some developer tools for working on tor-browser.
Bug 42516: Make tb-dev worktree-compatible
- - - - -
1 changed file:
- tools/torbrowser/tb-dev
Changes:
=====================================
tools/torbrowser/tb-dev
=====================================
@@ -57,10 +57,12 @@ def get_local_root():
global local_root
if local_root is None:
try:
+ # Make sure we have a matching remote in this git repository. Should raise Exception if we don't.
+ get_upstream_name()
git_root = git_get(["rev-parse", "--show-toplevel"])[0]
- except subprocess.CalledProcessError:
+ except Exception:
git_root = None
- if git_root is None or os.path.basename(git_root) != "tor-browser":
+ if git_root is None:
local_root = ""
else:
local_root = git_root
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/89a5a7f…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/89a5a7f…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][main] Bug 41122: Add var/browser_release_date
by boklm (@boklm) 12 Apr '24
by boklm (@boklm) 12 Apr '24
12 Apr '24
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
b1ae0065 by Nicolas Vigier at 2024-04-12T21:11:31+02:00
Bug 41122: Add var/browser_release_date
Add a release date, and use it for MOZ_BUILD_DATE, and as timestamp on
files in projects/browser.
For nightly we use a release date based on the version number.
- - - - -
4 changed files:
- .gitlab/issue_templates/Release Prep - Mullvad Browser Alpha.md
- .gitlab/issue_templates/Release Prep - Tor Browser Alpha.md
- projects/browser/config
- rbm.conf
Changes:
=====================================
.gitlab/issue_templates/Release Prep - Mullvad Browser Alpha.md
=====================================
@@ -39,6 +39,7 @@ Mullvad Browser Alpha (and Nightly) are on the `main` branch
- [ ] Update `rbm.conf`
- [ ] `var/torbrowser_version` : update to next version
- [ ] `var/torbrowser_build` : update to `$(MULLVAD_BROWSER_BUILD_N)`
+ - [ ] `var/browser_release_date` : update to build date
- [ ] `var/torbrowser_incremental_from` : update to previous Desktop version
- **NOTE**: We try to build incrementals for the previous 3 desktop versions except in the case of a watershed update
- **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make mullvadbrowser-incrementals-*` step will fail
=====================================
.gitlab/issue_templates/Release Prep - Tor Browser Alpha.md
=====================================
@@ -38,6 +38,7 @@ Tor Browser Alpha (and Nightly) are on the `main` branch
- [ ] Update `rbm.conf`
- [ ] `var/torbrowser_version` : update to next version
- [ ] `var/torbrowser_build` : update to `$(TOR_BROWSER_BUILD_N)`
+ - [ ] `var/browser_release_date` : update to build date
- [ ] ***(Desktop Only)***`var/torbrowser_incremental_from` : update to previous Desktop version
- **NOTE**: We try to build incrementals for the previous 3 desktop versions except in the case of a watershed update
- **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make torbrowser-incrementals-*` step will fail
=====================================
projects/browser/config
=====================================
@@ -1,6 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("var/torbrowser_version") %]'
filename: '[% c("var/project-name") %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
+timestamp: '[% c("var/browser_release_date_timestamp") %]'
container:
use_container: 1
=====================================
rbm.conf
=====================================
@@ -79,6 +79,8 @@ var:
- '13.5a5'
- '13.5a4'
- '13.5a3'
+ browser_release_date: '2024/03/28 01:02:03'
+ browser_release_date_timestamp: '[% USE date; date.format(c("var/browser_release_date"), "%s") %]'
updater_enabled: 1
build_mar: 1
mar_channel_id: '[% c("var/projectname") %]-torproject-[% c("var/channel") %]'
@@ -206,7 +208,8 @@ var:
[% END -%]
DOCSDIR_project: '[% project %]'
- set_MOZ_BUILD_DATE: 'export MOZ_BUILD_DATE=[% c("var_p/MOZ_BUILD_DATE") %]'
+ set_MOZ_BUILD_DATE: 'export MOZ_BUILD_DATE=[% c("var/MOZ_BUILD_DATE") %]'
+ MOZ_BUILD_DATE: '[% USE date; date.format(c("var/browser_release_date"), "%Y%m%d%H%M%S") %]'
# var/essential_deps is the same as var/deps, except that we never
# redefine it in projects config. This is for the packages we want to
@@ -248,6 +251,14 @@ targets:
GET c("var_p/nightly_torbrowser_version");
END;
-%]
+ browser_release_date: |
+ [%
+ IF (matches = c("var/torbrowser_version").match('^tbb-nightly\.(\d\d\d\d)\.(\d\d)\.(\d\d)$'));
+ GET matches.0 _ "/" _ matches.1 _ "/" _ matches.2 _ " 01:01:01";
+ ELSE;
+ GET "2000/01/01 01:01:01";
+ END
+ -%]
max_torbrowser_incremental_from: 2
build_infos_json: 1
@@ -727,31 +738,5 @@ gpg_allow_expired_keys: 1
}
return [@res];
},
- MOZ_BUILD_DATE => sub {
- use POSIX qw(strftime);
- my ($project, $options) = @_;
- my $nightly = project_config($project, 'var/nightly', $options);
- my $testbuild = project_config($project, 'var/testbuild', $options);
-
- if ($nightly && !$testbuild) {
- my $torbrowser_version = project_config($project, 'var/torbrowser_version', $options);
- return sprintf("%d%02d%02d000001", $1, $2, $3)
- if $torbrowser_version =~ m/^tbb-nightly\.([^\.]+)\.([^\.]+)\.([^\.]+)$/;
- return strftime("%Y%m%d000001", gmtime);
- }
-
- my $timestamp = project_config($project, 'timestamp', $options);
- if (!$nightly) {
- my $torbrowser_version = project_config($project, 'var/torbrowser_version', $options);
- my @n = reverse split /[\.\D]/, $torbrowser_version;
- my $i = 1;
- unshift @n, 0 if @n < 3;
- for my $n (@n) {
- $timestamp += $n * $i;
- $i = $i * 10;
- }
- }
- return strftime "%Y%m%d%H%M%S", gmtime($timestamp);
- },
},
)
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/b…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/b…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/mullvad-browser-update-responses][main] release: new version, 13.0.14
by richard (@richard) 11 Apr '24
by richard (@richard) 11 Apr '24
11 Apr '24
richard pushed to branch main at The Tor Project / Applications / mullvad-browser-update-responses
Commits:
bf3de224 by Richard Pospesel at 2024-04-11T17:12:40+00:00
release: new version, 13.0.14
- - - - -
29 changed files:
- update_1/release/.htaccess
- − update_1/release/13.0.10-13.0.13-linux-x86_64-ALL.xml
- − update_1/release/13.0.10-13.0.13-macos-ALL.xml
- − update_1/release/13.0.10-13.0.13-windows-x86_64-ALL.xml
- + update_1/release/13.0.10-13.0.14-linux-x86_64-ALL.xml
- + update_1/release/13.0.10-13.0.14-macos-ALL.xml
- + update_1/release/13.0.10-13.0.14-windows-x86_64-ALL.xml
- − update_1/release/13.0.12-13.0.13-linux-x86_64-ALL.xml
- − update_1/release/13.0.12-13.0.13-macos-ALL.xml
- − update_1/release/13.0.12-13.0.13-windows-x86_64-ALL.xml
- + update_1/release/13.0.12-13.0.14-linux-x86_64-ALL.xml
- + update_1/release/13.0.12-13.0.14-macos-ALL.xml
- + update_1/release/13.0.12-13.0.14-windows-x86_64-ALL.xml
- + update_1/release/13.0.13-13.0.14-linux-x86_64-ALL.xml
- + update_1/release/13.0.13-13.0.14-macos-ALL.xml
- + update_1/release/13.0.13-13.0.14-windows-x86_64-ALL.xml
- − update_1/release/13.0.13-linux-x86_64-ALL.xml
- − update_1/release/13.0.13-macos-ALL.xml
- − update_1/release/13.0.13-windows-x86_64-ALL.xml
- + update_1/release/13.0.14-linux-x86_64-ALL.xml
- + update_1/release/13.0.14-macos-ALL.xml
- + update_1/release/13.0.14-windows-x86_64-ALL.xml
- − update_1/release/13.0.9-13.0.13-linux-x86_64-ALL.xml
- − update_1/release/13.0.9-13.0.13-macos-ALL.xml
- − update_1/release/13.0.9-13.0.13-windows-x86_64-ALL.xml
- update_1/release/download-linux-x86_64.json
- update_1/release/download-macos.json
- update_1/release/download-windows-x86_64.json
- update_1/release/downloads.json
Changes:
=====================================
update_1/release/.htaccess
=====================================
@@ -1,22 +1,22 @@
RewriteEngine On
-RewriteRule ^[^/]+/13.0.13/ no-update.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.13-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/13.0.12/ALL 13.0.12-13.0.13-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.13-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/[^/]+/ALL 13.0.13-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/ 13.0.13-linux-x86_64-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.13-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/13.0.12/ALL 13.0.12-13.0.13-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.13-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/[^/]+/ALL 13.0.13-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/ 13.0.13-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/13.0.10/ALL 13.0.10-13.0.13-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/13.0.12/ALL 13.0.12-13.0.13-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/13.0.9/ALL 13.0.9-13.0.13-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/[^/]+/ALL 13.0.13-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/ 13.0.13-macos-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.10/ALL 13.0.10-13.0.13-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.12/ALL 13.0.12-13.0.13-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.9/ALL 13.0.9-13.0.13-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/[^/]+/ALL 13.0.13-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/ 13.0.13-windows-x86_64-ALL.xml [last]
+RewriteRule ^[^/]+/13.0.14/ no-update.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.14-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/13.0.12/ALL 13.0.12-13.0.14-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/13.0.13/ALL 13.0.13-13.0.14-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/[^/]+/ALL 13.0.14-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/ 13.0.14-linux-x86_64-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.14-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/13.0.12/ALL 13.0.12-13.0.14-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/13.0.13/ALL 13.0.13-13.0.14-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/[^/]+/ALL 13.0.14-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/ 13.0.14-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/13.0.10/ALL 13.0.10-13.0.14-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/13.0.12/ALL 13.0.12-13.0.14-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/13.0.13/ALL 13.0.13-13.0.14-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/[^/]+/ALL 13.0.14-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/ 13.0.14-macos-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.10/ALL 13.0.10-13.0.14-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.12/ALL 13.0.12-13.0.14-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.13/ALL 13.0.13-13.0.14-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/[^/]+/ALL 13.0.14-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/ 13.0.14-windows-x86_64-ALL.xml [last]
=====================================
update_1/release/13.0.10-13.0.13-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="04cad7d72b90b41fcca52e05cb4c5904d6516669a32772c498e0b0bb2803ce10e1458ff76d4acfd5a3d9146d8673b258a74c45ca978eb09ea7dcf37c1c2e5238" size="107414411" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="44124453ad5e941790fa865442479ec425373e148a23e7a0f90b494d9e32e623d99c91fbbe942bb3633016663347593962ce7c2a51a5a69eee30433302f42d19" size="7912308" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.13-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13_ALL.m…" hashFunction="SHA512" hashValue="7afaca7077a1f968705fcf1094d16a1b441befcbd2de342654ca78d6ba7cc631622493afd3e71984839283aa37abc66c92021dfee8ecdfd345019a549a220ffb" size="115471199" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos--13.0.10-13.0…" hashFunction="SHA512" hashValue="9fa955c4ac58cb215cfb783284dca39fbbaab7dcebf9f58ca7e4884ffeb03c102abf97c07c7b7adf60c5d69180529afb48f1a9ca5237d42cb3866c7131a6d687" size="12184147" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.13-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="c6aea6ab8c33c4c58bd3a5783db1c7ed4682706e09a239b6ac61b6e28f783ae785891b88374caecbeb49dd388853f090e09a0ff84540de69dcccc065fa6abdbe" size="89393168" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="879e5c052f493485631911ae8b95dcd259c376a43d25ea5e502e2bf3db6e4e66162704d73d0597e85a1433c04fc1d464d64dd4da30b91ce9d77729729d0e931c" size="8623995" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.14-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="40fda8d5eb0ddd6b5e516e686ba88f7ea57fb7b7c70868ca11f19b198911eb83acab8057f7cd2b107be46e5ab60dac8ac3e8df7f10f37d7309767830defb2f42" size="107492923" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="ebeaebec06f3cf9f075524b43167b2d5ea69d8e3137763212a2ed3b96ee91d46e08edb62ac6ad3c075e477446fe3a7dcff956bbd1eba14c6879bfc29c1e10a3d" size="9369512" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.14-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-macos-13.0.14_ALL.m…" hashFunction="SHA512" hashValue="444609f144bbcc48b7226465078772e8d78d96fda177453aada2f75cb14edc9481dd13948f7313d953ce1ebb858f56884b938cddb7b9252de67db961c9bfc434" size="115543851" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-macos--13.0.10-13.0…" hashFunction="SHA512" hashValue="2e82745bc649b6000fe13c2d0f72df555d7f1c0a00a14b7abdada8c56381b690ac54f0cb02b53438d18f9cc2621bbf186da33580dbb53b74109d8f25d6c721d3" size="14070463" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.14-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="bc0c7b7a2054a16f96832f44b9bd35ebb8486d08aebb7fc749f0bb24006830aa566d887bb253e6b297bfeb6ff442b56b18adb773309ba887fa3e12a1b9f25362" size="89463392" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="1d3924edf03ceab4963b97bc1df3ff94ecf784f517870b5e777a4a746332b73724621a0239c577a026f1c88a5256746219203c34c266cc77c3b2af0558a3fd44" size="9905751" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.12-13.0.13-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="04cad7d72b90b41fcca52e05cb4c5904d6516669a32772c498e0b0bb2803ce10e1458ff76d4acfd5a3d9146d8673b258a74c45ca978eb09ea7dcf37c1c2e5238" size="107414411" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="e23005d579adbfd1b3cd6b2ee19b7c5c861afa19169d8c6a9249b2ce71c676eac7f7abfa6c1f0d643f7c6372e1ed364657543c88de2bb570938e23629310c85e" size="186481" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.12-13.0.13-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13_ALL.m…" hashFunction="SHA512" hashValue="7afaca7077a1f968705fcf1094d16a1b441befcbd2de342654ca78d6ba7cc631622493afd3e71984839283aa37abc66c92021dfee8ecdfd345019a549a220ffb" size="115471199" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos--13.0.12-13.0…" hashFunction="SHA512" hashValue="9c446838df3df621eb3d282f1d6ed5313eaf228f004ecada89b99e67075217556bf6cbd78f709a2f527719cbcfa394cd9266388ef782d6a1a2b69863380ebe8a" size="208530" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.12-13.0.13-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="c6aea6ab8c33c4c58bd3a5783db1c7ed4682706e09a239b6ac61b6e28f783ae785891b88374caecbeb49dd388853f090e09a0ff84540de69dcccc065fa6abdbe" size="89393168" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="0e958f81c03c334f01ec24727d8b7b203cccd36bc7ef11c97b1792e7b8c2296eb5f148c28bc3ba334b51012dcdb5d2830d7195fa6265e065dfbde1505549be52" size="189676" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.12-13.0.14-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="40fda8d5eb0ddd6b5e516e686ba88f7ea57fb7b7c70868ca11f19b198911eb83acab8057f7cd2b107be46e5ab60dac8ac3e8df7f10f37d7309767830defb2f42" size="107492923" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="926f32fc4c3eb64935364f20a18cae93a8e928227c81826e2e280c97e3a2aed0342883298c20733b4f5fdf9aa2c0a6c4e73a6768b0e5b639cf624a949ec1f2e6" size="7893763" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.12-13.0.14-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-macos-13.0.14_ALL.m…" hashFunction="SHA512" hashValue="444609f144bbcc48b7226465078772e8d78d96fda177453aada2f75cb14edc9481dd13948f7313d953ce1ebb858f56884b938cddb7b9252de67db961c9bfc434" size="115543851" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-macos--13.0.12-13.0…" hashFunction="SHA512" hashValue="607c56a15fbbb39a22c9f62ec928d7a2239537fe56a441394403ed8cfd86b7b1cd9722e4932a74fd45ffbdc54bfd9b119481fb8fb24cf0d6603b6f5f8f0ca46f" size="12156659" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.12-13.0.14-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="bc0c7b7a2054a16f96832f44b9bd35ebb8486d08aebb7fc749f0bb24006830aa566d887bb253e6b297bfeb6ff442b56b18adb773309ba887fa3e12a1b9f25362" size="89463392" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="a2baf03471f3da3478fdcb031c5d3405b687a06e01704dc278e6c27b5e21d0c60c9a441b1f0d2e727585c5fe7cfbfe138f488333644ea248b2cb0426a54b6fb9" size="8547030" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.13-13.0.14-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="40fda8d5eb0ddd6b5e516e686ba88f7ea57fb7b7c70868ca11f19b198911eb83acab8057f7cd2b107be46e5ab60dac8ac3e8df7f10f37d7309767830defb2f42" size="107492923" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="dfb8a3923a430e331a72d43fc1379a67cf996aeb1a05212e98192838cd2f8fe3988a8e058539da56838f1027583c6d619a7463e818dcdfc2b4a1b8fb473ab717" size="7843771" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.13-13.0.14-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-macos-13.0.14_ALL.m…" hashFunction="SHA512" hashValue="444609f144bbcc48b7226465078772e8d78d96fda177453aada2f75cb14edc9481dd13948f7313d953ce1ebb858f56884b938cddb7b9252de67db961c9bfc434" size="115543851" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-macos--13.0.13-13.0…" hashFunction="SHA512" hashValue="4165cfdcb22dd1238758f3bb2121ec69706d9e05ad02475f2d640a4616e38b24f927132f80ab816ce1681120843acde24ffbafc60d717e96755e72aa9fa8af83" size="12090823" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.13-13.0.14-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="bc0c7b7a2054a16f96832f44b9bd35ebb8486d08aebb7fc749f0bb24006830aa566d887bb253e6b297bfeb6ff442b56b18adb773309ba887fa3e12a1b9f25362" size="89463392" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="37386c86850adc40423ec5bb57341b3c0054316e58ecbb8066369174d8e89a301317746ee05d76b8db019cc9f17317537730f54146ee3ebe1e708ad3af8387ee" size="8495958" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.13-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="04cad7d72b90b41fcca52e05cb4c5904d6516669a32772c498e0b0bb2803ce10e1458ff76d4acfd5a3d9146d8673b258a74c45ca978eb09ea7dcf37c1c2e5238" size="107414411" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.13-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13_ALL.m…" hashFunction="SHA512" hashValue="7afaca7077a1f968705fcf1094d16a1b441befcbd2de342654ca78d6ba7cc631622493afd3e71984839283aa37abc66c92021dfee8ecdfd345019a549a220ffb" size="115471199" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.13-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="c6aea6ab8c33c4c58bd3a5783db1c7ed4682706e09a239b6ac61b6e28f783ae785891b88374caecbeb49dd388853f090e09a0ff84540de69dcccc065fa6abdbe" size="89393168" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.14-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="40fda8d5eb0ddd6b5e516e686ba88f7ea57fb7b7c70868ca11f19b198911eb83acab8057f7cd2b107be46e5ab60dac8ac3e8df7f10f37d7309767830defb2f42" size="107492923" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.14-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-macos-13.0.14_ALL.m…" hashFunction="SHA512" hashValue="444609f144bbcc48b7226465078772e8d78d96fda177453aada2f75cb14edc9481dd13948f7313d953ce1ebb858f56884b938cddb7b9252de67db961c9bfc434" size="115543851" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.14-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.14" appVersion="13.0.14" platformVersion="115.10.0" buildID="20240408204645" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.14" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="bc0c7b7a2054a16f96832f44b9bd35ebb8486d08aebb7fc749f0bb24006830aa566d887bb253e6b297bfeb6ff442b56b18adb773309ba887fa3e12a1b9f25362" size="89463392" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.13-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="04cad7d72b90b41fcca52e05cb4c5904d6516669a32772c498e0b0bb2803ce10e1458ff76d4acfd5a3d9146d8673b258a74c45ca978eb09ea7dcf37c1c2e5238" size="107414411" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="913d31600e2b0d20645927fe0549da5881859dc5990942780e3423df7265fabf343b40037a2b488d55fdaeb49f911d3212f61970affd55e43e8f441a489a65c9" size="8819028" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.13-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13_ALL.m…" hashFunction="SHA512" hashValue="7afaca7077a1f968705fcf1094d16a1b441befcbd2de342654ca78d6ba7cc631622493afd3e71984839283aa37abc66c92021dfee8ecdfd345019a549a220ffb" size="115471199" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos--13.0.9-13.0.…" hashFunction="SHA512" hashValue="aab41c685738d2288a7f5e33d83c7ef669460e981a6e9a454e81b8b0b5eef77a01babcb17cb7a071591edfae0a55357de79e5e54df4a07c51383f04e49a1d562" size="13403343" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.13-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="c6aea6ab8c33c4c58bd3a5783db1c7ed4682706e09a239b6ac61b6e28f783ae785891b88374caecbeb49dd388853f090e09a0ff84540de69dcccc065fa6abdbe" size="89393168" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="6683305d0c690acd1ee2c5e5c10b430b9b2e93f4905a4cf51f883cf92096291f8373a836a283cdb6fbf60258556052c7308b35b63197e958ae83b7e0212231fa" size="9548715" type="partial"></patch></update></updates>
=====================================
update_1/release/download-linux-x86_64.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…","git_tag":"mb-13.0.13-build1","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…","version":"13.0.13"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-linux-x86_64-13.0.1…","git_tag":"mb-13.0.14-build1","sig":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-linux-x86_64-13.0.1…","version":"13.0.14"}
\ No newline at end of file
=====================================
update_1/release/download-macos.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13.dmg","git_tag":"mb-13.0.13-build1","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13.dmg.a…","version":"13.0.13"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-macos-13.0.14.dmg","git_tag":"mb-13.0.14-build1","sig":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-macos-13.0.14.dmg.a…","version":"13.0.14"}
\ No newline at end of file
=====================================
update_1/release/download-windows-x86_64.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-port…","git_tag":"mb-13.0.13-build1","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-port…","version":"13.0.13"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-windows-x86_64-port…","git_tag":"mb-13.0.14-build1","sig":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-windows-x86_64-port…","version":"13.0.14"}
\ No newline at end of file
=====================================
update_1/release/downloads.json
=====================================
@@ -1 +1 @@
-{"downloads":{"linux-x86_64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…"}},"macos":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13.dmg","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13.dmg.a…"}},"win64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-port…","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-port…"}}},"tag":"mb-13.0.13-build1","version":"13.0.13"}
\ No newline at end of file
+{"downloads":{"linux-x86_64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-linux-x86_64-13.0.1…","sig":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-linux-x86_64-13.0.1…"}},"macos":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-macos-13.0.14.dmg","sig":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-macos-13.0.14.dmg.a…"}},"win64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-windows-x86_64-port…","sig":"https://cdn.mullvad.net/browser/13.0.14/mullvad-browser-windows-x86_64-port…"}}},"tag":"mb-13.0.14-build1","version":"13.0.14"}
\ No newline at end of file
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser-update-respo…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser-update-respo…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build] Pushed new tag mb-13.0.14-build1
by Pier Angelo Vendrame (@pierov) 11 Apr '24
by Pier Angelo Vendrame (@pierov) 11 Apr '24
11 Apr '24
Pier Angelo Vendrame pushed new tag mb-13.0.14-build1 at The Tor Project / Applications / tor-browser-build
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/tree/mb-…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 41099, 41100: Prepare Tor and Mullvad Browser Stable 13.0.14
by Pier Angelo Vendrame (@pierov) 11 Apr '24
by Pier Angelo Vendrame (@pierov) 11 Apr '24
11 Apr '24
Pier Angelo Vendrame pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build
Commits:
47af4318 by Pier Angelo Vendrame at 2024-04-11T15:37:19+02:00
Bug 41099, 41100: Prepare Tor and Mullvad Browser Stable 13.0.14
- - - - -
10 changed files:
- projects/browser/Bundle-Data/Docs-MB/ChangeLog.txt
- projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
- projects/browser/allowed_addons.json
- projects/browser/config
- projects/firefox/config
- projects/geckoview/config
- projects/go/config
- projects/tor/config
- projects/translation/config
- rbm.conf
Changes:
=====================================
projects/browser/Bundle-Data/Docs-MB/ChangeLog.txt
=====================================
@@ -1,3 +1,51 @@
+Mullvad Browser 13.0.14 - April 16 2024
+ * All Platforms
+ * Updated Firefox to 115.10.0esr
+ * Updated uBlock Origin to 1.57.2
+ * Bug 271: After update, don't open the release page on Github. Instead link it in the startpage, like in Tor Browser [mullvad-browser]
+ * Bug 283: New identity complains about about:mullvad-browser [mullvad-browser]
+ * Bug 285: Rebase Mullvad Browser stable onto 115.10.0esr [mullvad-browser]
+ * Bug 41676: Set privacy.resistFingerprinting.testing.setTZtoUTC as a defense-in-depth [tor-browser]
+ * Bug 42236: Let users decide whether to load their home page on new identity. [tor-browser]
+ * Bug 42335: Do not localize the order of locales for app lang [tor-browser]
+ * Bug 42428: Timezone offset leak via document.lastModified [tor-browser]
+ * Bug 42468: App languages not sorted correctly in stable [tor-browser]
+ * Bug 42472: Timezone May leak from XSLT Date function [tor-browser]
+ * Linux
+ * Bug 41110: Avoid Fontconfig warning about "ambiguous path" [tor-browser-build]
+
+Mullvad Browser 13.5a6 - March 28 2024
+ * All Platforms
+ * Updated Firefox to 115.9.0esr
+ * Updated mullvad-browser-extension to 0.9.0
+ * Bug 234: Make User-Agent request header match RFP's navigator.userAgent [mullvad-browser]
+ * Bug 271: After update, don't open the release page on Github. Instead link it in the startpage, like in Tor Browser [mullvad-browser]
+ * Bug 274: Rebase Mullvad Browser alpha onto Firefox 115.9.0esr [mullvad-browser]
+ * Bug 41676: Set privacy.resistFingerprinting.testing.setTZtoUTC as a defense-in-depth [tor-browser]
+ * Bug 41916: Letterboxing preferences UI [tor-browser]
+ * Bug 41918: Add option to reuse last window size when letterboxing is enabled [tor-browser]
+ * Bug 42211: Fluent migration: new identity [tor-browser]
+ * Bug 42214: Fluent migration: security level [tor-browser]
+ * Bug 42236: Let users decide whether to load their home page on new identity. [tor-browser]
+ * Bug 42428: Timezone offset leak via document.lastModified [tor-browser]
+ * Bug 42443: Shrink the window to match letterboxing size when the emtpy area is doble-clicked [tor-browser]
+ * Bug 42472: Timezone May leak from XSLT Date function [tor-browser]
+ * Bug 42473: ESR 115.9.1 fixes [tor-browser]
+ * Windows
+ * Bug 80: Make 'Mullvad your default browser' does not work on Windows [mullvad-browser]
+ * Bug 42377: Hidden fonts are automatically added to the allow list [tor-browser]
+ * Bug 41089: Add filetype association to the installer of Mullvad Browser [tor-browser-build]
+ * Linux
+ * Bug 42438: Adapt the data import wizard to use the original $HOME on Linux [tor-browser]
+ * Bug 41110: Avoid Fontconfig warning about "ambiguous path" [tor-browser-build]
+ * Build System
+ * All Platforms
+ * Bug 41088: Remove use of projects/browser/run_scripts [tor-browser-build]
+ * Bug 41102: src archive does not match likely due to mismatched xz-utils version [tor-browser-build]
+ * Bug 40073: We should remove ./ when using 7-zip for zip files [rbm]
+ * Windows
+ * Bug 41097: authenticode-timestamping.sh fails to run again because tmp-timestamp already exists [tor-browser-build]
+
Mullvad Browser 13.0.13 - March 22 2024
* Windows + macOS + Linux
* Updated Firefox to 115.9.1esr
=====================================
projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
=====================================
@@ -1,3 +1,76 @@
+Tor Browser 13.0.14 - April 16 2024
+ * All Platforms
+ * Updated Tor to 0.4.8.11
+ * Bug 41676: Set privacy.resistFingerprinting.testing.setTZtoUTC as a defense-in-depth [tor-browser]
+ * Bug 42335: Do not localize the order of locales for app lang [tor-browser]
+ * Bug 42428: Timezone offset leak via document.lastModified [tor-browser]
+ * Bug 42472: Timezone May leak from XSLT Date function [tor-browser]
+ * Bug 42508: Rebase Tor Browser stable onto 115.10.0esr [tor-browser]
+ * Windows + macOS + Linux
+ * Updated Firefox to 115.10.0esr
+ * Bug 42236: Let users decide whether to load their home page on new identity. [tor-browser]
+ * Bug 42468: App languages not sorted correctly in stable [tor-browser]
+ * Android
+ * Updated GeckoView to 115.10.0esr
+ * Linux
+ * Bug 41110: Avoid Fontconfig warning about "ambiguous path" [tor-browser-build]
+ * Build System
+ * All Platforms
+ * Updated Go to 1.21.8
+ * Bug 41107: Update download-unsigned-sha256sums-gpg-signatures-from-people-tpo for new type of URL [tor-browser-build]
+
+Tor Browser 13.5a6 - March 28 2024
+ * All Platforms
+ * Bug 41114: Fix no-async-promise-executor on TorConnect [tor-browser]
+ * Bug 41676: Set privacy.resistFingerprinting.testing.setTZtoUTC as a defense-in-depth [tor-browser]
+ * Bug 42336: Review the relationship between TorSettings and the TorProvider [tor-browser]
+ * Bug 42428: Timezone offset leak via document.lastModified [tor-browser]
+ * Bug 42435: Update moat domain fronting configuration [tor-browser]
+ * Bug 42437: Drop "torbrowser.version" preference [tor-browser]
+ * Bug 42444: Remove the "Prioritize .onion sites when known" option [tor-browser]
+ * Bug 42449: Rebase Tor Browser alpha onto Firefox 115.9.0esr [tor-browser]
+ * Bug 42459: Add startpage onion service to list of search providers [tor-browser]
+ * Bug 42466: Drop the "Onion Logo" from trademark statement [tor-browser]
+ * Bug 42472: Timezone May leak from XSLT Date function [tor-browser]
+ * Bug 42473: ESR 115.9.1 fixes [tor-browser]
+ * Bug 42481: Modularize SecurityLevel [tor-browser]
+ * Bug 41105: Bump version of snowflake to v2.9.2 [tor-browser-build]
+ * Windows + macOS + Linux
+ * Updated Firefox to 115.9.0esr
+ * Bug 41916: Letterboxing preferences UI [tor-browser]
+ * Bug 41918: Add option to reuse last window size when letterboxing is enabled [tor-browser]
+ * Bug 42203: Fluent migration: about dialog [tor-browser]
+ * Bug 42209: Fluent migration: tor circuit [tor-browser]
+ * Bug 42211: Fluent migration: new identity [tor-browser]
+ * Bug 42214: Fluent migration: security level [tor-browser]
+ * Bug 42236: Let users decide whether to load their home page on new identity. [tor-browser]
+ * Bug 42443: Shrink the window to match letterboxing size when the emtpy area is doble-clicked [tor-browser]
+ * Bug 42446: Improve accessible descriptions in built-in dialog [tor-browser]
+ * Bug 42458: Update the "Submit Feedback" link in "About Tor Browser" [tor-browser]
+ * Windows
+ * Bug 42377: Hidden fonts are automatically added to the allow list [tor-browser]
+ * Linux
+ * Bug 42438: Adapt the data import wizard to use the original $HOME on Linux [tor-browser]
+ * Bug 41110: Avoid Fontconfig warning about "ambiguous path" [tor-browser-build]
+ * Android
+ * Updated GeckoView to 115.9.0esr
+ * Bug 41187: Improve Android's bridge settings UI [tor-browser]
+ * Bug 42427: Do not ship bridges as prefences anymore [tor-browser]
+ * Build System
+ * All Platforms
+ * Updated Go to 1.21.8
+ * Bug 41102: src archive does not match likely due to mismatched xz-utils version [tor-browser-build]
+ * Bug 41107: Update download-unsigned-sha256sums-gpg-signatures-from-people-tpo for new type of URL [tor-browser-build]
+ * Bug 40073: We should remove ./ when using 7-zip for zip files [rbm]
+ * Windows + macOS + Linux
+ * Bug 42305: (Semi-)Automatically merge translation resources across tor browser releases (desktop) [tor-browser]
+ * Bug 41088: Remove use of projects/browser/run_scripts [tor-browser-build]
+ * Windows
+ * Bug 41097: authenticode-timestamping.sh fails to run again because tmp-timestamp already exists [tor-browser-build]
+ * Android
+ * Bug 40502: Do not recommend addons on Tor Browser [tor-browser]
+ * Bug 41082: Package tor expert bundle on android as .aar that firefox-android can use in lieu of tor-android-service with geckoview bootstrap [tor-browser-build]
+
Tor Browser 13.0.13 - March 22 2024
* Windows + macOS + Linux
* Updated Firefox to 115.9.1esr
=====================================
projects/browser/allowed_addons.json
=====================================
@@ -17,18 +17,19 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/34/9734/13299734/13299734.pn…"
}
],
- "average_daily_users": 1159924,
+ "average_daily_users": 1147622,
"categories": {
"firefox": [
"web-development",
"appearance",
- "other"
+ "other",
+ "accessibility"
]
},
"contributions_url": "https://opencollective.com/darkreader?utm_content=product-page-contribute&u…",
"created": "2017-09-19T07:03:00Z",
"current_version": {
- "id": 5698881,
+ "id": 5716486,
"compatibility": {
"firefox": {
"min": "78.0",
@@ -39,7 +40,7 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/56988…",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/57164…",
"is_strict_compatibility_enabled": false,
"license": {
"id": 22,
@@ -50,22 +51,22 @@
"url": "http://www.opensource.org/license/mit"
},
"release_notes": {
- "en-US": "- Optimized Adopted Style Sheets changes handling.\n- Fixed watching for style/link element position changes.\n- Fixed processing large style elements loaded by chunks.\n- Fixed enabling the extension with a hotkey after it was disabled automatically.\n- Fixed sliders in mobile UI.\n- Users' fixes for websites."
+ "en-US": "- Fixed performance issue when detecting @layer and @supports rules.\n- Improved border colors with CSS variables.\n- Leave iframes unchanged when dark theme is detected on a web page.\n- Users' fixes for websites."
},
- "reviewed": "2024-03-05T08:23:41Z",
- "version": "4.9.78",
+ "reviewed": "2024-04-09T08:44:59Z",
+ "version": "4.9.82",
"files": [
{
- "id": 4243182,
- "created": "2024-02-29T10:00:39Z",
- "hash": "sha256:21e08b3f26e9b54257d30f6b2fb2d966d41ace54d2d79ccec55e55517084c7ce",
+ "id": 4260787,
+ "created": "2024-04-05T20:41:43Z",
+ "hash": "sha256:df2e0c5498c08caa8452cd21f627d6dce0b2251047602ab2417c2e1dd7350697",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 727208,
+ "size": 735921,
"status": "public",
- "url": "https://addons.mozilla.org/firefox/downloads/file/4243182/darkreader-4.9.78…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/4260787/darkreader-4.9.82…",
"permissions": [
"alarms",
"contextMenus",
@@ -143,7 +144,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2024-03-05T08:23:41Z",
+ "last_updated": "2024-04-09T08:44:59Z",
"name": {
"ar": "Dark Reader",
"bn": "Dark Reader",
@@ -218,10 +219,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.5365,
- "bayesian_average": 4.535401175675945,
- "count": 5491,
- "text_count": 1733
+ "average": 4.5317,
+ "bayesian_average": 4.530596215637371,
+ "count": 5563,
+ "text_count": 1752
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/reviews/",
"requires_payment": false,
@@ -318,7 +319,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/versions/",
- "weekly_downloads": 23726
+ "weekly_downloads": 24103
},
"notes": null
},
@@ -334,7 +335,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/56/7656/6937656/6937656.png?…"
}
],
- "average_daily_users": 267400,
+ "average_daily_users": 262844,
"categories": {
"firefox": [
"privacy-security"
@@ -343,18 +344,18 @@
"contributions_url": "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=decentraleyes…",
"created": "2014-06-10T05:46:02Z",
"current_version": {
- "id": 5613891,
+ "id": 5711487,
"compatibility": {
"firefox": {
- "min": "56.0a1",
+ "min": "78.0",
"max": "*"
},
"android": {
- "min": "56.0a1",
+ "min": "113.0",
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/decentraleyes/versions/56…",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/decentraleyes/versions/57…",
"is_strict_compatibility_enabled": false,
"license": {
"id": 3338,
@@ -365,22 +366,22 @@
"url": "http://www.mozilla.org/MPL/2.0/"
},
"release_notes": {
- "en-US": "<i>Enhancements:</i>\n\n- Improved object property evaluation logic.\n\n<i>Other changes:</i>\n\n- Applied various performance optimizations and stability improvements.\n- Updated resource audit tool dependencies."
+ "en-US": "<i>Enhancements:</i>\n\n- Added additional resources to the staging environment.\n\n<i>Other changes:</i>\n\n- Implemented mobile extension signing-related changes.\n- Improved and extended the resource audit tool."
},
- "reviewed": "2023-08-30T12:55:12Z",
- "version": "2.0.18",
+ "reviewed": "2024-03-28T20:50:08Z",
+ "version": "2.0.19",
"files": [
{
- "id": 4158232,
- "created": "2023-08-24T20:38:03Z",
- "hash": "sha256:f8f031ef91c02a1cb1a6552acd02b8f488693400656b4047d68f03ba0a1078d9",
+ "id": 4255788,
+ "created": "2024-03-26T20:59:58Z",
+ "hash": "sha256:105d65bf8189d527251647d0452715c5725af6065fba67cd08187190aae4a98f",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 6951879,
+ "size": 7180376,
"status": "public",
- "url": "https://addons.mozilla.org/firefox/downloads/file/4158232/decentraleyes-2.0…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/4255788/decentraleyes-2.0…",
"permissions": [
"*://*/*",
"privacy",
@@ -470,7 +471,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2023-08-30T12:55:12Z",
+ "last_updated": "2024-03-28T20:50:08Z",
"name": {
"ar": "Decentraleyes",
"bg": "Decentraleyes",
@@ -547,10 +548,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7982,
- "bayesian_average": 4.793635080149146,
- "count": 1412,
- "text_count": 254
+ "average": 4.7961,
+ "bayesian_average": 4.7914809918911105,
+ "count": 1422,
+ "text_count": 258
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/reviews/",
"requires_payment": false,
@@ -635,7 +636,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/versions/",
- "weekly_downloads": 3038
+ "weekly_downloads": 3094
},
"notes": null
},
@@ -651,7 +652,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/73/4073/5474073/5474073.png?…"
}
],
- "average_daily_users": 1235058,
+ "average_daily_users": 1210586,
"categories": {
"firefox": [
"privacy-security"
@@ -1170,9 +1171,9 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7979,
- "bayesian_average": 4.795218830409015,
- "count": 2405,
+ "average": 4.7997,
+ "bayesian_average": 4.796985292621238,
+ "count": 2421,
"text_count": 457
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/reviews/",
@@ -1197,7 +1198,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/versions/",
- "weekly_downloads": 19773
+ "weekly_downloads": 19565
},
"notes": null
},
@@ -1213,7 +1214,7 @@
"picture_url": null
}
],
- "average_daily_users": 7806685,
+ "average_daily_users": 7698492,
"categories": {
"firefox": [
"privacy-security"
@@ -1222,7 +1223,7 @@
"contributions_url": "",
"created": "2015-04-25T07:26:22Z",
"current_version": {
- "id": 5693353,
+ "id": 5717409,
"compatibility": {
"firefox": {
"min": "78.0",
@@ -1233,7 +1234,7 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/ublock-origin/versions/56…",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/ublock-origin/versions/57…",
"is_strict_compatibility_enabled": false,
"license": {
"id": 6,
@@ -1244,22 +1245,22 @@
"url": "http://www.gnu.org/licenses/gpl-3.0.html"
},
"release_notes": {
- "en-US": "See complete release notes for <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/d2b406aad3a1689d93242d…" rel=\"nofollow\">1.56.0</a>.\n\n<b>Fixes / changes</b>\n\n<ul><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/39dfcbf564824557b9576b…" rel=\"nofollow\">Mind that multiple <code>uritransform</code> may apply to a single request</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/a81992f7ab9a23a438d94b…" rel=\"nofollow\">Fix incorrect built-in filtering expression in logger</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e88d43f67c0962312b76d6…" rel=\"nofollow\">Fix improper invalidation of valid <code>uritransform</code> exception filters</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/0f3549a7d85e6616619d00…" rel=\"nofollow\">Improve <code>prevent-addEventListener</code> scriptlet</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/378d2611f7de534428615a…" rel=\"nofollow\">Fix Chartbeat flicker control <code>div</code>'s</a> (by @ryanbr)</li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/bbf6c43dcdb62ea74fd182…" rel=\"nofollow\">Fix potential exfiltration of browsing history by a rogue list author through <code>permissions=</code></a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/93a9a64cf8ec890f9a478c…" rel=\"nofollow\">Ignore event handler-related attributes in <code>set-attr</code> scriptlet</a> (suggested by @distinctmondaylilac)</li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4ed2b2948421552ce1c170…" rel=\"nofollow\">Fix potential exfiltration of browsing history by a rogue list author through <code>csp=</code></a> (reported by @distinctmondaylilac)</li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/0fc7f9c779a1eb0dde44e6…" rel=\"nofollow\">Output scriptlet logging information to the logger</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/0dc5f09464b305050627d6…" rel=\"nofollow\">Fix decompiling of scriptlet parameters</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/5a4d736ff47d1505619f0b…" rel=\"nofollow\">Add support for <code>extraMatch</code> in <code>trusted-click-element</code> scriptlet</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/439735e662e837889e0dbe…" rel=\"nofollow\">Remove minimum height constraint from \"My filters\" pane</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/ef423b580af2dea4a9a044…" rel=\"nofollow\">Unregister all scriptlets when disabling uBO on a specific site</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e06c923bfb016c184026f7…" rel=\"nofollow\">Allow <code>uritransform</code> to process the hash part of a URL</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/3e0f743a60bf78bced8580…" rel=\"nofollow\">Remember presentation state of \"My rules\" pane</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/819053ea32148fd9ad7c6c…" rel=\"nofollow\">Fix improperly assembled <code>!#include</code> sublists</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/9506d56abc46f95d7412b9…" rel=\"nofollow\">Mark procedural filters with pseudo-elements selector as invalid</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/9b18234e17c6871170acd1…" rel=\"nofollow\">Prevent access to picker when \"My filters\" is not enabled</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f990e686b6eacbbd0bd43a…" rel=\"nofollow\">Provide visual feedback when applying changes in \"Filter lists\" pane</a></li><li>[...]</li></ul>\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/738859f7b07778caaaa182…" rel=\"nofollow\">Commits history since last version</a>"
+ "en-US": "See complete release notes for <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/65a30f1a59ac2ef295f469…" rel=\"nofollow\">1.57.2</a>.\n\nThis is an emergency release to fix an issue causing differential updates to fail. The issue primarily affected Firefox because of uBO's use of indexedDB prior to 1.57.0. The issue did not affect full update of filter lists even though the asset viewer would show old versions of those lists (internally uBO compiles lists and would still correctly compile from lists fetched by full updater).\n\n<b>Fixes / changes</b>\n\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/92c6c66077821bbbc4fd82…" rel=\"nofollow\">Fix stray lists in redesigned cache storage</a>\n\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/ad79f1669e12cf4cb05689…" rel=\"nofollow\">Commits history since last version</a>"
},
- "reviewed": "2024-02-20T18:51:52Z",
- "version": "1.56.0",
+ "reviewed": "2024-04-10T09:01:57Z",
+ "version": "1.57.2",
"files": [
{
- "id": 4237670,
- "created": "2024-02-17T14:54:31Z",
- "hash": "sha256:f5fbeeac511ca4e10a74723413727fda8e6f9236c726d16eb54ade1fbe7be5be",
+ "id": 4261710,
+ "created": "2024-04-08T13:51:42Z",
+ "hash": "sha256:9928e79a52cecf7cfa231fdb0699c7d7a427660d94eb10d711ed5a2f10d2eb89",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 3819727,
+ "size": 3861786,
"status": "public",
- "url": "https://addons.mozilla.org/firefox/downloads/file/4237670/ublock_origin-1.5…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/4261710/ublock_origin-1.5…",
"permissions": [
"alarms",
"dns",
@@ -1379,7 +1380,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2024-03-11T17:35:25Z",
+ "last_updated": "2024-04-10T15:40:26Z",
"name": {
"ar": "uBlock Origin",
"bg": "uBlock Origin",
@@ -1524,10 +1525,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7893,
- "bayesian_average": 4.78892933338675,
- "count": 17378,
- "text_count": 4532
+ "average": 4.7889,
+ "bayesian_average": 4.788525377738124,
+ "count": 17520,
+ "text_count": 4569
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/reviews/",
"requires_payment": false,
@@ -1590,7 +1591,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/versions/",
- "weekly_downloads": 159165
+ "weekly_downloads": 153133
},
"notes": null
},
@@ -1606,7 +1607,7 @@
"picture_url": null
}
],
- "average_daily_users": 178990,
+ "average_daily_users": 180160,
"categories": {
"firefox": [
"photos-music-videos",
@@ -1702,10 +1703,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.4476,
- "bayesian_average": 4.442740710153104,
- "count": 1211,
- "text_count": 466
+ "average": 4.4484,
+ "bayesian_average": 4.443495738230568,
+ "count": 1222,
+ "text_count": 475
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/re…",
"requires_payment": false,
@@ -1727,7 +1728,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/ve…",
- "weekly_downloads": 350
+ "weekly_downloads": 348
},
"notes": null
},
@@ -1743,7 +1744,7 @@
"picture_url": null
}
],
- "average_daily_users": 78537,
+ "average_daily_users": 75277,
"categories": {
"firefox": [
"privacy-security",
@@ -1853,10 +1854,10 @@
],
"promoted": null,
"ratings": {
- "average": 4.3753,
- "bayesian_average": 4.3611016639271964,
- "count": 405,
- "text_count": 114
+ "average": 4.3768,
+ "bayesian_average": 4.3623663717329295,
+ "count": 406,
+ "text_count": 115
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/reviews/",
"requires_payment": false,
@@ -1878,7 +1879,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/versions/",
- "weekly_downloads": 1672
+ "weekly_downloads": 1271
},
"notes": null
},
@@ -1894,7 +1895,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/64/9064/12929064/12929064.pn…"
}
],
- "average_daily_users": 308991,
+ "average_daily_users": 309538,
"categories": {
"firefox": [
"search-tools",
@@ -2111,10 +2112,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.6435,
- "bayesian_average": 4.639139586780839,
- "count": 1422,
- "text_count": 276
+ "average": 4.6324,
+ "bayesian_average": 4.628055038190222,
+ "count": 1450,
+ "text_count": 284
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/reviews/",
"requires_payment": false,
@@ -2137,7 +2138,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/versions/",
- "weekly_downloads": 5686
+ "weekly_downloads": 5610
},
"notes": null
},
@@ -2160,7 +2161,7 @@
"picture_url": null
}
],
- "average_daily_users": 125273,
+ "average_daily_users": 125835,
"categories": {
"firefox": [
"search-tools",
@@ -2441,10 +2442,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.3752,
- "bayesian_average": 4.37089257689689,
- "count": 1338,
- "text_count": 378
+ "average": 4.378,
+ "bayesian_average": 4.373626111950373,
+ "count": 1344,
+ "text_count": 381
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/reviews/",
"requires_payment": false,
@@ -2464,7 +2465,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/versions/",
- "weekly_downloads": 22
+ "weekly_downloads": 29
},
"notes": null
},
@@ -2480,12 +2481,11 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/43/0143/143/143.png?modified…"
}
],
- "average_daily_users": 309704,
+ "average_daily_users": 300871,
"categories": {
"firefox": [
- "web-development",
"privacy-security",
- "other"
+ "alerts-updates"
]
},
"contributions_url": "https://www.paypal.com/donate/?hosted_button_id=9ERKTU5MBH4EW&utm_content=p…",
@@ -2550,20 +2550,20 @@
"default_locale": "en-US",
"description": {
"da": "Dette værktøj, vinder af \"2006 PC World World Class Award\", giver ekstra beskyttelse til din Firefox.\nDen lader kun JavaScript, Java og andet kørbart indhold køre fra betroede domæner du har valgt, fx din home-banking hjemmeside, og forsvarer \"tillids-grænserne\" mod cross-site scripting angreb (XXS).\nEn sådan forebyggende metode forhindrer udnyttelse af sikkerhedshuller (kendte som ukendte!) uden tab af funktionalitet...\nEksperterne er enige: Firefox er faktisk mere sikker med NoScript ;-)",
- "de": "<b>WICHTIG</b>\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…" rel=\"nofollow\">Eine Anleitung in die Grundlagen von <b>NoScript 10</b></a>\n\nIst die neue Oberfläche von NoScript 10 immer noch ungewohnt?\nSehen Sie sich diese <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…" rel=\"nofollow\">von Nutzern erstellte NoScript 10 Einführung</a> und diesen <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…" rel=\"nofollow\">Vergleich zwischen NoScript 10 \"Quantum\" und NoScript 5 \"Classic\"</a> an.\n\nAls Gewinner des \"PC World World Class Award\" und ausgeliefert als Teil des Tor Browsers bietet Ihnen NoScript den besten verfügbaren Schutz im Internet.\n\nMit NoScript können Sie JavaScript, Flash, Java und andere ausführbare Inhalte bloß auf vertrauenswürdigen Domains Ihrer Wahl zulassen, z.B. beim Online-Banking. Somit verhindern Sie aus der Ferne ausnutzbare Schwachstellen inklusive Spectre und Meltdown.\n\nIhre vertrauenswürdigen Bereiche werden dank der einmaligen ClearClick Technologie gegen seitenübergreifende Scripting-Attacken (XSS), Cross-Zone DNS Rebinding / CSRF Attacken (Router Hacking), und Clickjacking-Versuche geschützt.\n\nDieser präventive Ansatz verhindert das Ausnutzen von (bekannten und unbekannten!) Sicherheitslücken ohne Verlust an Funktionalität, wo Sie diese benötigen.\nExperten sind sich einig: Firefox wird wirklich noch sicherer mithilfe von NoScript ;-)\n\n\nFAQ: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…" rel=\"nofollow\">https://noscript.net/faq</a>\nForum: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…" rel=\"nofollow\">https://noscript.net/forum</a>",
+ "de": "<b>WICHTIG</b>\n<a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…">Eine Anleitung in die Grundlagen von <b>NoScript 10</b></a>\n\nIst die neue Oberfläche von NoScript 10 immer noch ungewohnt?\nSehen Sie sich diese <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…">von Nutzern erstellte NoScript 10 Einführung</a> und diesen <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…">Vergleich zwischen NoScript 10 \"Quantum\" und NoScript 5 \"Classic\"</a> an.\n\nAls Gewinner des \"PC World World Class Award\" und ausgeliefert als Teil des Tor Browsers bietet Ihnen NoScript den besten verfügbaren Schutz im Internet.\n\nMit NoScript können Sie JavaScript, Flash, Java und andere ausführbare Inhalte bloß auf vertrauenswürdigen Domains Ihrer Wahl zulassen, z.B. beim Online-Banking. Somit verhindern Sie aus der Ferne ausnutzbare Schwachstellen inklusive Spectre und Meltdown.\n\nIhre vertrauenswürdigen Bereiche werden dank der einmaligen ClearClick Technologie gegen seitenübergreifende Scripting-Attacken (XSS), Cross-Zone DNS Rebinding / CSRF Attacken (Router Hacking), und Clickjacking-Versuche geschützt.\n\nDieser präventive Ansatz verhindert das Ausnutzen von (bekannten und unbekannten!) Sicherheitslücken ohne Verlust an Funktionalität, wo Sie diese benötigen.\nExperten sind sich einig: Firefox wird wirklich noch sicherer mithilfe von NoScript ;-)\n\n\nFAQ: <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…">https://noscript.net/faq</a>\nForum: <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…">https://noscript.net/forum</a>",
"el": "Αυτό το πρόσθετο που κέρδισε το βραβείο «2006 World Class Award» του περιοδικού PC World, παρέχει πρόσθετη προστασία στον Firefox.\nΕπιτρέπει την εκτέλεση JavaScript, Java και άλλου εκτελέσιμου περιεχομένου, μόνο για έμπιστους τομείς δικτύου της επιλογής σας (π.χ. την δικτυακή υπηρεσία τραπεζικών συναλλαγών σας) και τους προστατεύει από τον κίνδυνο επιθέσεων cross-site scripting (XSS) .\nΑυτή η προσέγγιση προκαταβολικού μπλοκαρίσματος δεν επιτρέπει την εκμετάλλευση κενών ασφαλείας (ήδη γνωστών αλλά και άγνωστων ακόμα!) χωρίς να επηρεάζει την λειτουργικότητα...\nΟι ειδικοί συμφωνούν: Ο Firefox είναι πραγματικά ασφαλέστερος με το NoScript! ;-)",
- "en-US": "Winner of the \"PC World - World Class Award\" and bundled with the Tor Browser, NoScript gives you the best available protection on the web. It allows JavaScript, Flash, and other executable content to run only from trusted domains of your choice (e.g. your banking site), thus mitigating remotely exploitable vulnerabilities, such as Spectre and Meltdown.\n\nIt protects your \"trust boundaries\" against cross-site scripting attacks (XSS), cross-zone DNS rebinding / CSRF attacks (router hacking), and Clickjacking attempts, thanks to its unique ClearClick technology.\n\nSuch a preemptive approach prevents exploitation of security vulnerabilities (known and unknown!) with no loss of functionality where you need it. Experts do agree: Firefox is really safer with NoScript ;-)\n\nFAQ: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…" rel=\"nofollow\">https://noscript.net/faq</a>\nForum: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…" rel=\"nofollow\">https://noscript.net/forum</a>\n\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…" rel=\"nofollow\">A Basic <b>NoScript 10 Guide</b></a>\n\nStill confused by NoScript 10's new UI?\nCheck this <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…" rel=\"nofollow\">user-contributed NoScript 10 primer</a>.\nand this <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…" rel=\"nofollow\">NoScript 10 \"Quantum\" vs NoScript 5 \"Classic\" (or \"Legacy\") comparison</a>.",
+ "en-US": "Winner of the \"PC World - World Class Award\" and bundled with the Tor Browser, NoScript gives you the best available protection on the web. It allows JavaScript, Flash, and other executable content to run only from trusted domains of your choice (e.g. your banking site), thus mitigating remotely exploitable vulnerabilities, such as Spectre and Meltdown.\n\nIt protects your \"trust boundaries\" against cross-site scripting attacks (XSS), cross-zone DNS rebinding / CSRF attacks (router hacking), and Clickjacking attempts, thanks to its unique ClearClick technology.\n\nSuch a preemptive approach prevents exploitation of security vulnerabilities (known and unknown!) with no loss of functionality where you need it. \nExperts do agree: Firefox is really safer with NoScript!\n\nFAQ: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…" rel=\"nofollow\">https://noscript.net/faq</a>\nForum: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…" rel=\"nofollow\">https://noscript.net/forum</a>\n\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…" rel=\"nofollow\">A Basic <b>NoScript 10 Guide</b></a>\n\nStill confused by NoScript 10's new UI?\nCheck this <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…" rel=\"nofollow\">user-contributed NoScript 10 primer</a>.\nand this <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…" rel=\"nofollow\">NoScript 10 \"Quantum\" vs NoScript 5 \"Classic\" (or \"Legacy\") comparison</a>.",
"es": "Protección extra para su Firefox: NoScript sólo permite JavaScript, Java y otros plugins en los sitios web de confianza que Ud. elija (como la web de su banco). Este planteamiento preventivo basado en una lista blanca evita que se puedan explotar vulnerabilidades (conocidas o incluso desconocidas) sin pérdida de funcionalidad... Los expertos lo confirmarán: Firefox es realmente más seguro con NoScript :-)",
- "fr": "<b>IMPORTANT</b>\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…" rel=\"nofollow\">Un Guide élémentaire pour <b>NoScript 10</b> (en anglais)</a>\n\nConfus avec la nouvelle interface graphique de NoScript 10 ?\nConsultez cette <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…" rel=\"nofollow\">introduction à NoScript 10, contribution d’un utilisateur</a> (en anglais)\net cette <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…" rel=\"nofollow\">comparaison entre NoScript 10 « Quantum » et NoScript 5 « Classic » (ou « Legacy »)</a> (en anglais).\n\nLauréat du « World Class Award » décerné par PC World et fourni avec le navigateur Tor, NoScript vous offre la meilleure protection disponible pour le Web.\n\nIl autorise le contenu actif JavaScript, Flash, Java et autres à ne s’exécuter que sur les domaines de confiance de votre choix, par exemple le site de votre banque, réduisant le risque d’exploitation à distance de vulnérabilités comme Spectre et Meltdown.\n\nIl protège vos zones de confiance contre les attaques par cross-site scripting (XSS), DNS rebinding / attaque CSRF (Cross Site Request Forgery) (piratage de routeur) et les tentatives de détournement de clic (Clickjacking) grâce à sa propre technologie ClearClick.\n\nCette approche préventive empêche l’exploitation des failles de sécurité (connues mais aussi inconnues) sans perte de fonctionnalités là où vous en avez besoin. Les experts en conviendront : Firefox est réellement plus sûr avec NoScript ;-)\n\nFAQ : <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…" rel=\"nofollow\">https://noscript.net/faq</a> (en anglais)\nForum : <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…" rel=\"nofollow\">https://noscript.net/forum</a> (en anglais)",
- "it": "<b>IMPORTANTE</b>\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…" rel=\"nofollow\">Guida di base a <b>NoScript 10</b></a>\n\nAncora confuso dalla nuova interfaccia di NoScript 10?\nLeggi qui <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…" rel=\"nofollow\">i contributi degli utenti di NoScript 10</a>.\ne <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…" rel=\"nofollow\"> una comparazione tra NoScript 10 \"Quantum\" vs NoScript 5 \"Classic\" (o \"Legacy\")</a>.\n\nVincitore del premio \"PC World World Class Award\" ed incorporato nel browser Tor, NoScript ti offre la migliore protezione possibile per il web.\n\nAttiva JavaScript, Flash, Java e altri eseguibili solo sui domini fidati scelti da te, ad esempio il sito della tua banca, riducendo le possibili conseguenze di vulnerabilità, inclusi Spectre e Meltdown.\n\nProtegge la tua rete dagli attacchi cross-site scripting (XSS), cross-zone DNS rebinding / attacchi CSRF (intrusione nel router) e tentativi di Clickjacking, grazie alla sua tecnologia unica ClearClick. \n\nCon un approccio proattivo previene lo sfruttamento di vulnerabilità di sicurezza (conosciute e ancora sconosciute!) senza perdere le funzionalità necessarie.\nGli esperti sono d'accordo: Firefox è veramente più sicuro con NoScript ;-)\n\nFAQ: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…" rel=\"nofollow\">https://noscript.net/faq</a>\nForum: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…" rel=\"nofollow\">https://noscript.net/forum</a>",
- "nl": "<b>BELANGRIJK</b>\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…" rel=\"nofollow\">Een basale <b>Handleiding voor NoScript 10</b></a>\n\nNog steeds in verwarring door de nieuwe UI van NoScript 10?\nBekijk deze <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…" rel=\"nofollow\">door gebruikers aangeleverde beknopte handleiding voor NoScript 10</a>\nen deze <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…" rel=\"nofollow\">vergelijking tussen NoScript 10 ‘Quantum’ en NoScript 5 ‘Classic’ (of ‘Verouderd’)</a>.\n\nAls winnaar van de ‘PC World World Class Award’ en gebundeld met de Tor-browser biedt NoScript de best beschikbare bescherming op het web.\n\nHet zorgt ervoor dat JavaScript, Flash, Java en andere uitvoerbare inhoud alleen wordt uitgevoerd vanaf vertrouwde domeinen van uw keuze, zoals uw website voor thuisbankieren, zodat op afstand te misbruiken kwetsbaarheden, waaronder Spectre en Meltdown, worden verminderd.\n\nHet beschermt uw ‘vertrouwensgrenzen’ tegen cross-site-scripting-aanvallen (XSS), cross-zone-DNS-rebinding / CSRF-aanvallen (routerhacking) en Clickjacking-pogingen, dankzij de unieke ClearClick-technologie ervan. \n\nEen dergelijke preventieve benadering voorkomt exploitatie van beveiligingskwetsbaarheden (bekende en zelfs onbekende!) zonder verlies van functionaliteit waar dat nodig is.\nExperts zijn het ermee eens: Firefox is echt veiliger met NoScript ;-)\n\nFAQ: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…" rel=\"nofollow\">https://noscript.net/faq</a>\nForum: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…" rel=\"nofollow\">https://noscript.net/forum</a>",
+ "fr": "<b>IMPORTANT</b>\n<a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…">Un Guide élémentaire pour <b>NoScript 10</b> (en anglais)</a>\n\nConfus avec la nouvelle interface graphique de NoScript 10 ?\nConsultez cette <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…">introduction à NoScript 10, contribution d’un utilisateur</a> (en anglais)\net cette <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…">comparaison entre NoScript 10 « Quantum » et NoScript 5 « Classic » (ou « Legacy »)</a> (en anglais).\n\nLauréat du « World Class Award » décerné par PC World et fourni avec le navigateur Tor, NoScript vous offre la meilleure protection disponible pour le Web.\n\nIl autorise le contenu actif JavaScript, Flash, Java et autres à ne s’exécuter que sur les domaines de confiance de votre choix, par exemple le site de votre banque, réduisant le risque d’exploitation à distance de vulnérabilités comme Spectre et Meltdown.\n\nIl protège vos zones de confiance contre les attaques par cross-site scripting (XSS), DNS rebinding / attaque CSRF (Cross Site Request Forgery) (piratage de routeur) et les tentatives de détournement de clic (Clickjacking) grâce à sa propre technologie ClearClick.\n\nCette approche préventive empêche l’exploitation des failles de sécurité (connues mais aussi inconnues) sans perte de fonctionnalités là où vous en avez besoin. Les experts en conviendront : Firefox est réellement plus sûr avec NoScript ;-)\n\nFAQ : <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…">https://noscript.net/faq</a> (en anglais)\nForum : <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…">https://noscript.net/forum</a> (en anglais)",
+ "it": "<b>IMPORTANTE</b>\n<a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…">Guida di base a <b>NoScript 10</b></a>\n\nAncora confuso dalla nuova interfaccia di NoScript 10?\nLeggi qui <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…">i contributi degli utenti di NoScript 10</a>.\ne <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…"> una comparazione tra NoScript 10 \"Quantum\" vs NoScript 5 \"Classic\" (o \"Legacy\")</a>.\n\nVincitore del premio \"PC World World Class Award\" ed incorporato nel browser Tor, NoScript ti offre la migliore protezione possibile per il web.\n\nAttiva JavaScript, Flash, Java e altri eseguibili solo sui domini fidati scelti da te, ad esempio il sito della tua banca, riducendo le possibili conseguenze di vulnerabilità, inclusi Spectre e Meltdown.\n\nProtegge la tua rete dagli attacchi cross-site scripting (XSS), cross-zone DNS rebinding / attacchi CSRF (intrusione nel router) e tentativi di Clickjacking, grazie alla sua tecnologia unica ClearClick. \n\nCon un approccio proattivo previene lo sfruttamento di vulnerabilità di sicurezza (conosciute e ancora sconosciute!) senza perdere le funzionalità necessarie.\nGli esperti sono d'accordo: Firefox è veramente più sicuro con NoScript ;-)\n\nFAQ: <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…">https://noscript.net/faq</a>\nForum: <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…">https://noscript.net/forum</a>",
+ "nl": "<b>BELANGRIJK</b>\n<a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…">Een basale <b>Handleiding voor NoScript 10</b></a>\n\nNog steeds in verwarring door de nieuwe UI van NoScript 10?\nBekijk deze <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…">door gebruikers aangeleverde beknopte handleiding voor NoScript 10</a>\nen deze <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…">vergelijking tussen NoScript 10 ‘Quantum’ en NoScript 5 ‘Classic’ (of ‘Verouderd’)</a>.\n\nAls winnaar van de ‘PC World World Class Award’ en gebundeld met de Tor-browser biedt NoScript de best beschikbare bescherming op het web.\n\nHet zorgt ervoor dat JavaScript, Flash, Java en andere uitvoerbare inhoud alleen wordt uitgevoerd vanaf vertrouwde domeinen van uw keuze, zoals uw website voor thuisbankieren, zodat op afstand te misbruiken kwetsbaarheden, waaronder Spectre en Meltdown, worden verminderd.\n\nHet beschermt uw ‘vertrouwensgrenzen’ tegen cross-site-scripting-aanvallen (XSS), cross-zone-DNS-rebinding / CSRF-aanvallen (routerhacking) en Clickjacking-pogingen, dankzij de unieke ClearClick-technologie ervan. \n\nEen dergelijke preventieve benadering voorkomt exploitatie van beveiligingskwetsbaarheden (bekende en zelfs onbekende!) zonder verlies van functionaliteit waar dat nodig is.\nExperts zijn het ermee eens: Firefox is echt veiliger met NoScript ;-)\n\nFAQ: <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…">https://noscript.net/faq</a>\nForum: <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…">https://noscript.net/forum</a>",
"pl": "Zwycięzca \"2006 PC World World Class Award\". Narzędzie to stanowi dodatkowe\nzabezpieczenie dla wszystkich przeglądarek Mozilli. NoScript pozwala\nwykonywać skrypty JavaScript i aplety Java tylko przez zaufane domeny\nwybrane przez użytkownika np. witryny banków internetowych oraz zabezpiecza\nprzed atakami typu \"cross-site scripting\" (XSS). Takie prewencyjne podejście\nzabezpiecza przed wykorzystaniem luk bezpieczeństwa - znanych i nieznanych -\nbez utraty funkcjonalności.\n\nEksperci są zgodni: Firefox z NoScript jest naprawdę bezpieczniejszy!",
- "pt-BR": "IMPORTANTE\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…" rel=\"nofollow\">Um <b>guia básico do NoScript 10</b></a>\n\nAinda confuso com a nova interface gráfica do NoScript 10?\nConsulte esta <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…" rel=\"nofollow\">cartilha do NoScript 10 de contribuições de usuários</a>.\ne esta <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…" rel=\"nofollow\">comparação entre NoScript 10 \"Quantum\" e NoScript 5 \"Classic\" (ou \"Legado\")</a>.\n\nVencedor do \"PC World World Class Award\" e incorporado ao Navegador Tor, o NoScript lhe oferece a melhor proteção disponível na web.\n\nEle permite que JavaScript, Flash, Java e outros conteúdos executáveis funcionem apenas em domínios de sua confiança, por exemplo no site do seu banco, mitigando vulnerabilidades de exploração remota, incluindo Spectre e Meltdown.\n\nProtege suas \"fronteiras seguras\" contra ataques 'cross-site scripting' (XSS), ataques 'cross-zone DNS rebinding / CSRF' (invasão de roteador) e tentativas de Clickjacking, graças à sua inigualável tecnologia ClearClick. \n\nTal abordagem preemptiva previne exploração de vulnerabilidades de segurança (conhecidas e até mesmo desconhecidas!) sem perda de funcionalidade onde você precisa.\nEspecialistas concordam: o Firefox é realmente mais seguro com o NoScript ;-)\n\nFAQ: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…" rel=\"nofollow\">https://noscript.net/faq</a>\nFórum: <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…" rel=\"nofollow\">https://noscript.net/forum</a>",
+ "pt-BR": "IMPORTANTE\n<a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…">Um <b>guia básico do NoScript 10</b></a>\n\nAinda confuso com a nova interface gráfica do NoScript 10?\nConsulte esta <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…">cartilha do NoScript 10 de contribuições de usuários</a>.\ne esta <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…">comparação entre NoScript 10 \"Quantum\" e NoScript 5 \"Classic\" (ou \"Legado\")</a>.\n\nVencedor do \"PC World World Class Award\" e incorporado ao Navegador Tor, o NoScript lhe oferece a melhor proteção disponível na web.\n\nEle permite que JavaScript, Flash, Java e outros conteúdos executáveis funcionem apenas em domínios de sua confiança, por exemplo no site do seu banco, mitigando vulnerabilidades de exploração remota, incluindo Spectre e Meltdown.\n\nProtege suas \"fronteiras seguras\" contra ataques 'cross-site scripting' (XSS), ataques 'cross-zone DNS rebinding / CSRF' (invasão de roteador) e tentativas de Clickjacking, graças à sua inigualável tecnologia ClearClick. \n\nTal abordagem preemptiva previne exploração de vulnerabilidades de segurança (conhecidas e até mesmo desconhecidas!) sem perda de funcionalidade onde você precisa.\nEspecialistas concordam: o Firefox é realmente mais seguro com o NoScript ;-)\n\nFAQ: <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…">https://noscript.net/faq</a>\nFórum: <a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…">https://noscript.net/forum</a>",
"ru": "Победитель \"2006 PC World World Class Award», этот инструмент обеспечивает дополнительную защиту для Вашего Firefox.\nОно позволяет запуск JavaScript, Java и другого активного содержимого только для доверенных доменов по Вашему выбору, например, Ваш личный банковский веб-сайт. Обеспечивает безопасность Вашей работы в \"зоне доверия\", защищает от атак с использованием межузловых сценариев (XSS), кросс-зоны DNS подменой / CSRF-атак (хакерских маршрутизаторов), и атаки ClickJacking, благодаря своей уникальной технологии ClearClick. Он также реализует DoNotTrack защиту по умолчанию, см. <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/bd4266094d321e473190ea…" rel=\"nofollow\">http://snipurl.com/nsdntrack</a>.\nТакой упреждающий подход предотвращает использование уязвимостей (известных и даже неизвестных!) Без потери функциональности.\nЭксперты едины во мнении: Firefox действительно безопаснее с NoScript ;-)",
"sk": "Víťaz ceny \"2006 PC World World Class Award\". Tento nástroj poskytuje špeciálnu ochranu Firefoxu.\nPovoľuje spúšťanie JavaScriptu, Javy a ďalšieho spustiteľného obsahu len na dôveryhodných doménach podľa vášho výberu, napr. na webovej stránke bankingu.\nTakýto preventívny prístup chráni pred zneužitím bezpečnostných dier (známych aj neznámych) bez straty funkčnosti.\nOdborníci by súhlasili: Firefox je s rozšírením NoScript naozaj bezpečnejší ;-)",
"vi": "Đã chiến thắng trong \"Giải thưởng Cấp độ Thế giới PC World 2006\", công cụ này cung cấp lớp phòng vệ phụ thêm cho Firefox của bạn.\nNoScript chỉ cho phép JavaScript, Java (và các phần bổ trợ khác) trên những tên miền tin cậy mà bạn chọn (vd., trang web ngân hàng của bạn), canh gác \"vùng biên giới tin cậy\" của bạn chống lại các âm mưu tấn công cross-site scripting (XSS) và Clickjacking, nhờ công nghệ ClearClick của nó.\nPhương thức ngăn chặn trước dựa trên sổ trắng này ngăn chặn việc khai thác các lỗ hổng bảo mật (đã biết hay thậm chí chưa biết!) mà không làm mất đi chức năng...\nCác chuyên gia đều đồng ý rằng: Firefox thật sự an toàn hơn với NoScript :-)",
"zh-TW": "這個工具是 2006 PC World 世界級大獎贏家,讓你的 Firefox 更加安全!\n\n使用此套件後,僅有你信任的網站(例如你的銀行)才能執行腳本、Java 與其他動態內容。建立「信任範圍」以抵擋跨網站腳本攻擊(XSS)。\n\n未雨綢繆、使用此套件避開安全漏洞(連未知的漏洞也照擋不誤),而不損失正常功能…\n\n連專家都同意、Firefox 有了 NoScript 後更加安全了 ;-)",
- "zh-CN": "重要\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…" rel=\"nofollow\">一篇基础的<b>NoScript 10 指南</b></a>\n\n仍被 NoScript 10 的新 UI 所困惑?\n看看这篇<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…" rel=\"nofollow\">用户贡献的 NoScript 10 入门</a>。\n还有这篇<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…" rel=\"nofollow\"> NoScript 10 \"Quantum\" vs NoScript 5 \"Classic\" (or \"Legacy\") comparison</a>。\n\n作为“PC World World Class Award”大奖的获得者并内置于 Tor 浏览器,NoScript 将为您提供最佳的网络保护。\n\n它只允许在您选择的信任域上执行 JavaScript、Flash、Java 和其他可执行内容,例如您的家庭银行网站,能够缓解包括 Spectre 和 Meltdown 等远程可利用漏洞。\n\n多亏了其独特的 ClearClick 技术,它可以保护您的“信任边界”不受跨站点脚本攻击(XSS),跨区 DNS 重新绑定/ CSRF 攻击(路由器黑客)和点击劫持(Clickjacking)尝试。\n\n这种先发制人的机制在不损失任何功能的前提下,防止利用安全漏洞(已知甚至未知的!)进行攻击。\n专家们一致同意:拥有 NoScript 的 Firefox 更安全 :-)\n\n常见问题解答:<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…" rel=\"nofollow\">https://noscript.net/faq</a>\n论坛:<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…" rel=\"nofollow\">https://noscript.net/forum</a>"
+ "zh-CN": "重要\n<a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e19d2306e457c98e6c3e03…">一篇基础的<b>NoScript 10 指南</b></a>\n\n仍被 NoScript 10 的新 UI 所困惑?\n看看这篇<a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f5ad7f79289d1b2c198593…">用户贡献的 NoScript 10 入门</a>。\n还有这篇<a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4e700d4e76086494b5553f…"> NoScript 10 \"Quantum\" vs NoScript 5 \"Classic\" (or \"Legacy\") comparison</a>。\n\n作为“PC World World Class Award”大奖的获得者并内置于 Tor 浏览器,NoScript 将为您提供最佳的网络保护。\n\n它只允许在您选择的信任域上执行 JavaScript、Flash、Java 和其他可执行内容,例如您的家庭银行网站,能够缓解包括 Spectre 和 Meltdown 等远程可利用漏洞。\n\n多亏了其独特的 ClearClick 技术,它可以保护您的“信任边界”不受跨站点脚本攻击(XSS),跨区 DNS 重新绑定/ CSRF 攻击(路由器黑客)和点击劫持(Clickjacking)尝试。\n\n这种先发制人的机制在不损失任何功能的前提下,防止利用安全漏洞(已知甚至未知的!)进行攻击。\n专家们一致同意:拥有 NoScript 的 Firefox 更安全 :-)\n\n常见问题解答:<a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a4a623eb90a9becd02eed…">https://noscript.net/faq</a>\n论坛:<a rel=\"nofollow\" href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8a6b9e607349db8d83719e…">https://noscript.net/forum</a>"
},
"developer_comments": {
"en-US": "Security issues affecting Firefox or the Tor Browser which can be fixed by a NoScript update are guaranteed to be addressed within 24 hours. This sometimes requires many updates to be issued in a short timespan, and when this happens you may notice NoScript UI's asking to \"<em>reload this page in order to operate properly</em>\". This is normal on \"live\" updates, and it just means the UI is out of sync with the page content, but there's no need to worry as <strong>all the restrictions to scripts and active content are still in place</strong>.",
@@ -2619,12 +2619,12 @@
960,
727
],
- "image_url": "https://addons.mozilla.org/user-media/previews/full/267/267408.png?modified…",
+ "image_url": "https://addons.mozilla.org/user-media/previews/full/267/267408.png?modified…",
"thumbnail_size": [
528,
400
],
- "thumbnail_url": "https://addons.mozilla.org/user-media/previews/thumbs/267/267408.jpg?modifi…"
+ "thumbnail_url": "https://addons.mozilla.org/user-media/previews/thumbs/267/267408.jpg?modifi…"
},
{
"id": 267511,
@@ -2635,12 +2635,12 @@
717,
542
],
- "image_url": "https://addons.mozilla.org/user-media/previews/full/267/267511.png?modified…",
+ "image_url": "https://addons.mozilla.org/user-media/previews/full/267/267511.png?modified…",
"thumbnail_size": [
529,
400
],
- "thumbnail_url": "https://addons.mozilla.org/user-media/previews/thumbs/267/267511.jpg?modifi…"
+ "thumbnail_url": "https://addons.mozilla.org/user-media/previews/thumbs/267/267511.jpg?modifi…"
},
{
"id": 267512,
@@ -2651,12 +2651,12 @@
717,
542
],
- "image_url": "https://addons.mozilla.org/user-media/previews/full/267/267512.png?modified…",
+ "image_url": "https://addons.mozilla.org/user-media/previews/full/267/267512.png?modified…",
"thumbnail_size": [
529,
400
],
- "thumbnail_url": "https://addons.mozilla.org/user-media/previews/thumbs/267/267512.jpg?modifi…"
+ "thumbnail_url": "https://addons.mozilla.org/user-media/previews/thumbs/267/267512.jpg?modifi…"
}
],
"promoted": {
@@ -2667,10 +2667,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.3973,
- "bayesian_average": 4.394644655920732,
- "count": 2187,
- "text_count": 841
+ "average": 4.3989,
+ "bayesian_average": 4.3962123489941085,
+ "count": 2201,
+ "text_count": 842
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/reviews/",
"requires_payment": false,
@@ -2714,7 +2714,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/versions/",
- "weekly_downloads": 7679
+ "weekly_downloads": 7056
},
"notes": null
},
@@ -2730,7 +2730,7 @@
"picture_url": null
}
],
- "average_daily_users": 163565,
+ "average_daily_users": 162447,
"categories": {
"firefox": [
"photos-music-videos",
@@ -2839,10 +2839,10 @@
"category": "recommended"
},
"ratings": {
- "average": 3.8716,
- "bayesian_average": 3.867573249528433,
- "count": 1231,
- "text_count": 446
+ "average": 3.8642,
+ "bayesian_average": 3.8601313266049937,
+ "count": 1237,
+ "text_count": 448
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/revi…",
"requires_payment": false,
@@ -2861,7 +2861,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/vers…",
- "weekly_downloads": 2672
+ "weekly_downloads": 2040
},
"notes": null
}
=====================================
projects/browser/config
=====================================
@@ -99,9 +99,9 @@ input_files:
- URL: https://addons.mozilla.org/firefox/downloads/file/4206186/noscript-11.4.29.…
name: noscript
sha256sum: 05b98840b05ef2acbac333543e4b7c3d40fee2ce5fb4e29260b05e2ff6fe24cd
- - URL: https://addons.mozilla.org/firefox/downloads/file/4237670/ublock_origin-1.5…
+ - URL: https://addons.mozilla.org/firefox/downloads/file/4261710/ublock_origin-1.5…
name: ublock-origin
- sha256sum: f5fbeeac511ca4e10a74723413727fda8e6f9236c726d16eb54ade1fbe7be5be
+ sha256sum: 9928e79a52cecf7cfa231fdb0699c7d7a427660d94eb10d711ed5a2f10d2eb89
enable: '[% c("var/mullvad-browser") %]'
- URL: https://cdn.mullvad.net/browser-extension/0.9.0/mullvad-browser-extension-0…
name: mullvad-extension
=====================================
projects/firefox/config
=====================================
@@ -14,7 +14,7 @@ container:
use_container: 1
var:
- firefox_platform_version: 115.9.1
+ firefox_platform_version: 115.10.0
firefox_version: '[% c("var/firefox_platform_version") %]esr'
browser_series: '13.0'
browser_branch: '[% c("var/browser_series") %]-1'
=====================================
projects/geckoview/config
=====================================
@@ -14,9 +14,9 @@ container:
use_container: 1
var:
- geckoview_version: 115.9.0esr
+ geckoview_version: 115.10.0esr
browser_branch: 13.0-1
- browser_build: 3
+ browser_build: 1
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
gitlab_project: https://gitlab.torproject.org/tpo/applications/tor-browser
git_commit: '[% exec("git rev-parse HEAD") %]'
=====================================
projects/go/config
=====================================
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: '[% IF c("var/use_go_1_20") %]1.20.14[% ELSE %]1.21.8[% END %]'
+version: '[% IF c("var/use_go_1_20") %]1.20.14[% ELSE %]1.21.9[% END %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
container:
use_container: 1
@@ -121,7 +121,7 @@ input_files:
enable: '[% ! c("var/linux") %]'
- URL: 'https://go.dev/dl/go[% c("version") %].src.tar.gz'
name: go
- sha256sum: dc806cf75a87e1414b5b4c3dcb9dd3e9cc98f4cfccec42b7af617d5a658a3c43
+ sha256sum: 58f0c5ced45a0012bce2ff7a9df03e128abcc8818ebabe5027bb92bafe20e421
enable: '[% !c("var/use_go_1_20") %]'
- URL: 'https://go.dev/dl/go[% c("version") %].src.tar.gz'
name: go
=====================================
projects/tor/config
=====================================
@@ -1,6 +1,6 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
-version: 0.4.8.10
+version: 0.4.8.11
git_hash: 'tor-[% c("version") %]'
git_url: https://gitlab.torproject.org/tpo/core/tor.git
git_submodule: 1
=====================================
projects/translation/config
=====================================
@@ -12,13 +12,13 @@ compress_tar: 'gz'
steps:
base-browser:
base-browser: '[% INCLUDE build %]'
- git_hash: 8e04ca3c5f440ed8f16b2069ae9565e4b044ec29
+ git_hash: d31e6b16c372e2eb235c4f2b0eae0b573a5515ba
targets:
nightly:
git_hash: 'base-browser'
tor-browser:
tor-browser: '[% INCLUDE build %]'
- git_hash: bf2fac60a6c41aa67b8147f22a638d498ac2dcdd
+ git_hash: d37455a56f966b4f87f5f326b534a91f71fd5c88
targets:
nightly:
git_hash: 'tor-browser'
@@ -32,7 +32,7 @@ steps:
fenix: '[% INCLUDE build %]'
# We need to bump the commit before releasing but just pointing to a branch
# might cause too much rebuidling of the Firefox part.
- git_hash: c5d462fc3513f23fc74193c7a5c31027fc07672d
+ git_hash: aa60141af05cd3cabf2479de52da46d436822d61
compress_tar: 'zst'
targets:
nightly:
=====================================
rbm.conf
=====================================
@@ -73,13 +73,13 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '13.0.13'
+ torbrowser_version: '13.0.14'
torbrowser_build: 'build1'
torbrowser_incremental_from:
+ - '13.0.13'
- '13.0.12'
- '[% IF c("var/tor-browser") %]13.0.11[% END %]'
- - '13.0.10'
- - '[% IF c("var/mullvad-browser") %]13.0.9[% END %]'
+ - '[% IF c("var/mullvad-browser") %]13.0.10[% END %]'
updater_enabled: 1
build_mar: 1
mar_channel_id: '[% c("var/projectname") %]-torproject-[% c("var/channel") %]'
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.10.0esr-13.5-1] Revert "Bug 23104: Add a default line height compensation"
by Pier Angelo Vendrame (@pierov) 11 Apr '24
by Pier Angelo Vendrame (@pierov) 11 Apr '24
11 Apr '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
792ec04b by Pier Angelo Vendrame at 2024-04-11T15:18:16+02:00
Revert "Bug 23104: Add a default line height compensation"
Bug 40919: Drop line-height protection introduced in #23104.
The main purpose of this patch was to hide the operating system.
However, we don't hide it anymore, so it is not necessary and we do not
have any proof of other benefits e.g., that it hides the OS minor
version.
This reverts commit 15172f2895e0691b57f12c24e99c9b84ee9395ff.
- - - - -
3 changed files:
- layout/generic/ReflowInput.cpp
- layout/generic/test/mochitest.ini
- − layout/generic/test/test_tor_bug23104.html
Changes:
=====================================
layout/generic/ReflowInput.cpp
=====================================
@@ -34,7 +34,6 @@
#include "nsTableCellFrame.h"
#include "nsTableFrame.h"
#include "StickyScrollContainer.h"
-#include "nsContentUtils.h"
using namespace mozilla;
using namespace mozilla::css;
@@ -2724,12 +2723,12 @@ void ReflowInput::CalculateBlockSideMargins() {
// This is necessary because without this compensation, normal line height might
// look too tight.
constexpr float kNormalLineHeightFactor = 1.2f;
-static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics, bool aRFP) {
+static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics) {
MOZ_ASSERT(aFontMetrics, "no font metrics");
nscoord externalLeading = aFontMetrics->ExternalLeading();
nscoord internalLeading = aFontMetrics->InternalLeading();
nscoord emHeight = aFontMetrics->EmHeight();
- if ((!internalLeading && !externalLeading) || aRFP) {
+ if (!internalLeading && !externalLeading) {
return NSToCoordRound(emHeight * kNormalLineHeightFactor);
}
return emHeight + internalLeading + externalLeading;
@@ -2769,9 +2768,7 @@ static inline nscoord ComputeLineHeight(const StyleLineHeight& aLh,
RefPtr<nsFontMetrics> fm = nsLayoutUtils::GetMetricsFor(
aPresContext, aIsVertical, &aRelativeToFont, size,
/* aUseUserFontSet = */ true);
- return GetNormalLineHeight(
- fm, aPresContext->Document()->ShouldResistFingerprinting(
- RFPTarget::Unknown));
+ return GetNormalLineHeight(fm);
}
// If we don't have a pres context, use a 1.2em fallback.
size.ScaleBy(kNormalLineHeightFactor);
=====================================
layout/generic/test/mochitest.ini
=====================================
@@ -164,4 +164,3 @@ support-files =
[test_scroll_on_display_contents.html]
support-files = !/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js
[test_bug1803209.html]
-[test_tor_bug23104.html]
=====================================
layout/generic/test/test_tor_bug23104.html deleted
=====================================
@@ -1,50 +0,0 @@
-<!DOCTYPE HTML>
-<meta charset="UTF-8">
-<html>
-<head>
- <title>Test for Tor Bug #23104: CSS line-height reveals the platform Tor browser is running</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <script type="application/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
- <style type="text/css">
- span {
- background-color: #000;
- color: #fff;
- font-size: 16.5px;
- }
- </style>
-</head>
-<body>
-<span id="test1">Test1</span>
-<span id="test2">كلمة</span>
-<span id="test3">ação</span>
-<script>
-
-let setPref = async function (key, value) {
- await SpecialPowers.pushPrefEnv({"set": [[key, value]]});
-}
-
-function getStyle(el, styleprop) {
- el = document.getElementById(el);
- return document.defaultView.getComputedStyle(el, null).getPropertyValue(styleprop);
-}
-
-function validateElement(elementName, isFingerprintResistent) {
- var fontSize = getStyle(elementName, 'font-size');
- var lineHeight = getStyle(elementName, 'line-height');
- var validationCb = isFingerprintResistent ? is : isnot;
- validationCb(parseFloat(lineHeight), Math.round(parseFloat(fontSize)) * 1.2, 'Line Height validation');
-}
-
-add_task(async function() {
- await setPref("layout.css.line-height.normal-as-resolved-value.enabled", false);
- for (let resistFingerprintingValue of [true, false]) {
- await setPref("privacy.resistFingerprinting", resistFingerprintingValue);
- for (let elementId of ['test1', 'test2', 'test3']) {
- validateElement(elementId, resistFingerprintingValue);
- }
- }
-});
-
-</script>
-</body>
-</html>
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/792…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/792…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][base-browser-115.10.0esr-13.5-1] Revert "Bug 23104: Add a default line height compensation"
by Pier Angelo Vendrame (@pierov) 11 Apr '24
by Pier Angelo Vendrame (@pierov) 11 Apr '24
11 Apr '24
Pier Angelo Vendrame pushed to branch base-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
d1853152 by Pier Angelo Vendrame at 2024-04-11T15:17:31+02:00
Revert "Bug 23104: Add a default line height compensation"
Bug 40919: Drop line-height protection introduced in #23104.
The main purpose of this patch was to hide the operating system.
However, we don't hide it anymore, so it is not necessary and we do not
have any proof of other benefits e.g., that it hides the OS minor
version.
This reverts commit 15172f2895e0691b57f12c24e99c9b84ee9395ff.
- - - - -
3 changed files:
- layout/generic/ReflowInput.cpp
- layout/generic/test/mochitest.ini
- − layout/generic/test/test_tor_bug23104.html
Changes:
=====================================
layout/generic/ReflowInput.cpp
=====================================
@@ -34,7 +34,6 @@
#include "nsTableCellFrame.h"
#include "nsTableFrame.h"
#include "StickyScrollContainer.h"
-#include "nsContentUtils.h"
using namespace mozilla;
using namespace mozilla::css;
@@ -2724,12 +2723,12 @@ void ReflowInput::CalculateBlockSideMargins() {
// This is necessary because without this compensation, normal line height might
// look too tight.
constexpr float kNormalLineHeightFactor = 1.2f;
-static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics, bool aRFP) {
+static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics) {
MOZ_ASSERT(aFontMetrics, "no font metrics");
nscoord externalLeading = aFontMetrics->ExternalLeading();
nscoord internalLeading = aFontMetrics->InternalLeading();
nscoord emHeight = aFontMetrics->EmHeight();
- if ((!internalLeading && !externalLeading) || aRFP) {
+ if (!internalLeading && !externalLeading) {
return NSToCoordRound(emHeight * kNormalLineHeightFactor);
}
return emHeight + internalLeading + externalLeading;
@@ -2769,9 +2768,7 @@ static inline nscoord ComputeLineHeight(const StyleLineHeight& aLh,
RefPtr<nsFontMetrics> fm = nsLayoutUtils::GetMetricsFor(
aPresContext, aIsVertical, &aRelativeToFont, size,
/* aUseUserFontSet = */ true);
- return GetNormalLineHeight(
- fm, aPresContext->Document()->ShouldResistFingerprinting(
- RFPTarget::Unknown));
+ return GetNormalLineHeight(fm);
}
// If we don't have a pres context, use a 1.2em fallback.
size.ScaleBy(kNormalLineHeightFactor);
=====================================
layout/generic/test/mochitest.ini
=====================================
@@ -164,4 +164,3 @@ support-files =
[test_scroll_on_display_contents.html]
support-files = !/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js
[test_bug1803209.html]
-[test_tor_bug23104.html]
=====================================
layout/generic/test/test_tor_bug23104.html deleted
=====================================
@@ -1,50 +0,0 @@
-<!DOCTYPE HTML>
-<meta charset="UTF-8">
-<html>
-<head>
- <title>Test for Tor Bug #23104: CSS line-height reveals the platform Tor browser is running</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <script type="application/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
- <style type="text/css">
- span {
- background-color: #000;
- color: #fff;
- font-size: 16.5px;
- }
- </style>
-</head>
-<body>
-<span id="test1">Test1</span>
-<span id="test2">كلمة</span>
-<span id="test3">ação</span>
-<script>
-
-let setPref = async function (key, value) {
- await SpecialPowers.pushPrefEnv({"set": [[key, value]]});
-}
-
-function getStyle(el, styleprop) {
- el = document.getElementById(el);
- return document.defaultView.getComputedStyle(el, null).getPropertyValue(styleprop);
-}
-
-function validateElement(elementName, isFingerprintResistent) {
- var fontSize = getStyle(elementName, 'font-size');
- var lineHeight = getStyle(elementName, 'line-height');
- var validationCb = isFingerprintResistent ? is : isnot;
- validationCb(parseFloat(lineHeight), Math.round(parseFloat(fontSize)) * 1.2, 'Line Height validation');
-}
-
-add_task(async function() {
- await setPref("layout.css.line-height.normal-as-resolved-value.enabled", false);
- for (let resistFingerprintingValue of [true, false]) {
- await setPref("privacy.resistFingerprinting", resistFingerprintingValue);
- for (let elementId of ['test1', 'test2', 'test3']) {
- validateElement(elementId, resistFingerprintingValue);
- }
- }
-});
-
-</script>
-</body>
-</html>
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d185315…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d185315…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] Revert "Bug 23104: Add a default line height compensation"
by Pier Angelo Vendrame (@pierov) 11 Apr '24
by Pier Angelo Vendrame (@pierov) 11 Apr '24
11 Apr '24
Pier Angelo Vendrame pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
19a92f8c by Pier Angelo Vendrame at 2024-04-11T12:15:38+02:00
Revert "Bug 23104: Add a default line height compensation"
Bug 40919: Drop line-height protection introduced in #23104.
The main purpose of this patch was to hide the operating system.
However, we don't hide it anymore, so it is not necessary and we do not
have any proof of other benefits e.g., that it hides the OS minor
version.
This reverts commit 15172f2895e0691b57f12c24e99c9b84ee9395ff.
- - - - -
3 changed files:
- layout/generic/ReflowInput.cpp
- layout/generic/test/mochitest.ini
- − layout/generic/test/test_tor_bug23104.html
Changes:
=====================================
layout/generic/ReflowInput.cpp
=====================================
@@ -34,7 +34,6 @@
#include "nsTableCellFrame.h"
#include "nsTableFrame.h"
#include "StickyScrollContainer.h"
-#include "nsContentUtils.h"
using namespace mozilla;
using namespace mozilla::css;
@@ -2724,12 +2723,12 @@ void ReflowInput::CalculateBlockSideMargins() {
// This is necessary because without this compensation, normal line height might
// look too tight.
constexpr float kNormalLineHeightFactor = 1.2f;
-static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics, bool aRFP) {
+static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics) {
MOZ_ASSERT(aFontMetrics, "no font metrics");
nscoord externalLeading = aFontMetrics->ExternalLeading();
nscoord internalLeading = aFontMetrics->InternalLeading();
nscoord emHeight = aFontMetrics->EmHeight();
- if ((!internalLeading && !externalLeading) || aRFP) {
+ if (!internalLeading && !externalLeading) {
return NSToCoordRound(emHeight * kNormalLineHeightFactor);
}
return emHeight + internalLeading + externalLeading;
@@ -2769,9 +2768,7 @@ static inline nscoord ComputeLineHeight(const StyleLineHeight& aLh,
RefPtr<nsFontMetrics> fm = nsLayoutUtils::GetMetricsFor(
aPresContext, aIsVertical, &aRelativeToFont, size,
/* aUseUserFontSet = */ true);
- return GetNormalLineHeight(
- fm, aPresContext->Document()->ShouldResistFingerprinting(
- RFPTarget::Unknown));
+ return GetNormalLineHeight(fm);
}
// If we don't have a pres context, use a 1.2em fallback.
size.ScaleBy(kNormalLineHeightFactor);
=====================================
layout/generic/test/mochitest.ini
=====================================
@@ -164,4 +164,3 @@ support-files =
[test_scroll_on_display_contents.html]
support-files = !/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js
[test_bug1803209.html]
-[test_tor_bug23104.html]
=====================================
layout/generic/test/test_tor_bug23104.html deleted
=====================================
@@ -1,50 +0,0 @@
-<!DOCTYPE HTML>
-<meta charset="UTF-8">
-<html>
-<head>
- <title>Test for Tor Bug #23104: CSS line-height reveals the platform Tor browser is running</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <script type="application/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
- <style type="text/css">
- span {
- background-color: #000;
- color: #fff;
- font-size: 16.5px;
- }
- </style>
-</head>
-<body>
-<span id="test1">Test1</span>
-<span id="test2">كلمة</span>
-<span id="test3">ação</span>
-<script>
-
-let setPref = async function (key, value) {
- await SpecialPowers.pushPrefEnv({"set": [[key, value]]});
-}
-
-function getStyle(el, styleprop) {
- el = document.getElementById(el);
- return document.defaultView.getComputedStyle(el, null).getPropertyValue(styleprop);
-}
-
-function validateElement(elementName, isFingerprintResistent) {
- var fontSize = getStyle(elementName, 'font-size');
- var lineHeight = getStyle(elementName, 'line-height');
- var validationCb = isFingerprintResistent ? is : isnot;
- validationCb(parseFloat(lineHeight), Math.round(parseFloat(fontSize)) * 1.2, 'Line Height validation');
-}
-
-add_task(async function() {
- await setPref("layout.css.line-height.normal-as-resolved-value.enabled", false);
- for (let resistFingerprintingValue of [true, false]) {
- await setPref("privacy.resistFingerprinting", resistFingerprintingValue);
- for (let elementId of ['test1', 'test2', 'test3']) {
- validateElement(elementId, resistFingerprintingValue);
- }
- }
-});
-
-</script>
-</body>
-</html>
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/19a92f8…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/19a92f8…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] fixup! Bug 41089: Add tor-browser build scripts + Makefile to tor-browser
by Pier Angelo Vendrame (@pierov) 11 Apr '24
by Pier Angelo Vendrame (@pierov) 11 Apr '24
11 Apr '24
Pier Angelo Vendrame pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
86ea0a08 by Dan Ballard at 2024-04-11T10:44:18+02:00
fixup! Bug 41089: Add tor-browser build scripts + Makefile to tor-browser
fix typo in new geckoview build scripts
- - - - -
1 changed file:
- tools/geckoview/package-gradle.sh
Changes:
=====================================
tools/geckoview/package-gradle.sh
=====================================
@@ -5,7 +5,7 @@ ARCH=$2
source android-env.sh
-env ARCHS=$ARCH make fat-aar
+env ARCHS=$ARCH make fataar
cd $DEV_ROOT
MOZCONFIG=mozconfig-android-$ARCH ./mach build binaries
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/86ea0a0…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/86ea0a0…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/mullvad-browser] Pushed new tag mullvad-browser-115.10.0esr-13.5-1-build1
by Pier Angelo Vendrame (@pierov) 11 Apr '24
by Pier Angelo Vendrame (@pierov) 11 Apr '24
11 Apr '24
Pier Angelo Vendrame pushed new tag mullvad-browser-115.10.0esr-13.5-1-build1 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.10.0esr-13.5-1] 21 commits: MB 38: Mullvad Browser configuration
by Pier Angelo Vendrame (@pierov) 11 Apr '24
by Pier Angelo Vendrame (@pierov) 11 Apr '24
11 Apr '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
afc7b487 by Pier Angelo Vendrame at 2024-04-11T10:20:09+02:00
MB 38: Mullvad Browser configuration
- - - - -
7ee4eafa by Pier Angelo Vendrame at 2024-04-11T10:20:14+02:00
MB 1: Mullvad Browser branding
See also:
mullvad-browser#5: Product name and directory customization
mullvad-browser#12: Create new branding directories and integrate Mullvad icons+branding
mullvad-browser#14: Remove Default Built-in bookmarks
mullvad-browser#35: Add custom PDF icons for Windows builds
mullvad-browser#48: Replace Mozilla copyright and legal trademarks in mullvadbrowser.exe metadata
mullvad-browser#51: Update trademark string
mullvad-browser#104: Update shipped dll metadata copyright/licensing info
mullvad-browser#107: Add alpha and nightly icons
- - - - -
dbc5c863 by Pier Angelo Vendrame at 2024-04-11T10:20:14+02:00
fixup! MB 1: Mullvad Browser branding
Bug 42490: Write the browser logo SVG also outside of omni.ja.
- - - - -
c4f43dc7 by Pier Angelo Vendrame at 2024-04-11T10:20:15+02:00
fixup! MB 1: Mullvad Browser branding
Bug 42490: Write the browser logo SVG also outside of omni.ja.
For Mullvad Browser, we have to add this also to the various moz.build
that are inside each branding directory, because we do not call
FirefoxBranding for them.
- - - - -
ad0f5d2e by Pier Angelo Vendrame at 2024-04-11T10:20:15+02:00
MB 20: Allow packaged-addons in PBM.
We install a few addons from the distribution directory, but they are
not automatically enabled for PBM mode.
This commit modifies the code that installs them to also add the PBM
permission to the known ones.
- - - - -
6cc921ac by Pier Angelo Vendrame at 2024-04-11T10:20:15+02:00
MB 63: Customize some about pages for Mullvad Browser
Also:
mullvad-browser#57: Purge unneeded about: pages
- - - - -
9fed5887 by Pier Angelo Vendrame at 2024-04-11T10:20:15+02:00
MB 37: Customization for the about dialog
- - - - -
f6b28169 by Henry Wilkes at 2024-04-11T10:20:15+02:00
MB 39: Add home page about:mullvad-browser
- - - - -
a886e04b by hackademix at 2024-04-11T10:20:16+02:00
MB 97: Remove UI cues to install new extensions.
- - - - -
b275970b by hackademix at 2024-04-11T10:20:16+02:00
MB 47: uBlock Origin customization
- - - - -
8e3c5b75 by Pier Angelo Vendrame at 2024-04-11T10:20:16+02:00
MB 21: Disable the password manager
This commit disables the about:login page and removes the "Login and
Password" section of about:preferences.
We do not do anything to the real password manager of Firefox, that is
in toolkit: it contains C++ parts that make it difficult to actually
prevent it from being built..
Finally, we modify the the function that opens about:login to report an
error in the console so that we can quickly get a backtrace to the code
that tries to use it.
- - - - -
91046e3c by Pier Angelo Vendrame at 2024-04-11T10:20:16+02:00
MB 112: Updater customization for Mullvad Browser
MB 71: Set the updater base URL to Mullvad domain
- - - - -
6820ae90 by Nicolas Vigier at 2024-04-11T10:20:16+02:00
MB 79: Add Mullvad Browser MAR signing keys
MB 256: Add mullvad-browser nightly mar signing key
- - - - -
859be8fb by Pier Angelo Vendrame at 2024-04-11T10:20:17+02:00
MB 34: Hide unsafe and unwanted preferences UI
about:preferences allow to override some of our defaults, that could
be fingeprintable or have some other unwanted consequences.
- - - - -
3146c247 by Pier Angelo Vendrame at 2024-04-11T10:20:17+02:00
MB 160: Disable the cookie exceptions button
Besides disabling the "Delete on close checkbox", disable also the
"Manage Exceptions" button when always using PBM.
- - - - -
d85c1b52 by hackademix at 2024-04-11T10:20:17+02:00
MB 163: prevent uBlock Origin from being uninstalled/disabled
- - - - -
ffe57b82 by Richard Pospesel at 2024-04-11T10:20:17+02:00
MB 188: Customize Gitlab Issue and Merge templates
- - - - -
1c231b98 by rui hildt at 2024-04-11T10:20:17+02:00
MB 213: Customize the search engines list
- - - - -
1cea288e by hackademix at 2024-04-11T10:20:18+02:00
MB 214: Enable cross-tab identity leak protection in "quiet" mode
- - - - -
23907fef by Pier Angelo Vendrame at 2024-04-11T10:20:18+02:00
MB 234: Disable OS spoofing in HTTP User-Agent.
This commits makes it possible to disable OS spoofing in the HTTP
User-Agent header, to see if matching header and JS property improve
usability.
- - - - -
4e56f637 by Pier Angelo Vendrame at 2024-04-11T10:20:18+02:00
MB 80: Enable Mullvad Browser as a default browser
- - - - -
30 changed files:
- + .gitlab/issue_templates/Rebase Browser - Alpha.md
- + .gitlab/issue_templates/Rebase Browser - Stable.md
- .gitlab/merge_request_templates/default.md
- browser/app/Makefile.in
- browser/app/macbuild/Contents/Info.plist.in
- browser/app/module.ver
- browser/app/firefox.exe.manifest → browser/app/mullvadbrowser.exe.manifest
- + browser/app/profile/000-mullvad-browser.js
- browser/app/profile/001-base-profile.js
- browser/base/content/aboutDialog.xhtml
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-menubar.inc
- browser/base/content/browser-places.js
- browser/base/content/browser.js
- browser/base/content/default-bookmarks.html
- browser/base/content/nsContextMenu.js
- browser/base/content/overrides/app-license.html
- browser/base/content/pageinfo/pageInfo.xhtml
- browser/base/content/utilityOverlay.js
- browser/branding/branding-common.mozbuild
- + browser/branding/mb-alpha/VisualElements_150.png
- + browser/branding/mb-alpha/VisualElements_70.png
- + browser/branding/mb-alpha/configure.sh
- + browser/branding/mb-alpha/content/about-logo.png
- + browser/branding/mb-alpha/content/about-logo.svg
- + browser/branding/mb-alpha/content/about-logo(a)2x.png
- + browser/branding/mb-alpha/content/about-wordmark.svg
- + browser/branding/mb-alpha/content/about.png
- + browser/branding/mb-alpha/content/aboutDialog.css
- + browser/branding/mb-alpha/content/firefox-wordmark.svg
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/9c…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/9c…
You're receiving this email because of your account on gitlab.torproject.org.
1
0