| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | diff --git a/build/gulpfile.reh.js b/build/gulpfile.reh.jsindex f3cdbff..ac7c39b 100644--- a/build/gulpfile.reh.js+++ b/build/gulpfile.reh.js@@ -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 })); @@ -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.jsindex cdc802b..49ab315 100644--- a/build/gulpfile.vscode.js+++ b/build/gulpfile.vscode.js@@ -227,3 +227,3 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op -		let version = packageJson.version;+		let version = packageJson.version 		const quality = product.quality;@@ -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 }; @@ -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.jsindex cdc8870..f6e4e09 100644--- a/build/gulpfile.vscode.linux.js+++ b/build/gulpfile.vscode.linux.js@@ -25,4 +25,2 @@ const commit = getVersion(root); -const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);- /**@@ -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))@@ -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))@@ -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/architecturesdiff --git a/build/gulpfile.vscode.win32.js b/build/gulpfile.vscode.win32.jsindex 0d3abda..2606af5 100644--- a/build/gulpfile.vscode.win32.js+++ b/build/gulpfile.vscode.win32.js@@ -94,4 +94,4 @@ function buildWin32Setup(arch, target) { 			DirName: product.win32DirName,-			Version: pkg.version,-			RawVersion: pkg.version.replace(/-\w+$/, ''),+			Version: `${pkg.version}.${pkg.release}`,+			RawVersion: `${pkg.version.replace(/-\w+$/, '')}.${pkg.release}`, 			NameVersion: product.win32NameVersion + (target === 'user' ? ' (User)' : ''),diff --git a/resources/linux/rpm/code.spec.template b/resources/linux/rpm/code.spec.templateindex 61659d2..5cafa06 100644--- a/resources/linux/rpm/code.spec.template+++ b/resources/linux/rpm/code.spec.template@@ -2,3 +2,3 @@ Name:     @@NAME@@ Version:  @@VERSION@@-Release:  @@RELEASE@@.el7+Release:  el7 Summary:  Code editing. Redefined.diff --git a/src/vs/base/common/product.ts b/src/vs/base/common/product.tsindex 7ec238b..9295018 100644--- a/src/vs/base/common/product.ts+++ b/src/vs/base/common/product.ts@@ -34,2 +34,3 @@ export interface IProductConfiguration { 	readonly version: string;+	readonly release: string; 	readonly date?: string;diff --git a/src/vs/platform/diagnostics/node/diagnosticsService.ts b/src/vs/platform/diagnostics/node/diagnosticsService.tsindex 561966b..30814a0 100644--- a/src/vs/platform/diagnostics/node/diagnosticsService.ts+++ b/src/vs/platform/diagnostics/node/diagnosticsService.ts@@ -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.tsindex ef798fa..cfa7866 100644--- a/src/vs/platform/product/common/product.ts+++ b/src/vs/platform/product/common/product.ts@@ -43,6 +43,7 @@ else if (globalThis._VSCODE_PRODUCT_JSON && globalThis._VSCODE_PACKAGE_JSON) { 	if (!product.version) {-		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+			version: pkg.version,+			release: pkg.release 		});diff --git a/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts b/src/vs/workbench/browser/parts/dialogs/dialogHandler.tsindex 6a3768d..023eeed 100644--- a/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts+++ b/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts@@ -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'; @@ -147,2 +148,4 @@ export class BrowserDialogHandler implements IDialogHandler { 		const detailString = (useAgo: boolean): string => {+			const releaseString = getReleaseString();+ 			return localize('aboutDetail',@@ -153,3 +156,3 @@ export class BrowserDialogHandler implements IDialogHandler { 				navigator.userAgent-			);+			).replace('\n', `\n${releaseString} ${this.productService.release || 'Unknown'}\n`); 		};diff --git a/src/vs/workbench/common/release.ts b/src/vs/workbench/common/release.tsnew file mode 100644index 0000000..2a8ea57--- /dev/null+++ b/src/vs/workbench/common/release.ts@@ -0,0 +1,14 @@+import { language } from 'vs/base/common/platform';++const DEFAULT_LABEL = 'Release:';+const LABELS: { [key: string]: string } = {+	'en': DEFAULT_LABEL,+	'fr': 'Révision :',+	'ru': 'Релиз:',+	'zh-hans': '发布版本:',+	'zh-hant': '發布版本:',+};++export function getReleaseString(): string {+	return LABELS[language] ?? DEFAULT_LABEL;+}diff --git a/src/vs/workbench/contrib/issue/browser/issueService.ts b/src/vs/workbench/contrib/issue/browser/issueService.tsindex dc7430b..23def01 100644--- a/src/vs/workbench/contrib/issue/browser/issueService.ts+++ b/src/vs/workbench/contrib/issue/browser/issueService.ts@@ -67,2 +67,3 @@ export class WebIssueService implements IWorkbenchIssueService { Version: ${this.productService.version}+Release: ${this.productService.release ?? 'unknown'} Commit: ${this.productService.commit ?? 'unknown'}diff --git a/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.ts b/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.tsindex f63b75f..2b77c1b 100644--- a/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.ts+++ b/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.ts@@ -17,2 +17,3 @@ import { IProductService } from 'vs/platform/product/common/productService'; import { process } from 'vs/base/parts/sandbox/electron-sandbox/globals';+import { getReleaseString } from 'vs/workbench/common/release'; @@ -166,2 +167,3 @@ export class NativeDialogHandler implements IDialogHandler { 		const osProps = await this.nativeHostService.getOSProperties();+		const releaseString = getReleaseString(); @@ -179,3 +181,3 @@ export class NativeDialogHandler implements IDialogHandler { 				process.sandboxed ? 'Yes' : 'No' // TODO@bpasero remove me once sandbox is final-			);+			).replace('\n', `\n${releaseString} ${this.productService.release || 'Unknown'}\n`); 		};
 |