浏览代码

Merge branch 'insider'

Baptiste Augrain 2 年之前
父节点
当前提交
12121c9c9b

+ 0 - 2
DOCS.md

@@ -69,7 +69,6 @@ With the following environment variables:
 - `VSCODE_GALLERY_ITEM_URL='https://marketplace.visualstudio.com/items'`
 - `VSCODE_GALLERY_CACHE_URL='https://vscode.blob.core.windows.net/gallery/index'`
 - `VSCODE_GALLERY_CONTROL_URL=''`
-- `VSCODE_GALLERY_RECOMMENDATIONS_URL=''`
 
 Or by creating a custom `product.json` at the following location (replace `VSCodium` by `VSCodium - Insiders` if you use that):
 - Windows: `%APPDATA%\VSCodium` or `%USERPROFILE%\AppData\Roaming\VSCodium`
@@ -85,7 +84,6 @@ with the content:
     "itemUrl": "https://marketplace.visualstudio.com/items",
     "cacheUrl": "https://vscode.blob.core.windows.net/gallery/index", // set to empty string for every other extension gallery
     "controlUrl": "",
-    "recommendationsUrl": ""
   }
 }
 ```

+ 1 - 0
build/build.sh

@@ -60,6 +60,7 @@ if [[ "${SKIP_BUILD}" == "no" ]]; then
   rm -rf vscode* VSCode*
 
   . get_repo.sh
+  . version.sh
 
   # save variables for later
   echo "MS_TAG=\"${MS_TAG}\"" > build.env

+ 2 - 0
build/update_api.sh

@@ -30,4 +30,6 @@ fi
 
 APIS=`cat ${DIRECTORY}/resources/app/product.json | jq -r '.extensionEnabledApiProposals'`
 
+APIS=`echo "${APIS}" | jq '. += {"jeanp413.open-remote-ssh": ["resolvers", "tunnels", "terminalDataWriteEvent", "contribViewsRemote"]}'`
+
 cat <<< $(jq --argjson v "${APIS}" 'setpath(["extensionEnabledApiProposals"]; $v)' product.json) > product.json

+ 36 - 7
build/update_patches.sh

@@ -1,21 +1,50 @@
 #!/bin/bash
 
+export VSCODE_QUALITY="stable"
+
+while getopts ":ilp" opt; do
+  case "$opt" in
+    i)
+      export VSCODE_QUALITY="insider"
+      ;;
+  esac
+done
+
 cd vscode || { echo "'vscode' dir not found"; exit 1; }
 
 git add .
 git reset -q --hard HEAD
 
-for file in ../patches/*.patch; do
-  if [ -f "${file}" ]; then
-    echo applying patch: "${file}"
-    git apply --ignore-whitespace "${file}"
+for FILE in ../patches/*.patch; do
+  if [ -f "${FILE}" ]; then
+    echo applying patch: "${FILE}"
+    git apply --ignore-whitespace "${FILE}"
     if [ $? -ne 0 ]; then
-      echo failed to apply patch "${file}"
-      git apply --reject "${file}"
+      echo failed to apply patch "${FILE}"
+      git apply --reject "${FILE}"
       read -p "Press any key when the conflict have been resolved..." -n1 -s
-      git diff -U1 > "${file}"
+      git add .
+      git diff --staged -U1 > "${FILE}"
     fi
     git add .
     git reset -q --hard HEAD
   fi
 done
+
+if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
+  for FILE in ../patches/insider/*.patch; do
+    if [ -f "${FILE}" ]; then
+      echo applying patch: "${FILE}"
+      git apply --ignore-whitespace "${FILE}"
+      if [ $? -ne 0 ]; then
+        echo failed to apply patch "${FILE}"
+        git apply --reject "${FILE}"
+        read -p "Press any key when the conflict have been resolved..." -n1 -s
+        git add .
+        git diff --staged -U1 > "${FILE}"
+      fi
+      git add .
+      git reset -q --hard HEAD
+    fi
+  done
+fi

+ 2 - 2
insider.json

@@ -1,4 +1,4 @@
 {
-  "tag": "1.73.0",
-  "commit": "8fa188b2b301d36553cbc9ce1b0a146ccb93351f"
+  "tag": "1.75.0",
+  "commit": "b92894493e6f971a3c71912d823e699d3a05d643"
 }

+ 26 - 35
patches/build-version.patch

@@ -1,78 +1,69 @@
-diff --git a/.vscode/settings.json b/.vscode/settings.json
-index 3907bc7..1772769 100644
---- a/.vscode/settings.json
-+++ b/.vscode/settings.json
-@@ -88,3 +88,3 @@
- 		"editor.defaultFormatter": "vscode.typescript-language-features",
--		"editor.formatOnSave": true
-+		// "editor.formatOnSave": true
- 	},
 diff --git a/build/gulpfile.reh.js b/build/gulpfile.reh.js
-index 980f647..959fb88 100644
+index f3cdbff..ac7c39b 100644
 --- a/build/gulpfile.reh.js
 +++ b/build/gulpfile.reh.js
-@@ -245,4 +245,5 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
+@@ -246,4 +246,5 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
  		const name = product.nameShort;
 +		const release = packageJson.release;
  		const packageJsonStream = gulp.src(['remote/package.json'], { base: 'remote' })
 -			.pipe(json({ name, version, dependencies: undefined, optionalDependencies: undefined }));
 +			.pipe(json({ name, version, release, dependencies: undefined, optionalDependencies: undefined }));
  
-@@ -251,3 +252,3 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
+@@ -252,3 +253,3 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
  		const productJsonStream = gulp.src(['product.json'], { base: '.' })
 -			.pipe(json({ commit, date, version }));
 +			.pipe(json({ commit, date, version, release }));
  
 diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js
-index 6947d1e..80f358e 100644
+index cdc802b..49ab315 100644
 --- a/build/gulpfile.vscode.js
 +++ b/build/gulpfile.vscode.js
-@@ -224,3 +224,3 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
+@@ -227,3 +227,3 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
  
 -		let version = packageJson.version;
 +		let version = packageJson.version
  		const quality = product.quality;
-@@ -232,3 +232,4 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
+@@ -235,3 +235,4 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
  		const name = product.nameShort;
 -		const packageJsonUpdates = { name, version };
 +		const release = packageJson.release;
 +		const packageJsonUpdates = { name, version, release };
  
-@@ -243,3 +244,3 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
+@@ -246,3 +247,3 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
  		const date = new Date().toISOString();
 -		const productJsonUpdate = { commit, date, checksums, version };
 +		const productJsonUpdate = { commit, date, checksums, version, release };
  
 diff --git a/build/gulpfile.vscode.linux.js b/build/gulpfile.vscode.linux.js
-index 4a25ca5..ca33d2e 100644
+index cdc8870..f6e4e09 100644
 --- a/build/gulpfile.vscode.linux.js
 +++ b/build/gulpfile.vscode.linux.js
-@@ -24,4 +24,2 @@ const commit = util.getVersion(root);
+@@ -25,4 +25,2 @@ const commit = getVersion(root);
  
 -const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);
 -
  /**
-@@ -87,3 +85,3 @@ function prepareDebPackage(arch) {
+@@ -88,3 +86,3 @@ function prepareDebPackage(arch) {
  					.pipe(replace('@@NAME@@', product.applicationName))
 -					.pipe(replace('@@VERSION@@', packageJson.version + '-' + linuxPackageRevision))
 +					.pipe(replace('@@VERSION@@', `${packageJson.version}.${packageJson.release}`))
  					.pipe(replace('@@ARCHITECTURE@@', debArch))
-@@ -192,4 +190,3 @@ function prepareRpmPackage(arch) {
+@@ -193,4 +191,3 @@ function prepareRpmPackage(arch) {
  			.pipe(replace('@@ICON@@', product.linuxIconName))
 -			.pipe(replace('@@VERSION@@', packageJson.version))
 -			.pipe(replace('@@RELEASE@@', linuxPackageRevision))
 +			.pipe(replace('@@VERSION@@', `${packageJson.version}.${packageJson.release}`))
  			.pipe(replace('@@ARCHITECTURE@@', rpmArch))
-@@ -266,3 +263,3 @@ function prepareSnapPackage(arch) {
+@@ -267,3 +264,3 @@ function prepareSnapPackage(arch) {
  			.pipe(replace('@@NAME@@', product.applicationName))
 -			.pipe(replace('@@VERSION@@', commit.substr(0, 8)))
 +			.pipe(replace('@@VERSION@@', `${packageJson.version}.${packageJson.release}`))
  			// Possible run-on values https://snapcraft.io/docs/architectures
 diff --git a/build/gulpfile.vscode.win32.js b/build/gulpfile.vscode.win32.js
-index 81ba509..43f5377 100644
+index 0d3abda..2606af5 100644
 --- a/build/gulpfile.vscode.win32.js
 +++ b/build/gulpfile.vscode.win32.js
-@@ -93,4 +93,4 @@ function buildWin32Setup(arch, target) {
+@@ -94,4 +94,4 @@ function buildWin32Setup(arch, target) {
  			DirName: product.win32DirName,
 -			Version: pkg.version,
 -			RawVersion: pkg.version.replace(/-\w+$/, ''),
@@ -89,7 +80,7 @@ index 61659d2..5cafa06 100644
 +Release:  el7
  Summary:  Code editing. Redefined.
 diff --git a/src/vs/base/common/product.ts b/src/vs/base/common/product.ts
-index e07695c..55ccc32 100644
+index 7ec238b..9295018 100644
 --- a/src/vs/base/common/product.ts
 +++ b/src/vs/base/common/product.ts
 @@ -34,2 +34,3 @@ export interface IProductConfiguration {
@@ -97,22 +88,22 @@ index e07695c..55ccc32 100644
 +	readonly release: string;
  	readonly date?: string;
 diff --git a/src/vs/platform/diagnostics/node/diagnosticsService.ts b/src/vs/platform/diagnostics/node/diagnosticsService.ts
-index 66e35c8..087c055 100644
+index 561966b..30814a0 100644
 --- a/src/vs/platform/diagnostics/node/diagnosticsService.ts
 +++ b/src/vs/platform/diagnostics/node/diagnosticsService.ts
-@@ -238,3 +238,3 @@ export class DiagnosticsService implements IDiagnosticsService {
+@@ -236,3 +236,3 @@ export class DiagnosticsService implements IDiagnosticsService {
  		const output: string[] = [];
 -		output.push(`Version:          ${this.productService.nameShort} ${this.productService.version} (${this.productService.commit || 'Commit unknown'}, ${this.productService.date || 'Date unknown'})`);
 +		output.push(`Version:          ${this.productService.nameShort} ${this.productService.version} ${this.productService.release || 'Release unknown'} (${this.productService.commit || 'Commit unknown'}, ${this.productService.date || 'Date unknown'})`);
  		output.push(`OS Version:       ${osLib.type()} ${osLib.arch()} ${osLib.release()}`);
 diff --git a/src/vs/platform/product/common/product.ts b/src/vs/platform/product/common/product.ts
-index bceda01..4fe44e2 100644
+index ef798fa..cfa7866 100644
 --- a/src/vs/platform/product/common/product.ts
 +++ b/src/vs/platform/product/common/product.ts
-@@ -49,6 +49,7 @@ else if (typeof require?.__$__nodeRequire === 'function') {
+@@ -43,6 +43,7 @@ else if (globalThis._VSCODE_PRODUCT_JSON && globalThis._VSCODE_PACKAGE_JSON) {
  	if (!product.version) {
--		const pkg = require.__$__nodeRequire(joinPath(rootPath, 'package.json').fsPath) as { version: string };
-+		const pkg = require.__$__nodeRequire(joinPath(rootPath, 'package.json').fsPath) as { version: string, release: string };
+-		const pkg = globalThis._VSCODE_PACKAGE_JSON as { version: string };
++		const pkg = globalThis._VSCODE_PACKAGE_JSON as { version: string, release: string };
  
  		Object.assign(product, {
 -			version: pkg.version
@@ -120,19 +111,19 @@ index bceda01..4fe44e2 100644
 +			release: pkg.release
  		});
 diff --git a/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts b/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts
-index ec4ff95..2ed2c03 100644
+index 6a3768d..023eeed 100644
 --- a/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts
 +++ b/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts
-@@ -22,2 +22,3 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
- import { MarkdownRenderer } from 'vs/editor/contrib/markdownRenderer/browser/markdownRenderer';
+@@ -21,2 +21,3 @@ import { MarkdownRenderer } from 'vs/editor/contrib/markdownRenderer/browser/mar
+ import { defaultButtonStyles, defaultCheckboxStyles, defaultDialogStyles, defaultInputBoxStyles } from 'vs/platform/theme/browser/defaultStyles';
 +import { getReleaseString } from 'vs/workbench/common/release';
  
-@@ -145,2 +146,4 @@ export class BrowserDialogHandler implements IDialogHandler {
+@@ -147,2 +148,4 @@ export class BrowserDialogHandler implements IDialogHandler {
  		const detailString = (useAgo: boolean): string => {
 +			const releaseString = getReleaseString();
 +
  			return localize('aboutDetail',
-@@ -151,3 +154,3 @@ export class BrowserDialogHandler implements IDialogHandler {
+@@ -153,3 +156,3 @@ export class BrowserDialogHandler implements IDialogHandler {
  				navigator.userAgent
 -			);
 +			).replace('\n', `\n${releaseString} ${this.productService.release || 'Unknown'}\n`);

+ 8 - 8
patches/custom-gallery.patch

@@ -1,20 +1,21 @@
 diff --git a/src/vs/platform/product/common/product.ts b/src/vs/platform/product/common/product.ts
-index bceda01..174c766 100644
+index ef798fa..5a0550b 100644
 --- a/src/vs/platform/product/common/product.ts
 +++ b/src/vs/platform/product/common/product.ts
-@@ -6,3 +6,3 @@
- import { FileAccess } from 'vs/base/common/network';
+@@ -5,3 +5,4 @@
+ 
 -import { globals } from 'vs/base/common/platform';
++import { AppResourcePath, FileAccess } from 'vs/base/common/network';
 +import { globals, isWindows } from 'vs/base/common/platform';
  import { env } from 'vs/base/common/process';
-@@ -11,2 +11,3 @@ import { dirname, joinPath } from 'vs/base/common/resources';
+@@ -9,2 +10,3 @@ import { IProductConfiguration } from 'vs/base/common/product';
  import { ISandboxConfiguration } from 'vs/base/parts/sandbox/common/sandboxTypes';
 +import { getUserDataPath } from 'vs/platform/environment/node/userDataPath';
  
-@@ -35,2 +36,41 @@ else if (typeof require?.__$__nodeRequire === 'function') {
+@@ -29,2 +31,40 @@ else if (globalThis._VSCODE_PRODUCT_JSON && globalThis._VSCODE_PACKAGE_JSON) {
  
 +	// Set user-defined extension gallery
-+	const { serviceUrl, searchUrl, itemUrl, controlUrl, recommendationsUrl } = product.extensionsGallery || {}
++	const { serviceUrl, searchUrl, itemUrl, controlUrl } = product.extensionsGallery || {}
 +
 +	Object.assign(product, {
 +		extensionsGallery: {
@@ -22,7 +23,6 @@ index bceda01..174c766 100644
 +			searchUrl: env['VSCODE_GALLERY_SEARCH_URL'] || searchUrl,
 +			itemUrl: env['VSCODE_GALLERY_ITEM_URL'] || itemUrl,
 +			controlUrl: env['VSCODE_GALLERY_CONTROL_URL'] || controlUrl,
-+			recommendationsUrl: env['VSCODE_GALLERY_RECOMMENDATIONS_URL'] || recommendationsUrl
 +		}
 +	})
 +
@@ -46,7 +46,7 @@ index bceda01..174c766 100644
 +		const userDataPath = getUserDataPath({} as any, product.nameShort);
 +		const userProductPath = isWindows ? `file:///${userDataPath}/product.json` : `file://${userDataPath}/product.json`;
 +
