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 -----
  • October
  • 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

August 2026

  • 1 participants
  • 182 discussions
[Git][tpo/applications/tor-browser] Pushed new tag tor-browser-153.1.0esr-16.0-1-build3
by morgan (@morgan) 26 Aug '26

26 Aug '26
morgan pushed new tag tor-browser-153.1.0esr-16.0-1-build3 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/tor-browser] Deleted tag tor-browser-153.1.0esr-16.0-1-build3
by morgan (@morgan) 26 Aug '26

26 Aug '26
morgan deleted tag tor-browser-153.1.0esr-16.0-1-build3 at The Tor Project / Applications / Tor Browser -- 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] Pushed new tag tor-browser-153.1.0esr-16.0-1-build3
by morgan (@morgan) 26 Aug '26

26 Aug '26
morgan pushed new tag tor-browser-153.1.0esr-16.0-1-build3 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/tor-browser][tor-browser-153.1.0esr-16.0-1] 6 commits: fixup! TB 27476: Implement about:torconnect captive portal within Tor Browser
by morgan (@morgan) 26 Aug '26

26 Aug '26
morgan pushed to branch tor-browser-153.1.0esr-16.0-1 at The Tor Project / Applications / Tor Browser Commits: 6a6cb5e8 by Henry Wilkes at 2026-08-26T12:08:36+00:00 fixup! TB 27476: Implement about:torconnect captive portal within Tor Browser TB 45236: Make the breadcrumbs focusable and activatable with a keyboard. We also update the breadcrumb states to be more consistent between stages, and we no longer disable prior breadcrumbs during a bootstrap since it is safe for the user to switch back to a prior stage. - - - - - 9250f769 by Henry Wilkes at 2026-08-26T12:08:36+00:00 fixup! TB 27476: Implement about:torconnect captive portal within Tor Browser TB 45236: Have the "configure connection" link point to about:preferences to give users a hint of where they are going. - - - - - fe4fe5a2 by Henry Wilkes at 2026-08-26T12:08:36+00:00 fixup! TB 27476: Implement about:torconnect captive portal within Tor Browser TB 45236: Drop the wrapping <form> element. Also fix the `for` attribute to point to the `<select>` element. - - - - - 747ca252 by Henry Wilkes at 2026-08-26T12:08:36+00:00 fixup! TB 27476: Implement about:torconnect captive portal within Tor Browser TB 45236: Expose the progress bar to accessibility tools. - - - - - 3cb7efed by Henry Wilkes at 2026-08-26T12:08:36+00:00 fixup! TB 40597: Implement TorSettings module TB 45236: Return early when Moat returns no bridges. - - - - - f54fe85b by Henry Wilkes at 2026-08-26T12:08:36+00:00 fixup! TB 40597: Implement TorSettings module TB 45236: Add an option to simulate progress in simulated bootstraps. This is useful for debugging the about:torconnect page. We also lazy-load the `setTimeout` and related methods since these are only used for simulated scenarios. - - - - - 4 changed files: - browser/components/torconnect/content/aboutTorConnect.css - browser/components/torconnect/content/aboutTorConnect.html - browser/components/torconnect/content/aboutTorConnect.js - toolkit/modules/TorConnect.sys.mjs Changes: ===================================== browser/components/torconnect/content/aboutTorConnect.css ===================================== @@ -25,42 +25,59 @@ body { #breadcrumbs { grid-area: breadcrumbs; display: flex; - align-items: center; + gap: var(--space-large); margin: 0 0 var(--space-xlarge) 0; -} -#breadcrumbs.hidden { - visibility: hidden; + &.hide-breadcrumbs { + visibility: hidden; + } + + & :is(ol, li:not([hidden])) { + display: contents; + } } .breadcrumb-item, .breadcrumb-separator { - display: flex; - margin: 0; - margin-inline-start: var(--space-large); + flex: 0 0 auto; padding: var(--space-small); } .breadcrumb-item { + display: flex; + gap: var(--space-xsmall); align-items: center; cursor: pointer; color: var(--text-color); border-radius: var(--border-radius-small); -} -.breadcrumb-item:hover { - color: var(--color-accent-primary); - background-color: var(--button-background-color-hover); -} + & > * { + flex: 0 0 auto; + } + + &:not(.breadcrumb-disabled):hover { + color: var(--color-accent-primary); + background-color: var(--button-background-color-hover); + } + + &:not(.breadcrumb-disabled):active { + color: var(--color-accent-primary-active); + background-color: var(--button-background-color-active); + } + + &.breadcrumb-active { + color: var(--color-accent-primary); + } -.breadcrumb-item:active { - color: var(--color-accent-primary-active); - background-color: var(--button-background-color-active); + &.breadcrumb-disabled { + color: var(--text-color); + opacity: 0.4; + cursor: unset; + } } .breadcrumb-separator { - width: var(--icon-size); - list-style-image: url("chrome://browser/content/torconnect/arrow-right.svg"); + content: url("chrome://browser/content/torconnect/arrow-right.svg"); } .breadcrumb-separator:dir(rtl) { @@ -68,61 +85,35 @@ body { } .breadcrumb-icon { - display: inline list-item; + width: var(--icon-size); height: var(--icon-size); - list-style-position: inside; -moz-context-properties: fill, stroke; fill: currentColor; stroke: currentColor; } -.breadcrumb-item.active { - color: var(--color-accent-primary); -} - -.breadcrumb-item.disabled, -.breadcrumb-item.disabled:hover, -.breadcrumb-item.disabled:active { - color: var(--text-color); - opacity: 0.4; - cursor: default; -} - -.breadcrumb-item.hidden, -.breadcrumb-separator.hidden { - display: none; -} - #connect-to-tor { margin-inline-start: 0; } #connect-to-tor-icon { - list-style-image: url("chrome://browser/content/torconnect/tor-connect.svg"); + content: url("chrome://browser/content/torconnect/tor-connect.svg"); } #connection-assist-icon { - list-style-image: url("chrome://browser/content/torconnect/tor-connect-broken.svg"); -} - -#try-bridge { - cursor: default; + content: url("chrome://browser/content/torconnect/tor-connect-broken.svg"); } #try-bridge-icon { - list-style-image: url("chrome://browser/content/torconnect/bridge.svg"); + content: url("chrome://browser/content/torconnect/bridge.svg"); } #locationDropdownLabel.error { color: var(--text-color-error); } -form#locationDropdown { +#regions-select { width: 240px; -} - -form#locationDropdown select { - width: 100%; margin: 0; font-weight: var(--font-weight-bold); } ===================================== browser/components/torconnect/content/aboutTorConnect.html ===================================== @@ -33,33 +33,43 @@ ></script> </head> <body class="onion-pattern-background"> - <div id="progressBar" hidden="hidden"> + <div + id="progressBar" + role="progressbar" + aria-valuenow="0" + aria-valuemin="0" + aria-valuemax="100" + aria-labelledby="tor-connect-heading" + hidden="hidden" + > <div id="progressSolid"></div> <div id="progressBackground"></div> <div id="progressBarBackground"></div> </div> - <div id="breadcrumbs" class="hidden"> - <span id="connect-to-tor" class="breadcrumb-item"> - <span id="connect-to-tor-icon" class="breadcrumb-icon"></span> - <span class="breadcrumb-label"></span> - </span> - <span - id="connection-assist-separator" - class="breadcrumb-separator breadcrumb-icon" - ></span> - <span id="connection-assist" class="breadcrumb-item"> - <span id="connection-assist-icon" class="breadcrumb-icon"></span> - <span class="breadcrumb-label"></span> - </span> - <span - id="try-bridge-separator" - class="breadcrumb-separator breadcrumb-icon" - ></span> - <span id="try-bridge" class="breadcrumb-item"> - <span id="try-bridge-icon" class="breadcrumb-icon"></span> - <span class="breadcrumb-label"></span> - </span> - </div> + <nav id="breadcrumbs"> + <ol> + <li id="connect-to-tor"> + <div class="breadcrumb-item" role="link" tabindex="0"> + <span id="connect-to-tor-icon" class="breadcrumb-icon"></span> + <span class="breadcrumb-label"></span> + </div> + </li> + <li id="connection-assist"> + <div class="breadcrumb-separator breadcrumb-icon"></div> + <div class="breadcrumb-item" role="link" tabindex="0"> + <span id="connection-assist-icon" class="breadcrumb-icon"></span> + <span class="breadcrumb-label"></span> + </div> + </li> + <li id="try-bridge"> + <div class="breadcrumb-separator breadcrumb-icon"></div> + <div class="breadcrumb-item" role="link" tabindex="0"> + <span id="try-bridge-icon" class="breadcrumb-icon"></span> + <span class="breadcrumb-label"></span> + </div> + </li> + </ol> + </nav> <div class="torconnect-stage-content" data-stage-name="ProviderStopped"> <img class="torconnect-icon assist-icon" alt="" /> <h1 @@ -166,14 +176,12 @@ <button id="configureButton" hidden="true"></button> <button id="cancelButton" hidden="true"></button> <button id="connectButton" hidden="true" class="tor-button"></button> - <label id="locationDropdownLabel" for="countries"></label> - <form id="locationDropdown" hidden="true"> - <select id="regions-select"> - <option id="first-region-option"></option> - <optgroup id="frequent-regions-option-group"></optgroup> - <optgroup id="full-regions-option-group"></optgroup> - </select> - </form> + <label id="locationDropdownLabel" for="regions-select"></label> + <select id="regions-select" hidden="hidden"> + <option id="first-region-option"></option> + <optgroup id="frequent-regions-option-group"></optgroup> + <optgroup id="full-regions-option-group"></optgroup> + </select> <button id="tryBridgeButton" hidden="true" class="tor-button"></button> </div> </div> ===================================== browser/components/torconnect/content/aboutTorConnect.js ===================================== @@ -42,12 +42,10 @@ class AboutTorConnect { label: "#connect-to-tor .breadcrumb-label", }, connectionAssist: { - separator: "#connection-assist-separator", link: "#connection-assist", label: "#connection-assist .breadcrumb-label", }, tryBridge: { - separator: "#try-bridge-separator", link: "#try-bridge", label: "#try-bridge .breadcrumb-label", }, @@ -66,7 +64,6 @@ class AboutTorConnect { connect: "button#connectButton", tryBridge: "button#tryBridgeButton", locationDropdownLabel: "#locationDropdownLabel", - locationDropdown: "form#locationDropdown", locationDropdownSelect: "#regions-select", }, }); @@ -90,18 +87,12 @@ class AboutTorConnect { connectToTorLabel: document.querySelector( this.selectors.breadcrumbs.connectToTor.label ), - connectionAssistSeparator: document.querySelector( - this.selectors.breadcrumbs.connectionAssist.separator - ), connectionAssistLink: document.querySelector( this.selectors.breadcrumbs.connectionAssist.link ), connectionAssistLabel: document.querySelector( this.selectors.breadcrumbs.connectionAssist.label ), - tryBridgeSeparator: document.querySelector( - this.selectors.breadcrumbs.tryBridge.separator - ), tryBridgeLink: document.querySelector( this.selectors.breadcrumbs.tryBridge.link ), @@ -120,9 +111,6 @@ class AboutTorConnect { locationDropdownLabel: document.querySelector( this.selectors.buttons.locationDropdownLabel ), - locationDropdown: document.querySelector( - this.selectors.buttons.locationDropdown - ), locationDropdownSelect: document.querySelector( this.selectors.buttons.locationDropdownSelect ), @@ -221,7 +209,7 @@ class AboutTorConnect { this.hide(this.elements.cancelButton); this.hide(this.elements.connectButton); this.hide(this.elements.locationDropdownLabel); - this.hide(this.elements.locationDropdown); + this.hide(this.elements.locationDropdownSelect); this.hide(this.elements.tryBridgeButton); } @@ -239,33 +227,49 @@ class AboutTorConnect { } setBreadcrumbsStatus(connectToTor, connectionAssist, tryBridge) { - this.elements.breadcrumbContainer.classList.remove("hidden"); - const elems = [ - [this.elements.connectToTorLink, connectToTor, null], - [ - this.elements.connectionAssistLink, - connectionAssist, - this.elements.connectionAssistSeparator, - ], - [ - this.elements.tryBridgeLink, - tryBridge, - this.elements.tryBridgeSeparator, - ], - ]; - elems.forEach(([elem, status, separator]) => { - elem.classList.remove(BreadcrumbStatus.Hidden); - elem.classList.remove(BreadcrumbStatus.Disabled); - elem.classList.remove(BreadcrumbStatus.Active); - if (status !== "") { - elem.classList.add(status); + this.elements.breadcrumbContainer.classList.remove("hide-breadcrumbs"); + for (const { listEl, status } of [ + { listEl: this.elements.connectToTorLink, status: connectToTor }, + { listEl: this.elements.connectionAssistLink, status: connectionAssist }, + { listEl: this.elements.tryBridgeLink, status: tryBridge }, + ]) { + let hidden = false; + let disabled = false; + let active = false; + switch (status) { + case BreadcrumbStatus.Hidden: + hidden = true; + break; + case BreadcrumbStatus.Disabled: + disabled = true; + break; + case BreadcrumbStatus.Active: + active = true; + break; } - separator?.classList.toggle("hidden", status === BreadcrumbStatus.Hidden); - }); + // NOTE: Hiding or disabling elements can cause them to loose focus. + // However, with each stage change the focus should already be moved. + listEl.hidden = hidden; + const linkEl = listEl.querySelector(".breadcrumb-item"); + linkEl.classList.toggle("breadcrumb-disabled", disabled); + linkEl.classList.toggle("breadcrumb-active", active); + if (disabled) { + linkEl.removeAttribute("tabindex"); + linkEl.setAttribute("aria-disabled", "true"); + } else { + linkEl.setAttribute("tabindex", "0"); + linkEl.removeAttribute("aria-disabled", "true"); + } + if (active) { + linkEl.setAttribute("aria-current", "step"); + } else { + linkEl.removeAttribute("aria-current"); + } + } } hideBreadcrumbs() { - this.elements.breadcrumbContainer.classList.add("hidden"); + this.elements.breadcrumbContainer.classList.add("hide-breadcrumbs"); } getLocalizedStatus(status) { @@ -432,7 +436,11 @@ class AboutTorConnect { break; case "Bootstrapping": showProgress = true; - this.showBootstrapping(stage.bootstrapTrigger, stage.tryAgain); + this.showBootstrapping( + stage.bootstrapTrigger, + stage.tryAgain, + stage.potentiallyBlocked + ); // Always focus the cancel button. moveFocus = this.elements.cancelButton; break; @@ -637,10 +645,13 @@ class AboutTorConnect { } updateBootstrappingStatus(data) { + let { progress } = data; + progress = Math.max(0, Math.min(progress, 100)); this.elements.progressMeter.style.setProperty( "--progress-percent", - `${data.progress}%` + `${progress}%` ); + this.elements.progressMeter.setAttribute("aria-valuenow", String(progress)); if (this.shownStage === "Bootstrapping" && data.hasWarning) { // When bootstrapping starts, we hide the log button, but we re-show it if // we get a warning. @@ -676,16 +687,18 @@ class AboutTorConnect { BreadcrumbStatus.Default, BreadcrumbStatus.Disabled ); + } else { + this.hideBreadcrumbs(); } } - showBootstrapping(trigger, tryAgain) { + showBootstrapping(trigger, tryAgain, potentiallyBlocked) { let title = ""; let description = ""; const breadcrumbs = [ - BreadcrumbStatus.Disabled, - BreadcrumbStatus.Disabled, - BreadcrumbStatus.Disabled, + BreadcrumbStatus.Default, + potentiallyBlocked ? BreadcrumbStatus.Default : BreadcrumbStatus.Hidden, + potentiallyBlocked ? BreadcrumbStatus.Disabled : BreadcrumbStatus.Hidden, ]; switch (trigger) { case "Start": @@ -718,7 +731,7 @@ class AboutTorConnect { this.setTitle(title, ""); this.showConfigureConnectionLink(description); this.elements.progressDescription.textContent = ""; - if (tryAgain) { + if (tryAgain || potentiallyBlocked) { this.setBreadcrumbsStatus(...breadcrumbs); } else { this.hideBreadcrumbs(); @@ -780,8 +793,8 @@ class AboutTorConnect { this.getMaybeLocalizedError(error); this.setBreadcrumbsStatus( BreadcrumbStatus.Default, - BreadcrumbStatus.Default, - BreadcrumbStatus.Active + BreadcrumbStatus.Active, + BreadcrumbStatus.Disabled ); this.showLocationForm(false, TorStrings.torConnect.tryAgain); } @@ -805,7 +818,8 @@ class AboutTorConnect { const pieces = text.split("%S"); const link = document.createElement("a"); link.textContent = TorStrings.torConnect.configureConnection; - link.setAttribute("href", "#"); + link.setAttribute("href", "about:preferences#connection"); + link.setAttribute("target", "_blank"); link.addEventListener("click", e => { e.preventDefault(); RPMSendAsyncMessage("torconnect:open-tor-preferences"); @@ -918,7 +932,7 @@ class AboutTorConnect { this.populateDelayedRegionOptions(); this.show(this.elements.locationDropdownLabel); - this.show(this.elements.locationDropdown); + this.show(this.elements.locationDropdownSelect); this.elements.locationDropdownLabel.classList.toggle("error", !isChoose); this.show(this.elements.tryBridgeButton, true); if (buttonLabel !== undefined) { @@ -929,24 +943,38 @@ class AboutTorConnect { initElements(direction) { document.documentElement.setAttribute("dir", direction); - this.elements.connectToTorLink.addEventListener("click", () => { - RPMSendAsyncMessage("torconnect:start-again"); - }); + for (const [linkEl, command] of [ + [ + this.elements.connectToTorLink, + () => { + RPMSendAsyncMessage("torconnect:start-again"); + }, + ], + [ + this.elements.connectionAssistLink, + () => { + RPMSendAsyncMessage("torconnect:choose-region"); + }, + ], + // Final link does nothing. + ]) { + // NOTE: These link should never be both visible and disabled. + // NOTE: We allow re-selecting this link when it is already the + // "aria-current" item, to allow the user to reset to the beginning of + // Connection Assist. + linkEl.addEventListener("click", () => { + command(); + }); + linkEl.addEventListener("keydown", event => { + if (event.key !== "Enter") { + return; + } + command(); + }); + } + this.elements.connectToTorLabel.textContent = TorStrings.torConnect.torConnect; - this.elements.connectionAssistLink.addEventListener("click", () => { - if ( - this.elements.connectionAssistLink.classList.contains( - BreadcrumbStatus.Active - ) || - this.elements.connectionAssistLink.classList.contains( - BreadcrumbStatus.Disabled - ) - ) { - return; - } - RPMSendAsyncMessage("torconnect:choose-region"); - }); this.elements.connectionAssistLabel.textContent = TorStrings.torConnect.breadcrumbAssist; this.elements.tryBridgeLabel.textContent = @@ -1073,7 +1101,7 @@ class AboutTorConnect { RPMAddMessageListener("torconnect:region-names-change", () => { // Reset the regions list. this.regions = null; - if (!this.elements.locationDropdown.hidden) { + if (!this.elements.locationDropdownSelect.hidden) { // Re-populate immediately. this.populateDelayedRegionOptions(); } ===================================== toolkit/modules/TorConnect.sys.mjs ===================================== @@ -2,8 +2,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { setTimeout, clearTimeout } from "resource://gre/modules/Timer.sys.mjs"; - const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { @@ -24,6 +22,10 @@ ChromeUtils.defineESModuleGetters(lazy, { "moz-src:///toolkit/components/tor-launcher/TorLauncherUtil.sys.mjs", TorSettings: "moz-src:///toolkit/modules/TorSettings.sys.mjs", TorSettingsTopics: "moz-src:///toolkit/modules/TorSettings.sys.mjs", + clearInterval: "resource://gre/modules/Timer.sys.mjs", + clearTimeout: "resource://gre/modules/Timer.sys.mjs", + setInterval: "resource://gre/modules/Timer.sys.mjs", + setTimeout: "resource://gre/modules/Timer.sys.mjs", }); ChromeUtils.defineLazyGetter(lazy, "NetworkLinkService", () => { @@ -122,12 +124,17 @@ export const TorConnectTopics = Object.freeze({ * bootstrap. * @property {integer} [simulateDelay] - The delay in microseconds to apply to * simulated bootstraps. + * @property {number} [simulateProgress] - The progress percent to reach before + * the simulated bootstrap fails. * @property {MoatSettings} [simulateMoatResponse] - Simulate a Moat response * for circumvention settings. Should include a "bridgesList" property, and * optionally a "country" property. The "bridgesList" property should be an * Array of MoatBridges objects that match the bridge settings accepted by - * TorSettings.bridges, plus you may add a "simulateCensorship" property to - * make only their bootstrap attempts fail. + * TorSettings.bridges. For each MoatBridges object, you may also add a + * "simulateCensorship" property, with an optional "simulateProgress" + * property, to make the bootstrap attempt fail for this set of bridges + * (whilst still allowing it to pass for other sets of bridges in the + * simulated Moat response). * @property {string} [regionCode] - The region code to use to fetch * auto-bootstrap settings, or "automatic" to automatically choose the region. */ @@ -232,7 +239,7 @@ class BootstrapAttempt { this.#bootstrap = { _timeout: 0, bootstrap() { - this._timeout = setTimeout(() => { + this._timeout = lazy.setTimeout(() => { const err = new lazy.TorBootstrapError({ summary: "Censorship simulation", phase: "conn", @@ -240,9 +247,32 @@ class BootstrapAttempt { }); this.onbootstraperror(err); }, options.simulateDelay || 0); + this.onbootstrapstatus(0); + if (options.simulateDelay && options.simulateProgress) { + let progress = 0; + const step = 5; + const delay = Math.floor( + // We want the last step to last for 10 delay periods to emulate a + // short "hang" at this stage. + (step * options.simulateDelay) / + (options.simulateProgress + 10 * step) + ); + this._progress = lazy.setInterval(() => { + progress += step; + if (progress >= options.simulateProgress) { + progress = options.simulateProgress; + lazy.clearInterval(this._progress); + delete this._progress; + } + this.onbootstrapstatus(progress); + }, delay); + } }, cancel() { - clearTimeout(this._timeout); + lazy.clearTimeout(this._timeout); + if (this._progress) { + lazy.clearInterval(this._progress); + } }, }; } else { @@ -458,6 +488,7 @@ class AutoBootstrapAttempt { : TorConnectError.NoSettingsForCountry ), }); + return; } // Apply each of our settings and try to bootstrap with each. @@ -489,7 +520,7 @@ class AutoBootstrapAttempt { async #fetchBridges(options) { if (options.simulateMoatResponse) { await Promise.race([ - new Promise(res => setTimeout(res, options.simulateDelay || 0)), + new Promise(res => lazy.setTimeout(res, options.simulateDelay || 0)), this.#cancelledPromise, ]); @@ -588,8 +619,13 @@ class AutoBootstrapAttempt { // Move the simulateCensorship option to the options for the next // BootstrapAttempt. bridges = structuredClone(bridges); + const simulateProgress = bridges.simulateProgress; delete bridges.simulateCensorship; + delete bridges.simulateProgress; options = { ...options, simulateCensorship: true }; + if (simulateProgress) { + options.simulateProgress = simulateProgress; + } } // Send the new settings directly to the provider. We will save them only @@ -1271,6 +1307,10 @@ export const TorConnect = { bootstrapOptions.simulateDelay = this.simulateBootstrapOptions.simulateDelay; } + if (this.simulateBootstrapOptions.simulateProgress) { + bootstrapOptions.simulateProgress = + this.simulateBootstrapOptions.simulateProgress; + } if (this.simulateBootstrapOptions.simulateMoatResponse) { bootstrapOptions.simulateMoatResponse = this.simulateBootstrapOptions.simulateMoatResponse; @@ -1280,8 +1320,9 @@ export const TorConnect = { TorConnectPrefs.censorship_level, 0 ); - if (censorshipLevel > 0 && !bootstrapOptions.simulateDelay) { - bootstrapOptions.simulateDelay = 1500; + if (censorshipLevel > 0) { + bootstrapOptions.simulateDelay ||= 1500; + bootstrapOptions.simulateProgress ||= 20; } if (censorshipLevel === 1) { // Bootstrap fails, but auto-bootstrap does not. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/17053f… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/17053f… 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/torbrowser-launcher][main] metainfo: Update bugtracker url
by asciiwolf (@asciiwolf) 26 Aug '26

26 Aug '26
asciiwolf pushed to branch main at The Tor Project / Applications / torbrowser-launcher Commits: 80e1dd56 by asciiwolf at 2026-08-26T12:26:08+00:00 metainfo: Update bugtracker url - - - - - 1 changed file: - share/metainfo/org.torproject.torbrowser-launcher.metainfo.xml Changes: ===================================== share/metainfo/org.torproject.torbrowser-launcher.metainfo.xml ===================================== @@ -51,7 +51,7 @@ <caption xml:lang="cs">Okno pro změnu nastavení Spouštěče Prohlížeče Tor</caption> </screenshot> </screenshots> - <url type="bugtracker">https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/issues</url> + <url type="bugtracker">https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/work_i…</url> <url type="homepage">https://gitlab.torproject.org/tpo/applications/torbrowser-launcher</url> <update_contact>boklm(a)torproject.org</update_contact> <content_rating type="oars-1.1"/> View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/commit… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/commit… 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/torbrowser-launcher][main] 2 commits: Update share/torbrowser-launcher/tor-browser-developers.asc [2026] (#58)
by asciiwolf (@asciiwolf) 26 Aug '26

26 Aug '26
asciiwolf pushed to branch main at The Tor Project / Applications / torbrowser-launcher Commits: 1ade0acb by boklm at 2026-08-26T12:22:19+00:00 Update share/torbrowser-launcher/tor-browser-developers.asc [2026] (#58) - - - - - 30a828cc by asciiwolf at 2026-08-26T12:22:19+00:00 Merge branch 'tbl-58-update-gpg-key' into 'main' Update share/torbrowser-launcher/tor-browser-developers.asc [2026] (#58) Closes #58 See merge request tpo/applications/torbrowser-launcher!51 - - - - - 1 changed file: - share/torbrowser-launcher/tor-browser-developers.asc Changes: ===================================== share/torbrowser-launcher/tor-browser-developers.asc ===================================== @@ -13,18 +13,18 @@ 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 @@ -104,6 +104,41 @@ S+XyTqvJtnxNIoeDCGH+o5aHYG2YSYvNLPfuLzUbKf70ARKn2MDo9nxDjTlAUgtb qQVCg2oven3FUCGFT0yZS5kCgpiEBkhwT/awam2rWRrtc+SK7nVOklghqUtYtH1u ESidDlEwoHsLs5vZl9Mh8SHUOoeTHV2RcquNQTXGn4Oh26C21Q4gWB8JXLrY3Zu8 F30NaKLLxo11C8kYo6bK0JdID2H3deLzO2zvuS4OV1KZdMugL6T5Dzam2FDJfSnP -1ZRnBkaXQu2uM6/OZUhdu8aaYv0jA/Whdd1BVVXE75M= -=QA0S +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 +KqYlGHRj37fF29amEv2t4E4kQ3XM +=F6ei -----END PGP PUBLIC KEY BLOCK----- View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/compar… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/compar… 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-153.1.0esr-16.0-1] fixup! BB 44045: Disable ML features.
by Pier Angelo Vendrame (@pierov) 26 Aug '26

26 Aug '26
Pier Angelo Vendrame pushed to branch mullvad-browser-153.1.0esr-16.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 75a5d3fb by Pier Angelo Vendrame at 2026-08-26T12:06:38+02:00 fixup! BB 44045: Disable ML features. BB 45245: Fix a JS console error/crash due to us disabling ML. - - - - - 1 changed file: - browser/components/aiwindow/models/Utils.sys.mjs Changes: ===================================== browser/components/aiwindow/models/Utils.sys.mjs ===================================== @@ -10,7 +10,6 @@ * - Rendering prompts from files */ -import { createEngine } from "chrome://global/content/ml/EngineProcess.sys.mjs"; import { OAUTH_CLIENT_ID, SCOPE_PROFILE_UID, @@ -42,6 +41,10 @@ const DEFAULT_ENDPOINT = */ export const DEFAULT_ENGINE_ID = "smart-openai"; +function createEngine() { + return null; +} + /** * Observer for model preference changes. * Invalidates the Remote Settings client cache when user changes their model preference. View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/75a… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/75a… 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-153.1.0esr-16.0-1] fixup! BB 44045: Disable ML features.
by Pier Angelo Vendrame (@pierov) 26 Aug '26

26 Aug '26
Pier Angelo Vendrame pushed to branch tor-browser-153.1.0esr-16.0-1 at The Tor Project / Applications / Tor Browser Commits: 17053ff9 by Pier Angelo Vendrame at 2026-08-26T11:15:20+02:00 fixup! BB 44045: Disable ML features. BB 45245: Fix a JS console error/crash due to us disabling ML. - - - - - 1 changed file: - browser/components/aiwindow/models/Utils.sys.mjs Changes: ===================================== browser/components/aiwindow/models/Utils.sys.mjs ===================================== @@ -10,7 +10,6 @@ * - Rendering prompts from files */ -import { createEngine } from "chrome://global/content/ml/EngineProcess.sys.mjs"; import { OAUTH_CLIENT_ID, SCOPE_PROFILE_UID, @@ -42,6 +41,10 @@ const DEFAULT_ENDPOINT = */ export const DEFAULT_ENGINE_ID = "smart-openai"; +function createEngine() { + return null; +} + /** * Observer for model preference changes. * Invalidates the Remote Settings client cache when user changes their model preference. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/17053ff… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/17053ff… 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-153.1.0esr-16.0-1] fixup! Firefox preference overrides.
by Pier Angelo Vendrame (@pierov) 25 Aug '26

25 Aug '26
Pier Angelo Vendrame pushed to branch mullvad-browser-153.1.0esr-16.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 54923f4a by Pier Angelo Vendrame at 2026-08-25T16:57:36+02:00 fixup! Firefox preference overrides. BB 45243: Disable taskbar tabs. - - - - - 1 changed file: - browser/app/profile/001-base-profile.js Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -796,6 +796,9 @@ pref("privacy.globalprivacycontrol.pbmode.enabled", true); // Disable platform text recognition functionality (tor-browser#42057) pref("dom.text-recognition.enabled", false); +// tor-browser#45243: Disable taskbar tabs, as they need more polish from us. +pref("browser.taskbarTabs.enabled", false); + #ifdef XP_WIN pref("browser.taskbar.lists.enabled", false); pref("browser.taskbar.lists.frequent.enabled", false); View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/549… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/549… 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-153.1.0esr-16.0-1] fixup! Firefox preference overrides.
by Pier Angelo Vendrame (@pierov) 25 Aug '26

25 Aug '26
Pier Angelo Vendrame pushed to branch tor-browser-153.1.0esr-16.0-1 at The Tor Project / Applications / Tor Browser Commits: d9c1c6b9 by Pier Angelo Vendrame at 2026-08-25T16:43:57+02:00 fixup! Firefox preference overrides. BB 45243: Disable taskbar tabs. - - - - - 1 changed file: - browser/app/profile/001-base-profile.js Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -803,6 +803,9 @@ pref("privacy.globalprivacycontrol.pbmode.enabled", true); // Disable platform text recognition functionality (tor-browser#42057) pref("dom.text-recognition.enabled", false); +// tor-browser#45243: Disable taskbar tabs, as they need more polish from us. +pref("browser.taskbarTabs.enabled", false); + #ifdef XP_WIN pref("browser.taskbar.lists.enabled", false); pref("browser.taskbar.lists.frequent.enabled", false); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d9c1c6b… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d9c1c6b… 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
  • 5
  • 6
  • 7
  • ...
  • 19
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.