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

Keyboard Shortcuts

Thread View

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

tbb-commits

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

  • 1 participants
  • 20073 discussions
[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] fixup! Bug 42247: Android helpers for the TorProvider
by Pier Angelo Vendrame (@pierov) 26 Mar '24

26 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 9e01b1a9 by Dan Ballard at 2024-03-26T11:33:26-07:00 fixup! Bug 42247: Android helpers for the TorProvider Bug 41187: Add support for tor logs in android integration - - - - - 4 changed files: - mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorIntegrationAndroid.java - toolkit/components/tor-launcher/TorProvider.sys.mjs - toolkit/components/tor-launcher/TorProviderBuilder.sys.mjs - toolkit/modules/TorAndroidIntegration.sys.mjs Changes: ===================================== mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorIntegrationAndroid.java ===================================== @@ -46,6 +46,7 @@ public class TorIntegrationAndroid implements BundleEventListener { 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"; private static final String EVENT_SETTINGS_OPEN = "GeckoView:Tor:OpenSettings"; @@ -118,6 +119,7 @@ public class TorIntegrationAndroid implements BundleEventListener { EVENT_BOOTSTRAP_PROGRESS, EVENT_BOOTSTRAP_COMPLETE, EVENT_BOOTSTRAP_ERROR, + EVENT_TOR_LOGS, EVENT_SETTINGS_OPEN); } @@ -168,6 +170,12 @@ public class TorIntegrationAndroid implements BundleEventListener { 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"); + for (TorLogListener listener: mLogListeners) { + listener.onLog(type, msg); + } } else if (EVENT_SETTINGS_OPEN.equals(event)) { for (BootstrapStateChangeListener listener: mBootstrapStateListeners) { listener.onSettingsRequested(); @@ -573,6 +581,10 @@ public class TorIntegrationAndroid implements BundleEventListener { void onSettingsRequested(); } + public interface TorLogListener { + void onLog(String logType, String message); + } + private @NonNull void reloadSettings() { EventDispatcher.getInstance().queryBundle(EVENT_SETTINGS_GET).then( new GeckoResult.OnValueListener<GeckoBundle, Void>() { public GeckoResult<Void> onValue(final GeckoBundle bundle) { @@ -647,4 +659,14 @@ public class TorIntegrationAndroid implements BundleEventListener { } private final HashSet<BootstrapStateChangeListener> mBootstrapStateListeners = new HashSet<>(); + + public void registerLogListener(TorLogListener listener) { + mLogListeners.add(listener); + } + + public void unregisterLogListener(TorLogListener listener) { + mLogListeners.remove(listener); + } + + private final HashSet<TorLogListener> mLogListeners = new HashSet<>(); } ===================================== toolkit/components/tor-launcher/TorProvider.sys.mjs ===================================== @@ -1002,6 +1002,8 @@ export class TorProvider { Services.obs.notifyObservers(null, TorProviderTopics.HasWarnOrErr); } + Services.obs.notifyObservers({ type, msg }, TorProviderTopics.TorLog); + const date = new Date(); const maxEntries = Services.prefs.getIntPref( Preferences.MaxLogEntries, ===================================== toolkit/components/tor-launcher/TorProviderBuilder.sys.mjs ===================================== @@ -12,6 +12,7 @@ export const TorProviderTopics = Object.freeze({ ProcessExited: "TorProcessExited", BootstrapStatus: "TorBootstrapStatus", BootstrapError: "TorBootstrapError", + TorLog: "TorLog", HasWarnOrErr: "TorLogHasWarnOrErr", BridgeChanged: "TorBridgeChanged", CircuitCredentialsMatched: "TorCircuitCredentialsMatched", ===================================== toolkit/modules/TorAndroidIntegration.sys.mjs ===================================== @@ -11,6 +11,7 @@ ChromeUtils.defineESModuleGetters(lazy, { TorConnectTopics: "resource://gre/modules/TorConnect.sys.mjs", TorSettingsTopics: "resource://gre/modules/TorSettings.sys.mjs", TorProviderBuilder: "resource://gre/modules/TorProviderBuilder.sys.mjs", + TorProviderTopics: "resource://gre/modules/TorProviderBuilder.sys.mjs", TorSettings: "resource://gre/modules/TorSettings.sys.mjs", }); @@ -32,6 +33,7 @@ const EmittedEvents = Object.freeze({ bootstrapProgress: "GeckoView:Tor:BootstrapProgress", bootstrapComplete: "GeckoView:Tor:BootstrapComplete", bootstrapError: "GeckoView:Tor:BootstrapError", + torLogs: "GeckoView:Tor:Logs", }); const ListenedEvents = Object.freeze({ @@ -59,6 +61,8 @@ class TorAndroidIntegrationImpl { this.#bootstrapMethodReset(); Services.prefs.addObserver(Prefs.useNewBootstrap, this); + Services.obs.addObserver(this, lazy.TorProviderTopics.TorLog); + for (const topic in lazy.TorConnectTopics) { Services.obs.addObserver(this, lazy.TorConnectTopics[topic]); } @@ -118,6 +122,13 @@ class TorAndroidIntegrationImpl { details: subj.wrappedJSObject.details ?? "", }); break; + case lazy.TorProviderTopics.TorLog: + lazy.EventDispatcher.instance.sendRequest({ + type: EmittedEvents.torLogs, + logType: subj.wrappedJSObject.type ?? "", + message: subj.wrappedJSObject.msg ?? "", + }); + break; case lazy.TorSettingsTopics.Ready: lazy.EventDispatcher.instance.sendRequest({ type: EmittedEvents.settingsReady, View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/9e01b1a… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/9e01b1a… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] fixup! Bug 40925: Implemented the Security Level component
by richard (@richard) 26 Mar '24

26 Mar '24
richard pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser Commits: ea97107e by Henry Wilkes at 2024-03-26T17:56:27+00:00 fixup! Bug 40925: Implemented the Security Level component Bug 42214: Drop the securityLevel.properties file. - - - - - 1 changed file: - − browser/locales/en-US/chrome/browser/securityLevel.properties Changes: ===================================== browser/locales/en-US/chrome/browser/securityLevel.properties deleted ===================================== @@ -1,33 +0,0 @@ -# Generic terms -security_level = Security Level -security_level_standard = Standard -security_level_safer = Safer -security_level_safest = Safest -security_level_tooltip_standard = Security Level: Standard -security_level_tooltip_safer = Security Level: Safer -security_level_tooltip_safest = Security Level: Safest -# Shown only for custom level -security_level_custom = Custom -security_level_restore = Restore Defaults -security_level_learn_more = Learn more - -# Panel button that takes the user to the security level settings in -# about:preferences#privacy -security_level_open_settings = Settings… -security_level_change = Change… -security_level_standard_summary = All browser and website features are enabled. -security_level_safer_summary = Disables website features that are often dangerous, causing some sites to lose functionality. -security_level_safest_summary = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts. -security_level_custom_heading = Custom security level configured -security_level_custom_summary = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels. - -## Security level section in about:preferences#privacy -security_level_overview = Disable certain web features that can be used to attack your security and anonymity. -security_level_list_safer = At the safer setting: -security_level_list_safest = At the safest setting: -# Strings for descriptions -security_level_js_https_only = JavaScript is disabled on non-HTTPS sites. -security_level_js_disabled = JavaScript is disabled by default on all sites. -security_level_limit_typography = Some fonts and math symbols are disabled. -security_level_limit_typography_svg = Some fonts, icons, math symbols, and images are disabled. -security_level_limit_media = Audio and video (HTML5 media), and WebGL are click-to-play. View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/ea9… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/ea9… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] fixup! Bug 40925: Implemented the Security Level component
by richard (@richard) 26 Mar '24

26 Mar '24
richard pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 601bf763 by Henry Wilkes at 2024-03-26T17:54:31+00:00 fixup! Bug 40925: Implemented the Security Level component Bug 42214: Drop the securityLevel.properties file. - - - - - 1 changed file: - − browser/locales/en-US/chrome/browser/securityLevel.properties Changes: ===================================== browser/locales/en-US/chrome/browser/securityLevel.properties deleted ===================================== @@ -1,33 +0,0 @@ -# Generic terms -security_level = Security Level -security_level_standard = Standard -security_level_safer = Safer -security_level_safest = Safest -security_level_tooltip_standard = Security Level: Standard -security_level_tooltip_safer = Security Level: Safer -security_level_tooltip_safest = Security Level: Safest -# Shown only for custom level -security_level_custom = Custom -security_level_restore = Restore Defaults -security_level_learn_more = Learn more - -# Panel button that takes the user to the security level settings in -# about:preferences#privacy -security_level_open_settings = Settings… -security_level_change = Change… -security_level_standard_summary = All browser and website features are enabled. -security_level_safer_summary = Disables website features that are often dangerous, causing some sites to lose functionality. -security_level_safest_summary = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts. -security_level_custom_heading = Custom security level configured -security_level_custom_summary = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels. - -## Security level section in about:preferences#privacy -security_level_overview = Disable certain web features that can be used to attack your security and anonymity. -security_level_list_safer = At the safer setting: -security_level_list_safest = At the safest setting: -# Strings for descriptions -security_level_js_https_only = JavaScript is disabled on non-HTTPS sites. -security_level_js_disabled = JavaScript is disabled by default on all sites. -security_level_limit_typography = Some fonts and math symbols are disabled. -security_level_limit_typography_svg = Some fonts, icons, math symbols, and images are disabled. -security_level_limit_media = Audio and video (HTML5 media), and WebGL are click-to-play. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/601bf76… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/601bf76… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] fixup! Bug 40925: Implemented the Security Level component
by richard (@richard) 26 Mar '24

26 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: fec131fd by Henry Wilkes at 2024-03-26T17:50:00+00:00 fixup! Bug 40925: Implemented the Security Level component Bug 42214: Drop the securityLevel.properties file. - - - - - 1 changed file: - − browser/locales/en-US/chrome/browser/securityLevel.properties Changes: ===================================== browser/locales/en-US/chrome/browser/securityLevel.properties deleted ===================================== @@ -1,33 +0,0 @@ -# Generic terms -security_level = Security Level -security_level_standard = Standard -security_level_safer = Safer -security_level_safest = Safest -security_level_tooltip_standard = Security Level: Standard -security_level_tooltip_safer = Security Level: Safer -security_level_tooltip_safest = Security Level: Safest -# Shown only for custom level -security_level_custom = Custom -security_level_restore = Restore Defaults -security_level_learn_more = Learn more - -# Panel button that takes the user to the security level settings in -# about:preferences#privacy -security_level_open_settings = Settings… -security_level_change = Change… -security_level_standard_summary = All browser and website features are enabled. -security_level_safer_summary = Disables website features that are often dangerous, causing some sites to lose functionality. -security_level_safest_summary = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts. -security_level_custom_heading = Custom security level configured -security_level_custom_summary = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels. - -## Security level section in about:preferences#privacy -security_level_overview = Disable certain web features that can be used to attack your security and anonymity. -security_level_list_safer = At the safer setting: -security_level_list_safest = At the safest setting: -# Strings for descriptions -security_level_js_https_only = JavaScript is disabled on non-HTTPS sites. -security_level_js_disabled = JavaScript is disabled by default on all sites. -security_level_limit_typography = Some fonts and math symbols are disabled. -security_level_limit_typography_svg = Some fonts, icons, math symbols, and images are disabled. -security_level_limit_media = Audio and video (HTML5 media), and WebGL are click-to-play. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/fec131f… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/fec131f… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 3 commits: fixup! Bug 2176: Rebrand Firefox to TorBrowser
by richard (@richard) 26 Mar '24

26 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 1ce353d9 by Henry Wilkes at 2024-03-26T17:47:47+00:00 fixup! Bug 2176: Rebrand Firefox to TorBrowser Bug 42466: Use the existing #trademark element from mozilla for Tor Browser&#39;s trademark statement. - - - - - 3cad3836 by Henry Wilkes at 2024-03-26T17:47:47+00:00 fixup! Tor Browser strings Bug 42466: Change trademark statement to remove &quot;onion logo&quot;, and move it to brand.ftl. - - - - - 37b97c98 by Henry Wilkes at 2024-03-26T17:47:47+00:00 fixup! Add TorStrings module for localization Bug 42466: Remove &quot;onion logo&quot; from trademark statement and move it to brand.ftl. - - - - - 4 changed files: - browser/base/content/aboutDialog.xhtml - browser/base/content/aboutDialogTor.css - browser/locales/en-US/browser/tor-browser.ftl - toolkit/torbutton/chrome/locale/en-US/branding/brand.ftl Changes: ===================================== browser/base/content/aboutDialog.xhtml ===================================== @@ -20,7 +20,7 @@ data-l10n-id="aboutDialog-title" #endif role="dialog" - aria-describedby="version distribution distributionId projectDesc helpDesc trademark trademarkTor" + aria-describedby="version distribution distributionId projectDesc helpDesc trademark" > #ifdef XP_MACOSX #include macWindow.inc.xhtml @@ -150,7 +150,6 @@ <label is="text-link" class="bottom-link" useoriginprincipal="true" href="about:license" data-l10n-id="about-dialog-browser-license-link"></label> </hbox> <description id="trademark" data-l10n-id="trademarkInfo"></description> - <description id="trademarkTor" data-l10n-id="about-dialog-trademark-statement"></description> </vbox> </html:div> ===================================== browser/base/content/aboutDialogTor.css ===================================== @@ -18,15 +18,10 @@ } #trademark { - display: none; -} - -#trademarkTor { font-size: xx-small; text-align: center; color: #999999; - margin-top: 10px; - margin-bottom: 10px; + margin-block: 10px; } #bottomBox > hbox:not(#newBottom) { ===================================== browser/locales/en-US/browser/tor-browser.ftl ===================================== @@ -323,10 +323,6 @@ about-dialog-grow-tor-network-link = Help the Tor Network Grow! # Link text for the Tor Browser license page (about:license). about-dialog-browser-license-link = Licensing Information -# "Tor" and "The Onion Logo" are trademark names, so should not be translated (not including the quote marks, which can be localized). -# "The Tor Project, Inc." is an organisation name. -about-dialog-trademark-statement = “Tor” and “The Onion Logo” are registered trademarks of The Tor Project, Inc. - ## New tor circuit. # Shown in the File menu. ===================================== toolkit/torbutton/chrome/locale/en-US/branding/brand.ftl ===================================== @@ -9,4 +9,6 @@ # remain unchanged across different versions (Nightly, Beta, etc.). -brand-product-name = Tor Browser -vendor-short-name = Tor Project -trademarkInfo = 'Tor' and the 'Onion Logo' are registered trademarks of the Tor Project, Inc. +# "Tor" is a trademark names, so should not be translated (not including the quote marks, which can be localized). +# "The Tor Project, Inc." is an organisation name. +trademarkInfo = “Tor” and the Tor logo are registered trademarks of The Tor Project, Inc. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/570b6c… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/570b6c… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 41110: Avoid Fontconfig warning about "ambiguous path"
by richard (@richard) 26 Mar '24

26 Mar '24
richard pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: c7092a88 by Rusty Bird at 2024-03-23T11:54:07+00:00 Bug 41110: Avoid Fontconfig warning about &quot;ambiguous path&quot; - - - - - 1 changed file: - projects/browser/Bundle-Data/linux/Data/fontconfig/fonts.conf Changes: ===================================== projects/browser/Bundle-Data/linux/Data/fontconfig/fonts.conf ===================================== @@ -39,7 +39,7 @@ PERFORMANCE OF THIS SOFTWARE. <!-- Font directory list --> - <dir>fonts</dir> + <dir prefix="cwd">fonts</dir> <!-- Accept deprecated 'mono' alias, replacing it with 'monospace' View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/c… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/c… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
by ma1 (@ma1) 26 Mar '24

26 Mar '24
ma1 pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser Commits: b6e29f24 by Nika Layzell at 2024-03-26T18:25:59+01:00 Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug! Differential Revision: https://phabricator.services.mozilla.com/D205377 - - - - - 1 changed file: - browser/components/sessionstore/SessionStore.sys.mjs Changes: ===================================== browser/components/sessionstore/SessionStore.sys.mjs ===================================== @@ -1422,6 +1422,13 @@ var SessionStoreInternal = { * and thus enables communication with OOP tabs. */ receiveMessage(aMessage) { + if (Services.appinfo.sessionHistoryInParent) { + throw new Error( + `received unexpected message '${aMessage.name}' with ` + + `sessionHistoryInParent enabled` + ); + } + // If we got here, that means we're dealing with a frame message // manager message, so the target will be a <xul:browser>. var browser = aMessage.target; @@ -1600,14 +1607,14 @@ var SessionStoreInternal = { // internal data about the window. aWindow.__SSi = this._generateWindowID(); - let mm = aWindow.getGroupMessageManager("browsers"); - MESSAGES.forEach(msg => { - let listenWhenClosed = CLOSED_MESSAGES.has(msg); - mm.addMessageListener(msg, this, listenWhenClosed); - }); - - // Load the frame script after registering listeners. if (!Services.appinfo.sessionHistoryInParent) { + let mm = aWindow.getGroupMessageManager("browsers"); + MESSAGES.forEach(msg => { + let listenWhenClosed = CLOSED_MESSAGES.has(msg); + mm.addMessageListener(msg, this, listenWhenClosed); + }); + + // Load the frame script after registering listeners. mm.loadFrameScript( "chrome://browser/content/content-sessionStore.js", true, @@ -2083,8 +2090,10 @@ var SessionStoreInternal = { // Cache the window state until it is completely gone. DyingWindowCache.set(aWindow, winData); - let mm = aWindow.getGroupMessageManager("browsers"); - MESSAGES.forEach(msg => mm.removeMessageListener(msg, this)); + if (!Services.appinfo.sessionHistoryInParent) { + let mm = aWindow.getGroupMessageManager("browsers"); + MESSAGES.forEach(msg => mm.removeMessageListener(msg, this)); + } this._saveableClosedWindowData.delete(winData); delete aWindow.__SSi; View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/b6e… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/b6e… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
by ma1 (@ma1) 26 Mar '24

26 Mar '24
ma1 pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 8e8ac7a1 by Nika Layzell at 2024-03-26T18:23:53+01:00 Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug! Differential Revision: https://phabricator.services.mozilla.com/D205377 - - - - - 1 changed file: - browser/components/sessionstore/SessionStore.sys.mjs Changes: ===================================== browser/components/sessionstore/SessionStore.sys.mjs ===================================== @@ -1422,6 +1422,13 @@ var SessionStoreInternal = { * and thus enables communication with OOP tabs. */ receiveMessage(aMessage) { + if (Services.appinfo.sessionHistoryInParent) { + throw new Error( + `received unexpected message '${aMessage.name}' with ` + + `sessionHistoryInParent enabled` + ); + } + // If we got here, that means we're dealing with a frame message // manager message, so the target will be a <xul:browser>. var browser = aMessage.target; @@ -1600,14 +1607,14 @@ var SessionStoreInternal = { // internal data about the window. aWindow.__SSi = this._generateWindowID(); - let mm = aWindow.getGroupMessageManager("browsers"); - MESSAGES.forEach(msg => { - let listenWhenClosed = CLOSED_MESSAGES.has(msg); - mm.addMessageListener(msg, this, listenWhenClosed); - }); - - // Load the frame script after registering listeners. if (!Services.appinfo.sessionHistoryInParent) { + let mm = aWindow.getGroupMessageManager("browsers"); + MESSAGES.forEach(msg => { + let listenWhenClosed = CLOSED_MESSAGES.has(msg); + mm.addMessageListener(msg, this, listenWhenClosed); + }); + + // Load the frame script after registering listeners. mm.loadFrameScript( "chrome://browser/content/content-sessionStore.js", true, @@ -2083,8 +2090,10 @@ var SessionStoreInternal = { // Cache the window state until it is completely gone. DyingWindowCache.set(aWindow, winData); - let mm = aWindow.getGroupMessageManager("browsers"); - MESSAGES.forEach(msg => mm.removeMessageListener(msg, this)); + if (!Services.appinfo.sessionHistoryInParent) { + let mm = aWindow.getGroupMessageManager("browsers"); + MESSAGES.forEach(msg => mm.removeMessageListener(msg, this)); + } this._saveableClosedWindowData.delete(winData); delete aWindow.__SSi; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/8e8ac7a… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/8e8ac7a… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] Bug 42472: Spoof timezone in XSLT.
by Pier Angelo Vendrame (@pierov) 26 Mar '24

26 Mar '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser Commits: a18ee3be by Pier Angelo Vendrame at 2024-03-26T18:21:50+01:00 Bug 42472: Spoof timezone in XSLT. - - - - - 1 changed file: - dom/xslt/xslt/txEXSLTFunctions.cpp Changes: ===================================== dom/xslt/xslt/txEXSLTFunctions.cpp ===================================== @@ -591,7 +591,14 @@ nsresult txEXSLTFunctionCall::evaluate(txIEvalContext* aContext, // http://exslt.org/date/functions/date-time/ PRExplodedTime prtime; - PR_ExplodeTime(PR_Now(), PR_LocalTimeParameters, &prtime); + PR_ExplodeTime( + PR_Now(), + // We are not allowed to access the Document when evaluating this, so + // fall back to the general function. + nsContentUtils::ShouldResistFingerprinting(RFPTarget::Unknown) + ? PR_GMTParameters + : PR_LocalTimeParameters, + &prtime); int32_t offset = (prtime.tm_params.tp_gmt_offset + prtime.tm_params.tp_dst_offset) / View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/a18… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/a18… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] Bug 42472: Spoof timezone in XSLT.
by Pier Angelo Vendrame (@pierov) 26 Mar '24

26 Mar '24
Pier Angelo Vendrame pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: d81946dd by Pier Angelo Vendrame at 2024-03-26T18:21:17+01:00 Bug 42472: Spoof timezone in XSLT. - - - - - 1 changed file: - dom/xslt/xslt/txEXSLTFunctions.cpp Changes: ===================================== dom/xslt/xslt/txEXSLTFunctions.cpp ===================================== @@ -591,7 +591,14 @@ nsresult txEXSLTFunctionCall::evaluate(txIEvalContext* aContext, // http://exslt.org/date/functions/date-time/ PRExplodedTime prtime; - PR_ExplodeTime(PR_Now(), PR_LocalTimeParameters, &prtime); + PR_ExplodeTime( + PR_Now(), + // We are not allowed to access the Document when evaluating this, so + // fall back to the general function. + nsContentUtils::ShouldResistFingerprinting(RFPTarget::Unknown) + ? PR_GMTParameters + : PR_LocalTimeParameters, + &prtime); int32_t offset = (prtime.tm_params.tp_gmt_offset + prtime.tm_params.tp_dst_offset) / View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d81946d… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d81946d… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] Bug 42472: Spoof timezone in XSLT.
by Pier Angelo Vendrame (@pierov) 26 Mar '24

26 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 570b6c56 by Pier Angelo Vendrame at 2024-03-26T18:04:32+01:00 Bug 42472: Spoof timezone in XSLT. - - - - - 1 changed file: - dom/xslt/xslt/txEXSLTFunctions.cpp Changes: ===================================== dom/xslt/xslt/txEXSLTFunctions.cpp ===================================== @@ -591,7 +591,14 @@ nsresult txEXSLTFunctionCall::evaluate(txIEvalContext* aContext, // http://exslt.org/date/functions/date-time/ PRExplodedTime prtime; - PR_ExplodeTime(PR_Now(), PR_LocalTimeParameters, &prtime); + PR_ExplodeTime( + PR_Now(), + // We are not allowed to access the Document when evaluating this, so + // fall back to the general function. + nsContentUtils::ShouldResistFingerprinting(RFPTarget::Unknown) + ? PR_GMTParameters + : PR_LocalTimeParameters, + &prtime); int32_t offset = (prtime.tm_params.tp_gmt_offset + prtime.tm_params.tp_dst_offset) / View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/570b6c5… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/570b6c5… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] 3 commits: Revert "fixup! Tor Browser localization migration scripts."
by richard (@richard) 25 Mar '24

25 Mar '24
richard pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser Commits: e32712bc by Richard Pospesel at 2024-03-25T22:19:40+00:00 Revert &quot;fixup! Tor Browser localization migration scripts.&quot; This reverts commit a8282d9ca507994cf21025f22c6ba3e13d5e3973. - - - - - edaaba1d by Henry Wilkes at 2024-03-25T22:25:35+00:00 fixup! Bug 40925: Implemented the Security Level component Bug 42214: Migrate security level strings to Fluent. - - - - - a166803d by Henry Wilkes at 2024-03-25T22:27:49+00:00 fixup! Base Browser strings Bug 42214: Migrate security level strings to Fluent. Also change some strings to be sentence case in English. - - - - - 7 changed files: - browser/components/preferences/preferences.xhtml - browser/components/securitylevel/content/securityLevel.js - browser/components/securitylevel/content/securityLevelPanel.inc.xhtml - browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml - browser/locales/en-US/browser/base-browser.ftl - browser/locales/jar.mn - − tools/torbrowser/l10n/migrations/bug-42211-new-identity.py Changes: ===================================== browser/components/preferences/preferences.xhtml ===================================== @@ -58,6 +58,7 @@ <link rel="localization" href="security/certificates/certManager.ftl"/> <link rel="localization" href="security/certificates/deviceManager.ftl"/> <link rel="localization" href="toolkit/updates/history.ftl"/> + <link rel="localization" href="browser/base-browser.ftl"/> <link rel="localization" href="browser/mullvad-browser/preferences.ftl"/> <link rel="shortcut icon" href="chrome://global/skin/icons/settings.svg"/> ===================================== browser/components/securitylevel/content/securityLevel.js ===================================== @@ -8,65 +8,6 @@ ChromeUtils.defineModuleGetter( "resource://gre/modules/SecurityLevel.jsm" ); -XPCOMUtils.defineLazyGetter(this, "SecurityLevelStrings", () => { - let strings = { - // Generic terms - security_level: "Security Level", - security_level_standard: "Standard", - security_level_safer: "Safer", - security_level_safest: "Safest", - security_level_tooltip_standard: "Security Level: Standard", - security_level_tooltip_safer: "Security Level: Safer", - security_level_tooltip_safest: "Security Level: Safest", - // Shown only for custom level - security_level_custom: "Custom", - security_level_restore: "Restore Defaults", - security_level_learn_more: "Learn more", - // Panel - security_level_open_settings: "Settings…", - security_level_standard_summary: - "All browser and website features are enabled.", - security_level_safer_summary: - "Disables website features that are often dangerous, causing some sites to lose functionality.", - security_level_safest_summary: - "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.", - security_level_custom_heading: "Custom security level configured", - security_level_custom_summary: - "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.", - // Security level section in about:preferences#privacy - security_level_overview: - "Disable certain web features that can be used to attack your security and anonymity.", - security_level_list_safer: "At the safer setting:", - security_level_list_safest: "At the safest setting:", - // Strings for descriptions - security_level_js_https_only: "JavaScript is disabled on non-HTTPS sites.", - security_level_js_disabled: - "JavaScript is disabled by default on all sites.", - security_level_limit_typography: - "Some fonts and math symbols are disabled.", - security_level_limit_typography_svg: - "Some fonts, icons, math symbols, and images are disabled.", - security_level_limit_media: - "Audio and video (HTML5 media), and WebGL are click-to-play.", - }; - let bundle = null; - try { - bundle = Services.strings.createBundle( - "chrome://browser/locale/securityLevel.properties" - ); - } catch (e) { - console.warn("Could not load the Security Level strings"); - } - if (bundle) { - for (const key of Object.keys(strings)) { - try { - strings[key] = bundle.GetStringFromName(key); - } catch (e) {} - } - } - return strings; -}); - /* Security Level Button Code @@ -100,12 +41,30 @@ var SecurityLevelButton = { if (!level) { return; } - const customStr = SecurityLevelPrefs.securityCustom ? "_custom" : ""; - this._button.setAttribute("level", `${level}${customStr}`); - this._button.setAttribute( - "tooltiptext", - SecurityLevelStrings[`security_level_tooltip_${level}`] - ); + const custom = SecurityLevelPrefs.securityCustom; + this._button.setAttribute("level", custom ? `${level}_custom` : level); + + let l10nIdLevel; + switch (level) { + case "standard": + l10nIdLevel = "security-level-toolbar-button-standard"; + break; + case "safer": + l10nIdLevel = "security-level-toolbar-button-safer"; + break; + case "safest": + l10nIdLevel = "security-level-toolbar-button-safest"; + break; + default: + throw Error(`Unhandled level: ${level}`); + } + if (custom) { + // Don't distinguish between the different levels when in the custom + // state. We just want to emphasise that it is custom rather than any + // specific level. + l10nIdLevel = "security-level-toolbar-button-custom"; + } + document.l10n.setAttributes(this._button, l10nIdLevel); }, /** @@ -159,7 +118,6 @@ var SecurityLevelButton = { window.gNavToolbox.palette.querySelector("#security-level-button"); // Set a label to be be used as the accessible name, and to be shown in the // overflow menu and during customization. - this._button.setAttribute("label", SecurityLevelStrings.security_level); this._button.addEventListener("command", () => this.openPopup()); // set the initial class based off of the current pref this._configUIFromPrefs(); @@ -213,21 +171,12 @@ var SecurityLevelPanel = { settingsButton: document.getElementById("securityLevel-settings"), }; - document.getElementById("securityLevel-header").textContent = - SecurityLevelStrings.security_level; - this._elements.customName.textContent = - SecurityLevelStrings.security_level_custom; const learnMoreEl = document.getElementById("securityLevel-learnMore"); - learnMoreEl.textContent = SecurityLevelStrings.security_level_learn_more; learnMoreEl.addEventListener("click", event => { window.openTrustedLinkIn(learnMoreEl.href, "tab"); this.hide(); event.preventDefault(); }); - this._elements.restoreDefaultsButton.textContent = - SecurityLevelStrings.security_level_restore; - this._elements.settingsButton.textContent = - SecurityLevelStrings.security_level_open_settings; this._elements.restoreDefaultsButton.addEventListener("command", () => { this.restoreDefaults(); @@ -268,11 +217,30 @@ var SecurityLevelPanel = { // Descriptions change based on security level this._elements.background.setAttribute("level", level); - this._elements.levelName.textContent = - SecurityLevelStrings[`security_level_${level}`]; - this._elements.summary.textContent = custom - ? SecurityLevelStrings.security_level_custom_summary - : SecurityLevelStrings[`security_level_${level}_summary`]; + let l10nIdLevel; + let l10nIdSummary; + switch (level) { + case "standard": + l10nIdLevel = "security-level-panel-level-standard"; + l10nIdSummary = "security-level-summary-standard"; + break; + case "safer": + l10nIdLevel = "security-level-panel-level-safer"; + l10nIdSummary = "security-level-summary-safer"; + break; + case "safest": + l10nIdLevel = "security-level-panel-level-safest"; + l10nIdSummary = "security-level-summary-safest"; + break; + default: + throw Error(`Unhandled level: ${level}`); + } + if (custom) { + l10nIdSummary = "security-level-summary-custom"; + } + + document.l10n.setAttributes(this._elements.levelName, l10nIdLevel); + document.l10n.setAttributes(this._elements.summary, l10nIdSummary); }, /** @@ -358,25 +326,13 @@ var SecurityLevelPreferences = { this._customNotification = document.getElementById( "securityLevel-customNotification" ); - this._radiogroup = document.getElementById("securityLevel-radiogroup"); - - document.querySelector("#securityLevel-groupbox h2").textContent = - SecurityLevelStrings.security_level; - document.getElementById("securityLevel-overview").textContent = - SecurityLevelStrings.security_level_overview; document - .getElementById("securityLevel-learnMore") - .setAttribute("value", SecurityLevelStrings.security_level_learn_more); - - document.getElementById("securityLevel-customHeading").textContent = - SecurityLevelStrings.security_level_custom_heading; - document.getElementById("securityLevel-customDescription").textContent = - SecurityLevelStrings.security_level_custom_summary; - const restoreDefaultsButton = document.getElementById( - "securityLevel-restoreDefaults" - ); - restoreDefaultsButton.textContent = - SecurityLevelStrings.security_level_restore; + .getElementById("securityLevel-restoreDefaults") + .addEventListener("command", () => { + SecurityLevelPrefs.securityCustom = false; + }); + + this._radiogroup = document.getElementById("securityLevel-radiogroup"); this._radioOptions = Array.from( this._radiogroup.querySelectorAll(".securityLevel-radio-option"), @@ -384,46 +340,7 @@ var SecurityLevelPreferences = { return { container, radio: container.querySelector("radio") }; } ); - const descListItemsMap = { - safer: [ - SecurityLevelStrings.security_level_js_https_only, - SecurityLevelStrings.security_level_limit_typography, - SecurityLevelStrings.security_level_limit_media, - ], - safest: [ - SecurityLevelStrings.security_level_js_disabled, - SecurityLevelStrings.security_level_limit_typography_svg, - SecurityLevelStrings.security_level_limit_media, - ], - }; - for (const { container, radio } of this._radioOptions) { - const level = radio.value; - radio.setAttribute( - "label", - SecurityLevelStrings[`security_level_${level}`] - ); - container.querySelector(".summary").textContent = - SecurityLevelStrings[`security_level_${level}_summary`]; - const descListItems = descListItemsMap[level]; - if (!descListItems) { - continue; - } - const descrList = container.querySelector( - ".securityLevel-descriptionList" - ); - // TODO: Add the elements in securityLevelPreferences.inc.xhtml again - // when we switch to Fluent - for (const text of descListItems) { - let elem = document.createXULElement("description"); - elem.textContent = text; - elem.className = "indent"; - descrList.append(elem); - } - } - restoreDefaultsButton.addEventListener("command", () => { - SecurityLevelPrefs.securityCustom = false; - }); this._radiogroup.addEventListener("select", () => { SecurityLevelPrefs.securityLevel = this._radiogroup.value; }); ===================================== browser/components/securitylevel/content/securityLevelPanel.inc.xhtml ===================================== @@ -7,20 +7,35 @@ level="top" class="cui-widget-panel panel-no-padding"> <box class="panel-header"> - <html:h1 id="securityLevel-header"></html:h1> + <html:h1 + id="securityLevel-header" + data-l10n-id="security-level-panel-heading" + ></html:h1> </box> <toolbarseparator id="securityLevel-separator"></toolbarseparator> <vbox id="securityLevel-background" class="panel-subview-body"> <html:p id="securityLevel-subheading"> <html:span id="securityLevel-level"></html:span> - <html:span id="securityLevel-custom"></html:span> + <html:span + id="securityLevel-custom" + data-l10n-id="security-level-panel-custom-badge" + ></html:span> </html:p> <html:p id="securityLevel-summary"></html:p> - <html:a id="securityLevel-learnMore" href="https://mullvad.net/en/browser/hard-facts#security-levels"> - </html:a> + <html:a + id="securityLevel-learnMore" + data-l10n-id="security-level-panel-learn-more-link" + href="https://mullvad.net/en/browser/hard-facts#security-levels" + ></html:a> </vbox> <hbox class="panel-footer"> - <button id="securityLevel-settings"/> - <button id="securityLevel-restoreDefaults"/> + <button + id="securityLevel-settings" + data-l10n-id="security-level-panel-open-settings-button" + /> + <button + id="securityLevel-restoreDefaults" + data-l10n-id="security-level-restore-defaults-button" + /> </hbox> </panel> ===================================== browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml ===================================== @@ -2,36 +2,63 @@ data-category="panePrivacy" data-subcategory="securitylevel" hidden="true"> - <label><html:h2></html:h2></label> + <label> + <html:h2 data-l10n-id="security-level-preferences-heading"></html:h2> + </label> <vbox flex="1"> <description flex="1"> - <html:span id="securityLevel-overview" class="tail-with-learn-more"> - </html:span> - <label id="securityLevel-learnMore" - class="learnMore text-link" - is="text-link" - href="https://mullvad.net/en/browser/hard-facts#security-levels"/> + <html:span + id="securityLevel-overview" + class="tail-with-learn-more" + data-l10n-id="security-level-preferences-overview" + ></html:span> + <label + id="securityLevel-learnMore" + class="learnMore text-link" + is="text-link" + data-l10n-id="security-level-preferences-learn-more-link" + href="https://mullvad.net/en/browser/hard-facts#security-levels" + /> </description> - <hbox id="securityLevel-customNotification" - class="info-box-container" - flex="1"> + <hbox + id="securityLevel-customNotification" + class="info-box-container" + flex="1" + > <hbox class="info-icon-container"> <image class="info-icon securityLevel-custom-warning-icon"/> </hbox> <vbox flex="1"> - <label id="securityLevel-customHeading"/> - <description id="securityLevel-customDescription" flex="1"/> + <label + id="securityLevel-customHeading" + data-l10n-id="security-level-preferences-custom-heading" + /> + <description + id="securityLevel-customDescription" + data-l10n-id="security-level-summary-custom" + flex="1" + /> </vbox> <hbox align="center"> - <button id="securityLevel-restoreDefaults"/> + <button + id="securityLevel-restoreDefaults" + data-l10n-id="security-level-restore-defaults-button" + /> </hbox> </hbox> <radiogroup id="securityLevel-radiogroup"> <vbox class="securityLevel-radio-option"> - <radio value="standard" - aria-describedby="securityLevelSummary-standard"/> + <radio + value="standard" + data-l10n-id="security-level-preferences-level-standard" + aria-describedby="securityLevelSummary-standard" + /> <vbox id="securityLevelSummary-standard"> - <description class="summary indent" flex="1"/> + <description + class="summary indent" + flex="1" + data-l10n-id="security-level-summary-standard" + /> </vbox> </vbox> <vbox class="securityLevel-radio-option"> @@ -40,19 +67,59 @@ - securityLevel-descriptionList is shown or hidden, its text content - is included or excluded from the accessible description, - respectively. --> - <radio value="safer" - aria-describedby="securityLevelSummary-safer"/> + <radio + value="safer" + data-l10n-id="security-level-preferences-level-safer" + aria-describedby="securityLevelSummary-safer" + /> <vbox id="securityLevelSummary-safer"> - <description class="summary indent" flex="1"/> - <vbox class="securityLevel-descriptionList indent"/> + <description + class="summary indent" + flex="1" + data-l10n-id="security-level-summary-safer" + /> + <vbox class="securityLevel-descriptionList indent"> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-https-only-javascript" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-media" + /> + </vbox> </vbox> </vbox> <vbox class="securityLevel-radio-option"> - <radio value="safest" - aria-describedby="securityLevelSummary-safest"/> + <radio + value="safest" + data-l10n-id="security-level-preferences-level-safest" + aria-describedby="securityLevelSummary-safest" + /> <vbox id="securityLevelSummary-safest"> - <description class="summary indent" flex="1"/> - <vbox class="securityLevel-descriptionList indent"/> + <description + class="summary indent" + flex="1" + data-l10n-id="security-level-summary-safest" + /> + <vbox class="securityLevel-descriptionList indent"> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-disabled-javascript" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols-and-images" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-media" + /> + </vbox> </vbox> </vbox> </radiogroup> ===================================== browser/locales/en-US/browser/base-browser.ftl ===================================== @@ -70,6 +70,7 @@ new-identity-dialog-confirm = new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session. # Button to continue loading the home page, despite the warning message. new-identity-blocked-home-ignore-button = Load it anyway + ## Preferences - Letterboxing. # The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised. @@ -94,3 +95,74 @@ letterboxing-disabled-description = Letterboxing is currently disabled. # "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages. letterboxing-enable-button = .label = Enable Letterboxing + +## Security level toolbar button. +## Uses sentence case in English (US). +## ".label" is the accessible name, and shown in the overflow menu and when customizing the toolbar. + +security-level-toolbar-button-standard = + .label = Security level + .tooltiptext = Security level: Standard +security-level-toolbar-button-safer = + .label = Security level + .tooltiptext = Security level: Safer +security-level-toolbar-button-safest = + .label = Security level + .tooltiptext = Security level: Safest +# Used when the user is in some custom configuration that does not match a security level. +security-level-toolbar-button-custom = + .label = Security level + .tooltiptext = Security level: Custom + +## Security level popup panel. + +# Uses sentence case in English (US). +security-level-panel-heading = Security level + +security-level-panel-level-standard = Standard +security-level-panel-level-safer = Safer +security-level-panel-level-safest = Safest +security-level-panel-learn-more-link = Learn more +# Button to open security level settings. +security-level-panel-open-settings-button = Settings… + +## Security level settings. + +security-level-preferences-heading = Security Level +security-level-preferences-overview = Disable certain web features that can be used to attack your security and anonymity. +security-level-preferences-learn-more-link = Learn more +security-level-preferences-level-standard = + .label = Standard +security-level-preferences-level-safer = + .label = Safer +security-level-preferences-level-safest = + .label = Safest + +## Security level summaries shown in security panel and settings. + +security-level-summary-standard = All browser and website features are enabled. +security-level-summary-safer = Disables website features that are often dangerous, causing some sites to lose functionality. +security-level-summary-safest = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts. + +## Security level feature bullet points. +## Shown in the settings under the security level when it is selected. + +security-level-preferences-bullet-https-only-javascript = JavaScript is disabled on non-HTTPS sites. +security-level-preferences-bullet-limit-font-and-symbols = Some fonts and math symbols are disabled. +security-level-preferences-bullet-limit-media = Audio and video (HTML5 media), and WebGL are click-to-play. +security-level-preferences-bullet-disabled-javascript = JavaScript is disabled by default on all sites. +security-level-preferences-bullet-limit-font-and-symbols-and-images = Some fonts, icons, math symbols, and images are disabled. + +## Custom security level. +## Some custom preferences configuration has placed the user outside one of the standard three levels. + +# Shown in the security level panel as an orange badge next to the expected level. +security-level-panel-custom-badge = Custom +# Shown in the security level settings in a warning box. +security-level-preferences-custom-heading = Custom security level configured +# Description of custom state and recommended action. +# Shown in the security level panel and settings. +security-level-summary-custom = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels. +# Button to undo custom changes to the security level and place the user in one of the standard security levels. +# Shown in the security level panel and settings. +security-level-restore-defaults-button = Restore defaults ===================================== browser/locales/jar.mn ===================================== @@ -32,5 +32,4 @@ locale/browser/safebrowsing/safebrowsing.properties (%chrome/browser/safebrowsing/safebrowsing.properties) locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties) locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties) - locale/browser/securityLevel.properties (%chrome/browser/securityLevel.properties) % locale browser-region @AB_CD@ %locale/browser-region/ ===================================== tools/torbrowser/l10n/migrations/bug-42211-new-identity.py deleted ===================================== @@ -1,48 +0,0 @@ -import fluent.syntax.ast as FTL -from fluent.migrate.helpers import TERM_REFERENCE, transforms_from -from fluent.migrate.transforms import REPLACE - - -def migrate(ctx): - legacy_path = "newIdentity.properties" - - ctx.add_transforms( - "base-browser.ftl", - "base-browser.ftl", - transforms_from( - """ -menu-new-identity = - .label = { COPY(path, "new_identity") } - .accesskey = { COPY(path, "new_identity_menu_accesskey") } -appmenuitem-new-identity = - .label = { COPY(path, "new_identity_sentence_case") } -toolbar-new-identity = - .label = { COPY(path, "new_identity_sentence_case") } - .tooltiptext = { toolbar-new-identity.label } - -new-identity-dialog-title = { COPY(path, "new_identity_prompt_title") } -new-identity-dialog-never-ask-checkbox = - .label = { COPY(path, "new_identity_ask_again") } - -new-identity-blocked-home-ignore-button = { COPY(path, "new_identity_home_load_button") } -""", - path=legacy_path, - ) - + [ - # Replace "%S" with "{ -brand-short-name }" in confirm button. - FTL.Message( - id=FTL.Identifier("new-identity-dialog-confirm"), - value=None, - attributes=[ - FTL.Attribute( - id=FTL.Identifier("label"), - value=REPLACE( - legacy_path, - "new_identity_restart", - {"%1$S": TERM_REFERENCE("brand-short-name")}, - ), - ), - ], - ), - ], - ) View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/4d… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/4d… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] 3 commits: Revert "fixup! Tor Browser localization migration scripts."
by richard (@richard) 25 Mar '24

25 Mar '24
richard pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: ba14a74d by Richard Pospesel at 2024-03-25T22:15:25+00:00 Revert &quot;fixup! Tor Browser localization migration scripts.&quot; This reverts commit 57b8a1d5daf53afed32a8b02aca2508eecfc9bd7. - - - - - c14810dd by Henry Wilkes at 2024-03-25T22:16:38+00:00 fixup! Bug 40925: Implemented the Security Level component Bug 42214: Migrate security level strings to Fluent. - - - - - 8f87ed96 by Henry Wilkes at 2024-03-25T22:17:23+00:00 fixup! Base Browser strings Bug 42214: Migrate security level strings to Fluent. Also change some strings to be sentence case in English. - - - - - 7 changed files: - browser/components/preferences/preferences.xhtml - browser/components/securitylevel/content/securityLevel.js - browser/components/securitylevel/content/securityLevelPanel.inc.xhtml - browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml - browser/locales/en-US/browser/base-browser.ftl - browser/locales/jar.mn - − tools/torbrowser/l10n/migrations/bug-42211-new-identity.py Changes: ===================================== browser/components/preferences/preferences.xhtml ===================================== @@ -58,6 +58,7 @@ <link rel="localization" href="security/certificates/certManager.ftl"/> <link rel="localization" href="security/certificates/deviceManager.ftl"/> <link rel="localization" href="toolkit/updates/history.ftl"/> + <link rel="localization" href="browser/base-browser.ftl"/> <link rel="shortcut icon" href="chrome://global/skin/icons/settings.svg"/> ===================================== browser/components/securitylevel/content/securityLevel.js ===================================== @@ -8,65 +8,6 @@ ChromeUtils.defineModuleGetter( "resource://gre/modules/SecurityLevel.jsm" ); -XPCOMUtils.defineLazyGetter(this, "SecurityLevelStrings", () => { - let strings = { - // Generic terms - security_level: "Security Level", - security_level_standard: "Standard", - security_level_safer: "Safer", - security_level_safest: "Safest", - security_level_tooltip_standard: "Security Level: Standard", - security_level_tooltip_safer: "Security Level: Safer", - security_level_tooltip_safest: "Security Level: Safest", - // Shown only for custom level - security_level_custom: "Custom", - security_level_restore: "Restore Defaults", - security_level_learn_more: "Learn more", - // Panel - security_level_open_settings: "Settings…", - security_level_standard_summary: - "All browser and website features are enabled.", - security_level_safer_summary: - "Disables website features that are often dangerous, causing some sites to lose functionality.", - security_level_safest_summary: - "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.", - security_level_custom_heading: "Custom security level configured", - security_level_custom_summary: - "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.", - // Security level section in about:preferences#privacy - security_level_overview: - "Disable certain web features that can be used to attack your security and anonymity.", - security_level_list_safer: "At the safer setting:", - security_level_list_safest: "At the safest setting:", - // Strings for descriptions - security_level_js_https_only: "JavaScript is disabled on non-HTTPS sites.", - security_level_js_disabled: - "JavaScript is disabled by default on all sites.", - security_level_limit_typography: - "Some fonts and math symbols are disabled.", - security_level_limit_typography_svg: - "Some fonts, icons, math symbols, and images are disabled.", - security_level_limit_media: - "Audio and video (HTML5 media), and WebGL are click-to-play.", - }; - let bundle = null; - try { - bundle = Services.strings.createBundle( - "chrome://browser/locale/securityLevel.properties" - ); - } catch (e) { - console.warn("Could not load the Security Level strings"); - } - if (bundle) { - for (const key of Object.keys(strings)) { - try { - strings[key] = bundle.GetStringFromName(key); - } catch (e) {} - } - } - return strings; -}); - /* Security Level Button Code @@ -100,12 +41,30 @@ var SecurityLevelButton = { if (!level) { return; } - const customStr = SecurityLevelPrefs.securityCustom ? "_custom" : ""; - this._button.setAttribute("level", `${level}${customStr}`); - this._button.setAttribute( - "tooltiptext", - SecurityLevelStrings[`security_level_tooltip_${level}`] - ); + const custom = SecurityLevelPrefs.securityCustom; + this._button.setAttribute("level", custom ? `${level}_custom` : level); + + let l10nIdLevel; + switch (level) { + case "standard": + l10nIdLevel = "security-level-toolbar-button-standard"; + break; + case "safer": + l10nIdLevel = "security-level-toolbar-button-safer"; + break; + case "safest": + l10nIdLevel = "security-level-toolbar-button-safest"; + break; + default: + throw Error(`Unhandled level: ${level}`); + } + if (custom) { + // Don't distinguish between the different levels when in the custom + // state. We just want to emphasise that it is custom rather than any + // specific level. + l10nIdLevel = "security-level-toolbar-button-custom"; + } + document.l10n.setAttributes(this._button, l10nIdLevel); }, /** @@ -159,7 +118,6 @@ var SecurityLevelButton = { window.gNavToolbox.palette.querySelector("#security-level-button"); // Set a label to be be used as the accessible name, and to be shown in the // overflow menu and during customization. - this._button.setAttribute("label", SecurityLevelStrings.security_level); this._button.addEventListener("command", () => this.openPopup()); // set the initial class based off of the current pref this._configUIFromPrefs(); @@ -213,21 +171,12 @@ var SecurityLevelPanel = { settingsButton: document.getElementById("securityLevel-settings"), }; - document.getElementById("securityLevel-header").textContent = - SecurityLevelStrings.security_level; - this._elements.customName.textContent = - SecurityLevelStrings.security_level_custom; const learnMoreEl = document.getElementById("securityLevel-learnMore"); - learnMoreEl.textContent = SecurityLevelStrings.security_level_learn_more; learnMoreEl.addEventListener("click", event => { window.openTrustedLinkIn(learnMoreEl.href, "tab"); this.hide(); event.preventDefault(); }); - this._elements.restoreDefaultsButton.textContent = - SecurityLevelStrings.security_level_restore; - this._elements.settingsButton.textContent = - SecurityLevelStrings.security_level_open_settings; this._elements.restoreDefaultsButton.addEventListener("command", () => { this.restoreDefaults(); @@ -268,11 +217,30 @@ var SecurityLevelPanel = { // Descriptions change based on security level this._elements.background.setAttribute("level", level); - this._elements.levelName.textContent = - SecurityLevelStrings[`security_level_${level}`]; - this._elements.summary.textContent = custom - ? SecurityLevelStrings.security_level_custom_summary - : SecurityLevelStrings[`security_level_${level}_summary`]; + let l10nIdLevel; + let l10nIdSummary; + switch (level) { + case "standard": + l10nIdLevel = "security-level-panel-level-standard"; + l10nIdSummary = "security-level-summary-standard"; + break; + case "safer": + l10nIdLevel = "security-level-panel-level-safer"; + l10nIdSummary = "security-level-summary-safer"; + break; + case "safest": + l10nIdLevel = "security-level-panel-level-safest"; + l10nIdSummary = "security-level-summary-safest"; + break; + default: + throw Error(`Unhandled level: ${level}`); + } + if (custom) { + l10nIdSummary = "security-level-summary-custom"; + } + + document.l10n.setAttributes(this._elements.levelName, l10nIdLevel); + document.l10n.setAttributes(this._elements.summary, l10nIdSummary); }, /** @@ -358,25 +326,13 @@ var SecurityLevelPreferences = { this._customNotification = document.getElementById( "securityLevel-customNotification" ); - this._radiogroup = document.getElementById("securityLevel-radiogroup"); - - document.querySelector("#securityLevel-groupbox h2").textContent = - SecurityLevelStrings.security_level; - document.getElementById("securityLevel-overview").textContent = - SecurityLevelStrings.security_level_overview; document - .getElementById("securityLevel-learnMore") - .setAttribute("value", SecurityLevelStrings.security_level_learn_more); - - document.getElementById("securityLevel-customHeading").textContent = - SecurityLevelStrings.security_level_custom_heading; - document.getElementById("securityLevel-customDescription").textContent = - SecurityLevelStrings.security_level_custom_summary; - const restoreDefaultsButton = document.getElementById( - "securityLevel-restoreDefaults" - ); - restoreDefaultsButton.textContent = - SecurityLevelStrings.security_level_restore; + .getElementById("securityLevel-restoreDefaults") + .addEventListener("command", () => { + SecurityLevelPrefs.securityCustom = false; + }); + + this._radiogroup = document.getElementById("securityLevel-radiogroup"); this._radioOptions = Array.from( this._radiogroup.querySelectorAll(".securityLevel-radio-option"), @@ -384,46 +340,7 @@ var SecurityLevelPreferences = { return { container, radio: container.querySelector("radio") }; } ); - const descListItemsMap = { - safer: [ - SecurityLevelStrings.security_level_js_https_only, - SecurityLevelStrings.security_level_limit_typography, - SecurityLevelStrings.security_level_limit_media, - ], - safest: [ - SecurityLevelStrings.security_level_js_disabled, - SecurityLevelStrings.security_level_limit_typography_svg, - SecurityLevelStrings.security_level_limit_media, - ], - }; - for (const { container, radio } of this._radioOptions) { - const level = radio.value; - radio.setAttribute( - "label", - SecurityLevelStrings[`security_level_${level}`] - ); - container.querySelector(".summary").textContent = - SecurityLevelStrings[`security_level_${level}_summary`]; - const descListItems = descListItemsMap[level]; - if (!descListItems) { - continue; - } - const descrList = container.querySelector( - ".securityLevel-descriptionList" - ); - // TODO: Add the elements in securityLevelPreferences.inc.xhtml again - // when we switch to Fluent - for (const text of descListItems) { - let elem = document.createXULElement("description"); - elem.textContent = text; - elem.className = "indent"; - descrList.append(elem); - } - } - restoreDefaultsButton.addEventListener("command", () => { - SecurityLevelPrefs.securityCustom = false; - }); this._radiogroup.addEventListener("select", () => { SecurityLevelPrefs.securityLevel = this._radiogroup.value; }); ===================================== browser/components/securitylevel/content/securityLevelPanel.inc.xhtml ===================================== @@ -7,20 +7,35 @@ level="top" class="cui-widget-panel panel-no-padding"> <box class="panel-header"> - <html:h1 id="securityLevel-header"></html:h1> + <html:h1 + id="securityLevel-header" + data-l10n-id="security-level-panel-heading" + ></html:h1> </box> <toolbarseparator id="securityLevel-separator"></toolbarseparator> <vbox id="securityLevel-background" class="panel-subview-body"> <html:p id="securityLevel-subheading"> <html:span id="securityLevel-level"></html:span> - <html:span id="securityLevel-custom"></html:span> + <html:span + id="securityLevel-custom" + data-l10n-id="security-level-panel-custom-badge" + ></html:span> </html:p> <html:p id="securityLevel-summary"></html:p> - <html:a id="securityLevel-learnMore" href="about:manual#security-settings"> - </html:a> + <html:a + id="securityLevel-learnMore" + data-l10n-id="security-level-panel-learn-more-link" + href="about:manual#security-settings" + ></html:a> </vbox> <hbox class="panel-footer"> - <button id="securityLevel-settings"/> - <button id="securityLevel-restoreDefaults"/> + <button + id="securityLevel-settings" + data-l10n-id="security-level-panel-open-settings-button" + /> + <button + id="securityLevel-restoreDefaults" + data-l10n-id="security-level-restore-defaults-button" + /> </hbox> </panel> ===================================== browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml ===================================== @@ -2,37 +2,64 @@ data-category="panePrivacy" data-subcategory="securitylevel" hidden="true"> - <label><html:h2></html:h2></label> + <label> + <html:h2 data-l10n-id="security-level-preferences-heading"></html:h2> + </label> <vbox flex="1"> <description flex="1"> - <html:span id="securityLevel-overview" class="tail-with-learn-more"> - </html:span> - <label id="securityLevel-learnMore" - class="learnMore text-link" - is="text-link" - href="about:manual#security-settings" - useoriginprincipal="true"/> + <html:span + id="securityLevel-overview" + class="tail-with-learn-more" + data-l10n-id="security-level-preferences-overview" + ></html:span> + <label + id="securityLevel-learnMore" + class="learnMore text-link" + is="text-link" + data-l10n-id="security-level-preferences-learn-more-link" + href="about:manual#security-settings" + useoriginprincipal="true" + /> </description> - <hbox id="securityLevel-customNotification" - class="info-box-container" - flex="1"> + <hbox + id="securityLevel-customNotification" + class="info-box-container" + flex="1" + > <hbox class="info-icon-container"> <image class="info-icon securityLevel-custom-warning-icon"/> </hbox> <vbox flex="1"> - <label id="securityLevel-customHeading"/> - <description id="securityLevel-customDescription" flex="1"/> + <label + id="securityLevel-customHeading" + data-l10n-id="security-level-preferences-custom-heading" + /> + <description + id="securityLevel-customDescription" + data-l10n-id="security-level-summary-custom" + flex="1" + /> </vbox> <hbox align="center"> - <button id="securityLevel-restoreDefaults"/> + <button + id="securityLevel-restoreDefaults" + data-l10n-id="security-level-restore-defaults-button" + /> </hbox> </hbox> <radiogroup id="securityLevel-radiogroup"> <vbox class="securityLevel-radio-option"> - <radio value="standard" - aria-describedby="securityLevelSummary-standard"/> + <radio + value="standard" + data-l10n-id="security-level-preferences-level-standard" + aria-describedby="securityLevelSummary-standard" + /> <vbox id="securityLevelSummary-standard"> - <description class="summary indent" flex="1"/> + <description + class="summary indent" + flex="1" + data-l10n-id="security-level-summary-standard" + /> </vbox> </vbox> <vbox class="securityLevel-radio-option"> @@ -41,19 +68,59 @@ - securityLevel-descriptionList is shown or hidden, its text content - is included or excluded from the accessible description, - respectively. --> - <radio value="safer" - aria-describedby="securityLevelSummary-safer"/> + <radio + value="safer" + data-l10n-id="security-level-preferences-level-safer" + aria-describedby="securityLevelSummary-safer" + /> <vbox id="securityLevelSummary-safer"> - <description class="summary indent" flex="1"/> - <vbox class="securityLevel-descriptionList indent"/> + <description + class="summary indent" + flex="1" + data-l10n-id="security-level-summary-safer" + /> + <vbox class="securityLevel-descriptionList indent"> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-https-only-javascript" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-media" + /> + </vbox> </vbox> </vbox> <vbox class="securityLevel-radio-option"> - <radio value="safest" - aria-describedby="securityLevelSummary-safest"/> + <radio + value="safest" + data-l10n-id="security-level-preferences-level-safest" + aria-describedby="securityLevelSummary-safest" + /> <vbox id="securityLevelSummary-safest"> - <description class="summary indent" flex="1"/> - <vbox class="securityLevel-descriptionList indent"/> + <description + class="summary indent" + flex="1" + data-l10n-id="security-level-summary-safest" + /> + <vbox class="securityLevel-descriptionList indent"> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-disabled-javascript" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols-and-images" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-media" + /> + </vbox> </vbox> </vbox> </radiogroup> ===================================== browser/locales/en-US/browser/base-browser.ftl ===================================== @@ -70,6 +70,7 @@ new-identity-dialog-confirm = new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session. # Button to continue loading the home page, despite the warning message. new-identity-blocked-home-ignore-button = Load it anyway + ## Preferences - Letterboxing. # The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised. @@ -94,3 +95,74 @@ letterboxing-disabled-description = Letterboxing is currently disabled. # "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages. letterboxing-enable-button = .label = Enable Letterboxing + +## Security level toolbar button. +## Uses sentence case in English (US). +## ".label" is the accessible name, and shown in the overflow menu and when customizing the toolbar. + +security-level-toolbar-button-standard = + .label = Security level + .tooltiptext = Security level: Standard +security-level-toolbar-button-safer = + .label = Security level + .tooltiptext = Security level: Safer +security-level-toolbar-button-safest = + .label = Security level + .tooltiptext = Security level: Safest +# Used when the user is in some custom configuration that does not match a security level. +security-level-toolbar-button-custom = + .label = Security level + .tooltiptext = Security level: Custom + +## Security level popup panel. + +# Uses sentence case in English (US). +security-level-panel-heading = Security level + +security-level-panel-level-standard = Standard +security-level-panel-level-safer = Safer +security-level-panel-level-safest = Safest +security-level-panel-learn-more-link = Learn more +# Button to open security level settings. +security-level-panel-open-settings-button = Settings… + +## Security level settings. + +security-level-preferences-heading = Security Level +security-level-preferences-overview = Disable certain web features that can be used to attack your security and anonymity. +security-level-preferences-learn-more-link = Learn more +security-level-preferences-level-standard = + .label = Standard +security-level-preferences-level-safer = + .label = Safer +security-level-preferences-level-safest = + .label = Safest + +## Security level summaries shown in security panel and settings. + +security-level-summary-standard = All browser and website features are enabled. +security-level-summary-safer = Disables website features that are often dangerous, causing some sites to lose functionality. +security-level-summary-safest = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts. + +## Security level feature bullet points. +## Shown in the settings under the security level when it is selected. + +security-level-preferences-bullet-https-only-javascript = JavaScript is disabled on non-HTTPS sites. +security-level-preferences-bullet-limit-font-and-symbols = Some fonts and math symbols are disabled. +security-level-preferences-bullet-limit-media = Audio and video (HTML5 media), and WebGL are click-to-play. +security-level-preferences-bullet-disabled-javascript = JavaScript is disabled by default on all sites. +security-level-preferences-bullet-limit-font-and-symbols-and-images = Some fonts, icons, math symbols, and images are disabled. + +## Custom security level. +## Some custom preferences configuration has placed the user outside one of the standard three levels. + +# Shown in the security level panel as an orange badge next to the expected level. +security-level-panel-custom-badge = Custom +# Shown in the security level settings in a warning box. +security-level-preferences-custom-heading = Custom security level configured +# Description of custom state and recommended action. +# Shown in the security level panel and settings. +security-level-summary-custom = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels. +# Button to undo custom changes to the security level and place the user in one of the standard security levels. +# Shown in the security level panel and settings. +security-level-restore-defaults-button = Restore defaults ===================================== browser/locales/jar.mn ===================================== @@ -32,5 +32,4 @@ locale/browser/safebrowsing/safebrowsing.properties (%chrome/browser/safebrowsing/safebrowsing.properties) locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties) locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties) - locale/browser/securityLevel.properties (%chrome/browser/securityLevel.properties) % locale browser-region @AB_CD@ %locale/browser-region/ ===================================== tools/torbrowser/l10n/migrations/bug-42211-new-identity.py deleted ===================================== @@ -1,48 +0,0 @@ -import fluent.syntax.ast as FTL -from fluent.migrate.helpers import TERM_REFERENCE, transforms_from -from fluent.migrate.transforms import REPLACE - - -def migrate(ctx): - legacy_path = "newIdentity.properties" - - ctx.add_transforms( - "base-browser.ftl", - "base-browser.ftl", - transforms_from( - """ -menu-new-identity = - .label = { COPY(path, "new_identity") } - .accesskey = { COPY(path, "new_identity_menu_accesskey") } -appmenuitem-new-identity = - .label = { COPY(path, "new_identity_sentence_case") } -toolbar-new-identity = - .label = { COPY(path, "new_identity_sentence_case") } - .tooltiptext = { toolbar-new-identity.label } - -new-identity-dialog-title = { COPY(path, "new_identity_prompt_title") } -new-identity-dialog-never-ask-checkbox = - .label = { COPY(path, "new_identity_ask_again") } - -new-identity-blocked-home-ignore-button = { COPY(path, "new_identity_home_load_button") } -""", - path=legacy_path, - ) - + [ - # Replace "%S" with "{ -brand-short-name }" in confirm button. - FTL.Message( - id=FTL.Identifier("new-identity-dialog-confirm"), - value=None, - attributes=[ - FTL.Attribute( - id=FTL.Identifier("label"), - value=REPLACE( - legacy_path, - "new_identity_restart", - {"%1$S": TERM_REFERENCE("brand-short-name")}, - ), - ), - ], - ), - ], - ) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/d3f79d… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/d3f79d… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 3 commits: fixup! Bug 40925: Implemented the Security Level component
by richard (@richard) 25 Mar '24

25 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 74db46f9 by Henry Wilkes at 2024-03-25T21:54:25+00:00 fixup! Bug 40925: Implemented the Security Level component Bug 42214: Migrate security level strings to Fluent. - - - - - 142836ed by Henry Wilkes at 2024-03-25T21:54:25+00:00 fixup! Base Browser strings Bug 42214: Migrate security level strings to Fluent. Also change some strings to be sentence case in English. - - - - - 4338bda1 by Henry Wilkes at 2024-03-25T21:54:25+00:00 fixup! Tor Browser localization migration scripts. Bug 42214: Migrate security level strings to Fluent. - - - - - 7 changed files: - browser/components/preferences/preferences.xhtml - browser/components/securitylevel/content/securityLevel.js - browser/components/securitylevel/content/securityLevelPanel.inc.xhtml - browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml - browser/locales/en-US/browser/base-browser.ftl - browser/locales/jar.mn - + tools/torbrowser/l10n/migrations/bug-42214-security-level.py Changes: ===================================== browser/components/preferences/preferences.xhtml ===================================== @@ -60,6 +60,7 @@ <link rel="localization" href="security/certificates/certManager.ftl"/> <link rel="localization" href="security/certificates/deviceManager.ftl"/> <link rel="localization" href="toolkit/updates/history.ftl"/> + <link rel="localization" href="browser/base-browser.ftl"/> <link rel="localization" href="browser/tor-browser.ftl"/> <link rel="shortcut icon" href="chrome://global/skin/icons/settings.svg"/> ===================================== browser/components/securitylevel/content/securityLevel.js ===================================== @@ -8,65 +8,6 @@ ChromeUtils.defineModuleGetter( "resource://gre/modules/SecurityLevel.jsm" ); -XPCOMUtils.defineLazyGetter(this, "SecurityLevelStrings", () => { - let strings = { - // Generic terms - security_level: "Security Level", - security_level_standard: "Standard", - security_level_safer: "Safer", - security_level_safest: "Safest", - security_level_tooltip_standard: "Security Level: Standard", - security_level_tooltip_safer: "Security Level: Safer", - security_level_tooltip_safest: "Security Level: Safest", - // Shown only for custom level - security_level_custom: "Custom", - security_level_restore: "Restore Defaults", - security_level_learn_more: "Learn more", - // Panel - security_level_open_settings: "Settings…", - security_level_standard_summary: - "All browser and website features are enabled.", - security_level_safer_summary: - "Disables website features that are often dangerous, causing some sites to lose functionality.", - security_level_safest_summary: - "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.", - security_level_custom_heading: "Custom security level configured", - security_level_custom_summary: - "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.", - // Security level section in about:preferences#privacy - security_level_overview: - "Disable certain web features that can be used to attack your security and anonymity.", - security_level_list_safer: "At the safer setting:", - security_level_list_safest: "At the safest setting:", - // Strings for descriptions - security_level_js_https_only: "JavaScript is disabled on non-HTTPS sites.", - security_level_js_disabled: - "JavaScript is disabled by default on all sites.", - security_level_limit_typography: - "Some fonts and math symbols are disabled.", - security_level_limit_typography_svg: - "Some fonts, icons, math symbols, and images are disabled.", - security_level_limit_media: - "Audio and video (HTML5 media), and WebGL are click-to-play.", - }; - let bundle = null; - try { - bundle = Services.strings.createBundle( - "chrome://browser/locale/securityLevel.properties" - ); - } catch (e) { - console.warn("Could not load the Security Level strings"); - } - if (bundle) { - for (const key of Object.keys(strings)) { - try { - strings[key] = bundle.GetStringFromName(key); - } catch (e) {} - } - } - return strings; -}); - /* Security Level Button Code @@ -100,12 +41,30 @@ var SecurityLevelButton = { if (!level) { return; } - const customStr = SecurityLevelPrefs.securityCustom ? "_custom" : ""; - this._button.setAttribute("level", `${level}${customStr}`); - this._button.setAttribute( - "tooltiptext", - SecurityLevelStrings[`security_level_tooltip_${level}`] - ); + const custom = SecurityLevelPrefs.securityCustom; + this._button.setAttribute("level", custom ? `${level}_custom` : level); + + let l10nIdLevel; + switch (level) { + case "standard": + l10nIdLevel = "security-level-toolbar-button-standard"; + break; + case "safer": + l10nIdLevel = "security-level-toolbar-button-safer"; + break; + case "safest": + l10nIdLevel = "security-level-toolbar-button-safest"; + break; + default: + throw Error(`Unhandled level: ${level}`); + } + if (custom) { + // Don't distinguish between the different levels when in the custom + // state. We just want to emphasise that it is custom rather than any + // specific level. + l10nIdLevel = "security-level-toolbar-button-custom"; + } + document.l10n.setAttributes(this._button, l10nIdLevel); }, /** @@ -159,7 +118,6 @@ var SecurityLevelButton = { window.gNavToolbox.palette.querySelector("#security-level-button"); // Set a label to be be used as the accessible name, and to be shown in the // overflow menu and during customization. - this._button.setAttribute("label", SecurityLevelStrings.security_level); this._button.addEventListener("command", () => this.openPopup()); // set the initial class based off of the current pref this._configUIFromPrefs(); @@ -213,21 +171,12 @@ var SecurityLevelPanel = { settingsButton: document.getElementById("securityLevel-settings"), }; - document.getElementById("securityLevel-header").textContent = - SecurityLevelStrings.security_level; - this._elements.customName.textContent = - SecurityLevelStrings.security_level_custom; const learnMoreEl = document.getElementById("securityLevel-learnMore"); - learnMoreEl.textContent = SecurityLevelStrings.security_level_learn_more; learnMoreEl.addEventListener("click", event => { window.openTrustedLinkIn(learnMoreEl.href, "tab"); this.hide(); event.preventDefault(); }); - this._elements.restoreDefaultsButton.textContent = - SecurityLevelStrings.security_level_restore; - this._elements.settingsButton.textContent = - SecurityLevelStrings.security_level_open_settings; this._elements.restoreDefaultsButton.addEventListener("command", () => { this.restoreDefaults(); @@ -268,11 +217,30 @@ var SecurityLevelPanel = { // Descriptions change based on security level this._elements.background.setAttribute("level", level); - this._elements.levelName.textContent = - SecurityLevelStrings[`security_level_${level}`]; - this._elements.summary.textContent = custom - ? SecurityLevelStrings.security_level_custom_summary - : SecurityLevelStrings[`security_level_${level}_summary`]; + let l10nIdLevel; + let l10nIdSummary; + switch (level) { + case "standard": + l10nIdLevel = "security-level-panel-level-standard"; + l10nIdSummary = "security-level-summary-standard"; + break; + case "safer": + l10nIdLevel = "security-level-panel-level-safer"; + l10nIdSummary = "security-level-summary-safer"; + break; + case "safest": + l10nIdLevel = "security-level-panel-level-safest"; + l10nIdSummary = "security-level-summary-safest"; + break; + default: + throw Error(`Unhandled level: ${level}`); + } + if (custom) { + l10nIdSummary = "security-level-summary-custom"; + } + + document.l10n.setAttributes(this._elements.levelName, l10nIdLevel); + document.l10n.setAttributes(this._elements.summary, l10nIdSummary); }, /** @@ -358,25 +326,13 @@ var SecurityLevelPreferences = { this._customNotification = document.getElementById( "securityLevel-customNotification" ); - this._radiogroup = document.getElementById("securityLevel-radiogroup"); - - document.querySelector("#securityLevel-groupbox h2").textContent = - SecurityLevelStrings.security_level; - document.getElementById("securityLevel-overview").textContent = - SecurityLevelStrings.security_level_overview; document - .getElementById("securityLevel-learnMore") - .setAttribute("value", SecurityLevelStrings.security_level_learn_more); - - document.getElementById("securityLevel-customHeading").textContent = - SecurityLevelStrings.security_level_custom_heading; - document.getElementById("securityLevel-customDescription").textContent = - SecurityLevelStrings.security_level_custom_summary; - const restoreDefaultsButton = document.getElementById( - "securityLevel-restoreDefaults" - ); - restoreDefaultsButton.textContent = - SecurityLevelStrings.security_level_restore; + .getElementById("securityLevel-restoreDefaults") + .addEventListener("command", () => { + SecurityLevelPrefs.securityCustom = false; + }); + + this._radiogroup = document.getElementById("securityLevel-radiogroup"); this._radioOptions = Array.from( this._radiogroup.querySelectorAll(".securityLevel-radio-option"), @@ -384,46 +340,7 @@ var SecurityLevelPreferences = { return { container, radio: container.querySelector("radio") }; } ); - const descListItemsMap = { - safer: [ - SecurityLevelStrings.security_level_js_https_only, - SecurityLevelStrings.security_level_limit_typography, - SecurityLevelStrings.security_level_limit_media, - ], - safest: [ - SecurityLevelStrings.security_level_js_disabled, - SecurityLevelStrings.security_level_limit_typography_svg, - SecurityLevelStrings.security_level_limit_media, - ], - }; - for (const { container, radio } of this._radioOptions) { - const level = radio.value; - radio.setAttribute( - "label", - SecurityLevelStrings[`security_level_${level}`] - ); - container.querySelector(".summary").textContent = - SecurityLevelStrings[`security_level_${level}_summary`]; - const descListItems = descListItemsMap[level]; - if (!descListItems) { - continue; - } - const descrList = container.querySelector( - ".securityLevel-descriptionList" - ); - // TODO: Add the elements in securityLevelPreferences.inc.xhtml again - // when we switch to Fluent - for (const text of descListItems) { - let elem = document.createXULElement("description"); - elem.textContent = text; - elem.className = "indent"; - descrList.append(elem); - } - } - restoreDefaultsButton.addEventListener("command", () => { - SecurityLevelPrefs.securityCustom = false; - }); this._radiogroup.addEventListener("select", () => { SecurityLevelPrefs.securityLevel = this._radiogroup.value; }); ===================================== browser/components/securitylevel/content/securityLevelPanel.inc.xhtml ===================================== @@ -7,20 +7,35 @@ level="top" class="cui-widget-panel panel-no-padding"> <box class="panel-header"> - <html:h1 id="securityLevel-header"></html:h1> + <html:h1 + id="securityLevel-header" + data-l10n-id="security-level-panel-heading" + ></html:h1> </box> <toolbarseparator id="securityLevel-separator"></toolbarseparator> <vbox id="securityLevel-background" class="panel-subview-body"> <html:p id="securityLevel-subheading"> <html:span id="securityLevel-level"></html:span> - <html:span id="securityLevel-custom"></html:span> + <html:span + id="securityLevel-custom" + data-l10n-id="security-level-panel-custom-badge" + ></html:span> </html:p> <html:p id="securityLevel-summary"></html:p> - <html:a id="securityLevel-learnMore" href="about:manual#security-settings"> - </html:a> + <html:a + id="securityLevel-learnMore" + data-l10n-id="security-level-panel-learn-more-link" + href="about:manual#security-settings" + ></html:a> </vbox> <hbox class="panel-footer"> - <button id="securityLevel-settings"/> - <button id="securityLevel-restoreDefaults"/> + <button + id="securityLevel-settings" + data-l10n-id="security-level-panel-open-settings-button" + /> + <button + id="securityLevel-restoreDefaults" + data-l10n-id="security-level-restore-defaults-button" + /> </hbox> </panel> ===================================== browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml ===================================== @@ -2,37 +2,64 @@ data-category="panePrivacy" data-subcategory="securitylevel" hidden="true"> - <label><html:h2></html:h2></label> + <label> + <html:h2 data-l10n-id="security-level-preferences-heading"></html:h2> + </label> <vbox flex="1"> <description flex="1"> - <html:span id="securityLevel-overview" class="tail-with-learn-more"> - </html:span> - <label id="securityLevel-learnMore" - class="learnMore text-link" - is="text-link" - href="about:manual#security-settings" - useoriginprincipal="true"/> + <html:span + id="securityLevel-overview" + class="tail-with-learn-more" + data-l10n-id="security-level-preferences-overview" + ></html:span> + <label + id="securityLevel-learnMore" + class="learnMore text-link" + is="text-link" + data-l10n-id="security-level-preferences-learn-more-link" + href="about:manual#security-settings" + useoriginprincipal="true" + /> </description> - <hbox id="securityLevel-customNotification" - class="info-box-container" - flex="1"> + <hbox + id="securityLevel-customNotification" + class="info-box-container" + flex="1" + > <hbox class="info-icon-container"> <image class="info-icon securityLevel-custom-warning-icon"/> </hbox> <vbox flex="1"> - <label id="securityLevel-customHeading"/> - <description id="securityLevel-customDescription" flex="1"/> + <label + id="securityLevel-customHeading" + data-l10n-id="security-level-preferences-custom-heading" + /> + <description + id="securityLevel-customDescription" + data-l10n-id="security-level-summary-custom" + flex="1" + /> </vbox> <hbox align="center"> - <button id="securityLevel-restoreDefaults"/> + <button + id="securityLevel-restoreDefaults" + data-l10n-id="security-level-restore-defaults-button" + /> </hbox> </hbox> <radiogroup id="securityLevel-radiogroup"> <vbox class="securityLevel-radio-option"> - <radio value="standard" - aria-describedby="securityLevelSummary-standard"/> + <radio + value="standard" + data-l10n-id="security-level-preferences-level-standard" + aria-describedby="securityLevelSummary-standard" + /> <vbox id="securityLevelSummary-standard"> - <description class="summary indent" flex="1"/> + <description + class="summary indent" + flex="1" + data-l10n-id="security-level-summary-standard" + /> </vbox> </vbox> <vbox class="securityLevel-radio-option"> @@ -41,19 +68,59 @@ - securityLevel-descriptionList is shown or hidden, its text content - is included or excluded from the accessible description, - respectively. --> - <radio value="safer" - aria-describedby="securityLevelSummary-safer"/> + <radio + value="safer" + data-l10n-id="security-level-preferences-level-safer" + aria-describedby="securityLevelSummary-safer" + /> <vbox id="securityLevelSummary-safer"> - <description class="summary indent" flex="1"/> - <vbox class="securityLevel-descriptionList indent"/> + <description + class="summary indent" + flex="1" + data-l10n-id="security-level-summary-safer" + /> + <vbox class="securityLevel-descriptionList indent"> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-https-only-javascript" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-media" + /> + </vbox> </vbox> </vbox> <vbox class="securityLevel-radio-option"> - <radio value="safest" - aria-describedby="securityLevelSummary-safest"/> + <radio + value="safest" + data-l10n-id="security-level-preferences-level-safest" + aria-describedby="securityLevelSummary-safest" + /> <vbox id="securityLevelSummary-safest"> - <description class="summary indent" flex="1"/> - <vbox class="securityLevel-descriptionList indent"/> + <description + class="summary indent" + flex="1" + data-l10n-id="security-level-summary-safest" + /> + <vbox class="securityLevel-descriptionList indent"> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-disabled-javascript" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols-and-images" + /> + <description + class="indent" + data-l10n-id="security-level-preferences-bullet-limit-media" + /> + </vbox> </vbox> </vbox> </radiogroup> ===================================== browser/locales/en-US/browser/base-browser.ftl ===================================== @@ -70,6 +70,7 @@ new-identity-dialog-confirm = new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session. # Button to continue loading the home page, despite the warning message. new-identity-blocked-home-ignore-button = Load it anyway + ## Preferences - Letterboxing. # The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised. @@ -94,3 +95,74 @@ letterboxing-disabled-description = Letterboxing is currently disabled. # "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages. letterboxing-enable-button = .label = Enable Letterboxing + +## Security level toolbar button. +## Uses sentence case in English (US). +## ".label" is the accessible name, and shown in the overflow menu and when customizing the toolbar. + +security-level-toolbar-button-standard = + .label = Security level + .tooltiptext = Security level: Standard +security-level-toolbar-button-safer = + .label = Security level + .tooltiptext = Security level: Safer +security-level-toolbar-button-safest = + .label = Security level + .tooltiptext = Security level: Safest +# Used when the user is in some custom configuration that does not match a security level. +security-level-toolbar-button-custom = + .label = Security level + .tooltiptext = Security level: Custom + +## Security level popup panel. + +# Uses sentence case in English (US). +security-level-panel-heading = Security level + +security-level-panel-level-standard = Standard +security-level-panel-level-safer = Safer +security-level-panel-level-safest = Safest +security-level-panel-learn-more-link = Learn more +# Button to open security level settings. +security-level-panel-open-settings-button = Settings… + +## Security level settings. + +security-level-preferences-heading = Security Level +security-level-preferences-overview = Disable certain web features that can be used to attack your security and anonymity. +security-level-preferences-learn-more-link = Learn more +security-level-preferences-level-standard = + .label = Standard +security-level-preferences-level-safer = + .label = Safer +security-level-preferences-level-safest = + .label = Safest + +## Security level summaries shown in security panel and settings. + +security-level-summary-standard = All browser and website features are enabled. +security-level-summary-safer = Disables website features that are often dangerous, causing some sites to lose functionality. +security-level-summary-safest = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts. + +## Security level feature bullet points. +## Shown in the settings under the security level when it is selected. + +security-level-preferences-bullet-https-only-javascript = JavaScript is disabled on non-HTTPS sites. +security-level-preferences-bullet-limit-font-and-symbols = Some fonts and math symbols are disabled. +security-level-preferences-bullet-limit-media = Audio and video (HTML5 media), and WebGL are click-to-play. +security-level-preferences-bullet-disabled-javascript = JavaScript is disabled by default on all sites. +security-level-preferences-bullet-limit-font-and-symbols-and-images = Some fonts, icons, math symbols, and images are disabled. + +## Custom security level. +## Some custom preferences configuration has placed the user outside one of the standard three levels. + +# Shown in the security level panel as an orange badge next to the expected level. +security-level-panel-custom-badge = Custom +# Shown in the security level settings in a warning box. +security-level-preferences-custom-heading = Custom security level configured +# Description of custom state and recommended action. +# Shown in the security level panel and settings. +security-level-summary-custom = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels. +# Button to undo custom changes to the security level and place the user in one of the standard security levels. +# Shown in the security level panel and settings. +security-level-restore-defaults-button = Restore defaults ===================================== browser/locales/jar.mn ===================================== @@ -33,6 +33,5 @@ locale/browser/safebrowsing/safebrowsing.properties (%chrome/browser/safebrowsing/safebrowsing.properties) locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties) locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties) - locale/browser/securityLevel.properties (%chrome/browser/securityLevel.properties) locale/browser/cryptoSafetyPrompt.properties (%chrome/browser/cryptoSafetyPrompt.properties) % locale browser-region @AB_CD@ %locale/browser-region/ ===================================== tools/torbrowser/l10n/migrations/bug-42214-security-level.py ===================================== @@ -0,0 +1,43 @@ +from fluent.migrate.helpers import transforms_from + + +def migrate(ctx): + ctx.add_transforms( + "base-browser.ftl", + "base-browser.ftl", + transforms_from( + """ +security-level-panel-level-standard = { COPY(path, "security_level_standard") } +security-level-panel-level-safer = { COPY(path, "security_level_safer") } +security-level-panel-level-safest = { COPY(path, "security_level_safest") } +security-level-panel-learn-more-link = { COPY(path, "security_level_learn_more") } +security-level-panel-open-settings-button = { COPY(path, "security_level_open_settings") } + +security-level-preferences-heading = { COPY(path, "security_level") } +security-level-preferences-overview = { COPY(path, "security_level_overview") } +security-level-preferences-learn-more-link = { COPY(path, "security_level_learn_more") } +security-level-preferences-level-standard = + .label = { COPY(path, "security_level_standard") } +security-level-preferences-level-safer = + .label = { COPY(path, "security_level_safer") } +security-level-preferences-level-safest = + .label = { COPY(path, "security_level_safest") } + +security-level-summary-standard = { COPY(path, "security_level_standard_summary") } +security-level-summary-safer = { COPY(path, "security_level_safer_summary") } +security-level-summary-safest = { COPY(path, "security_level_safest_summary") } + + +security-level-preferences-bullet-https-only-javascript = { COPY(path, "security_level_js_https_only") } +security-level-preferences-bullet-limit-font-and-symbols = { COPY(path, "security_level_limit_typography") } +security-level-preferences-bullet-limit-media = { COPY(path, "security_level_limit_media") } +security-level-preferences-bullet-disabled-javascript = { COPY(path, "security_level_js_disabled") } +security-level-preferences-bullet-limit-font-and-symbols-and-images = { COPY(path, "security_level_limit_typography_svg") } + +security-level-panel-custom-badge = { COPY(path, "security_level_custom") } +security-level-preferences-custom-heading = { COPY(path, "security_level_custom_heading") } +security-level-summary-custom = { COPY(path, "security_level_custom_summary") } +""", + path="securityLevel.properties", + ), + ) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/966b7f… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/966b7f… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 5 commits: fixup! Bug 3455: Add DomainIsolator, for isolating circuit by domain.
by richard (@richard) 25 Mar '24

25 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 99d4a1de by Henry Wilkes at 2024-03-25T09:42:29+00:00 fixup! Bug 3455: Add DomainIsolator, for isolating circuit by domain. Bug 42209: Migrate tor circuit strings to Fluent. - - - - - 56ce4cc1 by Henry Wilkes at 2024-03-25T09:42:30+00:00 fixup! Bug 41600: Add a tor circuit display panel. Bug 42209: Migrate tor circuit strings to Fluent. - - - - - 76f869d5 by Henry Wilkes at 2024-03-25T09:42:31+00:00 fixup! Tor Browser strings Bug 42209: Migrate tor circuit strings to Fluent. - - - - - 724dfc5f by Henry Wilkes at 2024-03-25T09:42:31+00:00 fixup! Add TorStrings module for localization Bug 42209: Migrate tor circuit strings to Fluent. - - - - - 966b7f30 by Henry Wilkes at 2024-03-25T09:42:32+00:00 fixup! Tor Browser localization migration scripts. Bug 42209: Migrate tor circuit strings to Fluent. - - - - - 11 changed files: - browser/base/content/appmenu-viewcache.inc.xhtml - browser/base/content/browser-menubar.inc - browser/base/content/navigator-toolbox.inc.xhtml - browser/components/torcircuit/content/torCircuitPanel.css - browser/components/torcircuit/content/torCircuitPanel.inc.xhtml - browser/components/torcircuit/content/torCircuitPanel.js - browser/locales/en-US/browser/tor-browser.ftl - toolkit/torbutton/chrome/locale/en-US/torbutton.dtd - toolkit/torbutton/chrome/locale/en-US/torbutton.properties - tools/torbrowser/l10n/migrate.py - + tools/torbrowser/l10n/migrations/bug-42209-tor-circuit.py Changes: ===================================== browser/base/content/appmenu-viewcache.inc.xhtml ===================================== @@ -62,7 +62,7 @@ <toolbarbutton id="appMenuNewCircuit" class="subviewbutton" key="new-circuit-key" - label="&torbutton.context_menu.new_circuit_sentence_case;" + data-l10n-id="appmenuitem-new-tor-circuit" oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser);"/> <toolbarseparator/> <toolbarbutton id="appMenu-bookmarks-button" ===================================== browser/base/content/browser-menubar.inc ===================================== @@ -32,9 +32,7 @@ <menuitem id="menu_newIdentity" key="new-identity-key" data-l10n-id="menu-new-identity"/> <menuitem id="menu_newCircuit" - accesskey="&torbutton.context_menu.new_circuit_key;" - key="new-circuit-key" - label="&torbutton.context_menu.new_circuit;" + key="new-circuit-key" data-l10n-id="menu-new-tor-circuit" oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser);"/> <menuseparator/> <menuitem id="menu_openLocation" ===================================== browser/base/content/navigator-toolbox.inc.xhtml ===================================== @@ -198,7 +198,7 @@ role="button" class="identity-box-button" align="center" - tooltiptext="&torbutton.circuit_display.title;" + data-l10n-id="tor-circuit-urlbar-button" hidden="true"> <image id="tor-circuit-button-icon"/> </box> @@ -621,9 +621,8 @@ data-l10n-id="toolbar-new-identity"/> <toolbarbutton id="new-circuit-button" class="toolbarbutton-1 chromeclass-toolbar-additional" - label="&torbutton.context_menu.new_circuit;" - oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser);" - tooltiptext="&torbutton.context_menu.new_circuit;"/> + data-l10n-id="toolbar-new-tor-circuit" + oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser);"/> <toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional" observes="View:FullScreen" ===================================== browser/components/torcircuit/content/torCircuitPanel.css ===================================== @@ -120,6 +120,15 @@ background-repeat: no-repeat; } +.tor-circuit-node-item:not([hidden]) { + display: flex; + align-items: baseline; +} + +.tor-circuit-node-item > * { + flex: 0 0 auto; +} + @media (prefers-color-scheme: dark) { .tor-circuit-node-item { /* Light Gray 90 */ @@ -146,9 +155,9 @@ .tor-circuit-region-flag { margin-inline-end: 0.5em; height: 16px; - vertical-align: sub; + align-self: center; /* Don't occupy any vertical height. */ - margin-block-start: -16px; + margin-block: -8px; } .tor-circuit-region-flag.no-region-flag-src { @@ -158,7 +167,7 @@ .tor-circuit-addresses { font-size: smaller; font-family: monospace; - margin-inline-start: 0.25em; + margin-inline-start: 0.75em; } /* Footer buttons */ ===================================== browser/components/torcircuit/content/torCircuitPanel.inc.xhtml ===================================== @@ -19,44 +19,67 @@ <vbox class="panel-header"> <html:h1 id="tor-circuit-heading"></html:h1> <html:div id="tor-circuit-alias" hidden="hidden"> - <html:img src="chrome://browser/content/tor-circuit-redirect.svg" - alt="" /> + <html:img + src="chrome://browser/content/tor-circuit-redirect.svg" + alt="" + /> <html:p id="tor-circuit-alias-label"> - <html:a /> + <html:a class="tor-circuit-alias-link" data-l10n-name="alias-link" /> </html:p> </html:div> </vbox> <toolbarseparator/> <vbox id="tor-circuit-panel-body" class="panel-subview-body"> - <html:p id="tor-circuit-node-list-name">&torbutton.circuit_display.title;</html:p> + <html:p + id="tor-circuit-node-list-name" + data-l10n-id="tor-circuit-panel-node-list-introduction" + ></html:p> <html:ol id="tor-circuit-node-list"> - <html:li id="tor-circuit-start-item" - class="tor-circuit-node-item"> - </html:li> - <html:li id="tor-circuit-relays-item" - class="tor-circuit-node-item tor-circuit-relays-item"> - </html:li> - <html:li id="tor-circuit-end-item" - class="tor-circuit-node-item"> - </html:li> + <html:li + id="tor-circuit-start-item" + class="tor-circuit-node-item" + data-l10n-id="tor-circuit-panel-node-browser" + ></html:li> + <html:li + id="tor-circuit-relays-item" + class="tor-circuit-node-item tor-circuit-relays-item" + data-l10n-id="tor-circuit-panel-node-onion-relays" + ></html:li> + <html:li + id="tor-circuit-end-item" + class="tor-circuit-node-item" + ></html:li> </html:ol> + <html:template id="tor-circuit-node-item-template"> + <html:li class="tor-circuit-node-item"> + <html:img class="tor-circuit-region-flag" alt="" /> + <html:span class="tor-circuit-node-name"></html:span> + <html:span class="tor-circuit-addresses"></html:span> + </html:li> + </html:template> </vbox> <toolbarseparator/> <!-- NOTE: To fully benefit from the .subviewbutton styling, we need to use - a xul:toolbarbutton rather than a html:button. - By default, a xul:toolbarbutton is not focusable so we need to add - tabindex. --> - <toolbarbutton id="tor-circuit-new-circuit" - class="subviewbutton panel-subview-footer-button tor-circuit-button" - tabindex="0" - aria-labelledby="tor-circuit-new-circuit-label" - aria-describedby="tor-circuit-new-circuit-description"> + <toolbarbutton + id="tor-circuit-new-circuit" + class="subviewbutton panel-subview-footer-button tor-circuit-button" + tabindex="0" + aria-labelledby="tor-circuit-new-circuit-label" + aria-describedby="tor-circuit-new-circuit-description" + > <vbox align="start"> - <label id="tor-circuit-new-circuit-label" - class="toolbarbutton-text" - value="&torbutton.context_menu.new_circuit_sentence_case;"/> - <label id="tor-circuit-new-circuit-description" - class="tor-circuit-button-description"/> + <label + id="tor-circuit-new-circuit-label" + class="toolbarbutton-text" + data-l10n-id="tor-circuit-panel-new-button" + /> + <label + id="tor-circuit-new-circuit-description" + class="tor-circuit-button-description" + /> </vbox> </toolbarbutton> </vbox> ===================================== browser/components/torcircuit/content/torCircuitPanel.js ===================================== @@ -34,6 +34,12 @@ var gTorCircuitPanel = { * @type {bool} */ _isActive: false, + /** + * The template element for circuit nodes. + * + * @type {HTMLTemplateElement?} + */ + _nodeItemTemplate: null, /** * The topic on which circuit changes are broadcast. @@ -62,7 +68,6 @@ var gTorCircuitPanel = { heading: document.getElementById("tor-circuit-heading"), alias: document.getElementById("tor-circuit-alias"), aliasLabel: document.getElementById("tor-circuit-alias-label"), - aliasLink: document.querySelector("#tor-circuit-alias-label a"), aliasMenu: document.getElementById("tor-circuit-panel-alias-menu"), list: document.getElementById("tor-circuit-node-list"), relaysItem: document.getElementById("tor-circuit-relays-item"), @@ -73,30 +78,24 @@ var gTorCircuitPanel = { }; this.toolbarButton = document.getElementById("tor-circuit-button"); - // TODO: These strings should be set in the HTML markup with fluent. - - // NOTE: There is already whitespace before and after the link from the - // XHTML markup. - const [aliasBefore, aliasAfter] = this._getString( - "torbutton.circuit_display.connected-to-alias", - // Placeholder is replaced with the same placeholder. This is a bit of a - // hack since we want the inserted address to be the rich anchor - // element already in the DOM, rather than a plain address. - // We won't have to do this with fluent by using data-l10n-name on the - // anchor element. - ["%S"] - ).split("%S"); - this._panelElements.aliasLabel.prepend(aliasBefore); - this._panelElements.aliasLabel.append(aliasAfter); - - this._panelElements.aliasLink.addEventListener("click", event => { + // We add listeners for the .tor-circuit-alias-link. + // NOTE: We have to add the listeners to the parent element because the + // link (with data-l10n-name="alias-link") will be replaced with a new + // cloned instance every time the parent gets re-translated. + this._panelElements.aliasLabel.addEventListener("click", event => { + if (!this._aliasLink.contains(event.target)) { + return; + } event.preventDefault(); if (event.button !== 0) { return; } this._openAlias("tab"); }); - this._panelElements.aliasLink.addEventListener("contextmenu", event => { + this._panelElements.aliasLabel.addEventListener("contextmenu", event => { + if (!this._aliasLink.contains(event.target)) { + return; + } event.preventDefault(); this._panelElements.aliasMenu.openPopupAtScreen( event.screenX, @@ -119,21 +118,15 @@ var gTorCircuitPanel = { document .getElementById("tor-circuit-panel-alias-menu-copy") .addEventListener("command", () => { - if (!this._panelElements.aliasLink.href) { + const alias = this._aliasLink?.href; + if (!alias) { return; } Cc["@mozilla.org/widget/clipboardhelper;1"] .getService(Ci.nsIClipboardHelper) - .copyString(this._panelElements.aliasLink.href); + .copyString(alias); }); - document.getElementById("tor-circuit-start-item").textContent = - this._getString("torbutton.circuit_display.this_browser"); - - this._panelElements.relaysItem.textContent = this._getString( - "torbutton.circuit_display.onion-site-relays" - ); - // Button is a xul:toolbarbutton, so we use "command" rather than "click". document .getElementById("tor-circuit-new-circuit") @@ -176,6 +169,13 @@ var gTorCircuitPanel = { this.show(); }); + this._nodeItemTemplate = document.getElementById( + "tor-circuit-node-item-template" + ); + // Prepare the unknown region name for the current locale. + // NOTE: We expect this to complete before the first call to _updateBody. + this._localeChanged(); + this._locationListener = { onLocationChange: (webProgress, request, locationURI, flags) => { if ( @@ -194,6 +194,7 @@ var gTorCircuitPanel = { // Get notifications for circuit changes. Services.obs.addObserver(this, this.TOR_CIRCUIT_TOPIC); + Services.obs.addObserver(this, "intl:app-locales-changed"); }, /** @@ -203,15 +204,21 @@ var gTorCircuitPanel = { this._isActive = false; gBrowser.removeProgressListener(this._locationListener); Services.obs.removeObserver(this, this.TOR_CIRCUIT_TOPIC); + Services.obs.removeObserver(this, "intl:app-locales-changed"); }, /** * Observe circuit changes. */ observe(subject, topic, data) { - if (topic === this.TOR_CIRCUIT_TOPIC) { - // TODO: Maybe check if we actually need to do something earlier. - this._updateCurrentBrowser(); + switch (topic) { + case this.TOR_CIRCUIT_TOPIC: + // TODO: Maybe check if we actually need to do something earlier. + this._updateCurrentBrowser(); + break; + case "intl:app-locales-changed": + this._localeChanged(); + break; } }, @@ -231,6 +238,19 @@ var gTorCircuitPanel = { this.panel.hidePopup(); }, + /** + * Get the current alias link instance. + * + * Note that this element instance may change whenever its parent element + * (#tor-circuit-alias-label) is re-translated. Attributes should be copied to + * the new instance. + */ + get _aliasLink() { + return this._panelElements.aliasLabel.querySelector( + ".tor-circuit-alias-link" + ); + }, + /** * Open the onion alias present in the alias link. * @@ -238,12 +258,13 @@ var gTorCircuitPanel = { * window. */ _openAlias(where) { - if (!this._panelElements.aliasLink.href) { + const url = this._aliasLink?.href; + if (!url) { return; } // We hide the panel before opening the link. this.hide(); - window.openWebLinkIn(this._panelElements.aliasLink.href, where); + window.openWebLinkIn(url, where); }, /** @@ -351,11 +372,6 @@ var gTorCircuitPanel = { this.toolbarButton.hidden = false; - if (this.panel.state !== "open" && this.panel.state !== "showing") { - // Don't update the panel content if it is not open or about to open. - return; - } - this._updateCircuitPanel(); }, @@ -383,35 +399,15 @@ var gTorCircuitPanel = { return alias; }, - /** - * Get a string from the properties bundle. - * - * @param {string} name - The string name. - * @param {string[]} args - The arguments to pass to the string. - * - * @returns {string} The string. - */ - _getString(name, args = []) { - if (!this._stringBundle) { - this._stringBundle = Services.strings.createBundle( - "chrome://torbutton/locale/torbutton.properties" - ); - } - try { - return this._stringBundle.formatStringFromName(name, args); - } catch {} - if (!this._fallbackStringBundle) { - this._fallbackStringBundle = Services.strings.createBundle( - "resource://torbutton/locale/en-US/torbutton.properties" - ); - } - return this._fallbackStringBundle.formatStringFromName(name, args); - }, - /** * Updates the circuit display in the panel to show the current browser data. */ _updateCircuitPanel() { + if (this.panel.state !== "open" && this.panel.state !== "showing") { + // Don't update the panel content if it is not open or about to open. + return; + } + // NOTE: The _currentBrowserData.nodes data may be stale. In particular, the // circuit may have expired already, or we're still waiting on the new // circuit. @@ -426,6 +422,9 @@ var gTorCircuitPanel = { this.hide(); return; } + + this._log.debug("Updating circuit panel"); + let domain = this._currentBrowserData.domain; const onionAlias = this._getOnionAlias(domain); @@ -447,24 +446,31 @@ var gTorCircuitPanel = { * @param {string?} scheme - The scheme in use for the current domain. */ _updateHeading(domain, onionAlias, scheme) { - this._panelElements.heading.textContent = this._getString( - "torbutton.circuit_display.heading", + document.l10n.setAttributes( + this._panelElements.heading, + "tor-circuit-panel-heading", // Only shorten the onion domain if it has no alias. - [TorUIUtils.shortenOnionAddress(domain)] + { host: TorUIUtils.shortenOnionAddress(domain) } ); if (onionAlias) { - this._panelElements.aliasLink.textContent = - TorUIUtils.shortenOnionAddress(onionAlias); if (scheme === "http" || scheme === "https") { // We assume the same scheme as the current page for the alias, which we // expect to be either http or https. // NOTE: The href property is partially presentational so that the link // location appears on hover. - this._panelElements.aliasLink.href = `${scheme}://${onionAlias}`; + // NOTE: The href attribute should be copied to any new instances of + // .tor-circuit-alias-link (with data-l10n-name="alias-link") when the + // parent _panelElements.aliasLabel gets re-translated. + this._aliasLink.href = `${scheme}://${onionAlias}`; } else { - this._panelElements.aliasLink.removeAttribute("href"); + this._aliasLink.removeAttribute("href"); } + document.l10n.setAttributes( + this._panelElements.aliasLabel, + "tor-circuit-panel-alias", + { alias: TorUIUtils.shortenOnionAddress(onionAlias) } + ); this._showPanelElement(this._panelElements.alias, true); } else { this._showPanelElement(this._panelElements.alias, false); @@ -485,20 +491,40 @@ var gTorCircuitPanel = { * @param {string} domain - The domain to show for the last node. */ _updateBody(nodes, domain) { - // Clean up old items. - // NOTE: We do not expect focus within a removed node. - for (const nodeItem of this._nodeItems) { - nodeItem.remove(); - } + // NOTE: Rather than re-creating the <li> nodes from scratch, we prefer + // updating existing <li> nodes so that the display does not "flicker" in + // width as we wait for Fluent DOM to fill the nodes with text content. I.e. + // the existing node and text will remain in place, occupying the same + // width, up until it is replaced by Fluent DOM. + for (let index = 0; index < nodes.length; index++) { + if (index >= this._nodeItems.length) { + const newItem = + this._nodeItemTemplate.content.children[0].cloneNode(true); + const flagEl = newItem.querySelector(".tor-circuit-region-flag"); + // Hide region flag whenever the flag src does not exist. + flagEl.addEventListener("error", () => { + flagEl.classList.add("no-region-flag-src"); + flagEl.removeAttribute("src"); + }); + this._panelElements.list.insertBefore( + newItem, + this._panelElements.relaysItem + ); - this._nodeItems = nodes.map((nodeData, index) => { - const nodeItem = this._createCircuitNodeItem(nodeData, index === 0); - this._panelElements.list.insertBefore( - nodeItem, - this._panelElements.relaysItem + this._nodeItems.push(newItem); + } + this._updateCircuitNodeItem( + this._nodeItems[index], + nodes[index], + index === 0 ); - return nodeItem; - }); + } + + // Remove excess items. + // NOTE: We do not expect focus within a removed node. + while (nodes.length < this._nodeItems.length) { + this._nodeItems.pop().remove(); + } this._showPanelElement( this._panelElements.relaysItem, @@ -511,40 +537,49 @@ var gTorCircuitPanel = { // Button description text, depending on whether our first node was a // bridge, or otherwise a guard. - this._panelElements.newCircuitDescription.value = this._getString( + document.l10n.setAttributes( + this._panelElements.newCircuitDescription, nodes[0].bridgeType === null - ? "torbutton.circuit_display.new-circuit-guard-description" - : "torbutton.circuit_display.new-circuit-bridge-description" + ? "tor-circuit-panel-new-button-description-guard" + : "tor-circuit-panel-new-button-description-bridge" ); }, /** - * Create a node item for the given circuit node data. + * Update a node item for the given circuit node data. * + * @param {Element} nodeItem - The item to update. * @param {NodeData} node - The circuit node data to create an item for. * @param {bool} isCircuitStart - Whether this is the first node in the * circuit. */ - _createCircuitNodeItem(node, isCircuitStart) { - let nodeName; - // We do not show a flag for bridge nodes. - let regionCode = null; + _updateCircuitNodeItem(nodeItem, node, isCircuitStart) { + const nameEl = nodeItem.querySelector(".tor-circuit-node-name"); + let flagSrc = null; + if (node.bridgeType === null) { - regionCode = node.regionCode; - if (!regionCode) { - nodeName = this._getString("torbutton.circuit_display.unknown_region"); - } else { - nodeName = Services.intl.getRegionDisplayNames(undefined, [ - regionCode, - ])[0]; - } + const regionCode = node.regionCode; + flagSrc = this._regionFlagSrc(regionCode); + + const regionName = regionCode + ? Services.intl.getRegionDisplayNames(undefined, [regionCode])[0] + : this._unknownRegionName; + if (isCircuitStart) { - nodeName = this._getString( - "torbutton.circuit_display.region-guard-node", - [nodeName] + document.l10n.setAttributes( + nameEl, + "tor-circuit-panel-node-region-guard", + { region: regionName } ); + } else { + // Set the text content directly, rather than using Fluent. + nameEl.removeAttribute("data-l10n-id"); + nameEl.removeAttribute("data-l10n-args"); + nameEl.textContent = regionName; } } else { + // Do not show a flag for bridges. + let bridgeType = node.bridgeType; if (bridgeType === "meek_lite") { bridgeType = "meek"; @@ -552,55 +587,72 @@ var gTorCircuitPanel = { bridgeType = ""; } if (bridgeType) { - nodeName = this._getString( - "torbutton.circuit_display.tor_typed_bridge", - [bridgeType] + document.l10n.setAttributes( + nameEl, + "tor-circuit-panel-node-typed-bridge", + { "bridge-type": bridgeType } ); } else { - nodeName = this._getString("torbutton.circuit_display.tor_bridge"); + document.l10n.setAttributes(nameEl, "tor-circuit-panel-node-bridge"); } } - const nodeItem = document.createElement("li"); - nodeItem.classList.add("tor-circuit-node-item"); - - const regionFlagEl = this._regionFlag(regionCode); - if (regionFlagEl) { - nodeItem.append(regionFlagEl); + const flagEl = nodeItem.querySelector(".tor-circuit-region-flag"); + flagEl.classList.toggle("no-region-flag-src", !flagSrc); + if (flagSrc) { + flagEl.setAttribute("src", flagSrc); + } else { + flagEl.removeAttribute("src"); } - // Add whitespace after name for the addresses. - nodeItem.append(nodeName + " "); - - if (node.ipAddrs) { - const addressesEl = document.createElement("span"); - addressesEl.classList.add("tor-circuit-addresses"); - let firstAddr = true; - for (const ip of node.ipAddrs) { - if (firstAddr) { - firstAddr = false; - } else { - addressesEl.append(", "); - } - // We use a <code> element to give screen readers a hint that - // punctuation is different for IP addresses. - const ipEl = document.createElement("code"); - // TODO: Current HTML-aam 1.0 specs map the <code> element to the "code" - // role. - // However, mozilla-central commented out this mapping in - // accessible/base/HTMLMarkupMap.h because the HTML-aam specs at the - // time did not do this. - // See hg.mozilla.org/mozilla-central/rev/51eebe7d6199#l2.12 - // For now we explicitly add the role="code", but once this is fixed - // from mozilla-central we should remove this. - ipEl.setAttribute("role", "code"); - ipEl.classList.add("tor-circuit-ip-address"); - ipEl.textContent = ip; - addressesEl.append(ipEl); + const addressesEl = nodeItem.querySelector(".tor-circuit-addresses"); + // Empty children. + addressesEl.replaceChildren(); + let firstAddr = true; + for (const ip of node.ipAddrs) { + if (firstAddr) { + firstAddr = false; + } else { + addressesEl.append(", "); } - nodeItem.append(addressesEl); + const ipEl = document.createElement("code"); + // TODO: Current HTML-aam 1.0 specs map the <code> element to the "code" + // role. + // However, mozilla-central commented out this mapping in + // accessible/base/HTMLMarkupMap.h because the HTML-aam specs at the + // time did not do this. + // See hg.mozilla.org/mozilla-central/rev/51eebe7d6199#l2.12 + // + // This was updated in mozilla bug 1834931, for ESR 128 + // + // For now we explicitly add the role="code", but once this is fixed + // from mozilla-central we should remove this. + ipEl.setAttribute("role", "code"); + ipEl.classList.add("tor-circuit-ip-address"); + ipEl.textContent = ip; + addressesEl.append(ipEl); } + }, + + /** + * The string to use for unknown region names. + * + * Will be updated to match the current locale. + * + * @type {string} + */ + _unknownRegionName: "Unknown region", - return nodeItem; + /** + * Update the name for regions to match the current locale. + */ + _localeChanged() { + document.l10n + .formatValue("tor-circuit-panel-node-unknown-region") + .then(name => { + this._unknownRegionName = name; + // Update the panel for the new region names, if it is shown. + this._updateCircuitPanel(); + }); }, /** @@ -609,9 +661,9 @@ var gTorCircuitPanel = { * @param {string?} regionCode - The code to convert. It should be an upper * case 2-letter BCP47 Region subtag to be converted into a flag. * - * @returns {HTMLImgElement?} The emoji flag img, or null if there is no flag. + * @returns {src?} The emoji flag img src, or null if there is no flag. */ - _regionFlag(regionCode) { + _regionFlagSrc(regionCode) { if (!regionCode?.match(/^[A-Z]{2}$/)) { return null; } @@ -624,20 +676,7 @@ var gTorCircuitPanel = { .map(cp => cp.toString(16)) .join("-"); - const flagEl = document.createElement("img"); - // Decorative. - flagEl.alt = ""; - flagEl.classList.add("tor-circuit-region-flag"); - // Remove self if there is no matching flag found. - flagEl.addEventListener( - "error", - () => { - flagEl.classList.add("no-region-flag-src"); - }, - { once: true } - ); - flagEl.src = `chrome://browser/content/tor-circuit-flags/${flagName}.svg`; - return flagEl; + return `chrome://browser/content/tor-circuit-flags/${flagName}.svg`; }, /** ===================================== browser/locales/en-US/browser/tor-browser.ftl ===================================== @@ -326,3 +326,63 @@ about-dialog-browser-license-link = Licensing Information # "Tor" and "The Onion Logo" are trademark names, so should not be translated (not including the quote marks, which can be localized). # "The Tor Project, Inc." is an organisation name. about-dialog-trademark-statement = “Tor” and “The Onion Logo” are registered trademarks of The Tor Project, Inc. + +## New tor circuit. + +# Shown in the File menu. +# Uses title case for English (US). +menu-new-tor-circuit = + .label = New Tor Circuit for this Site + .accesskey = C + +# Shown in the application menu (hamburger menu). +# Uses sentence case for English (US). +appmenuitem-new-tor-circuit = + .label = New Tor circuit for this site + +# Toolbar button to trigger a new circuit, available through toolbar customization. +# Uses sentence case for English (US). +# ".label" is the accessible name, and is visible in the overflow menu and when +# customizing the toolbar. +# ".tooltiptext" will be identical to the label. +toolbar-new-tor-circuit = + .label = New Tor circuit for this site + .tooltiptext = { toolbar-new-tor-circuit.label } + +## Tor circuit URL bar button. + +# The tooltip also acts as the accessible name. +tor-circuit-urlbar-button = + .tooltiptext = Tor Circuit + +## Tor circuit panel. + +# $host (String) - The host name shown in the URL bar, potentially shortened. +tor-circuit-panel-heading = Circuit for { $host } +# Shown when the current address is a ".tor.onion" alias. +# $alias (String) - The alias onion address. This should be wrapped in '<a data-l10n-name="alias-link">' and '</a>', which will link to the corresponding address. +tor-circuit-panel-alias = Connected to <a data-l10n-name="alias-link">{ $alias }</a> + +# Text just before the list of circuit nodes. +tor-circuit-panel-node-list-introduction = Tor Circuit +# First node in the list of circuit nodes. Refers to Tor Browser. +tor-circuit-panel-node-browser = This browser +# Represents a number of unknown relays that complete a connection to an ".onion" site. +tor-circuit-panel-node-onion-relays = Onion site relays +# Represents the bridge node used to connect to the Tor network. +# $bridge-type (String) - The name for the type of bridge used: meek, obfs4, snowflake, etc. +tor-circuit-panel-node-typed-bridge = Bridge: { $bridge-type } +# Represents the bridge node used to connect to the Tor network when the bridge type is unknown. +tor-circuit-panel-node-bridge = Bridge +# Represents the initial guard node used for a tor circuit. +# $region (String) - The region name for the guard node, already localized. +tor-circuit-panel-node-region-guard = { $region } (guard) +# Represents a circuit node with an unknown regional location. +tor-circuit-panel-node-unknown-region = Unknown region + +# Uses sentence case for English (US). +tor-circuit-panel-new-button = New Tor circuit for this site +# Shown when the first node in the circuit is a guard node, rather than a bridge. +tor-circuit-panel-new-button-description-guard = Your guard node may not change +# Shown when the first node in the circuit is a bridge node. +tor-circuit-panel-new-button-description-bridge = Your bridge may not change ===================================== toolkit/torbutton/chrome/locale/en-US/torbutton.dtd ===================================== @@ -3,12 +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/. --> -<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site"> -<!ENTITY torbutton.context_menu.new_circuit_sentence_case "New Tor circuit for this site"> -<!ENTITY torbutton.context_menu.new_circuit_key "C"> - -<!ENTITY torbutton.circuit_display.title "Tor Circuit"> - <!-- Onion services strings. Strings are kept here for ease of translation. --> <!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt"> <!ENTITY torbutton.onionServices.authPrompt.persistCheckboxLabel "Remember this key"> ===================================== toolkit/torbutton/chrome/locale/en-US/torbutton.properties ===================================== @@ -3,25 +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/. -# Circuit display -# LOCALIZATION NOTE: %S will be the host name shown in the URL bar. -torbutton.circuit_display.heading = Circuit for %S -# LOCALIZATION NOTE: %S will be the alias onion address. -torbutton.circuit_display.connected-to-alias = Connected to %S -torbutton.circuit_display.this_browser = This browser -torbutton.circuit_display.onion-site-relays = Onion site relays -# LOCALIZATION NOTE: %S will be the bridge type name (meek, obfs4, snowflake, -# etc). -torbutton.circuit_display.tor_typed_bridge = Bridge: %S -# LOCALIZATION NOTE: Used when the bridge type is unknown. -torbutton.circuit_display.tor_bridge = Bridge -# LOCALIZATION NOTE: Used when a circuit node's regional location is unknown. -torbutton.circuit_display.unknown_region = Unknown region -# LOCALIZATION NOTE: %S will be the localized region name for the guard node. -torbutton.circuit_display.region-guard-node = %S (guard) -torbutton.circuit_display.new-circuit-guard-description = Your guard node may not change -torbutton.circuit_display.new-circuit-bridge-description = Your bridge may not change - # 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 ===================================== tools/torbrowser/l10n/migrate.py ===================================== @@ -253,16 +253,13 @@ class TorBrowserMigrationContext(MigrationContext): if path not in self.localization_resources ) - def tb_get_transformed(self, target_path, transform_id): + def tb_get_transform(self, target_path, transform_id): """ Find the transformation node with the given id for the given path. - - The node will be evaluated (converted to regular fluent.ast) before it - is returned. """ for node in self.transforms[target_path]: if node.id.name == transform_id: - return self.evaluate(node) + return node return None def tb_get_reference_entry(self, target_path, entry_id): @@ -330,6 +327,21 @@ class TorBrowserMigrator: ctx = self._get_migration_context(locale, locale_dir) + # NOTE: We do not use the existing ctx.serialize_changeset method. + # The problem with this approach was that it would re-shuffle the order + # of already existing strings to match the en-US locale. + # But Weblate currently does not preserve the order of translated + # strings: https://github.com/WeblateOrg/weblate/issues/11134 + # so this created extra noise in the diff. + # Instead, we just always append transformations to the end of the + # existing file. + # Moreover, it would inject group comments into the translated files, + # which Weblate does not handle well. Instead, we just do not add any + # comments. + # + # In case we want to use it again in the future, here is a reference + # to how it works: + # # ctx.serialize_changeset expects a set of (path, identifier) of # localization resources that can be used to evaluate the # transformations. @@ -344,76 +356,115 @@ class TorBrowserMigrator: # one step, so we want to fill the changeset with all required # (path, identifier) pairs found in the localization resources. - # Choose the transforms that are required and available. - changeset = set() available_strings = ctx.tb_get_available_strings() - for (target_path, transform_id), dep_set in ctx.dependencies.items(): - # ctx.dependencies is a dict of dependencies for all - # transformations - # { (target_path, transform_identifier): set( - # (localization_path, string_identifier), - # )} - # - # e.g. if we want to create a new fluent Message called - # "new-string1", and it uses "oldString1" from "old-file1.dtd" - # and "oldString2" from "old-file2.dtd". And "new-string2" using - # "oldString3" from "old-file2.dtd", it would be - # { - # ("new-file.ftl", "new-string1"): set( - # ("old-file1.dtd", "oldString1"), - # ("old-file2.dtd", "oldString2"), - # ), - # ("new-file.ftl", "new-string2"): set( - # ("old-file2.dtd", "oldString3"), - # ), - # } - can_transform = True - for dep in dep_set: - path, string_id = dep - if dep not in available_strings: - can_transform = False - self.logger.info( - f"Skipping transform {target_path}:{transform_id} for " - f"'{locale}' locale because it is missing the " - f"string {path}:{string_id}." - ) - break - # Strings in legacy formats might have an entry in the file - # that is just a copy of the en-US strings. - # For these we want to check the weblate metadata to ensure - # it is a translated string. - if not path.endswith( - ".ftl" - ) and not self.weblate_metadata.is_translated( - os.path.join("en-US", path), - os.path.join(locale, path), - string_id, - ): - can_transform = False + wrote_file = False + errors = [] + + for target_path, reference in ctx.reference_resources.items(): + translated_ids = [ + entry.id.name + for entry in ctx.target_resources[target_path].body + if isinstance(entry, (ast.Message, ast.Term)) + # NOTE: We're assuming that the Message and Term ids do not + # conflict with each other. + ] + new_entries = [] + + # Apply transfomations in the order they appear in the reference + # (en-US) file. + for entry in reference.body: + if not isinstance(entry, (ast.Message, ast.Term)): + continue + transform_id = entry.id.name + transform = ctx.tb_get_transform(target_path, transform_id) + if not transform: + # No transformation for this reference entry. + continue + + if transform_id in translated_ids: self.logger.info( - f"Skipping transform {target_path}:{transform_id} for " - f"'{locale}' locale because the string " - f"{path}:{string_id} has not been translated on " - "weblate." + f"Skipping transform {target_path}:{transform_id} " + f"for '{locale}' locale because it already has a " + f"translation." ) - break - if can_transform: - changeset.update(dep_set) + continue - print("", file=sys.stderr) - wrote_file = False - errors = [] - for path, fluent in ctx.serialize_changeset(changeset).items(): - full_path = os.path.join(locale_dir, path) + # ctx.dependencies is a dict of dependencies for all + # transformations + # { (target_path, transform_identifier): set( + # (localization_path, string_identifier), + # )} + # + # e.g. if we want to create a new fluent Message called + # "new-string1", and it uses "oldString1" from "old-file1.dtd" + # and "oldString2" from "old-file2.dtd". And "new-string2" using + # "oldString3" from "old-file2.dtd", it would be + # { + # ("new-file.ftl", "new-string1"): set( + # ("old-file1.dtd", "oldString1"), + # ("old-file2.dtd", "oldString2"), + # ), + # ("new-file.ftl", "new-string2"): set( + # ("old-file2.dtd", "oldString3"), + # ), + # } + dep_set = ctx.dependencies[(target_path, transform_id)] + can_transform = True + for dep in dep_set: + path, string_id = dep + if dep not in available_strings: + can_transform = False + self.logger.info( + f"Skipping transform {target_path}:{transform_id} " + f"for '{locale}' locale because it is missing the " + f"string {path}:{string_id}." + ) + break + # Strings in legacy formats might have an entry in the file + # that is just a copy of the en-US strings. + # For these we want to check the weblate metadata to ensure + # it is a translated string. + if not path.endswith( + ".ftl" + ) and not self.weblate_metadata.is_translated( + os.path.join("en-US", path), + os.path.join(locale, path), + string_id, + ): + can_transform = False + self.logger.info( + f"Skipping transform {target_path}:{transform_id} " + f"for '{locale}' locale because the string " + f"{path}:{string_id} has not been translated on " + "weblate." + ) + break + if not can_transform: + continue + + # Run the transformation. + new_entries.append(ctx.evaluate(transform)) + + if not new_entries: + continue + + full_path = os.path.join(locale_dir, target_path) + print("", file=sys.stderr) self.logger.info(f"Writing to {full_path}") - with open(full_path, "w") as file: - file.write(fluent) - wrote_file = True + # For Fluent we can just serialize the transformations and append + # them to the end of the existing file. + resource = ast.Resource(new_entries) + with open(full_path, "a") as file: + file.write(serialize(resource)) + + with open(full_path, "r") as file: + full_content = file.read() + wrote_file = True # Collect any fluent parsing errors from the newly written file. errors.extend( (full_path, message, line, sample) - for message, line, sample in self._fluent_errors(fluent) + for message, line, sample in self._fluent_errors(full_content) ) if not wrote_file: @@ -547,7 +598,7 @@ class TorBrowserMigrator: have_error = True continue - transformed = ctx.tb_get_transformed(target_path, transform_id) + transformed = ctx.evaluate(ctx.tb_get_transform(target_path, transform_id)) reference_entry = ctx.tb_get_reference_entry(target_path, transform_id) if reference_entry is None: self.logger.error( ===================================== tools/torbrowser/l10n/migrations/bug-42209-tor-circuit.py ===================================== @@ -0,0 +1,83 @@ +import fluent.syntax.ast as FTL +from fluent.migrate.helpers import VARIABLE_REFERENCE, transforms_from +from fluent.migrate.transforms import CONCAT, REPLACE + + +def migrate(ctx): + legacy_dtd = "torbutton.dtd" + legacy_properties = "torbutton.properties" + ctx.add_transforms( + "tor-browser.ftl", + "tor-browser.ftl", + transforms_from( + """ +menu-new-tor-circuit = + .label = { COPY(dtd_path, "torbutton.context_menu.new_circuit") } + .accesskey = { COPY(dtd_path, "torbutton.context_menu.new_circuit_key") } +appmenuitem-new-tor-circuit = + .label = { COPY(dtd_path, "torbutton.context_menu.new_circuit_sentence_case") } +toolbar-new-tor-circuit = + .label = { COPY(dtd_path, "torbutton.context_menu.new_circuit_sentence_case") } + .tooltiptext = { toolbar-new-tor-circuit.label } + +tor-circuit-urlbar-button = + .tooltiptext = { COPY(dtd_path, "torbutton.circuit_display.title") } + +tor-circuit-panel-node-list-introduction = { COPY(dtd_path, "torbutton.circuit_display.title") } +tor-circuit-panel-node-browser = { COPY(path, "torbutton.circuit_display.this_browser") } +tor-circuit-panel-node-onion-relays = { COPY(path, "torbutton.circuit_display.onion-site-relays") } +tor-circuit-panel-node-bridge = { COPY(path, "torbutton.circuit_display.tor_bridge") } +tor-circuit-panel-node-unknown-region = { COPY(path, "torbutton.circuit_display.unknown_region") } + +tor-circuit-panel-new-button = { COPY(dtd_path, "torbutton.context_menu.new_circuit_sentence_case") } +tor-circuit-panel-new-button-description-guard = { COPY(path, "torbutton.circuit_display.new-circuit-guard-description") } +tor-circuit-panel-new-button-description-bridge = { COPY(path, "torbutton.circuit_display.new-circuit-bridge-description") } +""", + dtd_path=legacy_dtd, + path=legacy_properties, + ) + + [ + # Replace "%S" with "{ $host }" + FTL.Message( + id=FTL.Identifier("tor-circuit-panel-heading"), + value=REPLACE( + legacy_properties, + "torbutton.circuit_display.heading", + {"%1$S": VARIABLE_REFERENCE("host")}, + ), + ), + # Replace "%S" with "<a data-l10n-name="alias-link">{ $alias }</a>" + FTL.Message( + id=FTL.Identifier("tor-circuit-panel-alias"), + value=REPLACE( + legacy_properties, + "torbutton.circuit_display.connected-to-alias", + { + "%1$S": CONCAT( + FTL.TextElement('<a data-l10n-name="alias-link">'), + VARIABLE_REFERENCE("alias"), + FTL.TextElement("</a>"), + ) + }, + ), + ), + # Replace "%S" with "{ $region }" + FTL.Message( + id=FTL.Identifier("tor-circuit-panel-node-region-guard"), + value=REPLACE( + legacy_properties, + "torbutton.circuit_display.region-guard-node", + {"%1$S": VARIABLE_REFERENCE("region")}, + ), + ), + # Replace "%S" with "{ $bridge-type }" + FTL.Message( + id=FTL.Identifier("tor-circuit-panel-node-typed-bridge"), + value=REPLACE( + legacy_properties, + "torbutton.circuit_display.tor_typed_bridge", + {"%1$S": VARIABLE_REFERENCE("bridge-type")}, + ), + ), + ], + ) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/b7fc91… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/b7fc91… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser-update-responses][main] release: new version, 13.0.13
by richard (@richard) 22 Mar '24

22 Mar '24
richard pushed to branch main at The Tor Project / Applications / mullvad-browser-update-responses Commits: dbce8663 by Richard Pospesel at 2024-03-22T17:31:33+00:00 release: new version, 13.0.13 - - - - - 29 changed files: - update_1/release/.htaccess - − update_1/release/13.0.10-13.0.12-linux-x86_64-ALL.xml - − update_1/release/13.0.10-13.0.12-macos-ALL.xml - − update_1/release/13.0.10-13.0.12-windows-x86_64-ALL.xml - + 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.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-linux-x86_64-ALL.xml - − update_1/release/13.0.12-macos-ALL.xml - − update_1/release/13.0.12-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.7-13.0.12-linux-x86_64-ALL.xml - − update_1/release/13.0.7-13.0.12-macos-ALL.xml - − update_1/release/13.0.7-13.0.12-windows-x86_64-ALL.xml - − update_1/release/13.0.9-13.0.12-linux-x86_64-ALL.xml - − update_1/release/13.0.9-13.0.12-macos-ALL.xml - − update_1/release/13.0.9-13.0.12-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.12/ no-update.xml [last] -RewriteRule ^Linux_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.12-linux-x86_64-ALL.xml [last] -RewriteRule ^Linux_x86_64-gcc3/13.0.7/ALL 13.0.7-13.0.12-linux-x86_64-ALL.xml [last] -RewriteRule ^Linux_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.12-linux-x86_64-ALL.xml [last] -RewriteRule ^Linux_x86_64-gcc3/[^/]+/ALL 13.0.12-linux-x86_64-ALL.xml [last] -RewriteRule ^Linux_x86_64-gcc3/ 13.0.12-linux-x86_64-ALL.xml [last] -RewriteRule ^Darwin_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.12-macos-ALL.xml [last] -RewriteRule ^Darwin_x86_64-gcc3/13.0.7/ALL 13.0.7-13.0.12-macos-ALL.xml [last] -RewriteRule ^Darwin_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.12-macos-ALL.xml [last] -RewriteRule ^Darwin_x86_64-gcc3/[^/]+/ALL 13.0.12-macos-ALL.xml [last] -RewriteRule ^Darwin_x86_64-gcc3/ 13.0.12-macos-ALL.xml [last] -RewriteRule ^Darwin_aarch64-gcc3/13.0.10/ALL 13.0.10-13.0.12-macos-ALL.xml [last] -RewriteRule ^Darwin_aarch64-gcc3/13.0.7/ALL 13.0.7-13.0.12-macos-ALL.xml [last] -RewriteRule ^Darwin_aarch64-gcc3/13.0.9/ALL 13.0.9-13.0.12-macos-ALL.xml [last] -RewriteRule ^Darwin_aarch64-gcc3/[^/]+/ALL 13.0.12-macos-ALL.xml [last] -RewriteRule ^Darwin_aarch64-gcc3/ 13.0.12-macos-ALL.xml [last] -RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.10/ALL 13.0.10-13.0.12-windows-x86_64-ALL.xml [last] -RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.7/ALL 13.0.7-13.0.12-windows-x86_64-ALL.xml [last] -RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.9/ALL 13.0.9-13.0.12-windows-x86_64-ALL.xml [last] -RewriteRule ^WINNT_x86_64-gcc3-x64/[^/]+/ALL 13.0.12-windows-x86_64-ALL.xml [last] -RewriteRule ^WINNT_x86_64-gcc3-x64/ 13.0.12-windows-x86_64-ALL.xml [last] +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] ===================================== update_1/release/13.0.10-13.0.12-linux-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="7ad00dc2b0acd1e4fe72797e0be720a5df5675580de689ff7dec0d032fee7c037ced1027ff5107e140d149537cc04d74a6b4bcff6f641e5037fcf580095ea84f" size="7848684" type="partial"></patch></update></updates> ===================================== update_1/release/13.0.10-13.0.12-macos-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos--13.0.10-13.0…" hashFunction="SHA512" hashValue="4f8bcee04e7ddc9684f0f264b12a81dce94a179a7ceaa686427079021d18b17b5ac21d27d612abab50cd6f77560351e1edb8721f68b75b3e57185db65d7ae96f" size="12124599" type="partial"></patch></update></updates> ===================================== update_1/release/13.0.10-13.0.12-windows-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="72df0c72c97068315d781a017da91d6279d4026f94db5e5d58eb7a711f04509a659142d60fe335559afa713dc026f998cc1de6c8e6383ec4896888d607837b17" size="8560367" type="partial"></patch></update></updates> ===================================== update_1/release/13.0.10-13.0.13-linux-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?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 ===================================== @@ -0,0 +1,2 @@ +<?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 ===================================== @@ -0,0 +1,2 @@ +<?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.12-13.0.13-linux-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?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 ===================================== @@ -0,0 +1,2 @@ +<?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 ===================================== @@ -0,0 +1,2 @@ +<?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-linux-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch></update></updates> ===================================== update_1/release/13.0.12-macos-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch></update></updates> ===================================== update_1/release/13.0.12-windows-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch></update></updates> ===================================== update_1/release/13.0.13-linux-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?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 ===================================== @@ -0,0 +1,2 @@ +<?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 ===================================== @@ -0,0 +1,2 @@ +<?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.7-13.0.12-linux-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="6fecc36a34bd3d38aa5c34d53bd6d71c6794d07287447f6f70b203f7d210ab485b7face9c7f831c5c526b5549cbf1458a074c146945219b5d8c6561bce2496ed" size="12369078" type="partial"></patch></update></updates> ===================================== update_1/release/13.0.7-13.0.12-macos-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos--13.0.7-13.0.…" hashFunction="SHA512" hashValue="5dcb89d5f4565bb8513a20efaf84f25f6f85229181400ead93095783553a7ff57abea8643c4196ffc07f33f6c22b3d1d96f2f97a2c32f163397db9a711443629" size="17020253" type="partial"></patch></update></updates> ===================================== update_1/release/13.0.7-13.0.12-windows-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="e0cf078c426841dd4b80e3efbbc33c577a95ffd0af5ea64303989f265b274311725948ec6ffcd832867c7bf9cca51e76078a02aa107663dae22b58791d439c64" size="13174209" type="partial"></patch></update></updates> ===================================== update_1/release/13.0.9-13.0.12-linux-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="27584d28396169d940626225c8ea910b586995de8fcdf0df305585dd2ae62b4f96c8a84135c52cc10d501b3db35fdbdcae8aa96d78a1e89f5c62fe2195dba090" size="8755552" type="partial"></patch></update></updates> ===================================== update_1/release/13.0.9-13.0.12-macos-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos--13.0.9-13.0.…" hashFunction="SHA512" hashValue="689f37db7be6488773db9e405f7742869cb0885135ab231690fd6b424f4c3a54aedd01f98547e5fffacffe11bd902f77bf3b80279ba2202d16732f221bc71dba" size="13343215" type="partial"></patch></update></updates> ===================================== update_1/release/13.0.9-13.0.12-windows-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="2c0d987c01caee4d38ed9fddfd7f34403f9c00aadf90dadc792a2e9bc062276d6253db468b25e3448a94163a22f94da18f34fafd32e2ca2efb78ac46bdaef286" size="9488151" type="partial"></patch></update></updates> ===================================== update_1/release/13.0.9-13.0.13-linux-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?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 ===================================== @@ -0,0 +1,2 @@ +<?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 ===================================== @@ -0,0 +1,2 @@ +<?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.12/mullvad-browser-linux-x86_64-13.0.1…","git_tag":"mb-13.0.12-build1","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…","version":"13.0.12"} \ No newline at end of file +{"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 ===================================== update_1/release/download-macos.json ===================================== @@ -1 +1 @@ -{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg","git_tag":"mb-13.0.12-build1","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg.a…","version":"13.0.12"} \ No newline at end of file +{"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 ===================================== update_1/release/download-windows-x86_64.json ===================================== @@ -1 +1 @@ -{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…","git_tag":"mb-13.0.12-build1","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…","version":"13.0.12"} \ No newline at end of file +{"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 ===================================== update_1/release/downloads.json ===================================== @@ -1 +1 @@ -{"downloads":{"linux-x86_64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…"}},"macos":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg.a…"}},"win64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…"}}},"tag":"mb-13.0.12-build1","version":"13.0.12"} \ No newline at end of file +{"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 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
0 0
[Git][tpo/applications/tor-browser-update-responses][main] release: new version, 13.0.13
by richard (@richard) 22 Mar '24

22 Mar '24
richard pushed to branch main at The Tor Project / Applications / Tor Browser update responses Commits: 95b50a78 by Richard Pospesel at 2024-03-22T17:02:09+00:00 release: new version, 13.0.13 - - - - - 30 changed files: - update_3/release/.htaccess - − update_3/release/13.0.10-13.0.12-linux-i686-ALL.xml - − update_3/release/13.0.10-13.0.12-linux-x86_64-ALL.xml - − update_3/release/13.0.10-13.0.12-macos-ALL.xml - − update_3/release/13.0.10-13.0.12-windows-i686-ALL.xml - − update_3/release/13.0.10-13.0.12-windows-x86_64-ALL.xml - + 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.12-linux-i686-ALL.xml - − update_3/release/13.0.11-13.0.12-linux-x86_64-ALL.xml - − update_3/release/13.0.11-13.0.12-macos-ALL.xml - − update_3/release/13.0.11-13.0.12-windows-i686-ALL.xml - − update_3/release/13.0.11-13.0.12-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.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-linux-i686-ALL.xml - − update_3/release/13.0.12-linux-x86_64-ALL.xml - − update_3/release/13.0.12-macos-ALL.xml - − update_3/release/13.0.12-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
0 0
[Git][tpo/applications/tor-browser-build] Pushed new tag mb-13.0.13-build1
by richard (@richard) 22 Mar '24

22 Mar '24
richard pushed new tag mb-13.0.13-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
0 0
[Git][tpo/applications/tor-browser-build] Pushed new tag tbb-13.0.13-build1
by richard (@richard) 22 Mar '24

22 Mar '24
richard pushed new tag tbb-13.0.13-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
0 0
[Git][tpo/applications/mullvad-browser] Pushed new tag mullvad-browser-115.9.1esr-13.0-1-build1
by ma1 (@ma1) 22 Mar '24

22 Mar '24
ma1 pushed new tag mullvad-browser-115.9.1esr-13.0-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
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.1esr-13.0-1] 18 commits: MB 38: Mullvad Browser configuration
by ma1 (@ma1) 22 Mar '24

22 Mar '24
ma1 pushed to branch mullvad-browser-115.9.1esr-13.0-1 at The Tor Project / Applications / Mullvad Browser Commits: e27339b2 by Pier Angelo Vendrame at 2024-03-22T13:30:37+01:00 MB 38: Mullvad Browser configuration - - - - - 890fc86e by Pier Angelo Vendrame at 2024-03-22T13:30:38+01: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 - - - - - 8457cfe2 by Pier Angelo Vendrame at 2024-03-22T13:30:39+01: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. - - - - - 9ebfee4d by Pier Angelo Vendrame at 2024-03-22T13:30:40+01:00 MB 63: Customize some about pages for Mullvad Browser Also: mullvad-browser#57: Purge unneeded about: pages - - - - - c73a54ab by Pier Angelo Vendrame at 2024-03-22T14:07:02+01:00 MB 37: Customization for the about dialog - - - - - 0643bbdd by Henry Wilkes at 2024-03-22T14:07:03+01:00 MB 39: Add home page about:mullvad-browser - - - - - 6e0a04f3 by hackademix at 2024-03-22T14:07:05+01:00 MB 97: Remove UI cues to install new extensions. - - - - - 5d3323fe by hackademix at 2024-03-22T14:07:06+01:00 MB 47: uBlock Origin customization - - - - - e6a2e35b by Pier Angelo Vendrame at 2024-03-22T14:07:08+01:00 MB 21: Disable the password manager This commit disables the about:login page and removes the &quot;Login and Password&quot; 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. - - - - - 58d1dbda by Pier Angelo Vendrame at 2024-03-22T14:07:09+01:00 MB 87: Disable the default browser box on Windows and Linux Windows and Linux will be distributed only as portable apps at the beginning, so they should not be settable as default browsers. We will need to improve the logic once we decide to ship system-wide installers, too. - - - - - a055020f by Pier Angelo Vendrame at 2024-03-22T14:07:10+01:00 MB 112: Updater customization for Mullvad Browser MB 71: Set the updater base URL to Mullvad domain - - - - - 233c5e02 by Nicolas Vigier at 2024-03-22T14:07:12+01:00 MB 79: Add Mullvad Browser MAR signing keys MB 256: Add mullvad-browser nightly mar signing key - - - - - f424d0a6 by Pier Angelo Vendrame at 2024-03-22T14:07:14+01: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. - - - - - f0d45502 by Pier Angelo Vendrame at 2024-03-22T14:07:15+01:00 MB 160: Disable the cookie exceptions button Besides disabling the &quot;Delete on close checkbox&quot;, disable also the &quot;Manage Exceptions&quot; button when always using PBM. - - - - - 31171acd by hackademix at 2024-03-22T14:07:16+01:00 MB 163: prevent uBlock Origin from being uninstalled/disabled - - - - - 1f741e74 by Richard Pospesel at 2024-03-22T14:07:17+01:00 MB 188: Customize Gitlab Issue and Merge templates - - - - - a86d6ab2 by rui hildt at 2024-03-22T14:07:18+01:00 MB 213: Customize the search engines list - - - - - 6cd85fb3 by hackademix at 2024-03-22T14:07:19+01:00 MB 214: Enable cross-tab identity leak protection in &quot;quiet&quot; mode - - - - - 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
0 0
[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 41108, 41109: Prepare Tor and Mullvad Browser Stable 13.0.13
by ma1 (@ma1) 22 Mar '24

22 Mar '24
ma1 pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build Commits: 49992f2b by Richard Pospesel at 2024-03-22T13:04:30+00:00 Bug 41108, 41109: Prepare Tor and Mullvad Browser Stable 13.0.13 - - - - - 5 changed files: - projects/browser/Bundle-Data/Docs-MB/ChangeLog.txt - projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt - projects/firefox/config - projects/translation/config - rbm.conf Changes: ===================================== projects/browser/Bundle-Data/Docs-MB/ChangeLog.txt ===================================== @@ -1,3 +1,9 @@ +Mullvad Browser 13.0.13 - March 22 2024 + * Windows + macOS + Linux + * Updated Firefox to 115.9.1esr + * Bug 42473: ESR 115.9.1 fixes [tor-browser] + * Bug 277: Rebase Mullvad Browser stable onto Firefox 115.9.1esr [mullvad-browser] + Mullvad Browser 13.0.12 - March 19 2024 * All Platforms * Updated Firefox to 115.9.0esr ===================================== projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt ===================================== @@ -1,3 +1,9 @@ +Tor Browser 13.0.13 - March 22 2024 + * Windows + macOS + Linux + * Updated Firefox to 115.9.1esr + * Bug 42473: ESR 115.9.1 fixes [tor-browser] + * Bug 42474: Rebase stable browsers on 115.9.1 [tor-browser] + Tor Browser 13.0.12 - March 19 2024 * All Platforms * Updated Snowflake to 2.9.2 ===================================== projects/firefox/config ===================================== @@ -14,13 +14,11 @@ container: use_container: 1 var: - firefox_platform_version: 115.9.0 + firefox_platform_version: 115.9.1 firefox_version: '[% c("var/firefox_platform_version") %]esr' browser_series: '13.0' browser_branch: '[% c("var/browser_series") %]-1' - # update the mullvadbrowser specific override for 115.10.0 - # torbrowser had an extra firefox build tag - browser_build: 3 + browser_build: 1 branding_directory_prefix: 'tb' copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]' nightly_updates_publish_dir: '[% c("var/nightly_updates_publish_dir_prefix") %]nightly-[% c("var/osname") %]' @@ -104,7 +102,6 @@ targets: mullvadbrowser: git_url: https://gitlab.torproject.org/tpo/applications/mullvad-browser.git var: - browser_build: 2 branding_directory_prefix: 'mb' gitlab_project: https://gitlab.torproject.org/tpo/applications/mullvad-browser updater_url: 'https://cdn.mullvad.net/browser/update_responses/update_1/' ===================================== projects/translation/config ===================================== @@ -12,13 +12,13 @@ compress_tar: 'gz' steps: base-browser: base-browser: '[% INCLUDE build %]' - git_hash: a4d224e82808529e135259e04fb58fb39b90da2d + git_hash: 8e04ca3c5f440ed8f16b2069ae9565e4b044ec29 targets: nightly: git_hash: 'base-browser' tor-browser: tor-browser: '[% INCLUDE build %]' - git_hash: e7aabc54138211e23bc60af1abe492c8bc68ce4b + git_hash: bf2fac60a6c41aa67b8147f22a638d498ac2dcdd 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: ef6bef5e373108c4e633998b517e4bc8c297770a + git_hash: c5d462fc3513f23fc74193c7a5c31027fc07672d compress_tar: 'zst' targets: nightly: ===================================== rbm.conf ===================================== @@ -73,13 +73,13 @@ buildconf: git_signtag_opt: '-s' var: - torbrowser_version: '13.0.12' - torbrowser_build: 'build2' + torbrowser_version: '13.0.13' + torbrowser_build: 'build1' torbrowser_incremental_from: + - '13.0.12' - '[% IF c("var/tor-browser") %]13.0.11[% END %]' - '13.0.10' - - '13.0.9' - - '[% IF c("var/mullvad-browser") %]13.0.7[% END %]' + - '[% IF c("var/mullvad-browser") %]13.0.9[% 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
0 0
[Git][tpo/applications/mullvad-browser] Pushed new tag FIREFOX_115_9_1esr_BUILD1
by ma1 (@ma1) 22 Mar '24

22 Mar '24
ma1 pushed new tag FIREFOX_115_9_1esr_BUILD1 at The Tor Project / Applications / Mullvad Browser -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/FIREF… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser] Pushed new tag base-browser-115.9.1esr-13.0-1-build1
by ma1 (@ma1) 22 Mar '24

22 Mar '24
ma1 pushed new tag base-browser-115.9.1esr-13.0-1-build1 at The Tor Project / Applications / Mullvad Browser -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/base-… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser] Pushed new branch mullvad-browser-115.9.1esr-13.0-1
by ma1 (@ma1) 22 Mar '24

22 Mar '24
ma1 pushed new branch mullvad-browser-115.9.1esr-13.0-1 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
0 0
  • ← Newer
  • 1
  • ...
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • ...
  • 803
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.