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
Download
Threads by month
  • ----- 2025 -----
  • 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

October 2024

  • 1 participants
  • 290 discussions
[Git][tpo/applications/tor-browser][base-browser-128.3.0esr-14.0-1] Bug 1911745 - Unify BrowsingContext flag coherency checks, r=mccr8
by ma1 (@ma1) 01 Oct '24

01 Oct '24
ma1 pushed to branch base-browser-128.3.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: eda9f7de by Nika Layzell at 2024-10-01T22:29:35+02:00 Bug 1911745 - Unify BrowsingContext flag coherency checks, r=mccr8 Previously these checks were largely diagnostic tools for finding bugs in other code as it evolves. This unifies the checks a bit more and makes them stronger for BrowsingContexts created over IPC, providing a place for more coherency checks to be added in the future. Differential Revision: https://phabricator.services.mozilla.com/D218860 - - - - - 2 changed files: - docshell/base/BrowsingContext.cpp - docshell/base/BrowsingContext.h Changes: ===================================== docshell/base/BrowsingContext.cpp ===================================== @@ -578,9 +578,20 @@ mozilla::ipc::IPCResult BrowsingContext::CreateFromIPC( context->mRequestContextId = aInit.mRequestContextId; // NOTE: Private browsing ID is set by `SetOriginAttributes`. + if (const char* failure = + context->BrowsingContextCoherencyChecks(aOriginProcess)) { + mozilla::ipc::IProtocol* actor = aOriginProcess; + if (!actor) { + actor = ContentChild::GetSingleton(); + } + return IPC_FAIL_UNSAFE_PRINTF(actor, "Incoherent BrowsingContext: %s", + failure); + } + Register(context); - return context->Attach(/* aFromIPC */ true, aOriginProcess); + context->Attach(/* aFromIPC */ true, aOriginProcess); + return IPC_OK(); } BrowsingContext::BrowsingContext(WindowContext* aParentWindow, @@ -795,8 +806,64 @@ void BrowsingContext::Embed() { } } -mozilla::ipc::IPCResult BrowsingContext::Attach(bool aFromIPC, - ContentParent* aOriginProcess) { +const char* BrowsingContext::BrowsingContextCoherencyChecks( + ContentParent* aOriginProcess) { +#define COHERENCY_ASSERT(condition) \ + if (!(condition)) return "Assertion " #condition " failed"; + + if (mGroup->IsPotentiallyCrossOriginIsolated() != + (Top()->GetOpenerPolicy() == + nsILoadInfo::OPENER_POLICY_SAME_ORIGIN_EMBEDDER_POLICY_REQUIRE_CORP)) { + return "Invalid CrossOriginIsolated state"; + } + + if (aOriginProcess && !IsContent()) { + return "Content cannot create chrome BCs"; + } + + // LoadContext should generally match our opener or parent. + if (IsContent()) { + if (RefPtr<BrowsingContext> opener = GetOpener()) { + COHERENCY_ASSERT(opener->mType == mType); + COHERENCY_ASSERT(opener->mGroup == mGroup); + COHERENCY_ASSERT(opener->mUseRemoteTabs == mUseRemoteTabs); + COHERENCY_ASSERT(opener->mUseRemoteSubframes == mUseRemoteSubframes); + COHERENCY_ASSERT(opener->mPrivateBrowsingId == mPrivateBrowsingId); + COHERENCY_ASSERT( + opener->mOriginAttributes.EqualsIgnoringFPD(mOriginAttributes)); + } + } + if (RefPtr<BrowsingContext> parent = GetParent()) { + COHERENCY_ASSERT(parent->mType == mType); + COHERENCY_ASSERT(parent->mGroup == mGroup); + COHERENCY_ASSERT(parent->mUseRemoteTabs == mUseRemoteTabs); + COHERENCY_ASSERT(parent->mUseRemoteSubframes == mUseRemoteSubframes); + COHERENCY_ASSERT(parent->mPrivateBrowsingId == mPrivateBrowsingId); + COHERENCY_ASSERT( + parent->mOriginAttributes.EqualsIgnoringFPD(mOriginAttributes)); + } + + // UseRemoteSubframes and UseRemoteTabs must match. + if (mUseRemoteSubframes && !mUseRemoteTabs) { + return "Cannot set useRemoteSubframes without also setting useRemoteTabs"; + } + + // Double-check OriginAttributes/Private Browsing + // Chrome browsing contexts must not have a private browsing OriginAttribute + // Content browsing contexts must maintain the equality: + // mOriginAttributes.mPrivateBrowsingId == mPrivateBrowsingId + if (IsChrome()) { + COHERENCY_ASSERT(mOriginAttributes.mPrivateBrowsingId == 0); + } else { + COHERENCY_ASSERT(mOriginAttributes.mPrivateBrowsingId == + mPrivateBrowsingId); + } +#undef COHERENCY_ASSERT + + return nullptr; +} + +void BrowsingContext::Attach(bool aFromIPC, ContentParent* aOriginProcess) { MOZ_DIAGNOSTIC_ASSERT(!mEverAttached); MOZ_DIAGNOSTIC_ASSERT_IF(aFromIPC, aOriginProcess || XRE_IsContentProcess()); mEverAttached = true; @@ -815,25 +882,15 @@ mozilla::ipc::IPCResult BrowsingContext::Attach(bool aFromIPC, MOZ_DIAGNOSTIC_ASSERT(mGroup); MOZ_DIAGNOSTIC_ASSERT(!mIsDiscarded); - if (mGroup->IsPotentiallyCrossOriginIsolated() != - (Top()->GetOpenerPolicy() == - nsILoadInfo::OPENER_POLICY_SAME_ORIGIN_EMBEDDER_POLICY_REQUIRE_CORP)) { - MOZ_DIAGNOSTIC_ASSERT(aFromIPC); - if (aFromIPC) { - auto* actor = aOriginProcess - ? static_cast<mozilla::ipc::IProtocol*>(aOriginProcess) - : static_cast<mozilla::ipc::IProtocol*>( - ContentChild::GetSingleton()); - return IPC_FAIL( - actor, - "Invalid CrossOriginIsolated state in BrowsingContext::Attach call"); - } else { - MOZ_CRASH( - "Invalid CrossOriginIsolated state in BrowsingContext::Attach call"); +#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED + // We'll already have checked this if `aFromIPC` is set before calling this + // function. + if (!aFromIPC) { + if (const char* failure = BrowsingContextCoherencyChecks(aOriginProcess)) { + MOZ_CRASH_UNSAFE_PRINTF("Incoherent BrowsingContext: %s", failure); } } - - AssertCoherentLoadContext(); +#endif // Add ourselves either to our parent or BrowsingContextGroup's child list. // Important: We shouldn't return IPC_FAIL after this point, since the @@ -915,7 +972,6 @@ mozilla::ipc::IPCResult BrowsingContext::Attach(bool aFromIPC, if (XRE_IsParentProcess()) { Canonical()->CanonicalAttach(); } - return IPC_OK(); } void BrowsingContext::Detach(bool aFromIPC) { @@ -1768,40 +1824,6 @@ nsresult BrowsingContext::SetOriginAttributes(const OriginAttributes& aAttrs) { return NS_OK; } -void BrowsingContext::AssertCoherentLoadContext() { -#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED - // LoadContext should generally match our opener or parent. - if (IsContent()) { - if (RefPtr<BrowsingContext> opener = GetOpener()) { - MOZ_DIAGNOSTIC_ASSERT(opener->mType == mType); - MOZ_DIAGNOSTIC_ASSERT(opener->mGroup == mGroup); - MOZ_DIAGNOSTIC_ASSERT(opener->mUseRemoteTabs == mUseRemoteTabs); - MOZ_DIAGNOSTIC_ASSERT(opener->mUseRemoteSubframes == mUseRemoteSubframes); - MOZ_DIAGNOSTIC_ASSERT(opener->mPrivateBrowsingId == mPrivateBrowsingId); - MOZ_DIAGNOSTIC_ASSERT( - opener->mOriginAttributes.EqualsIgnoringFPD(mOriginAttributes)); - } - } - if (RefPtr<BrowsingContext> parent = GetParent()) { - MOZ_DIAGNOSTIC_ASSERT(parent->mType == mType); - MOZ_DIAGNOSTIC_ASSERT(parent->mGroup == mGroup); - MOZ_DIAGNOSTIC_ASSERT(parent->mUseRemoteTabs == mUseRemoteTabs); - MOZ_DIAGNOSTIC_ASSERT(parent->mUseRemoteSubframes == mUseRemoteSubframes); - MOZ_DIAGNOSTIC_ASSERT(parent->mPrivateBrowsingId == mPrivateBrowsingId); - MOZ_DIAGNOSTIC_ASSERT( - parent->mOriginAttributes.EqualsIgnoringFPD(mOriginAttributes)); - } - - // UseRemoteSubframes and UseRemoteTabs must match. - MOZ_DIAGNOSTIC_ASSERT( - !mUseRemoteSubframes || mUseRemoteTabs, - "Cannot set useRemoteSubframes without also setting useRemoteTabs"); - - // Double-check OriginAttributes/Private Browsing - AssertOriginAttributesMatchPrivateBrowsing(); -#endif -} - void BrowsingContext::AssertOriginAttributesMatchPrivateBrowsing() { // Chrome browsing contexts must not have a private browsing OriginAttribute // Content browsing contexts must maintain the equality: ===================================== docshell/base/BrowsingContext.h ===================================== @@ -984,7 +984,18 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { bool aHasPostData); private: - mozilla::ipc::IPCResult Attach(bool aFromIPC, ContentParent* aOriginProcess); + // Assert that this BrowsingContext is coherent relative to related + // BrowsingContexts. This will be run before the BrowsingContext is attached. + // + // A non-null string return value indicates that there was a coherency check + // failure, which will be handled with either a crash or IPC failure. + // + // If provided, `aOriginProcess` is the process which is responsible for the + // creation of this BrowsingContext. + [[nodiscard]] const char* BrowsingContextCoherencyChecks( + ContentParent* aOriginProcess); + + void Attach(bool aFromIPC, ContentParent* aOriginProcess); // Recomputes whether we can execute scripts in this BrowsingContext based on // the value of AllowJavascript() and whether scripts are allowed in the @@ -998,10 +1009,6 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { void AssertOriginAttributesMatchPrivateBrowsing(); - // Assert that the BrowsingContext's LoadContext flags appear coherent - // relative to related BrowsingContexts. - void AssertCoherentLoadContext(); - friend class ::nsOuterWindowProxy; friend class ::nsGlobalWindowOuter; friend class WindowContext; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/eda9f7d… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/eda9f7d… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-128.3.0esr-14.0-1] 3 commits: Bug 1906024 - Format download file names better a=diannaS
by ma1 (@ma1) 01 Oct '24

