| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 | 
							- diff --git a/build/gulpfile.reh.js b/build/gulpfile.reh.js
 
- index 595d0ce..99bfe30 100644
 
- --- a/build/gulpfile.reh.js
 
- +++ b/build/gulpfile.reh.js
 
- @@ -290,4 +290,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 }));
 
-  
 
- @@ -296,3 +297,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 e1507e0..9a12a12 100644
 
- --- a/build/gulpfile.vscode.js
 
- +++ b/build/gulpfile.vscode.js
 
- @@ -233,3 +233,3 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
 
-  
 
- -		let version = packageJson.version;
 
- +		let version = packageJson.version
 
-  		const quality = product.quality;
 
- @@ -241,3 +241,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 };
 
-  
 
- @@ -252,3 +253,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 8c2b62f..303fb16 100644
 
- --- a/build/gulpfile.vscode.linux.js
 
- +++ b/build/gulpfile.vscode.linux.js
 
- @@ -24,4 +24,2 @@ const commit = getVersion(root);
 
-  
 
- -const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);
 
- -
 
-  /**
 
- @@ -86,3 +84,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))
 
- @@ -194,4 +192,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))
 
- @@ -270,3 +267,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 5adfdfb..d6ddead 100644
 
- --- a/build/gulpfile.vscode.win32.js
 
- +++ b/build/gulpfile.vscode.win32.js
 
- @@ -90,4 +90,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/src/vs/base/common/product.ts b/src/vs/base/common/product.ts
 
- index 3a57612..d26a55b 100644
 
- --- a/src/vs/base/common/product.ts
 
- +++ b/src/vs/base/common/product.ts
 
- @@ -58,2 +58,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.ts
 
- index 0be311f..d6c4a18 100644
 
- --- a/src/vs/platform/diagnostics/node/diagnosticsService.ts
 
- +++ b/src/vs/platform/diagnostics/node/diagnosticsService.ts
 
- @@ -224,3 +224,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 467e11c..8e7d474 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.ts
 
- index c064ebc..72a9fa9 100644
 
- --- a/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts
 
- +++ b/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts
 
- @@ -22,2 +22,3 @@ import { defaultButtonStyles, defaultCheckboxStyles, defaultDialogStyles, defaul
 
-  import { ResultKind } from 'vs/platform/keybinding/common/keybindingResolver';
 
- +import { getReleaseString } from 'vs/workbench/common/release';
 
-  
 
- @@ -79,2 +80,4 @@ export class BrowserDialogHandler extends AbstractDialogHandler {
 
-  		const detailString = (useAgo: boolean): string => {
 
- +			const releaseString = getReleaseString();
 
- +
 
-  			return localize('aboutDetail',
 
- @@ -85,3 +88,3 @@ export class BrowserDialogHandler extends AbstractDialogHandler {
 
-  				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.ts
 
- new file mode 100644
 
- index 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/electron-sandbox/parts/dialogs/dialogHandler.ts b/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.ts
 
- index f2cc82a..700d81a 100644
 
- --- a/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.ts
 
- +++ b/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.ts
 
- @@ -14,2 +14,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';
 
-  import { getActiveWindow } from 'vs/base/browser/dom';
 
- @@ -80,2 +81,3 @@ export class NativeDialogHandler extends AbstractDialogHandler {
 
-  		const osProps = await this.nativeHostService.getOSProperties();
 
- +		const releaseString = getReleaseString();
 
-  
 
- @@ -93,3 +95,3 @@ export class NativeDialogHandler extends AbstractDialogHandler {
 
-  				`${osProps.type} ${osProps.arch} ${osProps.release}${isLinuxSnap ? ' snap' : ''}`
 
- -			);
 
- +			).replace('\n', `\n${releaseString} ${this.productService.release || 'Unknown'}\n`);
 
-  		};
 
 
  |