-+		const userProduct = require.__$__nodeRequire(FileAccess.asFileUri(userProductPath, require).fsPath);
++		const userProduct = require.__$__nodeRequire(FileAccess.asFileUri(userProductPath as AppResourcePath).fsPath);
 +
 +		product = merge(product, userProduct);
 +	} catch (ex) {

+ 5 - 17
patches/insider/disable-sandbox.patch

@@ -1,21 +1,9 @@
 diff --git a/src/vs/platform/windows/electron-main/windowImpl.ts b/src/vs/platform/windows/electron-main/windowImpl.ts
-index c9501cb..a6958ff 100644
+index 3b8a644..71ea0ad 100644
 --- a/src/vs/platform/windows/electron-main/windowImpl.ts
 +++ b/src/vs/platform/windows/electron-main/windowImpl.ts
-@@ -42,7 +42,6 @@ import { Color } from 'vs/base/common/color';
- import { IPolicyService } from 'vs/platform/policy/common/policy';
- import { IUserDataProfile } from 'vs/platform/userDataProfile/common/userDataProfile';
- import { IStateMainService } from 'vs/platform/state/electron-main/state';
--import product from 'vs/platform/product/common/product';
- import { IUserDataProfilesMainService } from 'vs/platform/userDataProfile/electron-main/userDataProfile';
- 
- export interface IWindowCreationOptions {
-@@ -203,7 +202,7 @@ export class CodeWindow extends Disposable implements ICodeWindow {
- 			if (typeof windowSettings?.experimental?.useSandbox === 'boolean') {
- 				useSandbox = windowSettings.experimental.useSandbox;
- 			} else {
--				useSandbox = typeof product.quality === 'string' && product.quality !== 'stable';
-+				useSandbox = false;
+@@ -213,4 +213,2 @@ export class CodeWindow extends Disposable implements ICodeWindow {
+ 				useSandbox = true;
+-			} else {
+-				useSandbox = typeof this.productService.quality === 'string' && this.productService.quality !== 'stable';
  			}
- 
- 			const options: BrowserWindowConstructorOptions & { experimentalDarkMode: boolean } = {

+ 15 - 0
patches/insider/disable-windows-appx.patch

@@ -0,0 +1,15 @@
+diff --git a/build/gulpfile.vscode.win32.js b/build/gulpfile.vscode.win32.js
+index 0d3abda..9e5143a 100644
+--- a/build/gulpfile.vscode.win32.js
++++ b/build/gulpfile.vscode.win32.js
+@@ -116,6 +116,6 @@ function buildWin32Setup(arch, target) {
+ 
+-		if (quality === 'insider') {
+-			definitions['AppxPackage'] = `code_insiders_explorer_${arch === 'ia32' ? 'x86' : arch}.appx`;
+-			definitions['AppxPackageFullname'] = `Microsoft.${product.win32RegValueName}_1.0.0.0_neutral__8wekyb3d8bbwe`;
+-		}
++		// if (quality === 'insider') {
++		// 	definitions['AppxPackage'] = `code_insiders_explorer_${arch === 'ia32' ? 'x86' : arch}.appx`;
++		// 	definitions['AppxPackageFullname'] = `Microsoft.${product.win32RegValueName}_1.0.0.0_neutral__8wekyb3d8bbwe`;
++		// }
+ 

+ 40 - 41
patches/use-github-pat.patch

@@ -1,18 +1,19 @@
 diff --git a/extensions/github-authentication/src/githubServer.ts b/extensions/github-authentication/src/githubServer.ts
-index 830e698..cd6f27e 100644
+index e1f766d..4f11dbe 100644
 --- a/extensions/github-authentication/src/githubServer.ts
 +++ b/extensions/github-authentication/src/githubServer.ts
-@@ -7,4 +7,2 @@ import * as vscode from 'vscode';
- import fetch, { Response } from 'node-fetch';
--import { v4 as uuid } from 'uuid';
+@@ -6,4 +6,2 @@
+ import * as vscode from 'vscode';
+-import * as path from 'path';
 -import { PromiseAdapter, promiseFromEvent } from './common/utils';
- import { ExperimentationTelemetry } from './experimentationService';
-@@ -12,13 +10,4 @@ import { AuthProviderType } from './github';
+ import { ExperimentationTelemetry } from './common/experimentationService';
+@@ -11,14 +9,6 @@ import { AuthProviderType, UriEventHandler } from './github';
  import { Log } from './common/logger';
 -import { isSupportedEnvironment } from './common/env';
--import { LoopbackAuthServer } from './authServer';
--import path = require('path');
--
+-import { LoopbackAuthServer } from './node/authServer';
+-import { crypto } from './node/crypto';
+ import { fetching } from './node/fetch';
+ 
 -const CLIENT_ID = '01ab8ac9400c4e429b23';
 -const GITHUB_TOKEN_URL = 'https://vscode.dev/codeExchangeProxyEndpoints/github/login/oauth/access_token';
  const NETWORK_ERROR = 'network error';
@@ -20,8 +21,8 @@ index 830e698..cd6f27e 100644
 -const REDIRECT_URL_STABLE = 'https://vscode.dev/redirect';
 -const REDIRECT_URL_INSIDERS = 'https://insiders.vscode.dev/redirect';
 -
- class UriEventHandler extends vscode.EventEmitter<vscode.Uri> implements vscode.UriHandler {
-@@ -42,9 +31,2 @@ export interface IGitHubServer extends vscode.Disposable {
+ export interface IGitHubServer {
+@@ -30,9 +20,2 @@ export interface IGitHubServer {
  
 -interface IGitHubDeviceCodeResponse {
 -	device_code: string;
@@ -31,30 +32,28 @@ index 830e698..cd6f27e 100644
 -}
 -
  async function getScopes(token: string, serverUri: vscode.Uri, logger: Log): Promise<string[]> {
-@@ -55,3 +37,3 @@ async function getScopes(token: string, serverUri: vscode.Uri, logger: Log): Pro
- 				Authorization: `token ${token}`,
--				'User-Agent': 'Visual-Studio-Code'
-+				'User-Agent': 'VSCodium'
- 			}
-@@ -75,7 +57,4 @@ export class GitHubServer implements IGitHubServer {
+@@ -63,8 +46,4 @@ export class GitHubServer implements IGitHubServer {
  
--	private _pendingNonces = new Map<string, string[]>();
--	private _codeExchangePromises = new Map<string, { promise: Promise<string>; cancel: vscode.EventEmitter<void> }>();
- 	private _disposable: vscode.Disposable | undefined;
- 	private static _uriHandler: UriEventHandler | undefined;
--	private _redirectEndpoint: string | undefined;
+-	private readonly _pendingNonces = new Map<string, string[]>();
+-	private readonly _codeExchangePromises = new Map<string, { promise: Promise<string>; cancel: vscode.EventEmitter<void> }>();
+ 	private readonly _type: AuthProviderType;
  
-@@ -83,2 +62,3 @@ export class GitHubServer implements IGitHubServer {
- 		public readonly type: AuthProviderType,
+-	private _redirectEndpoint: string | undefined;
+-
+ 	constructor(
+@@ -72,3 +51,5 @@ export class GitHubServer implements IGitHubServer {
+ 		private readonly _telemetryReporter: ExperimentationTelemetry,
++		// @ts-ignore
+ 		private readonly _uriHandler: UriEventHandler,
 +		// @ts-ignore
  		private readonly _supportDeviceCodeFlow: boolean,
-@@ -102,41 +82,2 @@ export class GitHubServer implements IGitHubServer {
+@@ -87,41 +68,2 @@ export class GitHubServer implements IGitHubServer {
  
 -	private async getRedirectEndpoint(): Promise<string> {
 -		if (this._redirectEndpoint) {
 -			return this._redirectEndpoint;
 -		}
--		if (this.type === AuthProviderType.github) {
+-		if (this._type === AuthProviderType.github) {
 -			const proxyEndpoints = await vscode.commands.executeCommand<{ [providerId: string]: string } | undefined>('workbench.getCodeExchangeProxyEndpoints');
 -			// If we are running in insiders vscode.dev, then ensure we use the redirect route on that.
 -			this._redirectEndpoint = REDIRECT_URL_STABLE;
@@ -64,7 +63,7 @@ index 830e698..cd6f27e 100644
 -			return this._redirectEndpoint;
 -		} else {
 -			// GHES
--			const result = await fetch(this.getServerUri('/meta').toString(true));
+-			const result = await fetching(this.getServerUri('/meta').toString(true));
 -			if (result.ok) {
 -				try {
 -					const json: { installed_version: string } = await result.json();
@@ -89,8 +88,8 @@ index 830e698..cd6f27e 100644
 -		return this._redirectEndpoint;
 -	}
 -
- 	dispose() {
-@@ -156,58 +97,8 @@ export class GitHubServer implements IGitHubServer {
+ 	// TODO@joaomoreno TODO@TylerLeonhardt
+@@ -137,58 +79,8 @@ export class GitHubServer implements IGitHubServer {
  		let userCancelled: boolean | undefined;
 -		const yes = vscode.l10n.t('Yes');
 -		const no = vscode.l10n.t('No');
@@ -108,7 +107,7 @@ index 830e698..cd6f27e 100644
 -			}
 -		};
 -
--		const nonce = uuid();
+-		const nonce: string = crypto.getRandomValues(new Uint32Array(2)).reduce((prev, curr) => prev += curr.toString(16), '');
 -		const callbackUri = await vscode.env.asExternalUri(vscode.Uri.parse(`${vscode.env.uriScheme}://vscode.github-authentication/did-authenticate?nonce=${encodeURIComponent(nonce)}`));
  
 -		const supported = isSupportedEnvironment(callbackUri);
@@ -154,7 +153,7 @@ index 830e698..cd6f27e 100644
 +			this._logger.error(e);
 +			userCancelled = e.message ?? e === 'User Cancelled';
  		}
-@@ -217,136 +108,2 @@ export class GitHubServer implements IGitHubServer {
+@@ -198,136 +90,2 @@ export class GitHubServer implements IGitHubServer {
  
 -	private async doLoginWithoutLocalServer(scopes: string, nonce: string, callbackUri: vscode.Uri): Promise<string> {
 -		this._logger.info(`Trying without local server... (${scopes})`);
@@ -187,7 +186,7 @@ index 830e698..cd6f27e 100644
 -			// before completing it.
 -			let codeExchangePromise = this._codeExchangePromises.get(scopes);
 -			if (!codeExchangePromise) {
--				codeExchangePromise = promiseFromEvent(GitHubServer._uriHandler!.event, this.handleUri(scopes));
+-				codeExchangePromise = promiseFromEvent(this._uriHandler!.event, this.handleUri(scopes));
 -				this._codeExchangePromises.set(scopes, codeExchangePromise);
 -			}
 -
@@ -258,7 +257,7 @@ index 830e698..cd6f27e 100644
 -			path: '/login/device/code',
 -			query: `client_id=${CLIENT_ID}&scope=${scopes}`
 -		});
--		const result = await fetch(uri.toString(true), {
+-		const result = await fetching(uri.toString(true), {
 -			method: 'POST',
 -			headers: {
 -				Accept: 'application/json'
@@ -291,7 +290,7 @@ index 830e698..cd6f27e 100644
 -	}
 -
  	private async doLoginWithPat(scopes: string): Promise<string> {
-@@ -374,124 +131,2 @@ export class GitHubServer implements IGitHubServer {
+@@ -355,124 +113,2 @@ export class GitHubServer implements IGitHubServer {
  
 -	private async waitForDeviceCodeAccessToken(
 -		json: IGitHubDeviceCodeResponse,
@@ -322,7 +321,7 @@ index 830e698..cd6f27e 100644
 -				}
 -				let accessTokenResult;
 -				try {
--					accessTokenResult = await fetch(refreshTokenUri.toString(true), {
+-					accessTokenResult = await fetching(refreshTokenUri.toString(true), {
 -						method: 'POST',
 -						headers: {
 -							Accept: 'application/json'
@@ -388,11 +387,11 @@ index 830e698..cd6f27e 100644
 -		const endpointUrl = proxyEndpoints?.github ? `${proxyEndpoints.github}login/oauth/access_token` : GITHUB_TOKEN_URL;
 -
 -		const body = new URLSearchParams([['code', code]]);
--		if (this.type === AuthProviderType.githubEnterprise) {
+-		if (this._type === AuthProviderType.githubEnterprise) {
 -			body.append('github_enterprise', this.baseUri.toString(true));
 -			body.append('redirect_uri', await this.getRedirectEndpoint());
 -		}
--		const result = await fetch(endpointUrl, {
+-		const result = await fetching(endpointUrl, {
 -			method: 'POST',
 -			headers: {
 -				Accept: 'application/json',
@@ -417,19 +416,19 @@ index 830e698..cd6f27e 100644
 -
  	private getServerUri(path: string = '') {
 diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts
-index ce2a3e8..2a5cf60 100644
+index 2fff6cf..46967ce 100644
 --- a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts
 +++ b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts
-@@ -306,3 +306,3 @@ export class AccountsActivityActionViewItem extends MenuActivityActionViewItem {
+@@ -307,3 +307,3 @@ export class AccountsActivityActionViewItem extends MenuActivityActionViewItem {
  
 -		if (providers.length && !menus.length) {
 +		if (!menus.length) {
  			const noAccountsAvailableAction = disposables.add(new Action('noAccountsAvailable', localize('noAccounts', "You are not signed in to any accounts"), undefined, false));
 diff --git a/src/vs/workbench/services/authentication/browser/authenticationService.ts b/src/vs/workbench/services/authentication/browser/authenticationService.ts
-index d5e2b75..a996eb7 100644
+index 1d9ac76..57b915c 100644
 --- a/src/vs/workbench/services/authentication/browser/authenticationService.ts
 +++ b/src/vs/workbench/services/authentication/browser/authenticationService.ts
-@@ -279,12 +279,2 @@ export class AuthenticationService extends Disposable implements IAuthentication
+@@ -267,12 +267,2 @@ export class AuthenticationService extends Disposable implements IAuthentication
  		}
 -
 -		if (!this._authenticationProviders.size) {

+ 9 - 0
patches/win7.patch

@@ -0,0 +1,9 @@
+diff --git a/build/win32/code.iss b/build/win32/code.iss
+index d365ab1..1a02701 100644
+--- a/build/win32/code.iss
++++ b/build/win32/code.iss
+@@ -28,3 +28,3 @@ ChangesEnvironment=true
+ ChangesAssociations=true
+-MinVersion=6.2
++MinVersion=6.1.7600
+ SourceDir={#SourceDir}

+ 7 - 2
product.json

@@ -130,8 +130,7 @@
       "telemetry"
     ],
     "ms-vscode.remote-server": [
-      "resolvers",
-      "tunnels"
+      "resolvers"
     ],
     "ms-vscode.remote-explorer": [
       "contribViewsRemote",
@@ -222,6 +221,12 @@
     ],
     "ms-vscode.cpptools": [
       "terminalDataWriteEvent"
+    ],
+    "jeanp413.open-remote-ssh": [
+      "resolvers",
+      "tunnels",
+      "terminalDataWriteEvent",
+      "contribViewsRemote"
     ]
   },
   "extensionKind": {

+ 1 - 1
release.sh

@@ -23,7 +23,7 @@ if [[ $( gh release view --repo "${ASSETS_REPOSITORY}" "${RELEASE_VERSION}" 2>&1
     CREATE_OPTIONS="--generate-notes"
   fi
 
-  gh release create "${RELEASE_VERSION}" --repo "${ASSETS_REPOSITORY}" --notes "${NOTES}" ${CREATE_OPTIONS}
+  gh release create "${RELEASE_VERSION}" --repo "${ASSETS_REPOSITORY}" --title "${RELEASE_VERSION}" --notes "${NOTES}" ${CREATE_OPTIONS}
 fi
 
 cd assets

+ 2 - 2
undo_telemetry.sh

@@ -14,12 +14,12 @@ REPLACEMENT="s|//[^/]+\.data\.microsoft\.com|//0\.0\.0\.0|g"
 
 if is_gnu_sed; then
   replace_with_debug () {
-    echo "found: ${2} (`date`)"
+    echo "found: ${2}"
     sed -i -E "${1}" "${2}"
   }
 else
   replace_with_debug () {
-    echo "found: ${2} (`date`)"
+    echo "found: ${2}"
     sed -i '' -E "${1}" "${2}"
   }
 fi