01 Oct '24
ma1 pushed to branch tor-browser-128.3.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: 42b4d421 by rahulsainani at 2024-10-01T17:58:48+02:00 Bug 1906024 - Format download file names better a=diannaS Original Revision: https://phabricator.services.mozilla.com/D220559 Differential Revision: https://phabricator.services.mozilla.com/D222254 - - - - - 5928c112 by rahulsainani at 2024-10-01T17:58:55+02:00 Bug 1906024 - Format download file names a=diannaS Original Revision: https://phabricator.services.mozilla.com/D221771 Differential Revision: https://phabricator.services.mozilla.com/D222259 - - - - - e139ad27 by Nika Layzell at 2024-10-01T18:01:23+02:00 Bug 1911745 - Unify BrowsingContext flag coherency checks, r=mccr8 Previously these checks were largely diagnostic tools for finding bugs in other code as it evolves. This unifies the checks a bit more and makes them stronger for BrowsingContexts created over IPC, providing a place for more coherency checks to be added in the future. Differential Revision: https://phabricator.services.mozilla.com/D218860 - - - - - 4 changed files: - docshell/base/BrowsingContext.cpp - docshell/base/BrowsingContext.h - mobile/android/android-components/components/support/ktx/src/main/java/mozilla/components/support/ktx/kotlin/String.kt - mobile/android/android-components/components/support/ktx/src/test/java/mozilla/components/support/ktx/kotlin/StringTest.kt Changes: ===================================== docshell/base/BrowsingContext.cpp ===================================== @@ -578,9 +578,20 @@ mozilla::ipc::IPCResult BrowsingContext::CreateFromIPC( context->mRequestContextId = aInit.mRequestContextId; // NOTE: Private browsing ID is set by `SetOriginAttributes`. + if (const char* failure = + context->BrowsingContextCoherencyChecks(aOriginProcess)) { + mozilla::ipc::IProtocol* actor = aOriginProcess; + if (!actor) { + actor = ContentChild::GetSingleton(); + } + return IPC_FAIL_UNSAFE_PRINTF(actor, "Incoherent BrowsingContext: %s", + failure); + } + Register(context); - return context->Attach(/* aFromIPC */ true, aOriginProcess); + context->Attach(/* aFromIPC */ true, aOriginProcess); + return IPC_OK(); } BrowsingContext::BrowsingContext(WindowContext* aParentWindow, @@ -795,8 +806,64 @@ void BrowsingContext::Embed() { } } -mozilla::ipc::IPCResult BrowsingContext::Attach(bool aFromIPC, - ContentParent* aOriginProcess) { +const char* BrowsingContext::BrowsingContextCoherencyChecks( + ContentParent* aOriginProcess) { +#define COHERENCY_ASSERT(condition) \ + if (!(condition)) return "Assertion " #condition " failed"; + + if (mGroup->IsPotentiallyCrossOriginIsolated() != + (Top()->GetOpenerPolicy() == + nsILoadInfo::OPENER_POLICY_SAME_ORIGIN_EMBEDDER_POLICY_REQUIRE_CORP)) { + return "Invalid CrossOriginIsolated state"; + } + + if (aOriginProcess && !IsContent()) { + return "Content cannot create chrome BCs"; + } + + // LoadContext should generally match our opener or parent. + if (IsContent()) { + if (RefPtr<BrowsingContext> opener = GetOpener()) { + COHERENCY_ASSERT(opener->mType == mType); + COHERENCY_ASSERT(opener->mGroup == mGroup); + COHERENCY_ASSERT(opener->mUseRemoteTabs == mUseRemoteTabs); + COHERENCY_ASSERT(opener->mUseRemoteSubframes == mUseRemoteSubframes); + COHERENCY_ASSERT(opener->mPrivateBrowsingId == mPrivateBrowsingId); + COHERENCY_ASSERT( + opener->mOriginAttributes.EqualsIgnoringFPD(mOriginAttributes)); + } + } + if (RefPtr<BrowsingContext> parent = GetParent()) { + COHERENCY_ASSERT(parent->mType == mType); + COHERENCY_ASSERT(parent->mGroup == mGroup); + COHERENCY_ASSERT(parent->mUseRemoteTabs == mUseRemoteTabs); + COHERENCY_ASSERT(parent->mUseRemoteSubframes == mUseRemoteSubframes); + COHERENCY_ASSERT(parent->mPrivateBrowsingId == mPrivateBrowsingId); + COHERENCY_ASSERT( + parent->mOriginAttributes.EqualsIgnoringFPD(mOriginAttributes)); + } + + // UseRemoteSubframes and UseRemoteTabs must match. + if (mUseRemoteSubframes && !mUseRemoteTabs) { + return "Cannot set useRemoteSubframes without also setting useRemoteTabs"; + } + + // Double-check OriginAttributes/Private Browsing + // Chrome browsing contexts must not have a private browsing OriginAttribute + // Content browsing contexts must maintain the equality: + // mOriginAttributes.mPrivateBrowsingId == mPrivateBrowsingId + if (IsChrome()) { + COHERENCY_ASSERT(mOriginAttributes.mPrivateBrowsingId == 0); + } else { + COHERENCY_ASSERT(mOriginAttributes.mPrivateBrowsingId == + mPrivateBrowsingId); + } +#undef COHERENCY_ASSERT + + return nullptr; +} + +void BrowsingContext::Attach(bool aFromIPC, ContentParent* aOriginProcess) { MOZ_DIAGNOSTIC_ASSERT(!mEverAttached); MOZ_DIAGNOSTIC_ASSERT_IF(aFromIPC, aOriginProcess || XRE_IsContentProcess()); mEverAttached = true; @@ -815,25 +882,15 @@ mozilla::ipc::IPCResult BrowsingContext::Attach(bool aFromIPC, MOZ_DIAGNOSTIC_ASSERT(mGroup); MOZ_DIAGNOSTIC_ASSERT(!mIsDiscarded); - if (mGroup->IsPotentiallyCrossOriginIsolated() != - (Top()->GetOpenerPolicy() == - nsILoadInfo::OPENER_POLICY_SAME_ORIGIN_EMBEDDER_POLICY_REQUIRE_CORP)) { - MOZ_DIAGNOSTIC_ASSERT(aFromIPC); - if (aFromIPC) { - auto* actor = aOriginProcess - ? static_cast<mozilla::ipc::IProtocol*>(aOriginProcess) - : static_cast<mozilla::ipc::IProtocol*>( - ContentChild::GetSingleton()); - return IPC_FAIL( - actor, - "Invalid CrossOriginIsolated state in BrowsingContext::Attach call"); - } else { - MOZ_CRASH( - "Invalid CrossOriginIsolated state in BrowsingContext::Attach call"); +#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED + // We'll already have checked this if `aFromIPC` is set before calling this + // function. + if (!aFromIPC) { + if (const char* failure = BrowsingContextCoherencyChecks(aOriginProcess)) { + MOZ_CRASH_UNSAFE_PRINTF("Incoherent BrowsingContext: %s", failure); } } - - AssertCoherentLoadContext(); +#endif // Add ourselves either to our parent or BrowsingContextGroup's child list. // Important: We shouldn't return IPC_FAIL after this point, since the @@ -915,7 +972,6 @@ mozilla::ipc::IPCResult BrowsingContext::Attach(bool aFromIPC, if (XRE_IsParentProcess()) { Canonical()->CanonicalAttach(); } - return IPC_OK(); } void BrowsingContext::Detach(bool aFromIPC) { @@ -1768,40 +1824,6 @@ nsresult BrowsingContext::SetOriginAttributes(const OriginAttributes& aAttrs) { return NS_OK; } -void BrowsingContext::AssertCoherentLoadContext() { -#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED - // LoadContext should generally match our opener or parent. - if (IsContent()) { - if (RefPtr<BrowsingContext> opener = GetOpener()) { - MOZ_DIAGNOSTIC_ASSERT(opener->mType == mType); - MOZ_DIAGNOSTIC_ASSERT(opener->mGroup == mGroup); - MOZ_DIAGNOSTIC_ASSERT(opener->mUseRemoteTabs == mUseRemoteTabs); - MOZ_DIAGNOSTIC_ASSERT(opener->mUseRemoteSubframes == mUseRemoteSubframes); - MOZ_DIAGNOSTIC_ASSERT(opener->mPrivateBrowsingId == mPrivateBrowsingId); - MOZ_DIAGNOSTIC_ASSERT( - opener->mOriginAttributes.EqualsIgnoringFPD(mOriginAttributes)); - } - } - if (RefPtr<BrowsingContext> parent = GetParent()) { - MOZ_DIAGNOSTIC_ASSERT(parent->mType == mType); - MOZ_DIAGNOSTIC_ASSERT(parent->mGroup == mGroup); - MOZ_DIAGNOSTIC_ASSERT(parent->mUseRemoteTabs == mUseRemoteTabs); - MOZ_DIAGNOSTIC_ASSERT(parent->mUseRemoteSubframes == mUseRemoteSubframes); - MOZ_DIAGNOSTIC_ASSERT(parent->mPrivateBrowsingId == mPrivateBrowsingId); - MOZ_DIAGNOSTIC_ASSERT( - parent->mOriginAttributes.EqualsIgnoringFPD(mOriginAttributes)); - } - - // UseRemoteSubframes and UseRemoteTabs must match. - MOZ_DIAGNOSTIC_ASSERT( - !mUseRemoteSubframes || mUseRemoteTabs, - "Cannot set useRemoteSubframes without also setting useRemoteTabs"); - - // Double-check OriginAttributes/Private Browsing - AssertOriginAttributesMatchPrivateBrowsing(); -#endif -} - void BrowsingContext::AssertOriginAttributesMatchPrivateBrowsing() { // Chrome browsing contexts must not have a private browsing OriginAttribute // Content browsing contexts must maintain the equality: ===================================== docshell/base/BrowsingContext.h ===================================== @@ -984,7 +984,18 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { bool aHasPostData); private: - mozilla::ipc::IPCResult Attach(bool aFromIPC, ContentParent* aOriginProcess); + // Assert that this BrowsingContext is coherent relative to related + // BrowsingContexts. This will be run before the BrowsingContext is attached. + // + // A non-null string return value indicates that there was a coherency check + // failure, which will be handled with either a crash or IPC failure. + // + // If provided, `aOriginProcess` is the process which is responsible for the + // creation of this BrowsingContext. + [[nodiscard]] const char* BrowsingContextCoherencyChecks( + ContentParent* aOriginProcess); + + void Attach(bool aFromIPC, ContentParent* aOriginProcess); // Recomputes whether we can execute scripts in this BrowsingContext based on // the value of AllowJavascript() and whether scripts are allowed in the @@ -998,10 +1009,6 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { void AssertOriginAttributesMatchPrivateBrowsing(); - // Assert that the BrowsingContext's LoadContext flags appear coherent - // relative to related BrowsingContexts. - void AssertCoherentLoadContext(); - friend class ::nsOuterWindowProxy; friend class ::nsGlobalWindowOuter; friend class WindowContext; ===================================== mobile/android/android-components/components/support/ktx/src/main/java/mozilla/components/support/ktx/kotlin/String.kt ===================================== @@ -53,6 +53,8 @@ const val MAX_URI_LENGTH = 25000 private const val FILE_PREFIX = "file://" private const val MAX_VALID_PORT = 65_535 +private const val SPACE = " " +private const val UNDERSCORE = "_" /** * Shortens URLs to be more user friendly. @@ -316,7 +318,9 @@ fun String.sanitizeFileName(): String { file.name.replace("\\.\\.+".toRegex(), ".") } else { file.name.replace(".", "") - }.replaceEscapedCharacters() + }.replaceContinuousSpaces() + .replaceEscapedCharacters() + .trim() } /** @@ -324,8 +328,16 @@ fun String.sanitizeFileName(): String { * and is correctly displayed. */ private fun String.replaceEscapedCharacters(): String { - val controlCharactersRegex = "[\\x00-\\x13/*\"?<>:|\\\\]".toRegex() - return replace(controlCharactersRegex, "_") + val escapedCharactersRegex = "[\\x00-\\x13*\"?<>:|\\\\]".toRegex() + return replace(escapedCharactersRegex, UNDERSCORE) +} + +/** + * Replaces continuous spaces with a single space. + */ +private fun String.replaceContinuousSpaces(): String { + val escapedCharactersRegex = "[\\p{Z}\\s]+".toRegex() + return replace(escapedCharactersRegex, SPACE) } /** ===================================== mobile/android/android-components/components/support/ktx/src/test/java/mozilla/components/support/ktx/kotlin/StringTest.kt ===================================== @@ -199,11 +199,11 @@ class StringTest { "acknowledge\u0006signal" to "acknowledge_signal", "bell\u0007sound" to "bell_sound", "back\u0008space" to "back_space", - "horizontal\u0009tab" to "horizontal_tab", - "new\u000Aline" to "new_line", - "vertical\u000Btab" to "vertical_tab", - "form\u000Cfeed" to "form_feed", - "return\u000Dcarriage" to "return_carriage", + "horizontal\u0009tab" to "horizontal tab", + "new\u000Aline" to "new line", + "vertical\u000Btab" to "vertical tab", + "form\u000Cfeed" to "form feed", + "return\u000Dcarriage" to "return carriage", "shift\u000Eout" to "shift_out", "shift\u000Fin" to "shift_in", "escape\u0010data" to "escape_data", View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/689b06… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/689b06… 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 branch maint-13.5a11
by morgan (@morgan) 01 Oct '24

