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 -----
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
tbb-commits@lists.torproject.org

  • 1 participants
  • 20996 discussions
[Git][tpo/applications/tor-browser-build][main] Update create-blog-post script
by morgan (@morgan) 27 Jan '26

27 Jan '26
morgan pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: e75179ba by Morgan at 2026-01-27T11:12:07+00:00 Update create-blog-post script - move the alpha-channel reminder closer to top of blog post - link to the Future of Tor Browser Alpha blog-post in the reminder - - - - - 1 changed file: - tools/signing/create-blog-post Changes: ===================================== tools/signing/create-blog-post ===================================== @@ -15,13 +15,17 @@ then lead=../../../assets/static/images/blog/tor-browser-stable.png title="New Release: Tor Browser $tbb_version" download_page='https://www.torproject.org/download/' - reminder='' + alpha_reminder='' else blog_dir_base="new-alpha-release-tor-browser" lead=../../../assets/static/images/blog/tor-browser-alpha.png title="New Alpha Release: Tor Browser $tbb_version" download_page='https://www.torproject.org/download/alpha/' - reminder="⚠️ **Reminder**: Tor Browser Alpha release channel is for [testing only](https://community.torproject.org/user-research/become-tester/). If you are at risk or need strong anonymity, stick with the [stable release channel](https://www.torproject.org/download/)." + alpha_reminder="⚠️ **Reminder**: The Tor Browser Alpha release-channel is for [testing only](https://community.torproject.org/user-research/become-tester/). As such, Tor Browser Alpha is not intended for general use because it is more likely to include bugs affecting usability, security, and privacy. + +Moreover, Tor Browser Alphas are now based on Firefox's betas. Please read more about this important change in the [Future of Tor Browser Alpha](https://blog.torproject.org/future-of-tor-browser-alpha/) blog post. + +If you are an at-risk user, require strong anonymity, or just want a reliably-working browser, please stick with the [stable release channel](https://www.torproject.org/download/)." fi blog_dir="$content_dir/$blog_dir_base-"$(echo $tbb_version | sed 's/\.//g') @@ -49,16 +53,17 @@ releases summary: Tor Browser $tbb_version is now available from the Tor Browser download page and also from our distribution directory. --- body: + Tor Browser $tbb_version is now available from the [Tor Browser download page]($download_page) and also from our [distribution directory](https://www.torproject.org/dist/torbrowser/$tbb_version/). This version includes important [security updates](https://www.mozilla.org/en-US/security/advisories/) to Firefox. +$alpha_reminder + ## Send us your feedback If you find a bug or have a suggestion for how we could improve this release, [please let us know](https://support.torproject.org/misc/bug-or-feedback/). -$reminder - ## Full changelog EOF 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/tor-browser][tor-browser-140.7.0esr-15.0-1] fixup! [android] Modify add-on support
by ma1 (@ma1) 26 Jan '26

26 Jan '26
ma1 pushed to branch tor-browser-140.7.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 2b6f6d20 by hackademix at 2026-01-26T20:50:45+01:00 fixup! [android] Modify add-on support TB 44533: Install bundled NoScript extension at least once per build install - - - - - 3 changed files: - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/TorBrowserFeatures.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt - mobile/android/fenix/app/src/main/res/values/preference_keys.xml Changes: ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/TorBrowserFeatures.kt ===================================== @@ -115,15 +115,19 @@ object TorBrowserFeatures { ) } /** - * Install NoScript as a user WebExtension if we have not already done so. + * Install NoScript if we have not done it yet for this browser version. * AMO signature is checked, but automatic updates still need to be enabled. */ - if (!settings.noscriptInstalled) { + val extensionsVersion = + org.mozilla.geckoview.BuildConfig.MOZ_APP_VERSION + "-" + + org.mozilla.geckoview.BuildConfig.MOZ_APP_BUILDID + "-" + + org.mozilla.fenix.BuildConfig.VCS_HASH + if (settings.extensionsVersion != extensionsVersion) { installNoScript( context, runtime, onSuccess = { - settings.noscriptInstalled = true + settings.extensionsVersion = extensionsVersion logger.debug("NoScript extension was installed successfully") }, onError = { throwable -> ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt ===================================== @@ -2151,14 +2151,9 @@ class Settings(private val appContext: Context) : PreferencesHolder { default = false, ) - var noscriptInstalled by booleanPreference( - appContext.getPreferenceKey(R.string.pref_key_noscript_installed), - default = false - ) - - var noscriptUpdated by intPreference( - appContext.getPreferenceKey(R.string.pref_key_noscript_updated), - default = 0 + var extensionsVersion by stringPreference( + appContext.getPreferenceKey(R.string.pref_key_extensions_version), + default = "" ) var httpsEverywhereRemoved by booleanPreference( ===================================== mobile/android/fenix/app/src/main/res/values/preference_keys.xml ===================================== @@ -475,8 +475,7 @@ <string name="pref_key_setup_step_theme" translatable="false">pref_key_setup_step_theme</string> <string name="pref_key_setup_step_extensions" translatable="false">pref_key_setup_step_extensions</string> - <string name="pref_key_noscript_installed" translatable="false">pref_key_noscript_installed</string> - <string name="pref_key_noscript_updated" translatable="false">pref_key_noscript_updated</string> + <string name="pref_key_extensions_version" translatable="false">pref_key_extensions_version</string> <string name="pref_key_https_everywhere_removed" translatable="false">pref_key_https_everywhere_removed</string> <!-- Security Level Settings --> View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/2b6f6d2… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/2b6f6d2… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-147.0a1-16.0-2] fixup! [android] Modify add-on support
by ma1 (@ma1) 26 Jan '26

26 Jan '26
ma1 pushed to branch tor-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: 3aaba973 by hackademix at 2026-01-26T20:40:28+01:00 fixup! [android] Modify add-on support TB 44533: Install bundled NoScript extension at least once per build install - - - - - 3 changed files: - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/TorBrowserFeatures.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt - mobile/android/fenix/app/src/main/res/values/preference_keys.xml Changes: ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/TorBrowserFeatures.kt ===================================== @@ -115,15 +115,19 @@ object TorBrowserFeatures { ) } /** - * Install NoScript as a user WebExtension if we have not already done so. + * Install NoScript if we have not done it yet for this browser version. * AMO signature is checked, but automatic updates still need to be enabled. */ - if (!settings.noscriptInstalled) { + val extensionsVersion = + org.mozilla.geckoview.BuildConfig.MOZ_APP_VERSION + "-" + + org.mozilla.geckoview.BuildConfig.MOZ_APP_BUILDID + "-" + + org.mozilla.fenix.BuildConfig.VCS_HASH + if (settings.extensionsVersion != extensionsVersion) { installNoScript( context, runtime, onSuccess = { - settings.noscriptInstalled = true + settings.extensionsVersion = extensionsVersion logger.debug("NoScript extension was installed successfully") }, onError = { throwable -> ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt ===================================== @@ -2481,14 +2481,9 @@ class Settings( default = false, ) - var noscriptInstalled by booleanPreference( - appContext.getPreferenceKey(R.string.pref_key_noscript_installed), - default = false - ) - - var noscriptUpdated by intPreference( - appContext.getPreferenceKey(R.string.pref_key_noscript_updated), - default = 0 + var extensionsVersion by stringPreference( + appContext.getPreferenceKey(R.string.pref_key_extensions_version), + default = "" ) var httpsEverywhereRemoved by booleanPreference( ===================================== mobile/android/fenix/app/src/main/res/values/preference_keys.xml ===================================== @@ -523,8 +523,7 @@ <string name="pref_key_tab_manager_enhancements" translatable="false">pref_key_tab_manager_enhancements</string> <string name="pref_key_tab_manager_opening_animation" translatable="false">pref_key_tab_manager_opening_animation</string> - <string name="pref_key_noscript_installed" translatable="false">pref_key_noscript_installed</string> - <string name="pref_key_noscript_updated" translatable="false">pref_key_noscript_updated</string> + <string name="pref_key_extensions_version" translatable="false">pref_key_extensions_version</string> <string name="pref_key_https_everywhere_removed" translatable="false">pref_key_https_everywhere_removed</string> <!-- Security Level Settings --> View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/3aaba97… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/3aaba97… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-147.0a1-16.0-2] fixup! TB 42655 [android]: Implement "New circuit for this site" on Android
by Dan Ballard (@dan) 26 Jan '26

26 Jan '26
Dan Ballard pushed to branch tor-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: c7867cc3 by clairehurst at 2026-01-26T08:13:43-08:00 fixup! TB 42655 [android]: Implement "New circuit for this site" on Android Bug 44523: New circuit seems to have disappeared from 147 on Android - - - - - 5 changed files: - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/MenuDialogFragment.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MainMenu.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarMenuController.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarMenu.kt Changes: ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/MenuDialogFragment.kt ===================================== @@ -117,6 +117,9 @@ import org.mozilla.fenix.webcompat.middleware.DefaultWebCompatReporterRetrievalS import org.mozilla.fenix.webcompat.middleware.WebCompatInfoDeserializer import com.google.android.material.R as materialR +import mozilla.components.browser.engine.gecko.GeckoEngineSession +import android.util.Log + // EXPANDED_MIN_RATIO is used for BottomSheetBehavior.halfExpandedRatio(). // That value needs to be less than the PEEK_HEIGHT. // If EXPANDED_MIN_RATIO is greater than the PEEK_HEIGHT, then there will be @@ -785,6 +788,13 @@ class MenuDialogFragment : BottomSheetDialogFragment() { }, ) }, + onNewCircuitButtonClick = { + components.core.store.state.selectedTab?.let { + (it.engineState.engineSession as GeckoEngineSession).newTorCircuit() + components.useCases.sessionUseCases.reload.invoke(it.id) + dismiss() + } ?: Log.e("MenuDialogFragment", "selectedTab was null, tab and tor circuit not refreshed") + }, ) } ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MainMenu.kt ===================================== @@ -169,6 +169,7 @@ fun MainMenu( extensionsMenuItemDescription: String?, moreSettingsSubmenu: @Composable () -> Unit, extensionSubmenu: @Composable () -> Unit, + onNewCircuitButtonClick: () -> Unit, ) { MenuFrame( contentModifier = Modifier @@ -290,6 +291,7 @@ fun MainMenu( extensionsMenuItemDescription = extensionsMenuItemDescription, moreSettingsSubmenu = moreSettingsSubmenu, extensionSubmenu = extensionSubmenu, + onNewCircuitButtonClick = onNewCircuitButtonClick, ) } @@ -363,6 +365,7 @@ private fun ToolsAndActionsMenuGroup( extensionsMenuItemDescription: String?, moreSettingsSubmenu: @Composable () -> Unit, extensionSubmenu: @Composable () -> Unit, + onNewCircuitButtonClick: (() -> Unit)?, ) { MenuGroup { val labelId = R.string.browser_menu_desktop_site @@ -380,6 +383,12 @@ private fun ToolsAndActionsMenuGroup( menuItemState = if (isPdf) MenuItemState.DISABLED else MenuItemState.ENABLED } + MenuItem( + label = stringResource(R.string.library_new_circuit), + beforeIconPainter = painterResource(R.drawable.new_circuit), + onClick = onNewCircuitButtonClick, + ) + if (isBookmarked) { MenuItem( label = stringResource(id = R.string.browser_menu_edit_bookmark), @@ -764,6 +773,7 @@ private fun MenuDialogPreview() { onShareButtonClick = {}, moreSettingsSubmenu = {}, extensionSubmenu = {}, + onNewCircuitButtonClick = {}, ) } } @@ -853,6 +863,7 @@ private fun MenuDialogPrivatePreview( onWebExtensionMenuItemClick = {}, ) }, + onNewCircuitButtonClick = {}, ) } } ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarMenuController.kt ===================================== @@ -453,6 +453,7 @@ class DefaultBrowserToolbarMenuController( navController.navigateSafe(R.id.browserFragment, directions) } + // Remove once moz deletes this old UI (Toolbar Menu is being replaced by MainMenu) ToolbarMenu.Item.NewTorCircuit -> { currentSession?.let { sessionUseCases.reload.invoke(it.id) @@ -612,6 +613,7 @@ class DefaultBrowserToolbarMenuController( ), ) + // Remove once moz deletes this old UI (Toolbar Menu is being replaced by MainMenu) ToolbarMenu.Item.NewTorCircuit -> { /* Tor doesn't use telemetry and therefore this doesn't need to be implemented */ } ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt ===================================== @@ -228,6 +228,7 @@ open class DefaultToolbarMenu( onItemTapped.invoke(ToolbarMenu.Item.NewTab) } + // Remove once moz deletes this old UI (Toolbar Menu is being replaced by MainMenu) private val newCircuitItem = BrowserMenuImageText( context.getString(R.string.library_new_circuit), R.drawable.new_circuit, @@ -409,6 +410,7 @@ open class DefaultToolbarMenu( listOfNotNull( if (shouldUseBottomToolbar) null else menuToolbar, newTabItem, + // Remove once moz deletes this old UI (Toolbar Menu is being replaced by MainMenu) BrowserMenuDivider(), newCircuitItem, BrowserMenuDivider(), ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarMenu.kt ===================================== @@ -70,6 +70,7 @@ interface ToolbarMenu { object Passwords : Item() object Downloads : Item() object NewTab : Item() + // Remove once moz deletes this old UI (Toolbar Menu is being replaced by MainMenu) object NewTorCircuit : Item() } View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c7867cc… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c7867cc… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-147.0a1-16.0-2] fixup! BB 43564: Modify ./mach bootstrap for Base Browser
by brizental (@brizental) 26 Jan '26

26 Jan '26
brizental pushed to branch tor-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: 2bd84cd7 by Beatriz Rizental at 2026-01-26T16:12:43+01:00 fixup! BB 43564: Modify ./mach bootstrap for Base Browser - - - - - 1 changed file: - build/moz.configure/bootstrap.configure Changes: ===================================== build/moz.configure/bootstrap.configure ===================================== @@ -198,7 +198,7 @@ def bootstrap_path(path, **kwargs): path_prefix = path_parts.pop(0) # Small hack because extensions are inside the browser folder. - if path_parts[0] in ("noscript", ): + if path_parts[0] in ("noscript",): path_prefix = "browser" def try_tbb_bootstrap(exists): View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/2bd84cd… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/2bd84cd… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-147.0a1-16.0-2] TB 41822: Hide the default browser settings.
by henry (@henry) 26 Jan '26

26 Jan '26
henry pushed to branch tor-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: 95c3241f by Henry Wilkes at 2026-01-26T14:59:34+00:00 TB 41822: Hide the default browser settings. - - - - - 1 changed file: - browser/components/preferences/main.js Changes: ===================================== browser/components/preferences/main.js ===================================== @@ -1187,6 +1187,10 @@ const DefaultBrowserHelper = { * @type {boolean} */ get canCheck() { + if (AppConstants.BASE_BROWSER_VERSION) { + // Disabled for Tor Browser. tor-browser#44343 and tor-browser#41822. + return false; + } return ( this.shellSvc && /** View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/95c3241… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/95c3241… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-147.0a1-16.0-2] fixup! TB 43564: Modify ./mach bootstrap for Tor Browser
by brizental (@brizental) 26 Jan '26

26 Jan '26
brizental pushed to branch tor-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: 2241fb56 by Beatriz Rizental at 2026-01-26T11:27:33-03:00 fixup! TB 43564: Modify ./mach bootstrap for Tor Browser Function name update and reformatting - - - - - 1 changed file: - python/mozbuild/mozbuild/backend/base.py Changes: ===================================== python/mozbuild/mozbuild/backend/base.py ===================================== @@ -282,23 +282,12 @@ class BuildBackend(LoggingMixin): if app == "mobile/android": # Set up NoScript extension # We put it in the srcdir... It will be moved to the APK in the gradle build. - if noscript_location: - noscript_target = ( - Path(config.topsrcdir) - / "mobile/android/fenix/app/src/main/assets/extensions" - / noscript_target_filename - ) - self.log( - logging.INFO, - "_setup_tor_browser_environment", - { - "noscript_location": noscript_location, - "noscript_target": str(noscript_target), - }, - "Creating symlink for NoScript from {noscript_location} to {noscript_target}", - ) - - _infallible_symlink(noscript_location, noscript_target) + self._setup_extension_symlink( + noscript_location, + noscript_target_filename, + Path(config.topsrcdir) + / "mobile/android/fenix/app/src/main/assets/extensions", + ) if app == "browser": tbdir = Path(config.topobjdir) / "dist" / "bin" @@ -362,13 +351,15 @@ class BuildBackend(LoggingMixin): paths["tor_config"].mkdir(parents=True, exist_ok=True) for file in ["geoip", "geoip6", "torrc-defaults"]: target = paths["tor_config"] / file - _infallible_symlink(expert_bundle_location / "data" / file, target) + self._create_or_replace_symlink( + expert_bundle_location / "data" / file, target + ) # Set up Conjure documentation conjust_docs_location = paths["docs"] / "conjure" conjust_docs_location.mkdir(parents=True, exist_ok=True) conjure_readme = conjust_docs_location / "README.CONJURE.md" - _infallible_symlink( + self._create_or_replace_symlink( expert_bundle_location / "tor/pluggable_transports/README.CONJURE.md", conjure_readme, @@ -385,21 +376,21 @@ class BuildBackend(LoggingMixin): # We only want the PT executables. if os.access(file, os.X_OK) or file.suffix.lower() == ".exe": target = pluggable_transports_target / file.name - _infallible_symlink(file, target) + self._create_or_replace_symlink(file, target) # Setup Tor binary for item in Path(expert_bundle_location / "tor").iterdir(): target = paths["tor_bin"] / item.name if item.is_file(): - _infallible_symlink(item, target) + self._create_or_replace_symlink(item, target) # Set up licenses licenses_location = paths["docs"] / "Licenses" licenses_location.mkdir(parents=True, exist_ok=True) for item in (expert_bundle_location / "docs").iterdir(): target = licenses_location / item.name - _infallible_symlink(item, target) + self._create_or_replace_symlink(item, target) def post_build(self, config, output, jobs, verbose, status): """Called late during 'mach build' execution, after `build(...)` has finished. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/2241fb5… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/2241fb5… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-147.0a1-16.0-2] fixup! BB 43564: Modify ./mach bootstrap for Base Browser
by brizental (@brizental) 26 Jan '26

26 Jan '26
brizental pushed to branch tor-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: b447dfc5 by Beatriz Rizental at 2026-01-26T11:21:23-03:00 fixup! BB 43564: Modify ./mach bootstrap for Base Browser Generalize extension symlinking code. - - - - - 3 changed files: - build/moz.configure/basebrowser-resources.configure - build/moz.configure/bootstrap.configure - python/mozbuild/mozbuild/backend/base.py Changes: ===================================== build/moz.configure/basebrowser-resources.configure ===================================== @@ -27,7 +27,7 @@ option( "noscript", no_unpack=True, when=depends("--with-noscript")(lambda x: not x) ), ) -@checking("for noscript") +@checking("for noscript extension") @imports(_from="pathlib", _import="Path") def noscript(value, mozbuild_state_path, _bootstrapped): if value: ===================================== build/moz.configure/bootstrap.configure ===================================== @@ -197,8 +197,8 @@ def bootstrap_path(path, **kwargs): if path_parts[0] == "clang-tools": path_prefix = path_parts.pop(0) - # Small hack because noscript is inside the browser folder. - if path_parts[0] == "noscript": + # Small hack because extensions are inside the browser folder. + if path_parts[0] in ("noscript", ): path_prefix = "browser" def try_tbb_bootstrap(exists): ===================================== python/mozbuild/mozbuild/backend/base.py ===================================== @@ -243,29 +243,42 @@ class BuildBackend(LoggingMixin): with open(mozpath.join(dir, ".purgecaches"), "w") as f: f.write("\n") - def _setup_tor_browser_environment(self, config): + def _create_or_replace_symlink(self, src, dst): + try: + os.symlink(src, dst) + except OSError as e: + if e.errno == errno.EEXIST: + # If the symlink already exists, remove it and try again. + os.remove(dst) + os.symlink(src, dst) + else: + return + + def _setup_extension_symlink(self, location, target_filename, exts_path): + if not location: + return + + target = exts_path / target_filename + + self.log( + logging.INFO, + "_setup_extension_symlink", + { + "location": location, + "target": str(target), + }, + "Creating symlink for extension from {location} to {target}", + ) + + exts_path.mkdir(parents=True, exist_ok=True) + self._create_or_replace_symlink(location, target) + + def _setup_base_browser_environment(self, config): app = config.substs["MOZ_BUILD_APP"] noscript_target_filename = "{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi" noscript_location = config.substs.get("NOSCRIPT") - def _infallible_symlink(src, dst): - try: - os.symlink(src, dst) - except OSError as e: - if e.errno == errno.EEXIST: - # If the symlink already exists, remove it and try again. - os.remove(dst) - os.symlink(src, dst) - else: - self.log( - logging.ERROR, - "_setup_tor_browser_environment", - {}, - "Error creating symlink.", - ) - return - if app == "mobile/android": # Set up NoScript extension # We put it in the srcdir... It will be moved to the APK in the gradle build. @@ -312,7 +325,7 @@ class BuildBackend(LoggingMixin): if fonts_location: self.log( logging.INFO, - "_setup_tor_browser_environment", + "_setup_base_browser_environment", { "fonts_location": fonts_location, "fonts_target": str(paths["fonts"]), @@ -322,23 +335,13 @@ class BuildBackend(LoggingMixin): for file in Path(fonts_location).iterdir(): target = paths["fonts"] / file.name - _infallible_symlink(file, target) + self._create_or_replace_symlink(file, target) - # Set up NoScript extension - if noscript_location: - noscript_target = paths["exts"] / noscript_target_filename - self.log( - logging.INFO, - "_setup_tor_browser_environment", - { - "noscript_location": noscript_location, - "noscript_target": str(noscript_target), - }, - "Creating symlink for NoScript from {noscript_location} to {noscript_target}", - ) - - paths["exts"].mkdir(parents=True, exist_ok=True) - _infallible_symlink(noscript_location, noscript_target) + self._setup_extension_symlink( + noscript_location, + noscript_target_filename, + paths["exts"], + ) expert_bundle_location = config.substs.get("TOR_EXPERT_BUNDLE") if expert_bundle_location: @@ -417,7 +420,7 @@ class BuildBackend(LoggingMixin): self._write_purgecaches(config) if status == 0: - self._setup_tor_browser_environment(config) + self._setup_base_browser_environment(config) return status View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/b447dfc… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/b447dfc… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-147.0a1-16.0-2] fixup! BB 43564: Modify ./mach bootstrap for Base Browser
by brizental (@brizental) 26 Jan '26

26 Jan '26
brizental pushed to branch base-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: 9882c796 by Beatriz Rizental at 2026-01-26T11:13:37-03:00 fixup! BB 43564: Modify ./mach bootstrap for Base Browser Generalize extension symlinking code. - - - - - 3 changed files: - build/moz.configure/basebrowser-resources.configure - build/moz.configure/bootstrap.configure - python/mozbuild/mozbuild/backend/base.py Changes: ===================================== build/moz.configure/basebrowser-resources.configure ===================================== @@ -27,7 +27,7 @@ option( "noscript", no_unpack=True, when=depends("--with-noscript")(lambda x: not x) ), ) -@checking("for noscript") +@checking("for noscript extension") @imports(_from="pathlib", _import="Path") def noscript(value, mozbuild_state_path, _bootstrapped): if value: ===================================== build/moz.configure/bootstrap.configure ===================================== @@ -197,8 +197,8 @@ def bootstrap_path(path, **kwargs): if path_parts[0] == "clang-tools": path_prefix = path_parts.pop(0) - # Small hack because noscript is inside the browser folder. - if path_parts[0] == "noscript": + # Small hack because extensions are inside the browser folder. + if path_parts[0] in ("noscript", ): path_prefix = "browser" def try_tbb_bootstrap(exists): ===================================== python/mozbuild/mozbuild/backend/base.py ===================================== @@ -243,23 +243,42 @@ class BuildBackend(LoggingMixin): with open(mozpath.join(dir, ".purgecaches"), "w") as f: f.write("\n") - def _setup_tor_browser_environment(self, config): + def _create_or_replace_symlink(self, src, dst): + try: + os.symlink(src, dst) + except OSError as e: + if e.errno == errno.EEXIST: + # If the symlink already exists, remove it and try again. + os.remove(dst) + os.symlink(src, dst) + else: + return + + def _setup_extension_symlink(self, location, target_filename, exts_path): + if not location: + return + + target = exts_path / target_filename + + self.log( + logging.INFO, + "_setup_extension_symlink", + { + "location": location, + "target": str(target), + }, + "Creating symlink for extension from {location} to {target}", + ) + + exts_path.mkdir(parents=True, exist_ok=True) + self._create_or_replace_symlink(location, target) + + def _setup_base_browser_environment(self, config): app = config.substs["MOZ_BUILD_APP"] noscript_target_filename = "{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi" noscript_location = config.substs.get("NOSCRIPT") - def _infallible_symlink(src, dst): - try: - os.symlink(src, dst) - except OSError as e: - if e.errno == errno.EEXIST: - # If the symlink already exists, remove it and try again. - os.remove(dst) - os.symlink(src, dst) - else: - return - if app == "browser": tbdir = Path(config.topobjdir) / "dist" / "bin" @@ -281,7 +300,7 @@ class BuildBackend(LoggingMixin): if fonts_location: self.log( logging.INFO, - "_setup_tor_browser_environment", + "_setup_base_browser_environment", { "fonts_location": fonts_location, "fonts_target": str(paths["fonts"]), @@ -291,23 +310,13 @@ class BuildBackend(LoggingMixin): for file in Path(fonts_location).iterdir(): target = paths["fonts"] / file.name - _infallible_symlink(file, target) - - # Set up NoScript extension - if noscript_location: - noscript_target = paths["exts"] / noscript_target_filename - self.log( - logging.INFO, - "_setup_tor_browser_environment", - { - "noscript_location": noscript_location, - "noscript_target": str(noscript_target), - }, - "Creating symlink for NoScript from {noscript_location} to {noscript_target}", - ) + self._create_or_replace_symlink(file, target) - paths["exts"].mkdir(parents=True, exist_ok=True) - _infallible_symlink(noscript_location, noscript_target) + self._setup_extension_symlink( + noscript_location, + noscript_target_filename, + paths["exts"], + ) def post_build(self, config, output, jobs, verbose, status): """Called late during 'mach build' execution, after `build(...)` has finished. @@ -328,7 +337,7 @@ class BuildBackend(LoggingMixin): self._write_purgecaches(config) if status == 0: - self._setup_tor_browser_environment(config) + self._setup_base_browser_environment(config) return status View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/9882c79… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/9882c79… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-147.0a1-16.0-2] 2 commits: fixup! BB 43564: Modify ./mach bootstrap for Base Browser
by brizental (@brizental) 26 Jan '26

26 Jan '26
brizental pushed to branch mullvad-browser-147.0a1-16.0-2 at The Tor Project / Applications / Mullvad Browser Commits: e913cc4c by Beatriz Rizental at 2026-01-26T10:35:04-03:00 fixup! BB 43564: Modify ./mach bootstrap for Base Browser Generalize extension symlinking code. - - - - - d3c6d733 by Beatriz Rizental at 2026-01-26T11:09:02-03:00 MB 43564: Modify ./mach bootstrap for Mullvad Browser - - - - - 5 changed files: - build/moz.configure/basebrowser-resources.configure - build/moz.configure/bootstrap.configure - python/mozboot/mozboot/bootstrap.py - python/mozbuild/mozbuild/backend/base.py - python/mozbuild/mozbuild/tbbutils.py Changes: ===================================== build/moz.configure/basebrowser-resources.configure ===================================== @@ -27,7 +27,7 @@ option( "noscript", no_unpack=True, when=depends("--with-noscript")(lambda x: not x) ), ) -@checking("for noscript") +@checking("for noscript extension") @imports(_from="pathlib", _import="Path") def noscript(value, mozbuild_state_path, _bootstrapped): if value: @@ -49,6 +49,84 @@ def noscript(value, mozbuild_state_path, _bootstrapped): set_config("NOSCRIPT", noscript) +option( + "--with-ublock", + env="UBLOCK", + nargs=1, + default=None, + help="Path to ublock .xpi extension archive.", +) + + +@depends( + "--with-ublock", + mozbuild_state_path, + bootstrap_path( + "ublock", no_unpack=True, when=depends("--with-ublock")(lambda x: not x) + ), +) +@checking("for ublock extension") +@imports(_from="pathlib", _import="Path") +def ublock(value, mozbuild_state_path, _bootstrapped): + if value: + path = Path(value[0]) + if path.is_file() and path.suffix == ".xpi": + return value[0] + else: + die("--with-ublock must be an existing .xpi file") + + bootstrapped_location = Path(mozbuild_state_path) / "browser" + for file in bootstrapped_location.glob(f"*.xpi"): + if "ublock" in file.name: + return str(bootstrapped_location / file) + + # ublock is not required for building. + return None + + +set_config("UBLOCK", ublock) + + +option( + "--with-mullvad-extension", + env="MULLVAD_EXTENSION", + nargs=1, + default=None, + help="Path to mullvad extension .xpi extension archive.", +) + + +@depends( + "--with-mullvad-extension", + mozbuild_state_path, + bootstrap_path( + "mullvad-browser-extension", + no_unpack=True, + when=depends("--with-mullvad-extension")(lambda x: not x), + ), +) +@checking("for mullvad extension") +@imports(_from="pathlib", _import="Path") +def mullvad_extension(value, mozbuild_state_path, _bootstrapped): + if value: + path = Path(value[0]) + if path.is_file() and path.suffix == ".xpi": + return value[0] + else: + die("--with-mullvad-extension must be an existing .xpi file") + + bootstrapped_location = Path(mozbuild_state_path) / "browser" + for file in bootstrapped_location.glob(f"*.xpi"): + if "mullvad-browser-extension" in file.name: + return str(bootstrapped_location / file) + + # mullvad extension is not required for building. + return None + + +set_config("MULLVAD_EXTENSION", mullvad_extension) + + option( "--with-tor-browser-fonts", env="TOR_BROWSER_FONTS", ===================================== build/moz.configure/bootstrap.configure ===================================== @@ -197,8 +197,12 @@ def bootstrap_path(path, **kwargs): if path_parts[0] == "clang-tools": path_prefix = path_parts.pop(0) - # Small hack because noscript is inside the browser folder. - if path_parts[0] == "noscript": + # Small hack because extensions are inside the browser folder. + if path_parts[0] in ( + "noscript", + "ublock", + "mullvad-browser-extension", + ): path_prefix = "browser" def try_tbb_bootstrap(exists): ===================================== python/mozboot/mozboot/bootstrap.py ===================================== @@ -49,28 +49,28 @@ Note on Artifact Mode: Artifact builds download prebuilt C++ components rather than building them locally. Artifact builds are faster! -Artifact builds are recommended for people working on Tor Browser or +Artifact builds are recommended for people working on Mullvad Browser or Base Browser for Android frontends, or the GeckoView Java API. They are unsuitable for those working on C++ code. For more information see: https://firefox-source-docs.mozilla.org/contributing/build/artifact_builds.…. -# Note to Base Browser developers +# Note to Mullvad Browser developers This is still highly experimental. Expect bugs! -Please choose the version of Base Browser you want to build (see note above): +Please choose the version of Mullvad Browser you want to build (see note above): %s Your choice: """ APPLICATIONS = OrderedDict( [ - ("Base Browser for Desktop Artifact Mode", "browser_artifact_mode"), - ("Base Browser for Desktop", "browser"), + ("Mullvad Browser for Desktop Artifact Mode", "browser_artifact_mode"), + ("Mullvad Browser for Desktop", "browser"), ( - "GeckoView/Base Browser for Android Artifact Mode", + "GeckoView/Mullvad Browser for Android Artifact Mode", "mobile_android_artifact_mode", ), - ("GeckoView/Base Browser for Android", "mobile_android"), + ("GeckoView/Mullvad Browser for Android", "mobile_android"), ("SpiderMonkey JavaScript engine", "js"), ] ) ===================================== python/mozbuild/mozbuild/backend/base.py ===================================== @@ -243,22 +243,47 @@ class BuildBackend(LoggingMixin): with open(mozpath.join(dir, ".purgecaches"), "w") as f: f.write("\n") - def _setup_tor_browser_environment(self, config): + def _create_or_replace_symlink(self, src, dst): + try: + os.symlink(src, dst) + except OSError as e: + if e.errno == errno.EEXIST: + # If the symlink already exists, remove it and try again. + os.remove(dst) + os.symlink(src, dst) + else: + return + + def _setup_extension_symlink(self, location, target_filename, exts_path): + if not location: + return + + target = exts_path / target_filename + + self.log( + logging.INFO, + "_setup_extension_symlink", + { + "location": location, + "target": str(target), + }, + "Creating symlink for extension from {location} to {target}", + ) + + exts_path.mkdir(parents=True, exist_ok=True) + self._create_or_replace_symlink(location, target) + + def _setup_base_browser_environment(self, config): app = config.substs["MOZ_BUILD_APP"] noscript_target_filename = "{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi" noscript_location = config.substs.get("NOSCRIPT") - def _infallible_symlink(src, dst): - try: - os.symlink(src, dst) - except OSError as e: - if e.errno == errno.EEXIST: - # If the symlink already exists, remove it and try again. - os.remove(dst) - os.symlink(src, dst) - else: - return + ublock_target_filename = "uBlock0(a)raymondhill.net.xpi" + ublock_location = config.substs.get("UBLOCK") + + mullvad_extension_target_filename = "{d19a89b9-76c1-4a61-bcd4-49e8de916403}.xpi" + mullvad_extension_location = config.substs.get("MULLVAD_EXTENSION") if app == "browser": tbdir = Path(config.topobjdir) / "dist" / "bin" @@ -281,7 +306,7 @@ class BuildBackend(LoggingMixin): if fonts_location: self.log( logging.INFO, - "_setup_tor_browser_environment", + "_setup_base_browser_environment", { "fonts_location": fonts_location, "fonts_target": str(paths["fonts"]), @@ -291,23 +316,25 @@ class BuildBackend(LoggingMixin): for file in Path(fonts_location).iterdir(): target = paths["fonts"] / file.name - _infallible_symlink(file, target) + self._create_or_replace_symlink(file, target) - # Set up NoScript extension - if noscript_location: - noscript_target = paths["exts"] / noscript_target_filename - self.log( - logging.INFO, - "_setup_tor_browser_environment", - { - "noscript_location": noscript_location, - "noscript_target": str(noscript_target), - }, - "Creating symlink for NoScript from {noscript_location} to {noscript_target}", - ) + self._setup_extension_symlink( + noscript_location, + noscript_target_filename, + paths["exts"], + ) - paths["exts"].mkdir(parents=True, exist_ok=True) - _infallible_symlink(noscript_location, noscript_target) + self._setup_extension_symlink( + ublock_location, + ublock_target_filename, + paths["exts"], + ) + + self._setup_extension_symlink( + mullvad_extension_location, + mullvad_extension_target_filename, + paths["exts"], + ) def post_build(self, config, output, jobs, verbose, status): """Called late during 'mach build' execution, after `build(...)` has finished. @@ -328,7 +355,7 @@ class BuildBackend(LoggingMixin): self._write_purgecaches(config) if status == 0: - self._setup_tor_browser_environment(config) + self._setup_base_browser_environment(config) return status ===================================== python/mozbuild/mozbuild/tbbutils.py ===================================== @@ -22,10 +22,12 @@ def list_files_http(url): return links -TOR_BROWSER_BUILD_ARTIFACTS = [ - # Tor Browser Build-only artifacts, these artifacts are not common with Firefox. +MULLVAD_BROWSER_BUILD_ARTIFACTS = [ + # Mullvad Browser Build-only artifacts, these artifacts are not common with Firefox. + "mullvad-browser-extension", "noscript", "fonts", + "ublock", ] # Mapping of artifacts from taskcluster to tor-browser-build. @@ -55,7 +57,7 @@ def get_artifact_index(artifact_path): def get_artifact_name(original_artifact_name, host): # These are not build artifacts, they are pre-built artifacts to be added to the final build, # therefore this check can come before the host check. - if original_artifact_name in TOR_BROWSER_BUILD_ARTIFACTS: + if original_artifact_name in MULLVAD_BROWSER_BUILD_ARTIFACTS: return original_artifact_name if host != "linux64": View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/58… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/58… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • ...
  • 2100
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.