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 -----
  • 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
  • 20363 discussions
[Git][tpo/applications/tor-browser] Pushed new branch tor-browser-151.0a1-16.0-1
by ma1 (@ma1) 02 May '26

02 May '26
ma1 pushed new branch tor-browser-151.0a1-16.0-1 at The Tor Project / Applications / Tor Browser -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/mullvad-browser] Pushed new tag FIREFOX_NIGHTLY_151_END
by ma1 (@ma1) 02 May '26

02 May '26
ma1 pushed new tag FIREFOX_NIGHTLY_151_END at The Tor Project / Applications / Mullvad Browser -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/FIREF… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser-bundle-testsuite][main] Bug 40091: Implement script to trigger pipeline after nighly builds
by brizental (@brizental) 01 May '26

01 May '26
brizental pushed to branch main at The Tor Project / Applications / tor-browser-bundle-testsuite Commits: 40d378be by Beatriz Rizental at 2026-04-29T13:47:55-03:00 Bug 40091: Implement script to trigger pipeline after nighly builds - - - - - 4 changed files: - .gitignore - config/tb-build-06.torproject.org - − tools/post-build-trigger.py - + tools/trigger-test-pipeline.py Changes: ===================================== .gitignore ===================================== @@ -6,3 +6,4 @@ virtualenv-marionette-* reports tmp bundle +tools/.gitlab_trigger_token ===================================== config/tb-build-06.torproject.org ===================================== @@ -37,9 +37,10 @@ my $test_post = sub { return unless $test->{publish_dir}; my ($stdout, $stderr, $success) = capture_exec( - 'python3', "$FindBin::Bin/tools/post-build-trigger.py", + 'python3', "$FindBin::Bin/tools/trigger-test-pipeline.py", '--step-name', $test->{name}, '--publish-url', $publish_url, + '--publish-dir', $test->{publish_dir}, ); print STDERR $stderr if $stderr; if (!$success) { ===================================== tools/post-build-trigger.py deleted ===================================== @@ -1,58 +0,0 @@ -#!/usr/bin/env python3 - -from __future__ import annotations - -import argparse -import logging -import sys - - -logger = logging.getLogger(__name__) - - -def setup_logging() -> None: - logging.basicConfig( - level=logging.INFO, - format="%(levelname)s: %(message)s", - # IMPORTANT! - # - # Perl captures this script's stdout and, if it is non-empty, stores it - # as `gitlab_pipeline_url` for the current build step. We need to keep logs - # on stderr and only print to stdout when its the resulting pipeline URL. - stream=sys.stderr, - ) - - -def parse_args() -> argparse.Namespace: - parser = argparse.ArgumentParser( - description="Post-build trigger hook for triggering GitLab CI pipelines." - ) - parser.add_argument( - "--step-name", - required=True, - help=""" - Name of the build step that just finished. - List of possible values can be found in - TBBTestSuite/TestSuite/TorBrowserBuild.pm (set_tests) - """, - ) - parser.add_argument( - "--publish-url", - required=True, - help="URL where build artifacts are published for the build artifacts.", - ) - return parser.parse_args() - - -def main() -> int: - setup_logging() - args = parse_args() - logger.info( - f"post-build-trigger.py not implemented yet " - f"(step={args.step_name}, publish_url={args.publish_url})" - ) - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) ===================================== tools/trigger-test-pipeline.py ===================================== @@ -0,0 +1,165 @@ +#!/usr/bin/env python3 +import argparse +import json +import logging +import os +import sys +import urllib.request + +logger = logging.getLogger(__name__) + +GITLAB_URL = "https://gitlab.torproject.org" +# The project ID of the tor-browser-bundle-testsuite repository +GITLAB_PROJECT_ID = "409" +# We are running the pipeline on the main branch. +GITLAB_REF = "main" + +SUPPORTED_ARCHITECTURES_PER_PLATFORM = { + "linux": ["x86_64"], + "windows": ["x86_64"], + "macos": ["x86_64"], + "android": ["x86_64"], +} + + +def setup_logging() -> None: + logging.basicConfig( + level=logging.INFO, + format="%(levelname)s: %(message)s", + # IMPORTANT! + # + # Perl captures this script's stdout and, if it is non-empty, stores it + # as `gitlab_pipeline_url` for the current build step. We need to keep logs + # on stderr and only print to stdout when its the resulting pipeline URL. + stream=sys.stderr, + ) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Post-build trigger hook for triggering GitLab CI pipelines." + ) + parser.add_argument( + "--step-name", + required=True, + help=""" + Name of the build step that just finished. + List of possible values can be found in + TBBTestSuite/TestSuite/TorBrowserBuild.pm (set_tests) + """, + ) + parser.add_argument( + "--publish-url", + required=True, + help="URL where build artifacts are published for the build artifacts.", + ) + parser.add_argument( + "--publish-dir", + required=True, + help="Subdirectory within the publish URL where build artifacts are located.", + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Print the equivalent curl command instead of triggering the pipeline.", + ) + return parser.parse_args() + + +def build_inputs(step_name: str, publish_url: str, publish_dir: str) -> dict[str, str] | None: + # Add the architecture as padding, to address the macos case which doesn't + # have architecture in the step name since it is a universal build. + browser, channel, platform, architecture = (step_name.split("-") + ["x86_64"])[:4] + if channel != "nightly": + logger.info("This script only knows how to handle nightly builds. Skipping.") + return None + if ( + platform not in SUPPORTED_ARCHITECTURES_PER_PLATFORM + or architecture not in SUPPORTED_ARCHITECTURES_PER_PLATFORM[platform] + ): + logger.info( + f"Tests for {platform}-{architecture} are not supported yet. Skipping." + ) + return None + + hyphenated_browser = "tor-browser" if browser == "torbrowser" else "mullvad-browser" + date = publish_url.rstrip("/").split("/")[-1].split(".", 1)[1] + match platform: + case "linux": + installer = f"{hyphenated_browser}-{platform}-{architecture}-tbb-{channel}.{date}.tar.xz" + case "windows": + installer = f"{hyphenated_browser}-{platform}-{architecture}-portable-tbb-{channel}.{date}.exe" + case "macos": + installer = f"{hyphenated_browser}-{platform}-{architecture}-tbb-{channel}.{date}.dmg" + case "android": + installer = f"{hyphenated_browser}-qa-{platform}-{architecture}-tbb-{channel}.{date}.apk" + case _: + raise ValueError(f"Unsupported platform: {platform!r}. How did we get here?") + + artifacts_url = f"{publish_url}/{publish_dir}/artifacts/{platform}-{architecture}" + input_prefix = f"{'debian' if platform == 'linux' else platform}_{architecture}" + inputs = { + "mozharness_url": f"{artifacts_url}/mozharness.zip", + f"{input_prefix}_installer_url": f"{publish_url}/{publish_dir}/{installer}", + f"{input_prefix}_artifacts_url": artifacts_url, + } + + if platform == "android": + inputs[f"{input_prefix}_package_name"] = f"org.torproject.{browser}_{channel}" + + return inputs + + +def dry_run(inputs: dict[str, str], trigger_token: str) -> None: + url = f"{GITLAB_URL}/api/v4/projects/{GITLAB_PROJECT_ID}/trigger/pipeline?token={trigger_token}&ref={GITLAB_REF}" + payload = json.dumps({"inputs": inputs}, indent=2) + print( + f"curl --request POST --header 'Content-Type: application/json' --data '{payload}' '{url}'" + ) + + +def trigger_pipeline(trigger_token: str, inputs: dict[str, str]) -> str: + url = f"{GITLAB_URL}/api/v4/projects/{GITLAB_PROJECT_ID}/trigger/pipeline" + payload = json.dumps( + {"token": trigger_token, "ref": GITLAB_REF, "inputs": inputs} + ).encode() + req = urllib.request.Request( + url, + data=payload, + headers={"Content-Type": "application/json"}, + method="POST", + ) + with urllib.request.urlopen(req) as resp: + data = json.loads(resp.read()) + + return data["web_url"] + + +def main() -> int: + setup_logging() + args = parse_args() + + token_file = os.path.join( + os.path.dirname(os.path.abspath(__file__)), ".gitlab_trigger_token" + ) + with open(token_file) as f: + trigger_token = f.read().strip() + + inputs = build_inputs(args.step_name, args.publish_url, args.publish_dir) + if inputs is None: + logger.info(f"No CI inputs for step {args.step_name!r}, skipping.") + return 0 + + if args.dry_run: + dry_run(inputs, trigger_token) + return 0 + + logger.info(f"Triggering pipeline for step={args.step_name!r}") + pipeline_url = trigger_pipeline(trigger_token, inputs) + logger.info(f"Pipeline triggered: {pipeline_url}") + print(pipeline_url) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-150.0a1-16.0-2] TB 44615: Remove review prompt
by Dan Ballard (@dan) 30 Apr '26

30 Apr '26
Dan Ballard pushed to branch tor-browser-150.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: cadcb5ec by clairehurst at 2026-04-30T09:56:22-07:00 TB 44615: Remove review prompt - - - - - 9 changed files: - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/Components.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/PlayStoreReviewPromptController.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/reviewprompt/ReviewPromptMiddleware.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/reviewprompt/ReviewPromptReducer.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt - mobile/android/fenix/app/src/main/res/navigation/nav_graph.xml - mobile/android/fenix/app/src/main/res/xml/preferences.xml - mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/PlayStoreReviewPromptControllerTest.kt - mobile/android/fenix/app/src/test/java/org/mozilla/fenix/reviewprompt/ShowPlayStoreReviewPromptTest.kt Changes: ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/Components.kt ===================================== @@ -90,6 +90,12 @@ import org.mozilla.fenix.utils.isLargeScreenSize import org.mozilla.fenix.wifi.WifiConnectionMonitor import java.util.concurrent.TimeUnit +import android.app.Activity +import com.google.android.gms.tasks.Task +import com.google.android.gms.tasks.Tasks +import com.google.android.play.core.review.ReviewInfo +import com.google.android.play.core.review.ReviewManager + private const val AMO_COLLECTION_MAX_CACHE_AGE = 2 * 24 * 60L // Two days in minutes /** @@ -251,7 +257,7 @@ class Components(private val context: Context) { val playStoreReviewPromptController by lazyMonitored { PlayStoreReviewPromptController( - manager = ReviewManagerFactory.create(context), + manager = NoopReviewManager(context), numberOfAppLaunches = { settings.numberOfAppLaunches }, ) } @@ -422,6 +428,19 @@ class Components(private val context: Context) { val torController by lazyMonitored { TorControllerGV(context) } } +class NoopReviewManager(val value: Context) : ReviewManager { + override fun launchReviewFlow( + p0: Activity, + p1: ReviewInfo + ): Task<Void?> { + return Tasks.forResult(null) + } + + override fun requestReviewFlow(): Task<ReviewInfo?> { + return Tasks.forResult(null) + } +} + /** * Returns the [Components] object from within a [Composable]. */ ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/PlayStoreReviewPromptController.kt ===================================== @@ -47,80 +47,16 @@ class PlayStoreReviewPromptController( onNotDisplayed: () -> Unit = {}, onError: () -> Unit = {}, ) { - logger.info("tryPromptReview in progress...") - val reviewInfoTask = withContext(Dispatchers.IO) { manager.requestReviewFlow() } - - reviewInfoTask.addOnCompleteListener(activity) { task -> - val result = if (task.isSuccessful) { - logger.info("Review flow launched.") - // Launch the in-app flow. - manager.launchReviewFlow(activity, task.result) - - ReviewPromptAttemptResult.from(task.result.toString()) - } else { - Error - } - - when (result) { - NotDisplayed -> { - logger.warn("In-app review flow reported as not displayed, even though there was no error.") - - onNotDisplayed() - } - - Error -> { - val reviewErrorCode = - (task.exception as? ReviewException)?.errorCode ?: ERROR_CODE_UNEXPECTED - logger.warn("Failed to launch in-app review flow due to: $reviewErrorCode.") - - onError() - } - - Displayed, Unknown -> {} - } - - recordReviewPromptEvent( - promptAttemptResult = result, - numberOfAppLaunches = numberOfAppLaunches(), - now = Date(), - ) - } - - logger.info("tryPromptReview completed.") + logger.info("tryPromptReview has been successfully noop'ed.") + return } /** * Try to launch the play store review flow. */ fun tryLaunchPlayStoreReview(activity: Activity) { - logger.info("tryLaunchPlayStoreReview in progress...") - - try { - logger.info("Navigating to Play store listing.") - activity.startActivity( - Intent(Intent.ACTION_VIEW, SupportUtils.RATE_APP_URL.toUri()), - ) - } catch (e: ActivityNotFoundException) { - // Device without the play store installed. - // Opening the play store website. - - activity.applicationContext.components.useCases.fenixBrowserUseCases.loadUrlOrSearch( - searchTermOrURL = SupportUtils.FENIX_PLAY_STORE_URL, - newTab = true, - ) - - // https://bugzilla.mozilla.org/show_bug.cgi?id=1997148 - (activity as? FragmentActivity) - ?.supportFragmentManager - ?.fragments - ?.firstOrNull { it is NavHostFragment } - ?.let { (it as NavHostFragment).navController } - ?.openToBrowser() - - logger.warn("Failed to launch play store review flow due to: $e.") - } - - logger.info("tryLaunchPlayStoreReview completed.") + logger.info("tryLaunchPlayStoreReview has been successfully noop'ed.") + return } companion object { ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/reviewprompt/ReviewPromptMiddleware.kt ===================================== @@ -105,23 +105,7 @@ class ReviewPromptMiddleware( return } - val shouldShowPrompt: Boolean = createJexlHelper().use { jexlHelper -> - // Keep the legacy criteria around, but use the nimbus data and jexl to trigger. - // Leaving the original if-else logic and early return for readability. - if (!shouldUseNewTriggerCriteria()) { - val legacyCriteriaSatisfied = buildTriggerLegacyCriteria(jexlHelper).all { it } - return@use legacyCriteriaSatisfied - } - - // Otherwise, we use the new criteria. - val allMainCriteriaSatisfied = buildTriggerMainCriteria(jexlHelper).all { it } - if (!allMainCriteriaSatisfied) { - return@use false - } - - val atLeastOneOfSubCriteriaSatisfied = buildTriggerSubCriteria(jexlHelper).any { it } - return@use atLeastOneOfSubCriteriaSatisfied - } + val shouldShowPrompt: Boolean = false if (shouldShowPrompt) { if (shouldShowCustomPrompt()) { ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/reviewprompt/ReviewPromptReducer.kt ===================================== @@ -21,11 +21,6 @@ import org.mozilla.fenix.reviewprompt.ReviewPromptState.NotEligible */ internal object ReviewPromptReducer { fun reduce(state: AppState, action: ReviewPromptAction): AppState { - return when (action) { - ShowPlayStorePrompt -> state.copy(reviewPrompt = Eligible(Type.PlayStore)) - ShowCustomReviewPrompt -> state.copy(reviewPrompt = Eligible(Type.Custom)) - DoNotShowReviewPrompt, ReviewPromptShown -> state.copy(reviewPrompt = NotEligible) - CheckIfEligibleForReviewPrompt -> state - } + return state.copy(reviewPrompt = NotEligible) } } ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt ===================================== @@ -544,12 +544,6 @@ class SettingsFragment : PreferenceFragmentCompat(), SystemInsetsPaddedFragment, SettingsFragmentDirections.actionSettingsFragmentToSyncDebugFragment() } - // About preferences - resources.getString(R.string.pref_key_rate) -> { - components.playStoreReviewPromptController.tryLaunchPlayStoreReview(requireActivity()) - null - } - resources.getString(R.string.pref_key_about) -> { SettingsFragmentDirections.actionSettingsFragmentToAboutFragment() } ===================================== mobile/android/fenix/app/src/main/res/navigation/nav_graph.xml ===================================== @@ -214,8 +214,7 @@ app:popUpToInclusive="true" app:destination="@+id/unlockPrivateTabsFragment"/> <action - android:id="@+id/action_global_customReviewPromptDialogFragment" - app:destination="@id/customReviewPromptDialogFragment" /> + android:id="@+id/action_global_customReviewPromptDialogFragment" /> <action android:id="@+id/action_global_to_installedAddonDetailsFragment" app:destination="@id/installedAddonDetailsFragment" /> ===================================== mobile/android/fenix/app/src/main/res/xml/preferences.xml ===================================== @@ -289,10 +289,6 @@ android:title="@string/preferences_category_about" app:iconSpaceReserved="false" android:layout="@layout/preference_category_no_icon_style"> - <androidx.preference.Preference - android:key="@string/pref_key_rate" - app:iconSpaceReserved="false" - android:title="@string/preferences_rate" /> <androidx.preference.Preference android:key="@string/pref_key_about" ===================================== mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/PlayStoreReviewPromptControllerTest.kt ===================================== @@ -59,7 +59,7 @@ class PlayStoreReviewPromptControllerTest { launch { controller.tryPromptReview(activity) - assertTrue(reviewManager.promptHasBeenRequested) + assertTrue(!reviewManager.promptHasBeenRequested) } } } @@ -102,7 +102,7 @@ class PlayStoreReviewPromptControllerTest { onError = { onErrorRan = true }, ) - assertTrue(onErrorRan) + assertTrue(!onErrorRan) } } } ===================================== mobile/android/fenix/app/src/test/java/org/mozilla/fenix/reviewprompt/ShowPlayStoreReviewPromptTest.kt ===================================== @@ -155,7 +155,7 @@ class ShowPlayStoreReviewPromptTest { feature.start() testDispatcher.scheduler.advanceUntilIdle() - coVerify(exactly = 1) { + coVerify(exactly = 0) { promptController.tryPromptReview(mockActivity) } captureMiddleware.assertLastAction(ReviewPromptShown::class) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/cadcb5e… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/cadcb5e… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-150.0a1-16.0-2] 4 commits: !dropme Bug 2024724 - Fix PowerCounters.h because we do not compile...
by Pier Angelo Vendrame (@pierov) 30 Apr '26

30 Apr '26
Pier Angelo Vendrame pushed to branch mullvad-browser-150.0a1-16.0-2 at The Tor Project / Applications / Mullvad Browser Commits: 6c679501 by Damien Carver at 2026-04-30T13:57:51+02:00 !dropme Bug 2024724 - Fix PowerCounters.h because we do not compile PowerCounters-win.cpp against __MINGW32__ r=canaltinova,profiler-reviewers BB 44868: Backport upstream commit to fix Windows builds This commit should be dropped during the 151 rebase as it was reverted as part of https://bugzilla.mozilla.org/show_bug.cgi?id=2026031 in the upstream 151 branch. - - - - - 999f3a02 by Nicolas Vigier at 2026-04-30T13:59:21+02:00 fixup! BB 43615: Add Gitlab Issue and Merge Request templates BB 44870: Remove legacy branch from gitlab templates - - - - - 7942a77a by Beatriz Rizental at 2026-04-30T13:59:32+02:00 fixup! Base Browser's .mozconfigs. Bug 44848: Stop overwriting Android toolchain paths. Keep the overwrites only on tor-browser-build. - - - - - d513cebd by Nicolas Vigier at 2026-04-30T13:59:42+02:00 fixup! Base Browser's .mozconfigs. BB 44555: Remove mozconfig-linux-i686 - - - - - 8 changed files: - .gitlab/issue_templates/050 Backport.md - browser/config/mozconfigs/base-browser-android - mozconfig-android-all - − mozconfig-linux-i686 - mozglue/baseprofiler/public/BaseProfilerState.h - tools/profiler/core/PowerCounters.h - tools/profiler/moz.build - tools/profiler/public/ProfilerState.h Changes: ===================================== .gitlab/issue_templates/050 Backport.md ===================================== @@ -24,7 +24,6 @@ please ensure the title has the following format: - [ ] Alpha - [ ] Stable -- [ ] Legacy ## Notes ===================================== browser/config/mozconfigs/base-browser-android ===================================== @@ -13,20 +13,6 @@ CC="clang" CXX="clang++" ac_add_options --enable-linker=lld -if test -n "$ANDROID_HOME"; then - ac_add_options --with-android-sdk=$ANDROID_HOME -fi - -if test -n "$ANDROID_NDK_HOME"; then - ac_add_options --with-android-ndk=$ANDROID_NDK_HOME -fi - -if test -n "$GRADLE_HOME"; then - ac_add_options --with-gradle=$GRADLE_HOME/bin/gradle -fi -# Otherwise (as per /mobile/android/gradle.config) a version will be downloaded by the gradle wrapper when needed -# so don't use this override, and let it do it's thing - ac_add_options --enable-strip ac_add_options --enable-install-strip ac_add_options --disable-tests ===================================== mozconfig-android-all ===================================== @@ -8,10 +8,6 @@ ac_add_options --enable-application=mobile/android ac_add_options --disable-compile-environment -ac_add_options --with-java-bin-path=$JAVA_HOME/bin -ac_add_options --with-android-sdk=$ANDROID_HOME -ac_add_options --with-gradle=$GRADLE_HOME/bin/gradle - ac_add_options --disable-tests ac_add_options --disable-debug ===================================== mozconfig-linux-i686 deleted ===================================== @@ -1,16 +0,0 @@ -. $topsrcdir/browser/config/mozconfigs/base-browser - -ac_add_options --target=i686-linux-gnu - -# Moz switched to lld for all Linux targets in Bug 1839739. -# Also, gold used not to work with debug symbols (tor-browser#42146). -ac_add_options --enable-linker=lld - -ac_add_options --disable-strip -ac_add_options --disable-install-strip - -ac_add_options --enable-default-toolkit=cairo-gtk3 - -# Let's make sure no preference is enabling either Adobe's or Google's CDM. -ac_add_options --disable-eme - ===================================== mozglue/baseprofiler/public/BaseProfilerState.h ===================================== @@ -136,7 +136,7 @@ class MOZ_RAII AutoProfilerStats { "Record the power used by the entire system with each sample. " \ "Only available with Intel CPUs and requires setting " \ "the sysctl kernel.perf_event_paranoid to 0." -#elif defined(GP_OS_windows) +#elif defined(GP_OS_windows) && defined(_MSC_VER) # define POWER_HELP \ "Record the value of every energy meter available on the system with " \ "each sample. Only available on Windows 11 with Intel CPUs." ===================================== tools/profiler/core/PowerCounters.h ===================================== @@ -10,7 +10,7 @@ #include "mozilla/UniquePtr.h" #include "mozilla/Vector.h" -#if defined(GP_OS_windows) +#if defined(GP_OS_windows) && defined(_MSC_VER) class PowerMeterDevice; #endif #if defined(GP_PLAT_arm64_darwin) @@ -50,20 +50,20 @@ bool GetRailEnergyData(RailEnergyData*, size_t* size_of_arr); class PowerCounters { public: -#if defined(GP_OS_windows) || defined(GP_OS_darwin) || \ +#if (defined(GP_OS_windows) && defined(_MSC_VER)) || defined(GP_OS_darwin) || \ defined(GP_PLAT_amd64_linux) || defined(GP_PLAT_arm64_android) explicit PowerCounters(); #else explicit PowerCounters() {}; #endif -#if defined(GP_OS_windows) || defined(GP_PLAT_amd64_darwin) || \ - defined(GP_PLAT_arm64_android) +#if (defined(GP_OS_windows) && defined(_MSC_VER)) || \ + defined(GP_PLAT_amd64_darwin) || defined(GP_PLAT_arm64_android) ~PowerCounters(); #else ~PowerCounters() = default; #endif -#if defined(GP_OS_windows) || defined(GP_PLAT_amd64_darwin) || \ - defined(GP_PLAT_arm64_android) +#if (defined(GP_OS_windows) && defined(_MSC_VER)) || \ + defined(GP_PLAT_amd64_darwin) || defined(GP_PLAT_arm64_android) void Sample(); #else void Sample() {}; @@ -75,7 +75,7 @@ class PowerCounters { private: CountVector mCounters; -#if defined(GP_OS_windows) +#if defined(GP_OS_windows) && defined(_MSC_VER) mozilla::Vector<mozilla::UniquePtr<PowerMeterDevice>> mPowerMeterDevices; #endif #if defined(GP_PLAT_amd64_darwin) ===================================== tools/profiler/moz.build ===================================== @@ -167,6 +167,7 @@ elif CONFIG["OS_TARGET"] == "WINNT" and CONFIG["TARGET_CPU"] in ( UNIFIED_SOURCES += [ "gecko/nsProfiler.cpp", ] + # Keep in sync with PowerCounters.h, BaseProfilerState.h and ProfilerState.h (see __MINGW32__) if CONFIG["CC_TYPE"] == "clang-cl": UNIFIED_SOURCES += [ "core/PowerCounters-win.cpp", ===================================== tools/profiler/public/ProfilerState.h ===================================== @@ -31,7 +31,7 @@ "Only available with Intel CPUs and requires setting " \ "the sysctl kernel.perf_event_paranoid to 0." -#elif defined(GP_OS_windows) +#elif defined(GP_OS_windows) && defined(_MSC_VER) # define POWER_HELP \ "Record the value of every energy meter available on the system with " \ "each sample. Only available on Windows 11 with Intel CPUs." View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/3d… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/3d… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-150.0a1-16.0-2] fixup! [android] Implement Android-native Connection Assist UI
by Dan Ballard (@dan) 30 Apr '26

30 Apr '26
Dan Ballard pushed to branch tor-browser-150.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: 5fa6338b by clairehurst at 2026-04-29T13:15:00-07:00 fixup! [android] Implement Android-native Connection Assist UI Fix color styling presented in one of the rebases between 140 and 150. - - - - - 3 changed files: - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistFragment.kt - mobile/android/fenix/app/src/main/res/layout/fragment_tor_connection_assist.xml - mobile/android/fenix/app/src/main/res/values/colors.xml Changes: ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistFragment.kt ===================================== @@ -136,6 +136,10 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler, SystemIn } private fun setSettingsButton(screen: ConnectAssistUiState) { + binding.settingsButtonImage.imageTintList = AppCompatResources.getColorStateList( + requireContext(), + R.color.settings_button_white, + ) binding.settingsButton.visibility = if (screen.settingsButtonVisible) View.VISIBLE else View.GONE binding.settingsButton.setOnClickListener { openSettings() @@ -143,6 +147,10 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler, SystemIn } private fun setBackButton(screen: ConnectAssistUiState) { + binding.backButtonImage.imageTintList = AppCompatResources.getColorStateList( + requireContext(), + R.color.settings_button_white, + ) binding.backButton.visibility = if (screen.backButtonVisible) View.VISIBLE else View.INVISIBLE binding.backButton.setOnClickListener { onBackPressed() @@ -323,6 +331,10 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler, SystemIn } private fun setButton2(screen: ConnectAssistUiState) { + binding.torBootstrapButton2.backgroundTintList = AppCompatResources.getColorStateList( + requireContext(), + R.color.configure_connection_button_white, + ) binding.torBootstrapButton2.visibility = if (screen.torBootstrapButton2Visible) View.VISIBLE else View.GONE if (screen.torBootstrapButton2ShouldRestartApp) { ===================================== mobile/android/fenix/app/src/main/res/layout/fragment_tor_connection_assist.xml ===================================== @@ -28,6 +28,7 @@ app:layout_constraintTop_toTopOf="parent"> <ImageView + android:id="@+id/settings_button_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/settings" @@ -50,6 +51,7 @@ app:layout_constraintTop_toTopOf="parent"> <ImageView + android:id="@+id/back_button_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/settings" @@ -154,7 +156,6 @@ android:layout_marginEnd="24dp" android:layout_marginBottom="8dp" android:background="@drawable/rounded_corners" - android:backgroundTint="@color/connect_button_purple" android:minWidth="360dp" android:text="@string/tor_bootstrap_connect" android:textAlignment="center" @@ -174,7 +175,6 @@ android:layout_marginEnd="24dp" android:layout_marginBottom="8dp" android:background="@drawable/rounded_corners" - android:backgroundTint="@color/configure_connection_button_white" android:minWidth="360dp" android:text="@string/connection_assist_configure_connection_button" android:textAlignment="center" ===================================== mobile/android/fenix/app/src/main/res/values/colors.xml ===================================== @@ -332,4 +332,5 @@ <color name="configure_connection_button_white">#E1E0E7</color> <color name="warning_yellow">#FFA436</color> <color name="progress_background_tint">#55148C</color> + <color name="settings_button_white">#FBFBFE</color> </resources> View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5fa6338… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5fa6338… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.10.1esr-15.0-1] 2 commits: fixup! TB 7494: Create local home page for TBB.
by morgan (@morgan) 30 Apr '26

30 Apr '26
morgan pushed to branch tor-browser-140.10.1esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 36994e53 by Henry Wilkes at 2026-04-29T10:54:52+01:00 fixup! TB 7494: Create local home page for TBB. TB 44746: Modify YEC banner to be used for summer 2026 funding campaign. - - - - - 502048e6 by Henry Wilkes at 2026-04-29T10:55:43+01:00 TB 44746: Assets for summer 2026 funding campaign. - - - - - 7 changed files: - browser/components/abouttor/AboutTorParent.sys.mjs - browser/components/abouttor/content/aboutTor.css - browser/components/abouttor/content/aboutTor.html - browser/components/abouttor/content/aboutTor.js - + browser/components/abouttor/content/yec2025-image.svg - browser/components/abouttor/jar.mn - toolkit/locales/en-US/toolkit/global/tor-browser.ftl Changes: ===================================== browser/components/abouttor/AboutTorParent.sys.mjs ===================================== @@ -23,6 +23,44 @@ export class AboutTorParent extends JSWindowActorParent { */ static #dismissYEC = false; + /** + * A shuffled array of tool numbers. `null` whilst unset. + * + * @type {?number[]} + */ + static #toolNums = null; + /** + * The current index in `#toolNums`. + * + * @type {number} + */ + static #toolIndex = 0; + + /** + * Return the pair of tools numbers to show in the next about:tor window. + * + * @returns {{ toolNum1: number, toolNum2: number }} - The tool number pairs. + */ + static #getToolNumPair() { + const numTools = 11; + if (!this.#toolNums) { + this.#toolNums = Array.from({ length: numTools }, (_, index) => index); + // Shuffle the array with Fisher–Yates. + for (let index = numTools - 1; index > 0; index--) { + const topBound = index + 1; + const exchange = Math.floor(Math.random() * topBound) % topBound; + const tmpNum = this.#toolNums[index]; + this.#toolNums[index] = this.#toolNums[exchange]; + this.#toolNums[exchange] = tmpNum; + } + } + const toolNum1 = this.#toolNums[this.#toolIndex % numTools]; + const toolNum2 = this.#toolNums[(this.#toolIndex + 1) % numTools]; + this.#toolIndex = (this.#toolIndex + 2) % numTools; + + return { toolNum1, toolNum2 }; + } + /** * Whether this instance has a preloaded browser. * @@ -58,6 +96,8 @@ export class AboutTorParent extends JSWindowActorParent { appLocale = "ja"; } + const { toolNum1, toolNum2 } = AboutTorParent.#getToolNumPair(); + return { torConnectEnabled: lazy.TorConnect.enabled, messageData: lazy.AboutTorMessage.getNext(), @@ -69,6 +109,8 @@ export class AboutTorParent extends JSWindowActorParent { ), appLocale, dismissYEC: AboutTorParent.#dismissYEC, + toolNum1, + toolNum2, }; } ===================================== browser/components/abouttor/content/aboutTor.css ===================================== @@ -350,12 +350,11 @@ body.show-yec h1 { "yec-matching yec-image" auto "yec-donate yec-image" min-content / 1fr min-content; - --yec-image-background: #1f0333; - /* Remove 1px from padding for border. */ - padding-block: 55px 55px; - padding-inline: 47px 47px; + --yec-image-background: #3a1653; + padding-block: 56px 56px; + padding-inline: 48px 48px; box-sizing: border-box; - max-width: 850px; + max-width: 840px; margin-block-end: 40px; /* Position for the close button. */ position: relative; @@ -389,8 +388,8 @@ body.show-yec h1 { #yec-heading { grid-area: yec-heading; margin-block: 0 16px; - font-size: 64px; - font-weight: 400; + font-size: var(--font-size-xxlarge); + font-weight: 600; } #yec-body { @@ -398,13 +397,13 @@ body.show-yec h1 { margin-block: 0 12px; } -#yec-body-highlight { - font-weight: 600; -} - #yec-matching { grid-area: yec-matching; - margin-block: 0 32px; + margin-block: 0 24px; +} + +#yec-banner b { + font-weight: 600; } #yec-donate-link { @@ -481,7 +480,7 @@ body.show-yec h1 { } #yec-heading { - font-size: 3.5rem; + font-size: var(--font-size-xlarge); } #yec-matching { @@ -502,20 +501,16 @@ body.show-yec h1 { @media not ((prefers-contrast) or (forced-colors)) { #yec-banner { - border-color: transparent; + border-color: #523168; background-color: var(--yec-image-background); --yec-text: #ffffff; - --yec-button-background: #b6e368; - --yec-button-background-hover: #d2f2a1; - --yec-button-background-active: #ecfcd8; - --yec-button-text: #15141A; + --yec-button-background: var(--tor-button-background-color-light); + --yec-button-background-hover: var(--tor-button-background-color-hover-light); + --yec-button-background-active: var(--tor-button-background-color-active-light); + --yec-button-text: var(--tor-button-text-color-light); color: var(--yec-text); } - #yec-body-highlight { - color: var(--yec-button-background); - } - #yec-donate-link { --in-content-button-text-color: var(--yec-button-text); --in-content-button-text-color-hover: var(--yec-button-text); ===================================== browser/components/abouttor/content/aboutTor.html ===================================== @@ -35,13 +35,15 @@ <body class="onion-pattern-background"> <!-- Year End Campaign (YEC). --> <article id="yec-banner" aria-labelledby="yec-heading"> - <img id="yec-image" alt="" /> - <h2 id="yec-heading"></h2> - <p id="yec-body"> - <b id="yec-body-highlight" data-l10n-name="highlight"></b> - </p> - <p id="yec-matching"></p> - <a id="yec-donate-link"> + <img + id="yec-image" + alt="" + src="chrome://browser/content/abouttor/yec2025-image.svg" + /> + <h2 id="yec-heading" data-l10n-id="summer-2026-funding-heading"></h2> + <p id="yec-body"></p> + <p id="yec-matching" data-l10n-id="summer-2026-funding-outro"></p> + <a id="yec-donate-link" target="_blank"> <span data-l10n-id="yec-donate-button"></span> <img id="yec-donate-icon" ===================================== browser/components/abouttor/content/aboutTor.js ===================================== @@ -431,14 +431,14 @@ const YecArea = { * * @type {?integer} */ - _startDate: null, // No YEC is active. + _startDate: Date.UTC(2026, 4, 19, 15), // 19th May 2026, 15 UTC. /** * The epoch time to stop showing the banner, if at all. * * @type {?integer} */ - _endDate: null, // No YEC is active. + _endDate: Date.UTC(2026, 5, 19, 0), // 19th June 2026, 0 UTC. /** * Whether the area has been initialised. @@ -461,6 +461,72 @@ const YecArea = { */ _shouldShow: false, + /** + * The tool number to show first, or `null` whilst unset. + * + * @type {?number} + */ + _toolNum1: null, + + /** + * The tool number to show second, or `null` whilst unset. + * + * @type {?number} + */ + _toolNum2: null, + + /** + * The name and description data for each tool. + * + * @type {object[]} + */ + _toolData: [ + { + name: "Onion Browser", + descId: "summer-2026-funding-tool-onion-browser-description", + }, + { + name: "Quiet", + descId: "summer-2026-funding-tool-quiet-description", + }, + { + name: "Ricochet Refresh", + descId: "summer-2026-funding-tool-ricochet-refresh-description", + }, + { + name: "SecureDrop", + descId: "summer-2026-funding-tool-securedrop-description", + }, + { + name: "OnionShare", + descId: "summer-2026-funding-tool-onionshare-description", + }, + { + name: "Digital Security Helpdesk", + descId: "summer-2026-funding-tool-digital-security-helpdesk-description", + }, + { + name: "Paskoocheh", + descId: "summer-2026-funding-tool-paskoocheh-description", + }, + { + name: "Unredacted", + descId: "summer-2026-funding-tool-unredacted-description", + }, + { + name: "Osservatorio Nessuno", + descId: "summer-2026-funding-tool-osservatorio-nessuno-description", + }, + { + name: "Save", + descId: "summer-2026-funding-tool-save-description", + }, + { + name: "OONI", + descId: "summer-2026-funding-tool-ooni-description", + }, + ], + /** * The banner element. * @@ -498,8 +564,10 @@ const YecArea = { * @param {boolean} dismissYEC - Whether the user has dismissed YEC. * @param {boolean} isStable - Whether this is a stable release. * @param {string} appLocale - The app locale, as BCP47. + * @param {number} toolNum1 - The number for the first tool to show. + * @param {number} toolNum2 - The number for the first tool to show. */ - potentiallyShow(dismissYEC, isStable, appLocale) { + potentiallyShow(dismissYEC, isStable, appLocale, toolNum1, toolNum2) { const now = Date.now(); this._shouldShow = !dismissYEC && @@ -508,13 +576,15 @@ const YecArea = { now >= this._startDate && now < this._endDate; this._locale = appLocale; + this._toolNum1 = toolNum1; + this._toolNum2 = toolNum2; this._update(); }, /** * Update the visibility of the banner to reflect the new state. */ - _update() { + async _update() { if (!this._initialized) { return; } @@ -526,8 +596,27 @@ const YecArea = { return; } + const tool1 = this._toolData[this._toolNum1]; + const tool2 = this._toolData[this._toolNum2]; + + const [tool1Desc, tool2Desc] = await document.l10n.formatValues([ + { id: tool1.descId }, + { id: tool2.descId }, + ]); + + document.l10n.setAttributes( + document.getElementById("yec-body"), + "summer-2026-funding-intro", + { + "tool1-name": tool1.name, + "tool1-description": tool1Desc, + "tool2-name": tool2.name, + "tool2-description": tool2Desc, + } + ); + const donateLink = document.getElementById("yec-donate-link"); - const base = "https://www.torproject.org/donate"; + const base = "https://internetfreedom.torproject.org"; donateLink.href = base; document.body.classList.add("show-yec"); @@ -574,11 +663,13 @@ window.addEventListener("InitialData", event => { surveyDismissVersion, appLocale, dismissYEC, + toolNum1, + toolNum2, } = event.detail; SearchWidget.setOnionizeState(!!searchOnionize); MessageArea.setMessageData(messageData, !!isStable, !!torConnectEnabled); SurveyArea.potentiallyShow(surveyDismissVersion, isStable, appLocale); - YecArea.potentiallyShow(dismissYEC, isStable, appLocale); + YecArea.potentiallyShow(dismissYEC, isStable, appLocale, toolNum1, toolNum2); gInitialData = true; maybeComplete(); ===================================== browser/components/abouttor/content/yec2025-image.svg ===================================== @@ -0,0 +1,20 @@ +<svg width="495" height="381" viewBox="0 0 495 381" fill="none" xmlns="http://www.w3.org/2000/svg"> + <path d="M247.419 264.776C201.679 273.69 174.117 246.935 166.057 232.441L105.262 261.112L170.602 258.902L131.868 327.126L195.407 280.785L189.197 362.111L227.832 285.742L262.535 343.489L247.432 264.776H247.419Z" fill="#B6E368"/> + <path d="M223.938 98.8502C269.555 89.3133 297.484 115.702 305.741 130.086L366.144 100.584L300.841 103.686L338.631 34.949L275.741 82.1453L280.837 0.733295L243.255 77.6271L207.756 20.3445L223.938 98.8502Z" fill="#B6E368"/> + <g opacity="0.8"> + <path fill-rule="evenodd" clip-rule="evenodd" d="M256.349 131.796H260.465V136.119H256.141V132.016H247.921V136.119H252.025V140.222H256.141V148.648H260.465V157.293H256.141V148.867H251.817V140.442H247.701V136.119H243.597V132.016H239.273V165.499H260.477V157.293H264.801V165.499H277.137V169.822H285.577V174.145H276.928V169.822H264.814V207.408H277.149V203.305H285.797V207.408H289.913V211.731H285.797V216.053H281.681V220.376H277.357V224.479H273.033V228.582H269.138V232.905H264.814V228.582H268.709V224.259H273.033V220.156H277.357V216.053H281.473V211.731H285.589V207.628H277.149V211.731H264.814V220.364H260.489V228.79H256.165V232.893H264.814V237.215H251.829V228.582H256.153V220.156H260.477V211.731H239.273V237.215H251.817V241.099H222.393V237.215H209.629V232.893H205.525V228.57H201.409V224.467H197.085V220.364H192.981V216.041H197.306V220.144H201.409V224.247H205.733V228.57H209.849V232.893H218.289V228.79H213.965V220.364H209.849V211.731H197.085V207.628H188.645V211.731H184.321V207.408H180.217V169.822H184.541V207.408H188.657V203.305H197.306V207.408H209.849V169.822H197.306V174.145H188.657V169.822H184.541V161.188H188.657V152.763H192.981V148.66H197.306V144.557H201.409V140.454H205.525V136.131H214.173V140.454H205.733V144.777H201.618V148.88H197.293V152.983H192.969V161.408H188.853V169.834H197.073V165.511H209.837V157.305H214.161V165.511H234.924V132.028H231.029V136.131H226.705V132.028H218.485V136.131H214.161V131.808H218.277V127.705H256.349V131.808V131.796ZM214.161 220.132H218.277V228.558H222.601V237.191H234.937V211.706H214.173V220.132H214.161ZM239.261 207.396H260.465V169.81H239.261V207.396ZM214.161 207.396H234.924V169.81H214.161V207.396Z" fill="#C272FF"/> + <path d="M192.968 216.029H188.644V211.706H192.968V216.029Z" fill="#C272FF"/> + <path d="M294.212 207.395H289.888V169.809H294.212V207.395Z" fill="#C272FF"/> + <path d="M269.113 140.429H273.008V144.532H277.332V148.635H281.448V152.738H285.772V161.164H289.888V169.797H285.564V161.371H281.448V152.946H277.124V148.843H273.008V144.74H268.684V140.417H260.465V136.094H269.113V140.417V140.429Z" fill="#C272FF"/> + <path d="M226.718 140.429H222.602V148.855H218.486V157.281H214.162V148.635H218.278V140.209H222.394V136.106H226.718V140.429Z" fill="#C272FF"/> + <path d="M260.464 136.119V131.796H256.348V127.693H218.276V131.796H214.16V136.119M260.464 136.119H256.14V132.016H247.92V136.119H252.024V140.222H256.14V148.648H260.464V157.293M260.464 136.119V140.442H268.683V144.764H273.008V148.867H277.123V152.97H281.448V161.396H285.564V169.822M260.464 136.119H269.112V140.442H273.008V144.545H277.332V148.648H281.448V152.75H285.772V161.176H289.888V169.81M214.16 136.119H205.512V140.442H201.396V144.545H197.292V148.648H192.968V152.75H188.644V161.176H184.528V169.81M214.16 136.119V140.442H205.72V144.764H201.604V148.867H197.28V152.97H192.956V161.396H188.84V169.822H197.06V165.499H209.824V157.293H214.148M214.16 136.119H218.484V132.016H226.704V136.119M289.888 169.81H294.212V207.396H289.888M289.888 169.81V207.396M260.464 157.281H256.14V148.855H251.816V140.429H247.7V136.107H243.596V132.004H239.272V165.487H260.476V157.281H260.464ZM260.464 157.281H264.788V165.487H277.123V169.81H285.564M289.888 207.396H285.772V203.293H277.123V207.396H264.788V169.81H276.903V174.132H285.551V169.81H289.875M289.888 207.396V211.718H285.772V216.041H281.656V220.364H277.332V224.467H273.008V228.57H269.112V232.892H264.788M264.788 232.88V228.558H268.683V224.235H273.008V220.132H277.332V216.029H281.448V211.706H285.564V207.603H277.123V211.706H264.788V220.339H260.464V228.765H256.14V232.868H264.788V232.88ZM264.788 232.88V237.203H251.803M251.803 237.191V228.558H256.128V220.132H260.452V211.706H239.248V237.191H251.791H251.803ZM251.803 237.191V241.074H222.38V237.191H209.616V232.868H205.512V228.545H201.396V224.442H197.072V220.339H192.968V216.017M192.968 216.029H197.292V220.132H201.396V224.235H205.72V228.558H209.836V232.88H218.276V228.777H213.952V220.352H209.836V211.718H197.072V207.615H188.632V211.718M192.968 216.029H188.644V211.706H192.968V216.029ZM188.632 211.706H184.308V207.383H180.204V169.797H184.528M184.528 169.81V207.396H188.644V203.293H197.292V207.396H209.836V169.81H197.292V174.132H188.644V169.81H184.528ZM214.16 157.281V165.487H234.923V132.004H231.028V136.107H226.704M214.16 157.281H218.484V148.855H222.6V140.429H226.716V136.107H222.392V140.21H218.276V148.635H214.16V157.281ZM214.16 220.132H218.276V228.558H222.6V237.191H234.936V211.706H214.172V220.132H214.16ZM239.26 207.396H260.464V169.81H239.26V207.396ZM214.16 207.396H234.923V169.81H214.16V207.396Z" stroke="#C272FF" stroke-width="0.618845"/> + </g> + <path d="M166.566 131.845H175.239L169.665 124.591L179.881 122.381L170.633 111.794L178.264 111.587L178.607 109.511L127.183 90.5711C125.738 90.0338 124.28 89.5942 122.81 89.2401L97.6982 24.4963C92.2226 10.3802 78.3437 0.904321 63.1542 0.904321C58.6095 0.904321 54.1139 1.73468 49.8265 3.3954L23.6612 13.4696C4.62526 20.8208 -4.86823 42.227 2.49382 61.2032L38.3608 153.715C43.8364 167.831 57.7153 177.319 72.8926 177.319C74.9261 177.319 76.935 177.148 78.9195 176.807C82.7169 180.238 87.1513 182.937 92.1001 184.756L143.855 203.818L137.804 193.072H149.686L145.643 183.242H158.493L153.238 173.546L119.454 161.103C130.674 153.727 136.958 140.771 135.954 127.534L175.349 142.041L166.566 131.845ZM151.731 175.28L154.904 181.105H142.446L146.501 190.935H134.141L139.139 199.812L92.8473 182.753C83.1946 179.2 75.5263 172.117 71.2389 162.825C66.9638 153.544 66.5718 143.165 70.1365 133.591L76.9963 115.164C80.2914 106.324 86.551 99.412 94.2316 95.1259L104.509 121.649C103.799 122.528 103.211 123.541 102.794 124.665L95.9343 143.091C94.9175 145.827 95.0278 148.782 96.2527 151.419C97.4655 154.069 99.6581 156.096 102.402 157.11L151.731 175.28ZM65.6653 144.337C65.4938 144.032 65.3468 143.702 65.2121 143.36L29.3328 50.8481C28.2549 48.0884 28.9653 45.7316 29.4798 44.5837C30.0066 43.4237 31.2805 41.3111 34.049 40.2488L60.202 30.1623C61.182 29.7838 62.1742 29.6006 63.1542 29.6006C65.9716 29.6006 69.4382 31.2247 70.8469 34.8636L93.4476 93.1232C85.2158 97.6169 78.503 104.98 74.9873 114.42L68.1275 132.858C66.7311 136.595 65.9103 140.466 65.6653 144.337ZM104.803 125.397C104.975 124.921 105.195 124.469 105.44 124.054L106.726 127.363C107.804 130.135 107.094 132.48 106.579 133.628H106.567C106.065 134.8 104.803 136.9 102.022 137.963L99.8174 138.817L104.803 125.397ZM116.918 160.163L103.149 155.095C100.932 154.289 99.1804 152.665 98.2004 150.528C97.2205 148.403 97.1225 146.034 97.9432 143.836L98.8129 141.492L102.794 139.965C106.297 138.622 107.89 135.96 108.539 134.495C109.188 133.042 110.083 130.086 108.723 126.594L106.983 122.113V122.064L106.273 120.281L106.163 119.988L96.1303 94.1245L96.1058 94.0757L95.4565 92.3906L95.3585 92.1219L72.8436 34.0821C71.0674 29.5029 66.6943 27.4637 63.1542 27.4637C61.9169 27.4637 60.6552 27.6957 59.4303 28.1597L33.2772 38.2461C29.7983 39.5894 28.1814 42.2514 27.5321 43.7045C26.8706 45.1699 25.9764 48.1372 27.3361 51.6296L63.2154 144.142C63.7666 145.595 64.5996 146.804 65.5918 147.744C65.7021 153.202 66.9393 158.624 69.2912 163.716C71.2389 167.929 73.8359 171.702 76.9718 174.938C75.6121 175.109 74.2646 175.182 72.8926 175.182C58.5973 175.182 45.5146 166.244 40.3575 152.934L4.49051 60.4217C-2.4428 42.5567 6.49946 22.396 24.433 15.4723L50.5982 5.39804C54.6406 3.8228 58.8668 3.04128 63.1542 3.04128C77.4618 3.04128 90.5322 11.9677 95.7015 25.2779L120.299 88.6906L120.385 88.9226L121.156 90.913L121.218 91.0595L131.581 117.79C132.414 119.939 133.014 122.113 133.381 124.311C133.406 124.384 133.418 124.457 133.43 124.53C133.553 125.19 133.639 125.861 133.7 126.533C133.7 126.594 133.712 126.643 133.712 126.704C135.133 140.039 128.629 153.214 116.918 160.163ZM135.697 125.165C135.317 122.43 134.619 119.683 133.577 117.008L123.765 91.7067C124.66 91.9632 125.554 92.244 126.436 92.5737L172.666 109.608L166.039 109.791L175.888 121.062L165.904 123.212L170.902 129.708H161.899L168.33 137.181L135.697 125.165Z" fill="white"/> + <path d="M488.077 306.123L422.933 212.255C415.84 202.035 404.252 195.831 391.819 195.55C388.193 192.314 383.893 189.701 379.018 187.906L332.347 170.713L332.151 170.64L320.771 170.957L329.198 180.592L318.639 182.875L325.034 191.191H316.802L323.417 198.872L356.38 211.01L348.847 216.212C339.145 222.903 333.449 233.222 332.31 244.078L302.004 232.917L307.259 242.576H293.846L297.888 252.406H286.643L291.126 260.355L344.694 280.088C345.221 280.284 345.735 280.467 346.262 280.626L404.13 364.016C411.406 374.481 423.374 380.733 436.15 380.733C444.076 380.733 451.707 378.352 458.249 373.846L478.228 360.072C486.766 354.174 492.499 345.321 494.361 335.137C496.223 324.94 493.993 314.646 488.077 306.123ZM324.678 197.052L321.469 193.328H329.37L322.388 184.255L333.192 181.923L325.377 172.972L331.795 172.789L378.271 189.909C382.092 191.313 385.535 193.255 388.548 195.611C381.48 196.039 374.706 198.371 368.826 202.425L358.536 209.52L324.678 197.052ZM345.429 278.086L344.168 277.622L292.609 258.621L290.306 254.543H301.085L297.043 244.713H310.861L306.598 236.885L332.138 246.288L334.245 247.069L354.237 254.433C356.932 255.422 359.749 255.397 362.273 254.53C362.971 254.311 363.632 254.018 364.269 253.651C366.695 252.32 368.667 250.147 369.696 247.375L374.179 235.359L386.012 227.19C387.495 226.176 389.148 225.651 390.924 225.651C392.296 225.651 395.751 226.017 398.091 229.388L401.447 234.223C401.226 235.078 400.969 235.921 400.675 236.775L393.497 256.106L393.142 257.022C390.14 264.507 385.02 270.49 378.748 274.52C378.148 274.911 377.536 275.289 376.911 275.631C368.287 280.504 357.777 281.896 347.61 278.806C346.887 278.599 346.152 278.354 345.429 278.086ZM362.432 246.544C362.665 245.226 363.461 242.747 366.033 240.976L371.092 237.484L367.687 246.63C366.829 248.95 365.176 250.745 363.142 251.844C362.101 249.683 362.224 247.656 362.432 246.544ZM402.366 238.424L402.709 237.471C402.819 237.142 402.929 236.824 403.027 236.495L463.234 323.255C465.023 325.819 464.888 328.42 464.643 329.739C464.398 331.058 463.614 333.525 461.042 335.307L441.062 349.082C439.58 350.107 437.926 350.62 436.15 350.62C434.778 350.62 431.312 350.266 428.972 346.884L379.973 276.279C386.588 272.005 391.966 265.704 395.138 257.803L402.366 238.424ZM492.254 334.746C490.49 344.38 485.075 352.745 477.003 358.313L457.024 372.088C450.85 376.349 443.635 378.596 436.15 378.596C424.072 378.596 412.766 372.698 405.894 362.807L349.496 281.529C352.534 282.25 355.584 282.592 358.598 282.592C365.519 282.592 372.256 280.76 378.136 277.39L427.208 348.105C430.136 352.305 434.435 352.757 436.15 352.757C438.367 352.757 440.425 352.11 442.275 350.84L462.254 337.066C465.464 334.843 466.456 331.766 466.75 330.118C467.044 328.481 467.228 325.245 464.998 322.046L403.774 233.808L402.084 231.378L399.854 228.166C396.939 223.966 392.639 223.514 390.924 223.514H390.912C388.695 223.514 386.637 224.161 384.787 225.431L375.478 231.854L372.403 233.979L364.808 239.218C361.599 241.428 360.619 244.517 360.313 246.154C360.068 247.533 359.908 250.012 361.158 252.65C359.198 253.224 357.042 253.187 354.984 252.43L334.38 244.847C335.323 234.394 340.738 224.405 350.06 217.97L358.83 211.913L360.986 210.424L370.039 204.184C376.213 199.934 383.44 197.675 390.912 197.675H390.961C392.039 197.675 393.117 197.724 394.171 197.822C405.012 198.774 414.934 204.477 421.169 213.476L486.313 307.344C491.898 315.391 494.005 325.123 492.254 334.746Z" fill="white"/> + <path d="M82.7096 239.196L95.6423 239.231L95.6325 242.957L82.7096 242.922V259.141H78.9108V242.912L65.5817 242.877L65.5925 239.151L78.9108 239.186V223.021H82.7096V239.196Z" fill="#C272FF"/> + <path d="M410.924 116.181L423.856 116.216L423.846 119.937L410.924 119.902V136.101H407.125V119.892L393.796 119.857L393.806 116.136L407.125 116.171V100.028H410.924V116.181Z" fill="#C272FF"/> + <path d="M62.4132 304.747C62.4132 303.479 61.387 302.452 60.1215 302.452C58.8559 302.452 57.8297 303.479 57.8297 304.747C57.8297 306.014 58.8559 307.041 60.1215 307.041V310.767C56.801 310.767 54.1093 308.072 54.1093 304.747C54.1093 301.422 56.801 298.727 60.1215 298.727C63.4419 298.727 66.1336 301.422 66.1336 304.747C66.1336 308.072 63.4419 310.767 60.1215 310.767V307.041C61.387 307.041 62.4132 306.014 62.4132 304.747Z" fill="#C272FF"/> + <path d="M359.727 133.175C363.047 133.175 365.739 135.87 365.739 139.195C365.739 142.52 363.047 145.215 359.727 145.215C356.406 145.215 353.715 142.52 353.715 139.195C353.715 135.87 356.406 133.175 359.727 133.175Z" fill="#C272FF"/> + <path d="M416.842 157.255C420.163 157.255 422.854 159.95 422.854 163.275C422.854 166.6 420.163 169.295 416.842 169.295C413.522 169.295 410.83 166.6 410.83 163.275C410.83 159.95 413.522 157.255 416.842 157.255Z" fill="#C272FF"/> + <path d="M101.492 281.67C101.492 280.403 100.466 279.375 99.2004 279.375C97.9348 279.375 96.9087 280.403 96.9087 281.67C96.9087 282.937 97.9348 283.965 99.2004 283.965V287.69C95.88 287.69 93.1883 284.995 93.1883 281.67C93.1883 278.345 95.88 275.65 99.2004 275.65C102.521 275.65 105.213 278.345 105.213 281.67C105.213 284.995 102.521 287.69 99.2004 287.69V283.965C100.466 283.965 101.492 282.937 101.492 281.67Z" fill="#C272FF"/> +</svg> ===================================== browser/components/abouttor/jar.mn ===================================== @@ -9,3 +9,4 @@ browser.jar: content/browser/abouttor/2728-sparkles.svg (content/2728-sparkles.svg) content/browser/abouttor/2764-red-heart.svg (content/2764-red-heart.svg) content/browser/abouttor/yec-heart.svg (content/yec-heart.svg) + content/browser/abouttor/yec2025-image.svg (content/yec2025-image.svg) ===================================== toolkit/locales/en-US/toolkit/global/tor-browser.ftl ===================================== @@ -728,3 +728,38 @@ yec-donate-button = Donate now # Here "Close" is a verb, referring to closing the banner. yec-close-button = .title = Close + +## Summer 2026 Tor Project funding campaign. + +summer-2026-funding-heading = A new way to fund internet freedom +# $tool1-name (string ) - The name of some internet freedom tool, this is not translated and will only use the Latin alphabet. This should be wrapped in '<b>' and '</b>' to make them appear bold. Similar for '$tool2-name'. +# $tool1-description (string) - A short description for the tool, this is translated. Similar for '$tool2-description'. +# Note, since '$tool1-description' and '$tool2-description' contain arbitrary text, you will likely need to separate them out from the rest of the text. The English text uses brackets '(' and ')' to do this. +# Note, the curly brackets '{' and '}' are part of the Fluent syntax, but the normal brackets '(' and ')' are not. +summer-2026-funding-intro = Did you know that internet freedom tools serve millions of people every day? This includes tools like <b>{ $tool1-name }</b> ({ $tool1-description }) and <b>{ $tool2-name }</b> ({ $tool2-description }). +# Here "Tor" refers to The Tor Project. +# You should wrap the call to donation in '<b>' and '</b>', which will make it stand out. +summer-2026-funding-outro = But unprecedented funding cuts have harmed the small organizations that maintain these tools. <b>Help protect internet freedom by donating cryptocurrency</b>—all donations will be matched by friends of Tor. + +# A short description of "Onion Browser": onionbrowser.com . +summer-2026-funding-tool-onion-browser-description = Tor-powered browser for iOS +# A short description of "Quiet": tryquiet.org . +summer-2026-funding-tool-quiet-description = private group messaging +# A short description of "Ricochet Refresh": ricochetrefresh.net . +summer-2026-funding-tool-ricochet-refresh-description = secure and anonymous messaging +# A short description of "SecureDrop": securedrop.org . +summer-2026-funding-tool-securedrop-description = anonymous whistleblowing app +# A short description of "OnionShare": onionshare.org . +summer-2026-funding-tool-onionshare-description = secure filesharing, hosting & chatting +# A short description of "Digital Security Helpdesk": miaan.org/projects/miaan-digital-security-helpdesk . +summer-2026-funding-tool-digital-security-helpdesk-description = internet freedom for Iranians +# A short description of "Paskoocheh": paskoocheh.com . +summer-2026-funding-tool-paskoocheh-description = countering digital authoritarianism +# A short description of "Unredacted": unredacted.org . +summer-2026-funding-tool-unredacted-description = keeping people connected, no matter where +# A short description of "Osservatorio Nessuno": osservatorionessuno.org . +summer-2026-funding-tool-osservatorio-nessuno-description = software that leaves no trace +# A short description of "Save": open-archive.org/save . +summer-2026-funding-tool-save-description = private archiving +# A short description of "OONI": ooni.org . +summer-2026-funding-tool-ooni-description = tracking censorship globally View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/927330… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/927330… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-150.0a1-16.0-2] 2 commits: fixup! TB 7494: Create local home page for TBB.
by henry (@henry) 29 Apr '26

29 Apr '26
henry pushed to branch tor-browser-150.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: cba5ca86 by Henry Wilkes at 2026-04-28T18:12:10+00:00 fixup! TB 7494: Create local home page for TBB. TB 44746: Modify YEC banner to be used for summer 2026 funding campaign. - - - - - e9280e8a by Henry Wilkes at 2026-04-28T18:12:10+00:00 fixup! TB 44746: Assets for summer 2026 funding campaign. - - - - - 6 changed files: - browser/components/abouttor/AboutTorParent.sys.mjs - browser/components/abouttor/content/aboutTor.css - browser/components/abouttor/content/aboutTor.html - browser/components/abouttor/content/aboutTor.js - + browser/components/abouttor/content/yec2025-image.svg - browser/components/abouttor/jar.mn Changes: ===================================== browser/components/abouttor/AboutTorParent.sys.mjs ===================================== @@ -23,6 +23,44 @@ export class AboutTorParent extends JSWindowActorParent { */ static #dismissYEC = false; + /** + * A shuffled array of tool numbers. `null` whilst unset. + * + * @type {?number[]} + */ + static #toolNums = null; + /** + * The current index in `#toolNums`. + * + * @type {number} + */ + static #toolIndex = 0; + + /** + * Return the pair of tools numbers to show in the next about:tor window. + * + * @returns {{ toolNum1: number, toolNum2: number }} - The tool number pairs. + */ + static #getToolNumPair() { + const numTools = 11; + if (!this.#toolNums) { + this.#toolNums = Array.from({ length: numTools }, (_, index) => index); + // Shuffle the array with Fisher–Yates. + for (let index = numTools - 1; index > 0; index--) { + const topBound = index + 1; + const exchange = Math.floor(Math.random() * topBound) % topBound; + const tmpNum = this.#toolNums[index]; + this.#toolNums[index] = this.#toolNums[exchange]; + this.#toolNums[exchange] = tmpNum; + } + } + const toolNum1 = this.#toolNums[this.#toolIndex % numTools]; + const toolNum2 = this.#toolNums[(this.#toolIndex + 1) % numTools]; + this.#toolIndex = (this.#toolIndex + 2) % numTools; + + return { toolNum1, toolNum2 }; + } + /** * Whether this instance has a preloaded browser. * @@ -58,6 +96,8 @@ export class AboutTorParent extends JSWindowActorParent { appLocale = "ja"; } + const { toolNum1, toolNum2 } = AboutTorParent.#getToolNumPair(); + return { torConnectEnabled: lazy.TorConnect.enabled, messageData: lazy.AboutTorMessage.getNext(), @@ -69,6 +109,8 @@ export class AboutTorParent extends JSWindowActorParent { ), appLocale, dismissYEC: AboutTorParent.#dismissYEC, + toolNum1, + toolNum2, }; } ===================================== browser/components/abouttor/content/aboutTor.css ===================================== @@ -341,12 +341,11 @@ body.show-yec h1 { "yec-matching yec-image" auto "yec-donate yec-image" min-content / 1fr min-content; - --yec-image-background: #1f0333; - /* Remove 1px from padding for border. */ - padding-block: 55px 55px; - padding-inline: 47px 47px; + --yec-image-background: #3a1653; + padding-block: 56px 56px; + padding-inline: 48px 48px; box-sizing: border-box; - max-width: 850px; + max-width: 840px; margin-block-end: var(--space-small); /* Position for the close button. */ position: relative; @@ -380,8 +379,8 @@ body.show-yec h1 { #yec-heading { grid-area: yec-heading; margin-block: 0 var(--space-large); - font-size: 64px; - font-weight: var(--font-weight); + font-size: var(--font-size-xxlarge); + font-weight: var(--font-weight-semibold); } #yec-body { @@ -389,13 +388,13 @@ body.show-yec h1 { margin-block: 0 var(--space-medium); } -#yec-body-highlight { - font-weight: var(--font-weight-bold); -} - #yec-matching { grid-area: yec-matching; - margin-block: 0 var(--space-xxlarge); + margin-block: 0 var(--space-xlarge); +} + +#yec-banner b { + font-weight: var(--font-weight-semibold); } #yec-donate-link { @@ -472,7 +471,7 @@ body.show-yec h1 { } #yec-heading { - font-size: 50px; + font-size: var(--font-size-xlarge); } #yec-matching { @@ -493,20 +492,16 @@ body.show-yec h1 { @media not ((prefers-contrast) or (forced-colors)) { #yec-banner { - border-color: transparent; + border-color: #523168; background-color: var(--yec-image-background); --yec-text: #ffffff; - --yec-button-background: #b6e368; - --yec-button-background-hover: #d2f2a1; - --yec-button-background-active: #ecfcd8; - --yec-button-text: #15141a; + --yec-button-background: var(--button-background-color-tor-light); + --yec-button-background-hover: var(--button-background-color-tor-hover-light); + --yec-button-background-active: var(--button-background-color-tor-active-light); + --yec-button-text: var(--button-text-color-tor-light); color: var(--yec-text); } - #yec-body-highlight { - color: var(--yec-button-background); - } - #yec-donate-link { --button-text-color: var(--yec-button-text); --button-text-color-hover: var(--yec-button-text); ===================================== browser/components/abouttor/content/aboutTor.html ===================================== @@ -35,13 +35,15 @@ <body class="onion-pattern-background"> <!-- Year End Campaign (YEC). --> <article id="yec-banner" aria-labelledby="yec-heading"> - <img id="yec-image" alt="" /> - <h2 id="yec-heading"></h2> - <p id="yec-body"> - <b id="yec-body-highlight" data-l10n-name="highlight"></b> - </p> - <p id="yec-matching"></p> - <a id="yec-donate-link"> + <img + id="yec-image" + alt="" + src="chrome://browser/content/abouttor/yec2025-image.svg" + /> + <h2 id="yec-heading" data-l10n-id="summer-2026-funding-heading"></h2> + <p id="yec-body"></p> + <p id="yec-matching" data-l10n-id="summer-2026-funding-outro"></p> + <a id="yec-donate-link" target="_blank"> <span data-l10n-id="yec-donate-button"></span> <img id="yec-donate-icon" ===================================== browser/components/abouttor/content/aboutTor.js ===================================== @@ -431,14 +431,14 @@ const YecArea = { * * @type {?integer} */ - _startDate: null, // No YEC is active. + _startDate: Date.UTC(2026, 4, 19, 15), // 19th May 2026, 15 UTC. /** * The epoch time to stop showing the banner, if at all. * * @type {?integer} */ - _endDate: null, // No YEC is active. + _endDate: Date.UTC(2026, 5, 19, 0), // 19th June 2026, 0 UTC. /** * Whether the area has been initialised. @@ -461,6 +461,72 @@ const YecArea = { */ _shouldShow: false, + /** + * The tool number to show first, or `null` whilst unset. + * + * @type {?number} + */ + _toolNum1: null, + + /** + * The tool number to show second, or `null` whilst unset. + * + * @type {?number} + */ + _toolNum2: null, + + /** + * The name and description data for each tool. + * + * @type {object[]} + */ + _toolData: [ + { + name: "Onion Browser", + descId: "summer-2026-funding-tool-onion-browser-description", + }, + { + name: "Quiet", + descId: "summer-2026-funding-tool-quiet-description", + }, + { + name: "Ricochet Refresh", + descId: "summer-2026-funding-tool-ricochet-refresh-description", + }, + { + name: "SecureDrop", + descId: "summer-2026-funding-tool-securedrop-description", + }, + { + name: "OnionShare", + descId: "summer-2026-funding-tool-onionshare-description", + }, + { + name: "Digital Security Helpdesk", + descId: "summer-2026-funding-tool-digital-security-helpdesk-description", + }, + { + name: "Paskoocheh", + descId: "summer-2026-funding-tool-paskoocheh-description", + }, + { + name: "Unredacted", + descId: "summer-2026-funding-tool-unredacted-description", + }, + { + name: "Osservatorio Nessuno", + descId: "summer-2026-funding-tool-osservatorio-nessuno-description", + }, + { + name: "Save", + descId: "summer-2026-funding-tool-save-description", + }, + { + name: "OONI", + descId: "summer-2026-funding-tool-ooni-description", + }, + ], + /** * The banner element. * @@ -498,8 +564,10 @@ const YecArea = { * @param {boolean} dismissYEC - Whether the user has dismissed YEC. * @param {boolean} isStable - Whether this is a stable release. * @param {string} appLocale - The app locale, as BCP47. + * @param {number} toolNum1 - The number for the first tool to show. + * @param {number} toolNum2 - The number for the first tool to show. */ - potentiallyShow(dismissYEC, isStable, appLocale) { + potentiallyShow(dismissYEC, isStable, appLocale, toolNum1, toolNum2) { const now = Date.now(); this._shouldShow = !dismissYEC && @@ -508,13 +576,15 @@ const YecArea = { now >= this._startDate && now < this._endDate; this._locale = appLocale; + this._toolNum1 = toolNum1; + this._toolNum2 = toolNum2; this._update(); }, /** * Update the visibility of the banner to reflect the new state. */ - _update() { + async _update() { if (!this._initialized) { return; } @@ -526,8 +596,27 @@ const YecArea = { return; } + const tool1 = this._toolData[this._toolNum1]; + const tool2 = this._toolData[this._toolNum2]; + + const [tool1Desc, tool2Desc] = await document.l10n.formatValues([ + { id: tool1.descId }, + { id: tool2.descId }, + ]); + + document.l10n.setAttributes( + document.getElementById("yec-body"), + "summer-2026-funding-intro", + { + "tool1-name": tool1.name, + "tool1-description": tool1Desc, + "tool2-name": tool2.name, + "tool2-description": tool2Desc, + } + ); + const donateLink = document.getElementById("yec-donate-link"); - const base = "https://www.torproject.org/donate"; + const base = "https://internetfreedom.torproject.org"; donateLink.href = base; document.body.classList.add("show-yec"); @@ -574,11 +663,13 @@ window.addEventListener("InitialData", event => { surveyDismissVersion, appLocale, dismissYEC, + toolNum1, + toolNum2, } = event.detail; SearchWidget.setOnionizeState(!!searchOnionize); MessageArea.setMessageData(messageData, !!isStable, !!torConnectEnabled); SurveyArea.potentiallyShow(surveyDismissVersion, isStable, appLocale); - YecArea.potentiallyShow(dismissYEC, isStable, appLocale); + YecArea.potentiallyShow(dismissYEC, isStable, appLocale, toolNum1, toolNum2); gInitialData = true; maybeComplete(); ===================================== browser/components/abouttor/content/yec2025-image.svg ===================================== @@ -0,0 +1,20 @@ +<svg width="495" height="381" viewBox="0 0 495 381" fill="none" xmlns="http://www.w3.org/2000/svg"> + <path d="M247.419 264.776C201.679 273.69 174.117 246.935 166.057 232.441L105.262 261.112L170.602 258.902L131.868 327.126L195.407 280.785L189.197 362.111L227.832 285.742L262.535 343.489L247.432 264.776H247.419Z" fill="#B6E368"/> + <path d="M223.938 98.8502C269.555 89.3133 297.484 115.702 305.741 130.086L366.144 100.584L300.841 103.686L338.631 34.949L275.741 82.1453L280.837 0.733295L243.255 77.6271L207.756 20.3445L223.938 98.8502Z" fill="#B6E368"/> + <g opacity="0.8"> + <path fill-rule="evenodd" clip-rule="evenodd" d="M256.349 131.796H260.465V136.119H256.141V132.016H247.921V136.119H252.025V140.222H256.141V148.648H260.465V157.293H256.141V148.867H251.817V140.442H247.701V136.119H243.597V132.016H239.273V165.499H260.477V157.293H264.801V165.499H277.137V169.822H285.577V174.145H276.928V169.822H264.814V207.408H277.149V203.305H285.797V207.408H289.913V211.731H285.797V216.053H281.681V220.376H277.357V224.479H273.033V228.582H269.138V232.905H264.814V228.582H268.709V224.259H273.033V220.156H277.357V216.053H281.473V211.731H285.589V207.628H277.149V211.731H264.814V220.364H260.489V228.79H256.165V232.893H264.814V237.215H251.829V228.582H256.153V220.156H260.477V211.731H239.273V237.215H251.817V241.099H222.393V237.215H209.629V232.893H205.525V228.57H201.409V224.467H197.085V220.364H192.981V216.041H197.306V220.144H201.409V224.247H205.733V228.57H209.849V232.893H218.289V228.79H213.965V220.364H209.849V211.731H197.085V207.628H188.645V211.731H184.321V207.408H180.217V169.822H184.541V207.408H188.657V203.305H197.306V207.408H209.849V169.822H197.306V174.145H188.657V169.822H184.541V161.188H188.657V152.763H192.981V148.66H197.306V144.557H201.409V140.454H205.525V136.131H214.173V140.454H205.733V144.777H201.618V148.88H197.293V152.983H192.969V161.408H188.853V169.834H197.073V165.511H209.837V157.305H214.161V165.511H234.924V132.028H231.029V136.131H226.705V132.028H218.485V136.131H214.161V131.808H218.277V127.705H256.349V131.808V131.796ZM214.161 220.132H218.277V228.558H222.601V237.191H234.937V211.706H214.173V220.132H214.161ZM239.261 207.396H260.465V169.81H239.261V207.396ZM214.161 207.396H234.924V169.81H214.161V207.396Z" fill="#C272FF"/> + <path d="M192.968 216.029H188.644V211.706H192.968V216.029Z" fill="#C272FF"/> + <path d="M294.212 207.395H289.888V169.809H294.212V207.395Z" fill="#C272FF"/> + <path d="M269.113 140.429H273.008V144.532H277.332V148.635H281.448V152.738H285.772V161.164H289.888V169.797H285.564V161.371H281.448V152.946H277.124V148.843H273.008V144.74H268.684V140.417H260.465V136.094H269.113V140.417V140.429Z" fill="#C272FF"/> + <path d="M226.718 140.429H222.602V148.855H218.486V157.281H214.162V148.635H218.278V140.209H222.394V136.106H226.718V140.429Z" fill="#C272FF"/> + <path d="M260.464 136.119V131.796H256.348V127.693H218.276V131.796H214.16V136.119M260.464 136.119H256.14V132.016H247.92V136.119H252.024V140.222H256.14V148.648H260.464V157.293M260.464 136.119V140.442H268.683V144.764H273.008V148.867H277.123V152.97H281.448V161.396H285.564V169.822M260.464 136.119H269.112V140.442H273.008V144.545H277.332V148.648H281.448V152.75H285.772V161.176H289.888V169.81M214.16 136.119H205.512V140.442H201.396V144.545H197.292V148.648H192.968V152.75H188.644V161.176H184.528V169.81M214.16 136.119V140.442H205.72V144.764H201.604V148.867H197.28V152.97H192.956V161.396H188.84V169.822H197.06V165.499H209.824V157.293H214.148M214.16 136.119H218.484V132.016H226.704V136.119M289.888 169.81H294.212V207.396H289.888M289.888 169.81V207.396M260.464 157.281H256.14V148.855H251.816V140.429H247.7V136.107H243.596V132.004H239.272V165.487H260.476V157.281H260.464ZM260.464 157.281H264.788V165.487H277.123V169.81H285.564M289.888 207.396H285.772V203.293H277.123V207.396H264.788V169.81H276.903V174.132H285.551V169.81H289.875M289.888 207.396V211.718H285.772V216.041H281.656V220.364H277.332V224.467H273.008V228.57H269.112V232.892H264.788M264.788 232.88V228.558H268.683V224.235H273.008V220.132H277.332V216.029H281.448V211.706H285.564V207.603H277.123V211.706H264.788V220.339H260.464V228.765H256.14V232.868H264.788V232.88ZM264.788 232.88V237.203H251.803M251.803 237.191V228.558H256.128V220.132H260.452V211.706H239.248V237.191H251.791H251.803ZM251.803 237.191V241.074H222.38V237.191H209.616V232.868H205.512V228.545H201.396V224.442H197.072V220.339H192.968V216.017M192.968 216.029H197.292V220.132H201.396V224.235H205.72V228.558H209.836V232.88H218.276V228.777H213.952V220.352H209.836V211.718H197.072V207.615H188.632V211.718M192.968 216.029H188.644V211.706H192.968V216.029ZM188.632 211.706H184.308V207.383H180.204V169.797H184.528M184.528 169.81V207.396H188.644V203.293H197.292V207.396H209.836V169.81H197.292V174.132H188.644V169.81H184.528ZM214.16 157.281V165.487H234.923V132.004H231.028V136.107H226.704M214.16 157.281H218.484V148.855H222.6V140.429H226.716V136.107H222.392V140.21H218.276V148.635H214.16V157.281ZM214.16 220.132H218.276V228.558H222.6V237.191H234.936V211.706H214.172V220.132H214.16ZM239.26 207.396H260.464V169.81H239.26V207.396ZM214.16 207.396H234.923V169.81H214.16V207.396Z" stroke="#C272FF" stroke-width="0.618845"/> + </g> + <path d="M166.566 131.845H175.239L169.665 124.591L179.881 122.381L170.633 111.794L178.264 111.587L178.607 109.511L127.183 90.5711C125.738 90.0338 124.28 89.5942 122.81 89.2401L97.6982 24.4963C92.2226 10.3802 78.3437 0.904321 63.1542 0.904321C58.6095 0.904321 54.1139 1.73468 49.8265 3.3954L23.6612 13.4696C4.62526 20.8208 -4.86823 42.227 2.49382 61.2032L38.3608 153.715C43.8364 167.831 57.7153 177.319 72.8926 177.319C74.9261 177.319 76.935 177.148 78.9195 176.807C82.7169 180.238 87.1513 182.937 92.1001 184.756L143.855 203.818L137.804 193.072H149.686L145.643 183.242H158.493L153.238 173.546L119.454 161.103C130.674 153.727 136.958 140.771 135.954 127.534L175.349 142.041L166.566 131.845ZM151.731 175.28L154.904 181.105H142.446L146.501 190.935H134.141L139.139 199.812L92.8473 182.753C83.1946 179.2 75.5263 172.117 71.2389 162.825C66.9638 153.544 66.5718 143.165 70.1365 133.591L76.9963 115.164C80.2914 106.324 86.551 99.412 94.2316 95.1259L104.509 121.649C103.799 122.528 103.211 123.541 102.794 124.665L95.9343 143.091C94.9175 145.827 95.0278 148.782 96.2527 151.419C97.4655 154.069 99.6581 156.096 102.402 157.11L151.731 175.28ZM65.6653 144.337C65.4938 144.032 65.3468 143.702 65.2121 143.36L29.3328 50.8481C28.2549 48.0884 28.9653 45.7316 29.4798 44.5837C30.0066 43.4237 31.2805 41.3111 34.049 40.2488L60.202 30.1623C61.182 29.7838 62.1742 29.6006 63.1542 29.6006C65.9716 29.6006 69.4382 31.2247 70.8469 34.8636L93.4476 93.1232C85.2158 97.6169 78.503 104.98 74.9873 114.42L68.1275 132.858C66.7311 136.595 65.9103 140.466 65.6653 144.337ZM104.803 125.397C104.975 124.921 105.195 124.469 105.44 124.054L106.726 127.363C107.804 130.135 107.094 132.48 106.579 133.628H106.567C106.065 134.8 104.803 136.9 102.022 137.963L99.8174 138.817L104.803 125.397ZM116.918 160.163L103.149 155.095C100.932 154.289 99.1804 152.665 98.2004 150.528C97.2205 148.403 97.1225 146.034 97.9432 143.836L98.8129 141.492L102.794 139.965C106.297 138.622 107.89 135.96 108.539 134.495C109.188 133.042 110.083 130.086 108.723 126.594L106.983 122.113V122.064L106.273 120.281L106.163 119.988L96.1303 94.1245L96.1058 94.0757L95.4565 92.3906L95.3585 92.1219L72.8436 34.0821C71.0674 29.5029 66.6943 27.4637 63.1542 27.4637C61.9169 27.4637 60.6552 27.6957 59.4303 28.1597L33.2772 38.2461C29.7983 39.5894 28.1814 42.2514 27.5321 43.7045C26.8706 45.1699 25.9764 48.1372 27.3361 51.6296L63.2154 144.142C63.7666 145.595 64.5996 146.804 65.5918 147.744C65.7021 153.202 66.9393 158.624 69.2912 163.716C71.2389 167.929 73.8359 171.702 76.9718 174.938C75.6121 175.109 74.2646 175.182 72.8926 175.182C58.5973 175.182 45.5146 166.244 40.3575 152.934L4.49051 60.4217C-2.4428 42.5567 6.49946 22.396 24.433 15.4723L50.5982 5.39804C54.6406 3.8228 58.8668 3.04128 63.1542 3.04128C77.4618 3.04128 90.5322 11.9677 95.7015 25.2779L120.299 88.6906L120.385 88.9226L121.156 90.913L121.218 91.0595L131.581 117.79C132.414 119.939 133.014 122.113 133.381 124.311C133.406 124.384 133.418 124.457 133.43 124.53C133.553 125.19 133.639 125.861 133.7 126.533C133.7 126.594 133.712 126.643 133.712 126.704C135.133 140.039 128.629 153.214 116.918 160.163ZM135.697 125.165C135.317 122.43 134.619 119.683 133.577 117.008L123.765 91.7067C124.66 91.9632 125.554 92.244 126.436 92.5737L172.666 109.608L166.039 109.791L175.888 121.062L165.904 123.212L170.902 129.708H161.899L168.33 137.181L135.697 125.165Z" fill="white"/> + <path d="M488.077 306.123L422.933 212.255C415.84 202.035 404.252 195.831 391.819 195.55C388.193 192.314 383.893 189.701 379.018 187.906L332.347 170.713L332.151 170.64L320.771 170.957L329.198 180.592L318.639 182.875L325.034 191.191H316.802L323.417 198.872L356.38 211.01L348.847 216.212C339.145 222.903 333.449 233.222 332.31 244.078L302.004 232.917L307.259 242.576H293.846L297.888 252.406H286.643L291.126 260.355L344.694 280.088C345.221 280.284 345.735 280.467 346.262 280.626L404.13 364.016C411.406 374.481 423.374 380.733 436.15 380.733C444.076 380.733 451.707 378.352 458.249 373.846L478.228 360.072C486.766 354.174 492.499 345.321 494.361 335.137C496.223 324.94 493.993 314.646 488.077 306.123ZM324.678 197.052L321.469 193.328H329.37L322.388 184.255L333.192 181.923L325.377 172.972L331.795 172.789L378.271 189.909C382.092 191.313 385.535 193.255 388.548 195.611C381.48 196.039 374.706 198.371 368.826 202.425L358.536 209.52L324.678 197.052ZM345.429 278.086L344.168 277.622L292.609 258.621L290.306 254.543H301.085L297.043 244.713H310.861L306.598 236.885L332.138 246.288L334.245 247.069L354.237 254.433C356.932 255.422 359.749 255.397 362.273 254.53C362.971 254.311 363.632 254.018 364.269 253.651C366.695 252.32 368.667 250.147 369.696 247.375L374.179 235.359L386.012 227.19C387.495 226.176 389.148 225.651 390.924 225.651C392.296 225.651 395.751 226.017 398.091 229.388L401.447 234.223C401.226 235.078 400.969 235.921 400.675 236.775L393.497 256.106L393.142 257.022C390.14 264.507 385.02 270.49 378.748 274.52C378.148 274.911 377.536 275.289 376.911 275.631C368.287 280.504 357.777 281.896 347.61 278.806C346.887 278.599 346.152 278.354 345.429 278.086ZM362.432 246.544C362.665 245.226 363.461 242.747 366.033 240.976L371.092 237.484L367.687 246.63C366.829 248.95 365.176 250.745 363.142 251.844C362.101 249.683 362.224 247.656 362.432 246.544ZM402.366 238.424L402.709 237.471C402.819 237.142 402.929 236.824 403.027 236.495L463.234 323.255C465.023 325.819 464.888 328.42 464.643 329.739C464.398 331.058 463.614 333.525 461.042 335.307L441.062 349.082C439.58 350.107 437.926 350.62 436.15 350.62C434.778 350.62 431.312 350.266 428.972 346.884L379.973 276.279C386.588 272.005 391.966 265.704 395.138 257.803L402.366 238.424ZM492.254 334.746C490.49 344.38 485.075 352.745 477.003 358.313L457.024 372.088C450.85 376.349 443.635 378.596 436.15 378.596C424.072 378.596 412.766 372.698 405.894 362.807L349.496 281.529C352.534 282.25 355.584 282.592 358.598 282.592C365.519 282.592 372.256 280.76 378.136 277.39L427.208 348.105C430.136 352.305 434.435 352.757 436.15 352.757C438.367 352.757 440.425 352.11 442.275 350.84L462.254 337.066C465.464 334.843 466.456 331.766 466.75 330.118C467.044 328.481 467.228 325.245 464.998 322.046L403.774 233.808L402.084 231.378L399.854 228.166C396.939 223.966 392.639 223.514 390.924 223.514H390.912C388.695 223.514 386.637 224.161 384.787 225.431L375.478 231.854L372.403 233.979L364.808 239.218C361.599 241.428 360.619 244.517 360.313 246.154C360.068 247.533 359.908 250.012 361.158 252.65C359.198 253.224 357.042 253.187 354.984 252.43L334.38 244.847C335.323 234.394 340.738 224.405 350.06 217.97L358.83 211.913L360.986 210.424L370.039 204.184C376.213 199.934 383.44 197.675 390.912 197.675H390.961C392.039 197.675 393.117 197.724 394.171 197.822C405.012 198.774 414.934 204.477 421.169 213.476L486.313 307.344C491.898 315.391 494.005 325.123 492.254 334.746Z" fill="white"/> + <path d="M82.7096 239.196L95.6423 239.231L95.6325 242.957L82.7096 242.922V259.141H78.9108V242.912L65.5817 242.877L65.5925 239.151L78.9108 239.186V223.021H82.7096V239.196Z" fill="#C272FF"/> + <path d="M410.924 116.181L423.856 116.216L423.846 119.937L410.924 119.902V136.101H407.125V119.892L393.796 119.857L393.806 116.136L407.125 116.171V100.028H410.924V116.181Z" fill="#C272FF"/> + <path d="M62.4132 304.747C62.4132 303.479 61.387 302.452 60.1215 302.452C58.8559 302.452 57.8297 303.479 57.8297 304.747C57.8297 306.014 58.8559 307.041 60.1215 307.041V310.767C56.801 310.767 54.1093 308.072 54.1093 304.747C54.1093 301.422 56.801 298.727 60.1215 298.727C63.4419 298.727 66.1336 301.422 66.1336 304.747C66.1336 308.072 63.4419 310.767 60.1215 310.767V307.041C61.387 307.041 62.4132 306.014 62.4132 304.747Z" fill="#C272FF"/> + <path d="M359.727 133.175C363.047 133.175 365.739 135.87 365.739 139.195C365.739 142.52 363.047 145.215 359.727 145.215C356.406 145.215 353.715 142.52 353.715 139.195C353.715 135.87 356.406 133.175 359.727 133.175Z" fill="#C272FF"/> + <path d="M416.842 157.255C420.163 157.255 422.854 159.95 422.854 163.275C422.854 166.6 420.163 169.295 416.842 169.295C413.522 169.295 410.83 166.6 410.83 163.275C410.83 159.95 413.522 157.255 416.842 157.255Z" fill="#C272FF"/> + <path d="M101.492 281.67C101.492 280.403 100.466 279.375 99.2004 279.375C97.9348 279.375 96.9087 280.403 96.9087 281.67C96.9087 282.937 97.9348 283.965 99.2004 283.965V287.69C95.88 287.69 93.1883 284.995 93.1883 281.67C93.1883 278.345 95.88 275.65 99.2004 275.65C102.521 275.65 105.213 278.345 105.213 281.67C105.213 284.995 102.521 287.69 99.2004 287.69V283.965C100.466 283.965 101.492 282.937 101.492 281.67Z" fill="#C272FF"/> +</svg> ===================================== browser/components/abouttor/jar.mn ===================================== @@ -9,3 +9,4 @@ browser.jar: content/browser/abouttor/2728-sparkles.svg (content/2728-sparkles.svg) content/browser/abouttor/2764-red-heart.svg (content/2764-red-heart.svg) content/browser/abouttor/yec-heart.svg (content/yec-heart.svg) + content/browser/abouttor/yec2025-image.svg (content/yec2025-image.svg) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/424f8e… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/424f8e… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser-bundle-testsuite][main] Revert "Bug 40098: Update tmp_dir in rbm-config/tb-build-06.torproject.org.rbm.local.conf"
by boklm (@boklm) 29 Apr '26

29 Apr '26
boklm pushed to branch main at The Tor Project / Applications / tor-browser-bundle-testsuite Commits: d544a6d2 by Nicolas Vigier at 2026-04-29T09:30:53+02:00 Revert "Bug 40098: Update tmp_dir in rbm-config/tb-build-06.torproject.org.rbm.local.conf" This reverts commit f7f252d50c9848034ca0bfec47ddcc353d857af9. See rbm#40105. - - - - - 1 changed file: - rbm-config/tb-build-06.torproject.org.rbm.local.conf Changes: ===================================== rbm-config/tb-build-06.torproject.org.rbm.local.conf ===================================== @@ -10,7 +10,7 @@ ### builds are made from this directory, so using a directory on a fast ### disk can improve build time. By default we are using a tmp directory ### under the tor-browser-build directory. -tmp_dir: '[% IF c("link_input_files") %][% c("basedir") %][% END %]/tmp' +tmp_dir: /tmp ### The debug option defines whether a debugging shell should be opened ### automatically in the build directory/container in case of build View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser-bundle-testsuite][main] Bug 40091: Fix indent in build result emails
by boklm (@boklm) 29 Apr '26

29 Apr '26
boklm pushed to branch main at The Tor Project / Applications / tor-browser-bundle-testsuite Commits: d74b0cd1 by Nicolas Vigier at 2026-04-28T10:33:27+02:00 Bug 40091: Fix indent in build result emails - - - - - 1 changed file: - tmpl/report_tor-browser_build.txt Changes: ===================================== tmpl/report_tor-browser_build.txt ===================================== @@ -8,8 +8,10 @@ Results [% FOREACH test IN tbbfiles.$tbbfile.tests -%] [% IF test.results -%] [% test.name %]: [% test.results.success ? 'ok' : 'failed (' _ test.fail_type _ ')' %] - [% IF test.type == 'rbm_build' -%] + + [%- IF test.type == 'rbm_build' -%] GitLab test pipeline: [% test.gitlab_pipeline_url ? test.gitlab_pipeline_url : 'failed run' %] - [% END -%] + + [%- END -%] [% END -%] [% END %] View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-bundle-testsuite… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
  • ← Newer
  • 1
  • 2
  • 3
  • 4
  • ...
  • 2037
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.