01 Oct '24
morgan pushed new branch maint-13.5a11 at The Tor Project / Applications / tor-browser-build -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/tree/mai… 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.5.6
by morgan (@morgan) 01 Oct '24

01 Oct '24
morgan pushed to branch main at The Tor Project / Applications / mullvad-browser-update-responses Commits: a7b0d4ca by Morgan at 2024-10-01T18:21:08+00:00 release: new version, 13.5.6 - - - - - 29 changed files: - update_1/release/.htaccess - − update_1/release/13.5-13.5.3-linux-x86_64-ALL.xml - − update_1/release/13.5-13.5.3-macos-ALL.xml - − update_1/release/13.5-13.5.3-windows-x86_64-ALL.xml - − update_1/release/13.5.1-13.5.3-linux-x86_64-ALL.xml - − update_1/release/13.5.1-13.5.3-macos-ALL.xml - − update_1/release/13.5.1-13.5.3-windows-x86_64-ALL.xml - + update_1/release/13.5.1-13.5.6-linux-x86_64-ALL.xml - + update_1/release/13.5.1-13.5.6-macos-ALL.xml - + update_1/release/13.5.1-13.5.6-windows-x86_64-ALL.xml - − update_1/release/13.5.2-13.5.3-linux-x86_64-ALL.xml - − update_1/release/13.5.2-13.5.3-macos-ALL.xml - − update_1/release/13.5.2-13.5.3-windows-x86_64-ALL.xml - + update_1/release/13.5.2-13.5.6-linux-x86_64-ALL.xml - + update_1/release/13.5.2-13.5.6-macos-ALL.xml - + update_1/release/13.5.2-13.5.6-windows-x86_64-ALL.xml - + update_1/release/13.5.3-13.5.6-linux-x86_64-ALL.xml - + update_1/release/13.5.3-13.5.6-macos-ALL.xml - + update_1/release/13.5.3-13.5.6-windows-x86_64-ALL.xml - − update_1/release/13.5.3-linux-x86_64-ALL.xml - − update_1/release/13.5.3-macos-ALL.xml - − update_1/release/13.5.3-windows-x86_64-ALL.xml - + update_1/release/13.5.6-linux-x86_64-ALL.xml - + update_1/release/13.5.6-macos-ALL.xml - + update_1/release/13.5.6-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.5.3/ no-update.xml [last] -RewriteRule ^Linux_x86_64-gcc3/13.5/ALL 13.5-13.5.3-linux-x86_64-ALL.xml [last] -RewriteRule ^Linux_x86_64-gcc3/13.5.1/ALL 13.5.1-13.5.3-linux-x86_64-ALL.xml [last] -RewriteRule ^Linux_x86_64-gcc3/13.5.2/ALL 13.5.2-13.5.3-linux-x86_64-ALL.xml [last] -RewriteRule ^Linux_x86_64-gcc3/[^/]+/ALL 13.5.3-linux-x86_64-ALL.xml [last] -RewriteRule ^Linux_x86_64-gcc3/ 13.5.3-linux-x86_64-ALL.xml [last] -RewriteRule ^Darwin_x86_64-gcc3/13.5/ALL 13.5-13.5.3-macos-ALL.xml [last] -RewriteRule ^Darwin_x86_64-gcc3/13.5.1/ALL 13.5.1-13.5.3-macos-ALL.xml [last] -RewriteRule ^Darwin_x86_64-gcc3/13.5.2/ALL 13.5.2-13.5.3-macos-ALL.xml [last] -RewriteRule ^Darwin_x86_64-gcc3/[^/]+/ALL 13.5.3-macos-ALL.xml [last] -RewriteRule ^Darwin_x86_64-gcc3/ 13.5.3-macos-ALL.xml [last] -RewriteRule ^Darwin_aarch64-gcc3/13.5/ALL 13.5-13.5.3-macos-ALL.xml [last] -RewriteRule ^Darwin_aarch64-gcc3/13.5.1/ALL 13.5.1-13.5.3-macos-ALL.xml [last] -RewriteRule ^Darwin_aarch64-gcc3/13.5.2/ALL 13.5.2-13.5.3-macos-ALL.xml [last] -RewriteRule ^Darwin_aarch64-gcc3/[^/]+/ALL 13.5.3-macos-ALL.xml [last] -RewriteRule ^Darwin_aarch64-gcc3/ 13.5.3-macos-ALL.xml [last] -RewriteRule ^WINNT_x86_64-gcc3-x64/13.5/ALL 13.5-13.5.3-windows-x86_64-ALL.xml [last] -RewriteRule ^WINNT_x86_64-gcc3-x64/13.5.1/ALL 13.5.1-13.5.3-windows-x86_64-ALL.xml [last] -RewriteRule ^WINNT_x86_64-gcc3-x64/13.5.2/ALL 13.5.2-13.5.3-windows-x86_64-ALL.xml [last] -RewriteRule ^WINNT_x86_64-gcc3-x64/[^/]+/ALL 13.5.3-windows-x86_64-ALL.xml [last] -RewriteRule ^WINNT_x86_64-gcc3-x64/ 13.5.3-windows-x86_64-ALL.xml [last] +RewriteRule ^[^/]+/13.5.6/ no-update.xml [last] +RewriteRule ^Linux_x86_64-gcc3/13.5.1/ALL 13.5.1-13.5.6-linux-x86_64-ALL.xml [last] +RewriteRule ^Linux_x86_64-gcc3/13.5.2/ALL 13.5.2-13.5.6-linux-x86_64-ALL.xml [last] +RewriteRule ^Linux_x86_64-gcc3/13.5.3/ALL 13.5.3-13.5.6-linux-x86_64-ALL.xml [last] +RewriteRule ^Linux_x86_64-gcc3/[^/]+/ALL 13.5.6-linux-x86_64-ALL.xml [last] +RewriteRule ^Linux_x86_64-gcc3/ 13.5.6-linux-x86_64-ALL.xml [last] +RewriteRule ^Darwin_x86_64-gcc3/13.5.1/ALL 13.5.1-13.5.6-macos-ALL.xml [last] +RewriteRule ^Darwin_x86_64-gcc3/13.5.2/ALL 13.5.2-13.5.6-macos-ALL.xml [last] +RewriteRule ^Darwin_x86_64-gcc3/13.5.3/ALL 13.5.3-13.5.6-macos-ALL.xml [last] +RewriteRule ^Darwin_x86_64-gcc3/[^/]+/ALL 13.5.6-macos-ALL.xml [last] +RewriteRule ^Darwin_x86_64-gcc3/ 13.5.6-macos-ALL.xml [last] +RewriteRule ^Darwin_aarch64-gcc3/13.5.1/ALL 13.5.1-13.5.6-macos-ALL.xml [last] +RewriteRule ^Darwin_aarch64-gcc3/13.5.2/ALL 13.5.2-13.5.6-macos-ALL.xml [last] +RewriteRule ^Darwin_aarch64-gcc3/13.5.3/ALL 13.5.3-13.5.6-macos-ALL.xml [last] +RewriteRule ^Darwin_aarch64-gcc3/[^/]+/ALL 13.5.6-macos-ALL.xml [last] +RewriteRule ^Darwin_aarch64-gcc3/ 13.5.6-macos-ALL.xml [last] +RewriteRule ^WINNT_x86_64-gcc3-x64/13.5.1/ALL 13.5.1-13.5.6-windows-x86_64-ALL.xml [last] +RewriteRule ^WINNT_x86_64-gcc3-x64/13.5.2/ALL 13.5.2-13.5.6-windows-x86_64-ALL.xml [last] +RewriteRule ^WINNT_x86_64-gcc3-x64/13.5.3/ALL 13.5.3-13.5.6-windows-x86_64-ALL.xml [last] +RewriteRule ^WINNT_x86_64-gcc3-x64/[^/]+/ALL 13.5.6-windows-x86_64-ALL.xml [last] +RewriteRule ^WINNT_x86_64-gcc3-x64/ 13.5.6-windows-x86_64-ALL.xml [last] ===================================== update_1/release/13.5-13.5.3-linux-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-linux-x86_64-13.5.3_…" hashFunction="SHA512" hashValue="dc9228d0edf637fe171b3a5f81374cfaa78112877eb9bd8f1617aedb02d58258612eea64dfb6d7a89dff8536089627db40d5be03460529a322d0d391f85f80ca" size="108537331" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-linux-x86_64--13.5-1…" hashFunction="SHA512" hashValue="42a0143d23a3bb94515262449cd6481fc5ef7fb7f20b4d901dc5e6beaf8a46aa2f54e1af2e1227602c57e773cb3ba4707b1e45b4f2973cc319366a70db3d60a1" size="11672332" type="partial"></patch></update></updates> ===================================== update_1/release/13.5-13.5.3-macos-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-macos-13.5.3_ALL.mar" hashFunction="SHA512" hashValue="251a1b6961102a454f1e35645a7fb85a259018801437fd1a0069fd701dee461934a3184378e0648330c931a71e4c6817f049434406b279f6673af06a2140c462" size="115932183" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-macos--13.5-13.5.3_A…" hashFunction="SHA512" hashValue="736be650e6bffc5fa19ccc0424de07672901746004c22553c25e45808952af796f9322aee9c39d77879979df4f4440bb8c01f3d5681e22f971ddf164d6606c9f" size="15466803" type="partial"></patch></update></updates> ===================================== update_1/release/13.5-13.5.3-windows-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-windows-x86_64-13.5.…" hashFunction="SHA512" hashValue="0006e44ff67522342954b0475cffe92d4d7065a47e7c7e2964ce4e88110216923373c163125067b7a8c238dc8ee4650c950b9add295d4c3deac352663e1e5edf" size="90162344" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-windows-x86_64--13.5…" hashFunction="SHA512" hashValue="9793e3aaba128f4a3391b2cd7b0a97f876b8a39211fbeb19c73b37c1002182e93bcd044bf68e0694a508e22cd89227ad12270a4c0985bac2c80ce6cca2d96c14" size="10945176" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.1-13.5.3-linux-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-linux-x86_64-13.5.3_…" hashFunction="SHA512" hashValue="dc9228d0edf637fe171b3a5f81374cfaa78112877eb9bd8f1617aedb02d58258612eea64dfb6d7a89dff8536089627db40d5be03460529a322d0d391f85f80ca" size="108537331" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-linux-x86_64--13.5.1…" hashFunction="SHA512" hashValue="8fb8e294c0db3548f078fce2f693c743923337210797c7a10b627e94cd3b6820b2898188fc3e6131054c90fefe8046744c2db515a0cf7931d9620840f788869f" size="10214120" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.1-13.5.3-macos-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-macos-13.5.3_ALL.mar" hashFunction="SHA512" hashValue="251a1b6961102a454f1e35645a7fb85a259018801437fd1a0069fd701dee461934a3184378e0648330c931a71e4c6817f049434406b279f6673af06a2140c462" size="115932183" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-macos--13.5.1-13.5.3…" hashFunction="SHA512" hashValue="265355cff22dd08d1a3ba2f7a28a91a8bd630836d5a241ab049b8866ce67aaf6e5eb9704baea0709ba4aa792915dc06eb9c02c3b4450466cc2934a3c6ea8494e" size="13834075" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.1-13.5.3-windows-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-windows-x86_64-13.5.…" hashFunction="SHA512" hashValue="0006e44ff67522342954b0475cffe92d4d7065a47e7c7e2964ce4e88110216923373c163125067b7a8c238dc8ee4650c950b9add295d4c3deac352663e1e5edf" size="90162344" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-windows-x86_64--13.5…" hashFunction="SHA512" hashValue="10cdc7ce117160c44b6a1688d28fffb44718575efe57723b8627dd6add73930e8a993fb44a63215f112dfab0a2c4b1895a6210436f00b4a513eaa115043a0914" size="9669788" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.1-13.5.6-linux-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-linux-x86_64-13.5.6_…" hashFunction="SHA512" hashValue="9620c90cabb8bf83af95ba28abceac3632b0f0e9fc04a935ad67d661e58509e8ff45d50295f7fad23cad8b4463097e15a59b821a83ed58280cf697d896a50e4d" size="108542679" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-linux-x86_64--13.5.1…" hashFunction="SHA512" hashValue="f0c40051f0b8110fd39e7f21b6a4cf44fe83b1ba089959235fcfa713359d89bafb384e6e747e945bcc3c6144cb312704f3df7eb2ab62e53c26f18a90def91320" size="10612484" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.1-13.5.6-macos-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-macos-13.5.6_ALL.mar" hashFunction="SHA512" hashValue="b41b05e42b0c74f4a1815dfe6ffbb20ccfee0d22cda6de17c0afb1f3579e30c34f4e0ea1cf6a86d648beb200f54d4a962e2e1cf63329cb025a42594785cc50ff" size="115945715" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-macos--13.5.1-13.5.6…" hashFunction="SHA512" hashValue="72e41c2c46b1ad7356c3b1100f19364b12e02a91dca9569ab5cd7138b9a5c524e52a174c8781117e143796033744c20a9d42efa1ffede6652ddd43638971d001" size="14247375" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.1-13.5.6-windows-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-windows-x86_64-13.5.…" hashFunction="SHA512" hashValue="066692a2f7bd660a8899abb72a1f7e555c66a5927cdc073a7d69480c08e88f19828df09e0da310b9c69c65b026b03ec7f89a3a6bc415c18030d4aa237d006f2a" size="90184748" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-windows-x86_64--13.5…" hashFunction="SHA512" hashValue="0eefada51ca927a67d51544b94a74e7c644893847f3b32f4ae50c17d7ac3c139ead4d1978d25c5ca4bc9997da54633c7af24e7f4f4c19a04e28a38361376f7a8" size="10220268" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.2-13.5.3-linux-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-linux-x86_64-13.5.3_…" hashFunction="SHA512" hashValue="dc9228d0edf637fe171b3a5f81374cfaa78112877eb9bd8f1617aedb02d58258612eea64dfb6d7a89dff8536089627db40d5be03460529a322d0d391f85f80ca" size="108537331" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-linux-x86_64--13.5.2…" hashFunction="SHA512" hashValue="c83637183b14c2c8f7db94489995fa383722d6072e013b31e472919a289bc70973c1369dae75e36b68e4a782fe2a754c0830d5891d19cce0d42ea6cb432d8ba8" size="6252302" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.2-13.5.3-macos-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-macos-13.5.3_ALL.mar" hashFunction="SHA512" hashValue="251a1b6961102a454f1e35645a7fb85a259018801437fd1a0069fd701dee461934a3184378e0648330c931a71e4c6817f049434406b279f6673af06a2140c462" size="115932183" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-macos--13.5.2-13.5.3…" hashFunction="SHA512" hashValue="5af87ba2d3286c871041a0000fef1e29e61eaeca3439fb0610e9257fd1114a93d2cc6797dbdaa4556da1a9fb6dd2815ebfa1d8963340f8250ee1c290d163d27a" size="10054890" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.2-13.5.3-windows-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-windows-x86_64-13.5.…" hashFunction="SHA512" hashValue="0006e44ff67522342954b0475cffe92d4d7065a47e7c7e2964ce4e88110216923373c163125067b7a8c238dc8ee4650c950b9add295d4c3deac352663e1e5edf" size="90162344" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-windows-x86_64--13.5…" hashFunction="SHA512" hashValue="d565447daf652f520cb87e1044669edf291fbf08ee28fe413157a2f730f1db43ff8972306fe6703ec69905c3dce8a79ee54be8777febcdcd8f213ab6c2598610" size="6047450" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.2-13.5.6-linux-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-linux-x86_64-13.5.6_…" hashFunction="SHA512" hashValue="9620c90cabb8bf83af95ba28abceac3632b0f0e9fc04a935ad67d661e58509e8ff45d50295f7fad23cad8b4463097e15a59b821a83ed58280cf697d896a50e4d" size="108542679" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-linux-x86_64--13.5.2…" hashFunction="SHA512" hashValue="4f5bd89ee28b1f4a75647295f97ccaf7a7bda51b63cea098abc74a04edd7f7f96cd4f177e82bf2899f272d89db49b37a125bafa2ba969ea8099630bdf75d4d70" size="7013226" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.2-13.5.6-macos-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-macos-13.5.6_ALL.mar" hashFunction="SHA512" hashValue="b41b05e42b0c74f4a1815dfe6ffbb20ccfee0d22cda6de17c0afb1f3579e30c34f4e0ea1cf6a86d648beb200f54d4a962e2e1cf63329cb025a42594785cc50ff" size="115945715" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-macos--13.5.2-13.5.6…" hashFunction="SHA512" hashValue="d3e2501611221ba8d9eb76eb2ecb523582c2b0e3fb0f3f810a65f6f03350e50affca712a63977c89e87c778ffb6e82b9f523faf6cd47f20cb91397b9f7229a04" size="10602802" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.2-13.5.6-windows-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-windows-x86_64-13.5.…" hashFunction="SHA512" hashValue="066692a2f7bd660a8899abb72a1f7e555c66a5927cdc073a7d69480c08e88f19828df09e0da310b9c69c65b026b03ec7f89a3a6bc415c18030d4aa237d006f2a" size="90184748" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-windows-x86_64--13.5…" hashFunction="SHA512" hashValue="3d423ac467ae74bf8a055fa9db2f252244c82fa4e334f043cfd0822ccbb05d2042c3420dfe684aa1c33a384c12a0b925798b8ecab9f153f813b71019398bb3f4" size="6750018" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.3-13.5.6-linux-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-linux-x86_64-13.5.6_…" hashFunction="SHA512" hashValue="9620c90cabb8bf83af95ba28abceac3632b0f0e9fc04a935ad67d661e58509e8ff45d50295f7fad23cad8b4463097e15a59b821a83ed58280cf697d896a50e4d" size="108542679" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-linux-x86_64--13.5.3…" hashFunction="SHA512" hashValue="b1d2dff541513220b3573eecfdb0afd9c71f4c9521b3601fa61fd0aa507156c5a851434edcc008925a5855b7897c792cc4c65d85283654caef17048a02e4efc4" size="5605850" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.3-13.5.6-macos-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-macos-13.5.6_ALL.mar" hashFunction="SHA512" hashValue="b41b05e42b0c74f4a1815dfe6ffbb20ccfee0d22cda6de17c0afb1f3579e30c34f4e0ea1cf6a86d648beb200f54d4a962e2e1cf63329cb025a42594785cc50ff" size="115945715" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-macos--13.5.3-13.5.6…" hashFunction="SHA512" hashValue="6cddfa8a01e5e0803e786dd5c36614365677dae76886310776374c6fa9ead40e8b99c1d2f3dd88e68929110ae047729be165c42e61031420df9afeba0dc56f0f" size="8307266" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.3-13.5.6-windows-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-windows-x86_64-13.5.…" hashFunction="SHA512" hashValue="066692a2f7bd660a8899abb72a1f7e555c66a5927cdc073a7d69480c08e88f19828df09e0da310b9c69c65b026b03ec7f89a3a6bc415c18030d4aa237d006f2a" size="90184748" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-windows-x86_64--13.5…" hashFunction="SHA512" hashValue="a7de28e4a5b9b9e7a10795be1cd52d38761aa21ae6aace849a74e68787622ebcd4440f5fa27be0e3555571f422347f9dd230f7c4e8633fceaa4cf4c317390ce5" size="5083386" type="partial"></patch></update></updates> ===================================== update_1/release/13.5.3-linux-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-linux-x86_64-13.5.3_…" hashFunction="SHA512" hashValue="dc9228d0edf637fe171b3a5f81374cfaa78112877eb9bd8f1617aedb02d58258612eea64dfb6d7a89dff8536089627db40d5be03460529a322d0d391f85f80ca" size="108537331" type="complete"></patch></update></updates> ===================================== update_1/release/13.5.3-macos-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-macos-13.5.3_ALL.mar" hashFunction="SHA512" hashValue="251a1b6961102a454f1e35645a7fb85a259018801437fd1a0069fd701dee461934a3184378e0648330c931a71e4c6817f049434406b279f6673af06a2140c462" size="115932183" type="complete"></patch></update></updates> ===================================== update_1/release/13.5.3-windows-x86_64-ALL.xml deleted ===================================== @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<updates><update type="minor" displayVersion="13.5.3" appVersion="13.5.3" platformVersion="115.15.0" buildID="20240903073000" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.3" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-windows-x86_64-13.5.…" hashFunction="SHA512" hashValue="0006e44ff67522342954b0475cffe92d4d7065a47e7c7e2964ce4e88110216923373c163125067b7a8c238dc8ee4650c950b9add295d4c3deac352663e1e5edf" size="90162344" type="complete"></patch></update></updates> ===================================== update_1/release/13.5.6-linux-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-linux-x86_64-13.5.6_…" hashFunction="SHA512" hashValue="9620c90cabb8bf83af95ba28abceac3632b0f0e9fc04a935ad67d661e58509e8ff45d50295f7fad23cad8b4463097e15a59b821a83ed58280cf697d896a50e4d" size="108542679" type="complete"></patch></update></updates> ===================================== update_1/release/13.5.6-macos-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-macos-13.5.6_ALL.mar" hashFunction="SHA512" hashValue="b41b05e42b0c74f4a1815dfe6ffbb20ccfee0d22cda6de17c0afb1f3579e30c34f4e0ea1cf6a86d648beb200f54d4a962e2e1cf63329cb025a42594785cc50ff" size="115945715" type="complete"></patch></update></updates> ===================================== update_1/release/13.5.6-windows-x86_64-ALL.xml ===================================== @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<updates><update type="minor" displayVersion="13.5.6" appVersion="13.5.6" platformVersion="115.16.0" buildID="20240930230510" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.5.6" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-windows-x86_64-13.5.…" hashFunction="SHA512" hashValue="066692a2f7bd660a8899abb72a1f7e555c66a5927cdc073a7d69480c08e88f19828df09e0da310b9c69c65b026b03ec7f89a3a6bc415c18030d4aa237d006f2a" size="90184748" type="complete"></patch></update></updates> ===================================== update_1/release/download-linux-x86_64.json ===================================== @@ -1 +1 @@ -{"binary":"https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-linux-x86_64-13.5.3.…","git_tag":"mb-13.5.3-build1","sig":"https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-linux-x86_64-13.5.3.…","version":"13.5.3"} \ No newline at end of file +{"binary":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-linux-x86_64-13.5.6.…","git_tag":"mb-13.5.6-build1","sig":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-linux-x86_64-13.5.6.…","version":"13.5.6"} \ No newline at end of file ===================================== update_1/release/download-macos.json ===================================== @@ -1 +1 @@ -{"binary":"https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-macos-13.5.3.dmg","git_tag":"mb-13.5.3-build1","sig":"https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-macos-13.5.3.dmg.asc","version":"13.5.3"} \ No newline at end of file +{"binary":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-macos-13.5.6.dmg","git_tag":"mb-13.5.6-build1","sig":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-macos-13.5.6.dmg.asc","version":"13.5.6"} \ No newline at end of file ===================================== update_1/release/download-windows-x86_64.json ===================================== @@ -1 +1 @@ -{"binary":"https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-windows-x86_64-13.5.…","git_tag":"mb-13.5.3-build1","sig":"https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-windows-x86_64-13.5.…","version":"13.5.3"} \ No newline at end of file +{"binary":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-windows-x86_64-13.5.…","git_tag":"mb-13.5.6-build1","sig":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-windows-x86_64-13.5.…","version":"13.5.6"} \ 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.5.3/mullvad-browser-linux-x86_64-13.5.3.…","sig":"https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-linux-x86_64-13.5.3.…"}},"macos":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-macos-13.5.3.dmg","sig":"https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-macos-13.5.3.dmg.asc"}},"win64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-windows-x86_64-13.5.…","sig":"https://cdn.mullvad.net/browser/13.5.3/mullvad-browser-windows-x86_64-13.5.…"}}},"tag":"mb-13.5.3-build1","version":"13.5.3"} \ No newline at end of file +{"downloads":{"linux-x86_64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-linux-x86_64-13.5.6.…","sig":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-linux-x86_64-13.5.6.…"}},"macos":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-macos-13.5.6.dmg","sig":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-macos-13.5.6.dmg.asc"}},"win64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-windows-x86_64-13.5.…","sig":"https://cdn.mullvad.net/browser/13.5.6/mullvad-browser-windows-x86_64-13.5.…"}}},"tag":"mb-13.5.6-build1","version":"13.5.6"} \ 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.5.6
by morgan (@morgan) 01 Oct '24

01 Oct '24
morgan pushed to branch main at The Tor Project / Applications / Tor Browser update responses Commits: 90a96463 by Morgan at 2024-10-01T17:49:26+00:00 release: new version, 13.5.6 - - - - - 30 changed files: - update_3/release/.htaccess - − update_3/release/13.5.2-13.5.5-linux-i686-ALL.xml - − update_3/release/13.5.2-13.5.5-linux-x86_64-ALL.xml - − update_3/release/13.5.2-13.5.5-macos-ALL.xml - − update_3/release/13.5.2-13.5.5-windows-i686-ALL.xml - − update_3/release/13.5.2-13.5.5-windows-x86_64-ALL.xml - − update_3/release/13.5.3-13.5.5-linux-i686-ALL.xml - − update_3/release/13.5.3-13.5.5-linux-x86_64-ALL.xml - − update_3/release/13.5.3-13.5.5-macos-ALL.xml - − update_3/release/13.5.3-13.5.5-windows-i686-ALL.xml - − update_3/release/13.5.3-13.5.5-windows-x86_64-ALL.xml - + update_3/release/13.5.3-13.5.6-linux-i686-ALL.xml - + update_3/release/13.5.3-13.5.6-linux-x86_64-ALL.xml - + update_3/release/13.5.3-13.5.6-macos-ALL.xml - + update_3/release/13.5.3-13.5.6-windows-i686-ALL.xml - + update_3/release/13.5.3-13.5.6-windows-x86_64-ALL.xml - − update_3/release/13.5.4-13.5.5-linux-i686-ALL.xml - − update_3/release/13.5.4-13.5.5-linux-x86_64-ALL.xml - − update_3/release/13.5.4-13.5.5-macos-ALL.xml - − update_3/release/13.5.4-13.5.5-windows-i686-ALL.xml - − update_3/release/13.5.4-13.5.5-windows-x86_64-ALL.xml - + update_3/release/13.5.4-13.5.6-linux-i686-ALL.xml - + update_3/release/13.5.4-13.5.6-linux-x86_64-ALL.xml - + update_3/release/13.5.4-13.5.6-macos-ALL.xml - + update_3/release/13.5.4-13.5.6-windows-i686-ALL.xml - + update_3/release/13.5.4-13.5.6-windows-x86_64-ALL.xml - + update_3/release/13.5.5-13.5.6-linux-i686-ALL.xml - + update_3/release/13.5.5-13.5.6-linux-x86_64-ALL.xml - + update_3/release/13.5.5-13.5.6-macos-ALL.xml - + update_3/release/13.5.5-13.5.6-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][tor-browser-128.3.0esr-14.0-1] 2 commits: fixup! Bug 42305: Add script to combine translation files across versions.
by Pier Angelo Vendrame (@pierov) 01 Oct '24

01 Oct '24
Pier Angelo Vendrame pushed to branch tor-browser-128.3.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: 459f1275 by Henry Wilkes at 2024-10-01T16:05:28+01:00 fixup! Bug 42305: Add script to combine translation files across versions. Bug 43156: Add an option to also include strings from a legacy branch. Also, instead of using the tagger date to find the highest version branch, we use version ordering. - - - - - 689b068f by Henry Wilkes at 2024-10-01T16:05:29+01:00 fixup! Add CI for Tor Browser Bug 43156: Also include strings from the legacy branch. - - - - - 2 changed files: - .gitlab/ci/update-translations.yml - tools/torbrowser/l10n/combine-translation-versions.py Changes: ===================================== .gitlab/ci/update-translations.yml ===================================== @@ -28,6 +28,7 @@ combine-en-US-translations: base-browser:base-browser.ftl fenix-torbrowserstringsxml:torbrowser_strings.xml ' + TRANSLATION_INCLUDE_LEGACY: "true" cache: paths: - .cache/pip ===================================== tools/torbrowser/l10n/combine-translation-versions.py ===================================== @@ -67,136 +67,227 @@ def git_lines(git_args: list[str]) -> list[str]: return [line for line in git_text(git_args).split("\n") if line] -def git_file_paths(git_ref: str) -> list[str]: - """Get the full list of file paths found under the given tree. - - :param git_ref: The git reference for the tree to search. - :returns: The found file paths. - """ - return git_lines(["ls-tree", "-r", "--format=%(path)", git_ref]) - - -def matching_path(search_paths: list[str], filename: str) -> str | None: - """Get the matching file path with the given filename, if it exists. - - :param search_paths: The file paths to search through. - :param filename: The file name to match. - :returns: The unique file path with the matching name, or None if no such - match was found. - :throws Exception: If multiple paths shared the same file name. - """ - matching = [path for path in search_paths if os.path.basename(path) == filename] - if not matching: - return None - if len(matching) > 1: - raise Exception("Multiple occurrences of {filename}") - return matching[0] - - -def git_file_content(git_ref: str, path: str | None) -> str | None: - """Get the file content of the specified git blob object. - - :param git_ref: The reference for the tree to find the file under. - :param path: The file path for the object, or None if there is no path. - :returns: The file content, or None if no path was given. - """ - if path is None: - return None - return git_text(["cat-file", "blob", f"{git_ref}:{path}"]) - - -def get_stable_branch(branch_prefix: str) -> str: +class BrowserBranch: + """Represents a browser git branch.""" + + def __init__(self, branch_name: str, is_head: bool = False) -> None: + """Create a new instance. + + :param branch_name: The branch's git name. + :param is_head: Whether the branch matches "HEAD". + """ + version_match = re.match( + r"(?P<prefix>[a-z]+\-browser)\-" + r"(?P<firefox>[0-9]+(?:\.[0-9]+){1,2})esr\-" + r"(?P<browser>[0-9]+\.[05])\-" + r"(?P<number>[0-9]+)$", + branch_name, + ) + + if not version_match: + raise ValueError(f"Unable to parse the version from the ref {branch_name}") + + self.name = branch_name + self.prefix = version_match.group("prefix") + self.browser_version = version_match.group("browser") + self._is_head = is_head + self._ref = "HEAD" if is_head else f"origin/{branch_name}" + + firefox_nums = [int(n) for n in version_match.group("firefox").split(".")] + if len(firefox_nums) == 2: + firefox_nums.append(0) + browser_nums = [int(n) for n in self.browser_version.split(".")] + branch_number = int(version_match.group("number")) + # Prioritise the firefox ESR version, then the browser version then the + # branch number. + self._ordered = ( + firefox_nums[0], + firefox_nums[1], + firefox_nums[2], + browser_nums[0], + browser_nums[1], + branch_number, + ) + + # Minor version for browser is only ever "0" or "5", so we can convert + # the version to an integer. + self._browser_int_version = int(2 * float(self.browser_version)) + + self._file_paths: list[str] | None = None + + def release_below(self, other: "BrowserBranch", num: int) -> bool: + """Determine whether another branch is within range of a previous + browser release. + + The browser versions are expected to increment by "0.5", and a previous + release branch's version is expected to be `num * 0.5` behind the + current one. + + :param other: The branch to compare. + :param num: The number of "0.5" releases behind to test with. + """ + return other._browser_int_version == self._browser_int_version - num + + def __lt__(self, other: "BrowserBranch") -> bool: + return self._ordered < other._ordered + + def __gt__(self, other: "BrowserBranch") -> bool: + return self._ordered > other._ordered + + def get_file_content(self, filename: str) -> str | None: + """Fetch the file content for the named file in this branch. + + :param filename: The name of the file to fetch the content for. + :returns: The file content, or `None` if no file could be found. + """ + if self._file_paths is None: + if not self._is_head: + # Minimal fetch of non-HEAD branch to get the file paths. + # Individual file blobs will be downloaded as needed. + git_run( + ["fetch", "--depth=1", "--filter=blob:none", "origin", self._ref] + ) + self._file_paths = git_lines( + ["ls-tree", "-r", "--format=%(path)", self._ref] + ) + + matching = [ + path for path in self._file_paths if os.path.basename(path) == filename + ] + if not matching: + return None + if len(matching) > 1: + raise Exception(f"Multiple occurrences of {filename}") + + path = matching[0] + + return git_text(["cat-file", "blob", f"{self._ref}:{path}"]) + + +def get_stable_branch( + compare_version: BrowserBranch, +) -> tuple[BrowserBranch, BrowserBranch | None]: """Find the most recent stable branch in the origin repository. - :param branch_prefix: The prefix that the stable branch should have. - :returns: The branch name. + :param compare_version: The development branch to compare against. + :returns: The stable and legacy branches. If no legacy branch is found, + `None` will be returned instead. """ - tag_glob = f"{branch_prefix}-*-build1" + # We search for build1 tags. These are added *after* the rebase of browser + # commits, so the corresponding branch should contain our strings. + # Moreover, we *assume* that the branch with the most recent ESR version + # with such a tag will be used in the *next* stable build in + # tor-browser-build. + tag_glob = f"{compare_version.prefix}-*esr-*-*-build1" + # To speed up, only fetch the tags without blobs. git_run( ["fetch", "--depth=1", "--filter=object:type=tag", "origin", "tag", tag_glob] ) - # Get most recent stable tag. + stable_branches = [] + legacy_branches = [] + stable_annotation_regex = re.compile(r"\bstable\b") + legacy_annotation_regex = re.compile(r"\blegacy\b") + for build_tag, annotation in ( - line.split(" ", 1) - for line in git_lines(["tag", "-n1", "--list", tag_glob, "--sort=-taggerdate"]) + line.split(" ", 1) for line in git_lines(["tag", "-n1", "--list", tag_glob]) ): - if "stable" in annotation: + is_stable = bool(stable_annotation_regex.search(annotation)) + is_legacy = bool(legacy_annotation_regex.search(annotation)) + if not is_stable and not is_legacy: + continue + try: # Branch name is the same as the tag, minus "-build1". - return re.sub(r"-build1$", "", build_tag) - raise Exception("No stable build1 tag found") - - -def get_version_from_branch_name(branch_name: str) -> tuple[str, float]: - """Get the branch prefix and version from its name. - - :param branch_name: The branch to extract from. - :returns: The branch prefix and its version number. - """ - version_match = re.match( - r"([a-z-]+)-[^-]*-([0-9]+\.[05])-", - branch_name, + branch = BrowserBranch(re.sub(r"-build1$", "", build_tag)) + except ValueError: + logger.warning(f"Could not read the version for {build_tag}") + continue + if branch.prefix != compare_version.prefix: + continue + if is_stable: + # Stable can be one release version behind. + # NOTE: In principle, when switching between versions there may be a + # window of time where the development branch has not yet progressed + # to the next "0.5" release, so has the same browser version as the + # stable branch. So we also allow for matching browser versions. + # NOTE: + # 1. The "Will be unused in" message will not make sense, but we do + # not expect string differences in this scenario. + # 2. We do not expect this scenario to last for long. + if not ( + compare_version.release_below(branch, 1) + or compare_version.release_below(branch, 0) + ): + continue + stable_branches.append(branch) + elif is_legacy: + # Legacy can be two release versions behind. + # We also allow for being just one version behind. + if not ( + compare_version.release_below(branch, 2) + or compare_version.release_below(branch, 1) + ): + continue + legacy_branches.append(branch) + + if not stable_branches: + raise Exception("No stable build1 branch found") + + return ( + # Return the stable branch with the highest version. + max(stable_branches), + max(legacy_branches) if legacy_branches else None, ) - if not version_match: - raise ValueError(f"Unable to parse the version from the branch {branch_name}") - return (version_match.group(1), float(version_match.group(2))) +current_branch = BrowserBranch(args.current_branch, is_head=True) +stable_branch, legacy_branch = get_stable_branch(current_branch) -branch_prefix, current_version = get_version_from_branch_name(args.current_branch) +if os.environ.get("TRANSLATION_INCLUDE_LEGACY", "") != "true": + legacy_branch = None -stable_branch = get_stable_branch(branch_prefix) -_, stable_version = get_version_from_branch_name(stable_branch) - -if stable_version > current_version or stable_version < current_version - 0.5: - raise Exception( - f"Version of stable branch {stable_branch} is not within 0.5 of the " - f"current branch {args.current_branch}" - ) - -# Minimal fetch of stable_branch. -# Individual file blobs will be downloaded as needed. -git_run(["fetch", "--depth=1", "--filter=blob:none", "origin", stable_branch]) - -current_file_paths = git_file_paths("HEAD") -old_file_paths = git_file_paths(f"origin/{stable_branch}") - -ci_commit = os.environ.get("CI_COMMIT_SHA", "") -ci_url_base = os.environ.get("CI_PROJECT_URL", "") - -json_data = { - "commit": ci_commit, - "commit-url": f"{ci_url_base}/-/commit/{ci_commit}" - if (ci_commit and ci_url_base) - else "", - "project-path": os.environ.get("CI_PROJECT_PATH", ""), - "current-branch": args.current_branch, - "stable-branch": stable_branch, - "files": [], -} +files_list = [] for translation_branch, name in ( part.strip().split(":", 1) for part in args.filenames.split(" ") if part.strip() ): - current_path = matching_path(current_file_paths, name) - old_path = matching_path(old_file_paths, name) + current_content = current_branch.get_file_content(name) + stable_content = stable_branch.get_file_content(name) - if current_path is None and old_path is None: + if current_content is None and stable_content is None: # No file in either branch. logger.warning(f"{name} does not exist in either the current or stable branch") - elif current_path is None: + elif current_content is None: logger.warning(f"{name} deleted in the current branch") - elif old_path is None: + elif stable_content is None: logger.warning(f"{name} does not exist in the stable branch") content = combine_files( name, - git_file_content("HEAD", current_path), - git_file_content(f"origin/{stable_branch}", old_path), - f"Will be unused in Tor Browser {current_version}!", + current_content, + stable_content, + f"Will be unused in Tor Browser {current_branch.browser_version}!", ) - json_data["files"].append( + + if legacy_branch: + legacy_content = legacy_branch.get_file_content(name) + if ( + legacy_content is not None + and current_content is None + and stable_content is None + ): + logger.warning(f"{name} still exists in the legacy branch") + elif legacy_content is None: + logger.warning(f"{name} does not exist in the legacy branch") + content = combine_files( + name, + content, + legacy_content, + f"Unused in Tor Browser {stable_branch.browser_version}!", + ) + + files_list.append( { "name": name, "branch": translation_branch, @@ -204,5 +295,23 @@ for translation_branch, name in ( } ) + +ci_commit = os.environ.get("CI_COMMIT_SHA", "") +ci_url_base = os.environ.get("CI_PROJECT_URL", "") + +json_data = { + "commit": ci_commit, + "commit-url": f"{ci_url_base}/-/commit/{ci_commit}" + if (ci_commit and ci_url_base) + else "", + "project-path": os.environ.get("CI_PROJECT_PATH", ""), + "current-branch": current_branch.name, + "stable-branch": stable_branch.name, + "files": files_list, +} + +if legacy_branch: + json_data["legacy-branch"] = legacy_branch.name + with open(args.outname, "w") as file: json.dump(json_data, file) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/217346… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/217346… 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.5] Bug 41251: Fix jtorctl.0.2.jar missing dependency
by ma1 (@ma1) 01 Oct '24

01 Oct '24
ma1 pushed to branch maint-13.5 at The Tor Project / Applications / tor-browser-build Commits: ecac6d89 by hackademix at 2024-10-01T14:24:17+02:00 Bug 41251: Fix jtorctl.0.2.jar missing dependency - - - - - 2 changed files: - projects/firefox-android/config - projects/firefox-android/gradle-dependencies-list.txt Changes: ===================================== projects/firefox-android/config ===================================== @@ -19,7 +19,7 @@ var: browser_build: 15 variant: Beta # This should be updated when the list of gradle dependencies is changed. - gradle_dependencies_version: 1 + gradle_dependencies_version: 2 gradle_version: 7.6.1 glean_parser: 7.1.0 as_version: '[% pc("application-services", "version") %]' ===================================== projects/firefox-android/gradle-dependencies-list.txt ===================================== @@ -1,6 +1,6 @@ sha256sum | url -ec3a75bebddbf19ff56a281cf5d1ad146169dcaa0e69d7b14f4aaba2e7775f34 | https://jcenter.bintray.com/net/freehaven/tor/control/jtorctl/0.2/jtorctl-0… -3369726ca2b0e3736c741ff3c22e06f707a1007ff20ccc5b5ba5d0d9a01ead30 | https://jcenter.bintray.com/net/freehaven/tor/control/jtorctl/0.2/jtorctl-0… +ec3a75bebddbf19ff56a281cf5d1ad146169dcaa0e69d7b14f4aaba2e7775f34 | https://build-sources.tbb.torproject.org/jtorctl/jtorctl-0.2.jar +3369726ca2b0e3736c741ff3c22e06f707a1007ff20ccc5b5ba5d0d9a01ead30 | https://build-sources.tbb.torproject.org/jtorctl/jtorctl-0.2.pom caa72885d1ce7979c1d6c59a8b255c6097b770780d4d4da95d56979a348646cd | https://maven.google.com/androidx/activity/activity-compose/1.7.0/activity-… f7a29bcba338575dcf89a553cff9cfad3f140340eaf2b56fd0193244da602c0a | https://maven.google.com/androidx/activity/activity-compose/1.7.0/activity-… 90f32e60dcb83add1aff051ee8709023123d524cc3f6390fff6a4a31c20d9798 | https://maven.google.com/androidx/activity/activity-compose/1.7.0/activity-… View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/e… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/e… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-128.3.0esr-14.0-1] 4 commits: Mullvad Browser strings
by Pier Angelo Vendrame (@pierov) 01 Oct '24

01 Oct '24
Pier Angelo Vendrame pushed to branch mullvad-browser-128.3.0esr-14.0-1 at The Tor Project / Applications / Mullvad Browser Commits: cbadd0c5 by Henry Wilkes at 2024-10-01T09:26:25+01:00 Mullvad Browser strings This commit adds strings needed by the following Mullvad Browser patches. - - - - - 96e5e78f by Henry Wilkes at 2024-10-01T09:26:26+01:00 fixup! MB 37: Customization for the about dialog MB 349: Merge Fluent files into one. - - - - - e0227da3 by Henry Wilkes at 2024-10-01T09:26:27+01:00 fixup! MB 39: Add home page about:mullvad-browser MB 349: Merge Fluent files into one. - - - - - 6243c664 by Henry Wilkes at 2024-10-01T09:26:28+01:00 fixup! MB 63: Customize some about pages for Mullvad Browser MB 349: Merge Fluent files into one. - - - - - 11 changed files: - browser/base/content/aboutDialog.xhtml - browser/components/mullvad-browser/content/aboutMullvadBrowser.xhtml - browser/components/preferences/preferences.xhtml - − browser/locales/en-US/browser/aboutDialogMullvad.ftl - − browser/locales/en-US/browser/mullvad-browser/preferences.ftl - toolkit/content/aboutRightsMullvad.xhtml - toolkit/content/aboutTelemetryMullvad.xhtml - − toolkit/locales/en-US/toolkit/about/aboutRightsMullvad.ftl - − toolkit/locales/en-US/toolkit/about/aboutTelemetryMullvad.ftl - browser/locales/en-US/browser/mullvad-browser/aboutMullvadBrowser.ftl → toolkit/locales/en-US/toolkit/global/mullvad-browser.ftl - tools/lint/fluent-lint/exclusions.yml Changes: ===================================== browser/base/content/aboutDialog.xhtml ===================================== @@ -37,7 +37,7 @@ <html:link rel="localization" href="branding/brand.ftl"/> <html:link rel="localization" href="browser/aboutDialog.ftl"/> <html:link rel="localization" href="toolkit/global/base-browser.ftl"/> - <html:link rel="localization" href="browser/aboutDialogMullvad.ftl"/> + <html:link rel="localization" href="toolkit/global/mullvad-browser.ftl"/> </linkset> <html:div id="aboutDialogContainer"> ===================================== browser/components/mullvad-browser/content/aboutMullvadBrowser.xhtml ===================================== @@ -17,10 +17,7 @@ /> <link rel="localization" href="branding/brand.ftl" /> <link rel="localization" href="browser/newtab/newtab.ftl" /> - <link - rel="localization" - href="browser/mullvad-browser/aboutMullvadBrowser.ftl" - /> + <link rel="localization" href="toolkit/global/mullvad-browser.ftl" /> <script src="chrome://browser/content/mullvad-browser/aboutMullvadBrowser.js"></script> </head> ===================================== browser/components/preferences/preferences.xhtml ===================================== @@ -80,7 +80,7 @@ <link rel="localization" href="security/certificates/deviceManager.ftl"/> <link rel="localization" href="toolkit/updates/history.ftl"/> <link rel="localization" href="toolkit/global/base-browser.ftl"/> - <link rel="localization" href="browser/mullvad-browser/preferences.ftl"/> + <link rel="localization" href="toolkit/global/mullvad-browser.ftl"/> <link rel="shortcut icon" href="chrome://global/skin/icons/settings.svg"/> ===================================== browser/locales/en-US/browser/aboutDialogMullvad.ftl deleted ===================================== @@ -1,11 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# 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/. - -## Variables -## $emailAddress (String) - The email address of Mullvad's support - -mullvad-about-desc = { -brand-short-name } is a privacy-focused web browser developed in collaboration between <label data-l10n-name="mullvad-about-mullvadLink">Mullvad VPN</label> and the <label data-l10n-name="mullvad-about-torProjectLink">Tor Project</label>. It’s produced to minimize tracking and fingerprinting. -mullvad-about-readMore = Read more -mullvad-about-feedback2 = Help & feedback: { $emailAddress } -mullvad-about-telemetryLink = Telemetry ===================================== browser/locales/en-US/browser/mullvad-browser/preferences.ftl deleted ===================================== @@ -1,2 +0,0 @@ -home-mode-choice-mullvad = - .label = { -brand-product-name } Home ===================================== toolkit/content/aboutRightsMullvad.xhtml ===================================== @@ -21,7 +21,7 @@ /> <link rel="localization" href="branding/brand.ftl" /> <link rel="localization" href="toolkit/about/aboutRights.ftl" /> - <link rel="localization" href="toolkit/about/aboutRightsMullvad.ftl" /> + <link rel="localization" href="toolkit/global/mullvad-browser.ftl" /> </head> <body id="your-rights" class="aboutPageWideContainer"> ===================================== toolkit/content/aboutTelemetryMullvad.xhtml ===================================== @@ -20,7 +20,7 @@ type="text/css" /> <link rel="localization" href="branding/brand.ftl" /> - <link rel="localization" href="toolkit/about/aboutTelemetryMullvad.ftl" /> + <link rel="localization" href="toolkit/global/mullvad-browser.ftl" /> </head> <body id="your-rights" class="aboutPageWideContainer"> ===================================== toolkit/locales/en-US/toolkit/about/aboutRightsMullvad.ftl deleted ===================================== @@ -1,10 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# 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/. - -rights-mullvad-intro = { -brand-short-name } is free and open source software. -rights-mullvad-you-should-know = There are a few things you should know: -rights-mullvad-trademarks = - You are not granted any trademark rights or licenses to the trademarks of - the { -brand-short-name } or any party, including without limitation the - { -brand-short-name } name or logo. ===================================== toolkit/locales/en-US/toolkit/about/aboutTelemetryMullvad.ftl deleted ===================================== @@ -1,7 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# 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/. - - -telemetry-title = Telemetry Information -telemetry-description = Telemetry is disabled in { -brand-short-name }. ===================================== browser/locales/en-US/browser/mullvad-browser/aboutMullvadBrowser.ftl → toolkit/locales/en-US/toolkit/global/mullvad-browser.ftl ===================================== @@ -1,3 +1,18 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# 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/. + +## About Mullvad browser dialog. + +mullvad-about-desc = { -brand-short-name } is a privacy-focused web browser developed in collaboration between <label data-l10n-name="mullvad-about-mullvadLink">Mullvad VPN</label> and the <label data-l10n-name="mullvad-about-torProjectLink">Tor Project</label>. It’s produced to minimize tracking and fingerprinting. +mullvad-about-readMore = Read more +# Variables +# $emailAddress (String) - The email address of Mullvad's support +mullvad-about-feedback2 = Help & feedback: { $emailAddress } +mullvad-about-telemetryLink = Telemetry + +## Mullvad browser home page. + about-mullvad-browser-heading = { -brand-product-name } about-mullvad-browser-developed-by = Developed in collaboration between the <a data-l10n-name="tor-project-link">Tor Project</a> and <a data-l10n-name="mullvad-vpn-link">Mullvad VPN</a> about-mullvad-browser-use-vpn = Get more privacy by using the browser <a data-l10n-name="with-vpn-link">with Mullvad VPN</a>. @@ -8,6 +23,21 @@ about-mullvad-browser-learn-more = Curious to learn more about the browser? <a d # $version (String) - The new browser version. about-mullvad-browser-update-message = { -brand-short-name } has been updated to { $version }. <a data-l10n-name="update-link">See what’s new</a> -## Deprecated. To be removed when 13.5 becomes stable. +## Home preferences. + +home-mode-choice-mullvad = + .label = { -brand-product-name } Home + +## about:rights page. + +rights-mullvad-intro = { -brand-short-name } is free and open source software. +rights-mullvad-you-should-know = There are a few things you should know: +rights-mullvad-trademarks = + You are not granted any trademark rights or licenses to the trademarks of + the { -brand-short-name } or any party, including without limitation the + { -brand-short-name } name or logo. + +## about:telemetry page. -about-mullvad-browser-page-title = { -brand-product-name } Home +telemetry-title = Telemetry Information +telemetry-description = Telemetry is disabled in { -brand-short-name }. ===================================== tools/lint/fluent-lint/exclusions.yml ===================================== @@ -87,7 +87,6 @@ ID01: # The webext-perms-description-* IDs are generated programmatically # from permission names - toolkit/locales/en-US/toolkit/global/extensionPermissions.ftl - - browser/locales/en-US/browser/aboutDialogMullvad.ftl ID02: messages: # browser/components/ion/content/ion.ftl View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/56… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/56… 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.5.6-build1
by ma1 (@ma1) 01 Oct '24

01 Oct '24
ma1 pushed new tag mb-13.5.6-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.5.6-build1
by ma1 (@ma1) 01 Oct '24

01 Oct '24
ma1 pushed new tag tbb-13.5.6-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
  • ← Newer
  • 1
  • ...
  • 26
  • 27
  • 28
  • 29
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.