@codingame/monaco-vscode-update-service-override 29.1.1 → 30.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/vscode/src/vs/workbench/contrib/markdown/browser/markdownSettingRenderer.js +14 -14
- package/vscode/src/vs/workbench/contrib/update/browser/releaseNotesEditor.js +6 -6
- package/vscode/src/vs/workbench/contrib/update/browser/update.contribution.js +15 -15
- package/vscode/src/vs/workbench/contrib/update/browser/update.js +44 -44
- package/vscode/src/vs/workbench/contrib/update/browser/updateStatusBarEntry.js +11 -11
- package/vscode/src/vs/workbench/contrib/update/browser/updateTitleBarEntry.d.ts +1 -4
- package/vscode/src/vs/workbench/contrib/update/browser/updateTitleBarEntry.js +8 -20
- package/vscode/src/vs/workbench/contrib/update/browser/updateTooltip.js +45 -45
- package/vscode/src/vs/workbench/contrib/update/common/updateUtils.js +8 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-update-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "30.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - update service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-api": "
|
|
18
|
+
"@codingame/monaco-vscode-api": "30.0.0"
|
|
19
19
|
},
|
|
20
20
|
"main": "index.js",
|
|
21
21
|
"module": "index.js",
|
|
@@ -123,11 +123,11 @@ let SimpleSettingRenderer = class SimpleSettingRenderer {
|
|
|
123
123
|
}
|
|
124
124
|
viewInSettingsMessage(settingId, alreadyDisplayed) {
|
|
125
125
|
if (alreadyDisplayed) {
|
|
126
|
-
return localize(
|
|
126
|
+
return localize(10238, "View in Settings");
|
|
127
127
|
} else {
|
|
128
128
|
const displayName = settingKeyToDisplayFormat(settingId);
|
|
129
129
|
return localize(
|
|
130
|
-
|
|
130
|
+
10239,
|
|
131
131
|
"View \"{0}: {1}\" in Settings",
|
|
132
132
|
displayName.category,
|
|
133
133
|
displayName.label
|
|
@@ -137,7 +137,7 @@ let SimpleSettingRenderer = class SimpleSettingRenderer {
|
|
|
137
137
|
restorePreviousSettingMessage(settingId) {
|
|
138
138
|
const displayName = settingKeyToDisplayFormat(settingId);
|
|
139
139
|
return localize(
|
|
140
|
-
|
|
140
|
+
10240,
|
|
141
141
|
"Restore value of \"{0}: {1}\"",
|
|
142
142
|
displayName.category,
|
|
143
143
|
displayName.label
|
|
@@ -152,14 +152,14 @@ let SimpleSettingRenderer = class SimpleSettingRenderer {
|
|
|
152
152
|
if (this.isAlreadySet(setting, booleanValue)) {
|
|
153
153
|
if (booleanValue) {
|
|
154
154
|
return localize(
|
|
155
|
-
|
|
155
|
+
10241,
|
|
156
156
|
"\"{0}: {1}\" is already enabled",
|
|
157
157
|
displayName.category,
|
|
158
158
|
displayName.label
|
|
159
159
|
);
|
|
160
160
|
} else {
|
|
161
161
|
return localize(
|
|
162
|
-
|
|
162
|
+
10242,
|
|
163
163
|
"\"{0}: {1}\" is already disabled",
|
|
164
164
|
displayName.category,
|
|
165
165
|
displayName.label
|
|
@@ -167,16 +167,16 @@ let SimpleSettingRenderer = class SimpleSettingRenderer {
|
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
if (booleanValue) {
|
|
170
|
-
return localize(
|
|
170
|
+
return localize(10243, "Enable \"{0}: {1}\"", displayName.category, displayName.label);
|
|
171
171
|
} else {
|
|
172
|
-
return localize(
|
|
172
|
+
return localize(10244, "Disable \"{0}: {1}\"", displayName.category, displayName.label);
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
stringSettingMessage(setting, stringValue) {
|
|
176
176
|
const displayName = settingKeyToDisplayFormat(setting.key);
|
|
177
177
|
if (this.isAlreadySet(setting, stringValue)) {
|
|
178
178
|
return localize(
|
|
179
|
-
|
|
179
|
+
10245,
|
|
180
180
|
"\"{0}: {1}\" is already set to \"{2}\"",
|
|
181
181
|
displayName.category,
|
|
182
182
|
displayName.label,
|
|
@@ -184,7 +184,7 @@ let SimpleSettingRenderer = class SimpleSettingRenderer {
|
|
|
184
184
|
);
|
|
185
185
|
}
|
|
186
186
|
return localize(
|
|
187
|
-
|
|
187
|
+
10246,
|
|
188
188
|
"Set \"{0}: {1}\" to \"{2}\"",
|
|
189
189
|
displayName.category,
|
|
190
190
|
displayName.label,
|
|
@@ -195,7 +195,7 @@ let SimpleSettingRenderer = class SimpleSettingRenderer {
|
|
|
195
195
|
const displayName = settingKeyToDisplayFormat(setting.key);
|
|
196
196
|
if (this.isAlreadySet(setting, numberValue)) {
|
|
197
197
|
return localize(
|
|
198
|
-
|
|
198
|
+
10247,
|
|
199
199
|
"\"{0}: {1}\" is already set to {2}",
|
|
200
200
|
displayName.category,
|
|
201
201
|
displayName.label,
|
|
@@ -203,7 +203,7 @@ let SimpleSettingRenderer = class SimpleSettingRenderer {
|
|
|
203
203
|
);
|
|
204
204
|
}
|
|
205
205
|
return localize(
|
|
206
|
-
|
|
206
|
+
10248,
|
|
207
207
|
"Set \"{0}: {1}\" to {2}",
|
|
208
208
|
displayName.category,
|
|
209
209
|
displayName.label,
|
|
@@ -212,7 +212,7 @@ let SimpleSettingRenderer = class SimpleSettingRenderer {
|
|
|
212
212
|
}
|
|
213
213
|
renderSetting(setting, newValue) {
|
|
214
214
|
const href = this.settingToUriString(setting.key, newValue);
|
|
215
|
-
const title = ( localize(
|
|
215
|
+
const title = ( localize(10249, "View or change setting"));
|
|
216
216
|
return `<code tabindex="0"><a href="${href}" class="codesetting" title="${title}" aria-role="button"><svg width="14" height="14" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M9.1 4.4L8.6 2H7.4l-.5 2.4-.7.3-2-1.3-.9.8 1.3 2-.2.7-2.4.5v1.2l2.4.5.3.8-1.3 2 .8.8 2-1.3.8.3.4 2.3h1.2l.5-2.4.8-.3 2 1.3.8-.8-1.3-2 .3-.8 2.3-.4V7.4l-2.4-.5-.3-.8 1.3-2-.8-.8-2 1.3-.7-.2zM9.4 1l.5 2.4L12 2.1l2 2-1.4 2.1 2.4.4v2.8l-2.4.5L14 12l-2 2-2.1-1.4-.5 2.4H6.6l-.5-2.4L4 13.9l-2-2 1.4-2.1L1 9.4V6.6l2.4-.5L2.1 4l2-2 2.1 1.4.4-2.4h2.8zm.6 7c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zM8 9c.6 0 1-.4 1-1s-.4-1-1-1-1 .4-1 1 .4 1 1 1z"/></svg>
|
|
217
217
|
<span class="separator"></span>
|
|
218
218
|
<span class="setting-name">${setting.key}</span>
|
|
@@ -290,8 +290,8 @@ let SimpleSettingRenderer = class SimpleSettingRenderer {
|
|
|
290
290
|
class: undefined,
|
|
291
291
|
enabled: true,
|
|
292
292
|
id: "copySettingId",
|
|
293
|
-
tooltip: ( localize(
|
|
294
|
-
label: ( localize(
|
|
293
|
+
tooltip: ( localize(10250, "Copy Setting ID")),
|
|
294
|
+
label: ( localize(10250, "Copy Setting ID")),
|
|
295
295
|
run: () => {
|
|
296
296
|
this._clipboardService.writeText(settingId);
|
|
297
297
|
}
|
|
@@ -112,7 +112,7 @@ let ReleaseNotesManager = class ReleaseNotesManager extends Disposable {
|
|
|
112
112
|
base
|
|
113
113
|
};
|
|
114
114
|
const html = await this.renderBody(this._lastMeta);
|
|
115
|
-
const title = ( localize(
|
|
115
|
+
const title = ( localize(14801, "Release Notes: {0}", version));
|
|
116
116
|
const activeEditorPane = this._editorService.activeEditorPane;
|
|
117
117
|
if (this._currentReleaseNotes) {
|
|
118
118
|
this._currentReleaseNotes.setWebviewTitle(title);
|
|
@@ -172,7 +172,7 @@ let ReleaseNotesManager = class ReleaseNotesManager extends Disposable {
|
|
|
172
172
|
const versionLabel = match[1].replace(/\./g, "_");
|
|
173
173
|
const baseUrl = "https://code.visualstudio.com/raw";
|
|
174
174
|
const url = `${baseUrl}/v${versionLabel}.md`;
|
|
175
|
-
const unassigned = ( localize(
|
|
175
|
+
const unassigned = ( localize(14802, "unassigned"));
|
|
176
176
|
const escapeMdHtml = text => {
|
|
177
177
|
return escape(text).replace(/\\/g, "\\\\");
|
|
178
178
|
};
|
|
@@ -630,7 +630,7 @@ let ReleaseNotesManager = class ReleaseNotesManager extends Disposable {
|
|
|
630
630
|
|
|
631
631
|
const label = document.createElement('label');
|
|
632
632
|
label.htmlFor = 'showReleaseNotes';
|
|
633
|
-
label.textContent = '${( localize(
|
|
633
|
+
label.textContent = '${( localize(14803, "Show release notes after an update"))}';
|
|
634
634
|
container.appendChild(label);
|
|
635
635
|
|
|
636
636
|
const beforeElement = document.querySelector("body > h1")?.nextElementSibling;
|
|
@@ -726,17 +726,17 @@ let ReleaseNotesManager = class ReleaseNotesManager extends Disposable {
|
|
|
726
726
|
switch (state.type) {
|
|
727
727
|
case StateType.AvailableForDownload:
|
|
728
728
|
return {
|
|
729
|
-
label: ( localize(
|
|
729
|
+
label: ( localize(14804, "Download Update")),
|
|
730
730
|
commandId: "update.downloadNow"
|
|
731
731
|
};
|
|
732
732
|
case StateType.Downloaded:
|
|
733
733
|
return {
|
|
734
|
-
label: ( localize(
|
|
734
|
+
label: ( localize(14805, "Install Update")),
|
|
735
735
|
commandId: "update.install"
|
|
736
736
|
};
|
|
737
737
|
case StateType.Ready:
|
|
738
738
|
return {
|
|
739
|
-
label: ( localize(
|
|
739
|
+
label: ( localize(14806, "Restart to Update")),
|
|
740
740
|
commandId: "update.restart"
|
|
741
741
|
};
|
|
742
742
|
default:
|
|
@@ -37,8 +37,8 @@ class ShowReleaseNotesAction extends Action2 {
|
|
|
37
37
|
super({
|
|
38
38
|
id: ShowCurrentReleaseNotesActionId,
|
|
39
39
|
title: {
|
|
40
|
-
...( localize2(
|
|
41
|
-
mnemonicTitle: ( localize(
|
|
40
|
+
...( localize2(14807, "Show Release Notes")),
|
|
41
|
+
mnemonicTitle: ( localize(14808, "Show &&Release Notes"))
|
|
42
42
|
},
|
|
43
43
|
category: {
|
|
44
44
|
value: product.nameShort,
|
|
@@ -64,7 +64,7 @@ class ShowReleaseNotesAction extends Action2 {
|
|
|
64
64
|
await openerService.open(( URI.parse(productService.releaseNotesUrl)));
|
|
65
65
|
} else {
|
|
66
66
|
throw ( new Error(( localize(
|
|
67
|
-
|
|
67
|
+
14809,
|
|
68
68
|
"This version of {0} does not have release notes online",
|
|
69
69
|
productService.nameLong
|
|
70
70
|
))));
|
|
@@ -77,10 +77,10 @@ class ShowCurrentReleaseNotesFromCurrentFileAction extends Action2 {
|
|
|
77
77
|
super({
|
|
78
78
|
id: ShowCurrentReleaseNotesFromCurrentFileActionId,
|
|
79
79
|
title: {
|
|
80
|
-
...( localize2(
|
|
81
|
-
mnemonicTitle: ( localize(
|
|
80
|
+
...( localize2(14810, "Open Current File as Release Notes")),
|
|
81
|
+
mnemonicTitle: ( localize(14808, "Show &&Release Notes"))
|
|
82
82
|
},
|
|
83
|
-
category: ( localize2(
|
|
83
|
+
category: ( localize2(14811, "Developer")),
|
|
84
84
|
f1: true
|
|
85
85
|
});
|
|
86
86
|
}
|
|
@@ -90,7 +90,7 @@ class ShowCurrentReleaseNotesFromCurrentFileAction extends Action2 {
|
|
|
90
90
|
try {
|
|
91
91
|
await showReleaseNotesInEditor(instantiationService, productService.version, true);
|
|
92
92
|
} catch (err) {
|
|
93
|
-
throw ( new Error(( localize(
|
|
93
|
+
throw ( new Error(( localize(14812, "Cannot open the current file as Release Notes"))));
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
}
|
|
@@ -102,7 +102,7 @@ class CheckForUpdateAction extends Action2 {
|
|
|
102
102
|
constructor() {
|
|
103
103
|
super({
|
|
104
104
|
id: "update.checkForUpdate",
|
|
105
|
-
title: ( localize2(
|
|
105
|
+
title: ( localize2(14813, "Check for Updates...")),
|
|
106
106
|
category: {
|
|
107
107
|
value: product.nameShort,
|
|
108
108
|
original: product.nameShort
|
|
@@ -120,7 +120,7 @@ class DownloadUpdateAction extends Action2 {
|
|
|
120
120
|
constructor() {
|
|
121
121
|
super({
|
|
122
122
|
id: "update.downloadUpdate",
|
|
123
|
-
title: ( localize2(
|
|
123
|
+
title: ( localize2(14814, "Download Update")),
|
|
124
124
|
category: {
|
|
125
125
|
value: product.nameShort,
|
|
126
126
|
original: product.nameShort
|
|
@@ -137,7 +137,7 @@ class InstallUpdateAction extends Action2 {
|
|
|
137
137
|
constructor() {
|
|
138
138
|
super({
|
|
139
139
|
id: "update.installUpdate",
|
|
140
|
-
title: ( localize2(
|
|
140
|
+
title: ( localize2(14815, "Install Update")),
|
|
141
141
|
category: {
|
|
142
142
|
value: product.nameShort,
|
|
143
143
|
original: product.nameShort
|
|
@@ -154,7 +154,7 @@ class RestartToUpdateAction extends Action2 {
|
|
|
154
154
|
constructor() {
|
|
155
155
|
super({
|
|
156
156
|
id: "update.restartToUpdate",
|
|
157
|
-
title: ( localize2(
|
|
157
|
+
title: ( localize2(14816, "Restart to Update")),
|
|
158
158
|
category: {
|
|
159
159
|
value: product.nameShort,
|
|
160
160
|
original: product.nameShort
|
|
@@ -177,7 +177,7 @@ class DownloadAction extends Action2 {
|
|
|
177
177
|
constructor() {
|
|
178
178
|
super({
|
|
179
179
|
id: DownloadAction.ID,
|
|
180
|
-
title: ( localize2(
|
|
180
|
+
title: ( localize2(14817, "Download {0}", product.nameLong)),
|
|
181
181
|
precondition: IsWebContext,
|
|
182
182
|
f1: true,
|
|
183
183
|
menu: [{
|
|
@@ -206,7 +206,7 @@ if (isWindows) {
|
|
|
206
206
|
constructor() {
|
|
207
207
|
super({
|
|
208
208
|
id: "_update.applyupdate",
|
|
209
|
-
title: ( localize2(
|
|
209
|
+
title: ( localize2(14818, "Apply Update...")),
|
|
210
210
|
category: Categories.Developer,
|
|
211
211
|
f1: true,
|
|
212
212
|
precondition: ( CONTEXT_UPDATE_STATE.isEqualTo(StateType.Idle))
|
|
@@ -216,13 +216,13 @@ if (isWindows) {
|
|
|
216
216
|
const updateService = accessor.get(IUpdateService);
|
|
217
217
|
const fileDialogService = accessor.get(IFileDialogService);
|
|
218
218
|
const updatePath = await fileDialogService.showOpenDialog({
|
|
219
|
-
title: ( localize(
|
|
219
|
+
title: ( localize(14819, "Apply Update")),
|
|
220
220
|
filters: [{
|
|
221
221
|
name: "Setup",
|
|
222
222
|
extensions: ["exe"]
|
|
223
223
|
}],
|
|
224
224
|
canSelectFiles: true,
|
|
225
|
-
openLabel: mnemonicButtonLabel(( localize(
|
|
225
|
+
openLabel: mnemonicButtonLabel(( localize(14820, "&&Update")))
|
|
226
226
|
});
|
|
227
227
|
if (!updatePath || !updatePath[0]) {
|
|
228
228
|
return;
|
|
@@ -57,7 +57,7 @@ async function openLatestReleaseNotesInBrowser(accessor) {
|
|
|
57
57
|
await openerService.open(uri);
|
|
58
58
|
} else {
|
|
59
59
|
throw ( new Error(( localize(
|
|
60
|
-
|
|
60
|
+
14821,
|
|
61
61
|
"This version of {0} does not have release notes online",
|
|
62
62
|
productService.nameLong
|
|
63
63
|
))));
|
|
@@ -80,7 +80,7 @@ function appendUpdateMenuItems(menuId, group) {
|
|
|
80
80
|
group,
|
|
81
81
|
command: {
|
|
82
82
|
id: "update.check",
|
|
83
|
-
title: ( localize(
|
|
83
|
+
title: ( localize(14822, "Check for Updates..."))
|
|
84
84
|
},
|
|
85
85
|
when: ( CONTEXT_UPDATE_STATE.isEqualTo(StateType.Idle))
|
|
86
86
|
});
|
|
@@ -88,7 +88,7 @@ function appendUpdateMenuItems(menuId, group) {
|
|
|
88
88
|
group,
|
|
89
89
|
command: {
|
|
90
90
|
id: "update.checking",
|
|
91
|
-
title: ( localize(
|
|
91
|
+
title: ( localize(14823, "Checking for Updates...")),
|
|
92
92
|
precondition: ( ContextKeyExpr.false())
|
|
93
93
|
},
|
|
94
94
|
when: ( CONTEXT_UPDATE_STATE.isEqualTo(StateType.CheckingForUpdates))
|
|
@@ -97,7 +97,7 @@ function appendUpdateMenuItems(menuId, group) {
|
|
|
97
97
|
group,
|
|
98
98
|
command: {
|
|
99
99
|
id: "update.downloadNow",
|
|
100
|
-
title: ( localize(
|
|
100
|
+
title: ( localize(14824, "Download Update (1)"))
|
|
101
101
|
},
|
|
102
102
|
when: ( CONTEXT_UPDATE_STATE.isEqualTo(StateType.AvailableForDownload))
|
|
103
103
|
});
|
|
@@ -105,7 +105,7 @@ function appendUpdateMenuItems(menuId, group) {
|
|
|
105
105
|
group,
|
|
106
106
|
command: {
|
|
107
107
|
id: "update.downloading",
|
|
108
|
-
title: ( localize(
|
|
108
|
+
title: ( localize(14825, "Downloading Update...")),
|
|
109
109
|
precondition: ( ContextKeyExpr.false())
|
|
110
110
|
},
|
|
111
111
|
when: ( CONTEXT_UPDATE_STATE.isEqualTo(StateType.Downloading))
|
|
@@ -114,7 +114,7 @@ function appendUpdateMenuItems(menuId, group) {
|
|
|
114
114
|
group,
|
|
115
115
|
command: {
|
|
116
116
|
id: "update.install",
|
|
117
|
-
title: ( localize(
|
|
117
|
+
title: ( localize(14826, "Install Update... (1)"))
|
|
118
118
|
},
|
|
119
119
|
when: ( CONTEXT_UPDATE_STATE.isEqualTo(StateType.Downloaded))
|
|
120
120
|
});
|
|
@@ -122,7 +122,7 @@ function appendUpdateMenuItems(menuId, group) {
|
|
|
122
122
|
group,
|
|
123
123
|
command: {
|
|
124
124
|
id: "update.updating",
|
|
125
|
-
title: ( localize(
|
|
125
|
+
title: ( localize(14827, "Installing Update...")),
|
|
126
126
|
precondition: ( ContextKeyExpr.false())
|
|
127
127
|
},
|
|
128
128
|
when: ( CONTEXT_UPDATE_STATE.isEqualTo(StateType.Updating))
|
|
@@ -132,7 +132,7 @@ function appendUpdateMenuItems(menuId, group) {
|
|
|
132
132
|
order: 2,
|
|
133
133
|
command: {
|
|
134
134
|
id: "update.restart",
|
|
135
|
-
title: ( localize(
|
|
135
|
+
title: ( localize(14828, "Restart to Update (1)"))
|
|
136
136
|
},
|
|
137
137
|
when: ( CONTEXT_UPDATE_STATE.isEqualTo(StateType.Ready))
|
|
138
138
|
});
|
|
@@ -176,12 +176,12 @@ let ProductContribution = class ProductContribution {
|
|
|
176
176
|
if (shouldShowReleaseNotes && !environmentService.skipReleaseNotes && releaseNotesUrl && lastVersion && currentVersion && isMajorMinorUpdate(lastVersion, currentVersion)) {
|
|
177
177
|
showReleaseNotesInEditor(instantiationService, productService.version, false).then(undefined, () => {
|
|
178
178
|
notificationService.prompt(Severity.Info, ( localize(
|
|
179
|
-
|
|
179
|
+
14829,
|
|
180
180
|
"Welcome to {0} v{1}! Would you like to read the Release Notes?",
|
|
181
181
|
productService.nameLong,
|
|
182
182
|
productService.version
|
|
183
183
|
)), [{
|
|
184
|
-
label: ( localize(
|
|
184
|
+
label: ( localize(14830, "Release Notes")),
|
|
185
185
|
run: () => {
|
|
186
186
|
const uri = ( URI.parse(releaseNotesUrl));
|
|
187
187
|
openerService.open(uri);
|
|
@@ -267,14 +267,14 @@ let UpdateContribution = class UpdateContribution extends Disposable {
|
|
|
267
267
|
this.notificationService.notify({
|
|
268
268
|
severity: Severity.Info,
|
|
269
269
|
message: ( localize(
|
|
270
|
-
|
|
270
|
+
14831,
|
|
271
271
|
"Updates are disabled because you are running the user-scope installation of {0} as Administrator.",
|
|
272
272
|
this.productService.nameLong
|
|
273
273
|
)),
|
|
274
274
|
actions: {
|
|
275
275
|
primary: [toAction({
|
|
276
276
|
id: "",
|
|
277
|
-
label: ( localize(
|
|
277
|
+
label: ( localize(14832, "Learn More")),
|
|
278
278
|
run: () => this.openerService.open("https://aka.ms/vscode-windows-setup")
|
|
279
279
|
})]
|
|
280
280
|
},
|
|
@@ -317,13 +317,13 @@ let UpdateContribution = class UpdateContribution extends Disposable {
|
|
|
317
317
|
let badge = undefined;
|
|
318
318
|
if (!this.titleBarEnabled) {
|
|
319
319
|
if (state.type === StateType.AvailableForDownload || state.type === StateType.Downloaded || state.type === StateType.Ready) {
|
|
320
|
-
badge = ( new NumberBadge(1, () => ( localize(
|
|
320
|
+
badge = ( new NumberBadge(1, () => ( localize(14833, "New {0} update available.", this.productService.nameShort))));
|
|
321
321
|
} else if (state.type === StateType.CheckingForUpdates) {
|
|
322
|
-
badge = ( new ProgressBadge(() => ( localize(
|
|
322
|
+
badge = ( new ProgressBadge(() => ( localize(14834, "Checking for {0} updates...", this.productService.nameShort))));
|
|
323
323
|
} else if (state.type === StateType.Downloading || state.type === StateType.Overwriting) {
|
|
324
|
-
badge = ( new ProgressBadge(() => ( localize(
|
|
324
|
+
badge = ( new ProgressBadge(() => ( localize(14835, "Downloading {0} update...", this.productService.nameShort))));
|
|
325
325
|
} else if (state.type === StateType.Updating) {
|
|
326
|
-
badge = ( new ProgressBadge(() => ( localize(
|
|
326
|
+
badge = ( new ProgressBadge(() => ( localize(14836, "Updating {0}...", this.productService.nameShort))));
|
|
327
327
|
}
|
|
328
328
|
}
|
|
329
329
|
this.badgeDisposable.clear();
|
|
@@ -343,7 +343,7 @@ let UpdateContribution = class UpdateContribution extends Disposable {
|
|
|
343
343
|
this.notificationService.notify({
|
|
344
344
|
severity: Severity.Error,
|
|
345
345
|
message: processedError,
|
|
346
|
-
source: ( localize(
|
|
346
|
+
source: ( localize(14837, "Update Service"))
|
|
347
347
|
});
|
|
348
348
|
}
|
|
349
349
|
}
|
|
@@ -351,7 +351,7 @@ let UpdateContribution = class UpdateContribution extends Disposable {
|
|
|
351
351
|
if (this.titleBarEnabled) {
|
|
352
352
|
return;
|
|
353
353
|
}
|
|
354
|
-
this.dialogService.info(( localize(
|
|
354
|
+
this.dialogService.info(( localize(14838, "There are currently no updates available.")));
|
|
355
355
|
}
|
|
356
356
|
onUpdateAvailable(update) {
|
|
357
357
|
if (this.titleBarEnabled) {
|
|
@@ -364,14 +364,14 @@ let UpdateContribution = class UpdateContribution extends Disposable {
|
|
|
364
364
|
if (!productVersion) {
|
|
365
365
|
return;
|
|
366
366
|
}
|
|
367
|
-
this.notificationService.prompt(Severity.Info, ( localize(
|
|
368
|
-
label: ( localize(
|
|
367
|
+
this.notificationService.prompt(Severity.Info, ( localize(14839, "There is an available update.")), [{
|
|
368
|
+
label: ( localize(14840, "Download Update")),
|
|
369
369
|
run: () => this.updateService.downloadUpdate(true)
|
|
370
370
|
}, {
|
|
371
|
-
label: ( localize(
|
|
371
|
+
label: ( localize(14841, "Later")),
|
|
372
372
|
run: () => {}
|
|
373
373
|
}, {
|
|
374
|
-
label: ( localize(
|
|
374
|
+
label: ( localize(14830, "Release Notes")),
|
|
375
375
|
run: () => {
|
|
376
376
|
this.instantiationService.invokeFunction(accessor => showReleaseNotes(accessor, productVersion));
|
|
377
377
|
}
|
|
@@ -397,18 +397,18 @@ let UpdateContribution = class UpdateContribution extends Disposable {
|
|
|
397
397
|
return;
|
|
398
398
|
}
|
|
399
399
|
this.notificationService.prompt(Severity.Info, ( localize(
|
|
400
|
-
|
|
400
|
+
14842,
|
|
401
401
|
"There's an update available: {0} {1}",
|
|
402
402
|
this.productService.nameLong,
|
|
403
403
|
productVersion
|
|
404
404
|
)), [{
|
|
405
|
-
label: ( localize(
|
|
405
|
+
label: ( localize(14843, "Install Update")),
|
|
406
406
|
run: () => this.updateService.applyUpdate()
|
|
407
407
|
}, {
|
|
408
|
-
label: ( localize(
|
|
408
|
+
label: ( localize(14841, "Later")),
|
|
409
409
|
run: () => {}
|
|
410
410
|
}, {
|
|
411
|
-
label: ( localize(
|
|
411
|
+
label: ( localize(14830, "Release Notes")),
|
|
412
412
|
run: () => {
|
|
413
413
|
this.instantiationService.invokeFunction(accessor => showReleaseNotes(accessor, productVersion));
|
|
414
414
|
}
|
|
@@ -426,11 +426,11 @@ let UpdateContribution = class UpdateContribution extends Disposable {
|
|
|
426
426
|
const handle = this.overwriteNotificationHandle;
|
|
427
427
|
this.overwriteNotificationHandle = undefined;
|
|
428
428
|
handle.progress.done();
|
|
429
|
-
handle.updateMessage(( localize(
|
|
429
|
+
handle.updateMessage(( localize(14844, "The newer update is ready to install.")));
|
|
430
430
|
handle.updateActions({
|
|
431
431
|
primary: [toAction({
|
|
432
432
|
id: "update.restartToUpdate",
|
|
433
|
-
label: ( localize(
|
|
433
|
+
label: ( localize(14845, "Restart to Update")),
|
|
434
434
|
run: () => this.updateService.quitAndInstall()
|
|
435
435
|
})]
|
|
436
436
|
});
|
|
@@ -441,23 +441,23 @@ let UpdateContribution = class UpdateContribution extends Disposable {
|
|
|
441
441
|
}
|
|
442
442
|
if ((isWindows && this.productService.target !== "user") || this.shouldShowNotification()) {
|
|
443
443
|
const actions = [{
|
|
444
|
-
label: ( localize(
|
|
444
|
+
label: ( localize(14846, "Update Now")),
|
|
445
445
|
run: () => this.updateService.quitAndInstall()
|
|
446
446
|
}, {
|
|
447
|
-
label: ( localize(
|
|
447
|
+
label: ( localize(14841, "Later")),
|
|
448
448
|
run: () => {}
|
|
449
449
|
}];
|
|
450
450
|
const productVersion = state.update.productVersion;
|
|
451
451
|
if (productVersion) {
|
|
452
452
|
actions.push({
|
|
453
|
-
label: ( localize(
|
|
453
|
+
label: ( localize(14830, "Release Notes")),
|
|
454
454
|
run: () => {
|
|
455
455
|
this.instantiationService.invokeFunction(accessor => showReleaseNotes(accessor, productVersion));
|
|
456
456
|
}
|
|
457
457
|
});
|
|
458
458
|
}
|
|
459
459
|
this.notificationService.prompt(Severity.Info, ( localize(
|
|
460
|
-
|
|
460
|
+
14847,
|
|
461
461
|
"Restart {0} to apply the latest update.",
|
|
462
462
|
this.productService.nameLong
|
|
463
463
|
)), actions, {
|
|
@@ -478,10 +478,10 @@ let UpdateContribution = class UpdateContribution extends Disposable {
|
|
|
478
478
|
severity: Severity.Info,
|
|
479
479
|
sticky: true,
|
|
480
480
|
message: ( localize(
|
|
481
|
-
|
|
481
|
+
14848,
|
|
482
482
|
"We found a newer update available and have started to download it. We'll let you know as soon as it's ready to install."
|
|
483
483
|
)),
|
|
484
|
-
source: ( localize(
|
|
484
|
+
source: ( localize(14837, "Update Service"))
|
|
485
485
|
});
|
|
486
486
|
this.overwriteNotificationHandle.progress.infinite();
|
|
487
487
|
}
|
|
@@ -534,7 +534,7 @@ let UpdateContribution = class UpdateContribution extends Disposable {
|
|
|
534
534
|
order: 1,
|
|
535
535
|
command: {
|
|
536
536
|
id: "update.showUpdateReleaseNotes",
|
|
537
|
-
title: ( localize(
|
|
537
|
+
title: ( localize(14849, "Show Update Release Notes"))
|
|
538
538
|
},
|
|
539
539
|
when: ( ContextKeyExpr.and(( CONTEXT_UPDATE_STATE.isEqualTo(StateType.Ready)), MAJOR_MINOR_UPDATE_AVAILABLE))
|
|
540
540
|
});
|
|
@@ -560,7 +560,7 @@ let SwitchProductQualityContribution = class SwitchProductQualityContribution ex
|
|
|
560
560
|
constructor() {
|
|
561
561
|
super({
|
|
562
562
|
id: commandId,
|
|
563
|
-
title: isSwitchingToInsiders ? ( localize(
|
|
563
|
+
title: isSwitchingToInsiders ? ( localize(14850, "Switch to Insiders Version...")) : ( localize(14851, "Switch to Stable Version...")),
|
|
564
564
|
precondition: IsWebContext,
|
|
565
565
|
menu: {
|
|
566
566
|
id: MenuId.GlobalActivity,
|
|
@@ -598,15 +598,15 @@ let SwitchProductQualityContribution = class SwitchProductQualityContribution ex
|
|
|
598
598
|
}
|
|
599
599
|
const res = await dialogService.confirm({
|
|
600
600
|
type: "info",
|
|
601
|
-
message: ( localize(
|
|
601
|
+
message: ( localize(14852, "Changing the version requires a reload to take effect")),
|
|
602
602
|
detail: newQuality === "insider" ? ( localize(
|
|
603
|
-
|
|
603
|
+
14853,
|
|
604
604
|
"Press the reload button to switch to the Insiders version of VS Code."
|
|
605
605
|
)) : ( localize(
|
|
606
|
-
|
|
606
|
+
14854,
|
|
607
607
|
"Press the reload button to switch to the Stable version of VS Code."
|
|
608
608
|
)),
|
|
609
|
-
primaryButton: ( localize(
|
|
609
|
+
primaryButton: ( localize(14855, "&&Reload"))
|
|
610
610
|
});
|
|
611
611
|
if (res.confirmed) {
|
|
612
612
|
const promises = [];
|
|
@@ -636,18 +636,18 @@ let SwitchProductQualityContribution = class SwitchProductQualityContribution ex
|
|
|
636
636
|
} = await dialogService.prompt({
|
|
637
637
|
type: Severity.Info,
|
|
638
638
|
message: ( localize(
|
|
639
|
-
|
|
639
|
+
14856,
|
|
640
640
|
"Choose the settings sync service to use after changing the version"
|
|
641
641
|
)),
|
|
642
642
|
detail: ( localize(
|
|
643
|
-
|
|
643
|
+
14857,
|
|
644
644
|
"The Insiders version of VS Code will synchronize your settings, keybindings, extensions, snippets and UI State using separate insiders settings sync service by default."
|
|
645
645
|
)),
|
|
646
646
|
buttons: [{
|
|
647
|
-
label: ( localize(
|
|
647
|
+
label: ( localize(14858, "&&Insiders")),
|
|
648
648
|
run: () => "insiders"
|
|
649
649
|
}, {
|
|
650
|
-
label: ( localize(
|
|
650
|
+
label: ( localize(14859, "&&Stable (current)")),
|
|
651
651
|
run: () => "stable"
|
|
652
652
|
}],
|
|
653
653
|
cancelButton: true
|
|
@@ -63,25 +63,25 @@ let UpdateStatusBarContribution = class UpdateStatusBarContribution extends Disp
|
|
|
63
63
|
this.tooltip.renderState(state);
|
|
64
64
|
switch (state.type) {
|
|
65
65
|
case StateType.CheckingForUpdates:
|
|
66
|
-
this.updateEntry("$(loading~spin) " + ( localize(
|
|
66
|
+
this.updateEntry("$(loading~spin) " + ( localize(14860, "Checking for updates...")), ( localize(14861, "Checking for updates")), ShowTooltipCommand);
|
|
67
67
|
break;
|
|
68
68
|
case StateType.AvailableForDownload:
|
|
69
|
-
this.updateEntry("$(circle-filled) " + ( localize(
|
|
69
|
+
this.updateEntry("$(circle-filled) " + ( localize(14862, "Update available, click to download.")), ( localize(14863, "Update available, click to download.")), "update.downloadNow");
|
|
70
70
|
break;
|
|
71
71
|
case StateType.Downloading:
|
|
72
|
-
this.updateEntry(this.getDownloadingText(state), ( localize(
|
|
72
|
+
this.updateEntry(this.getDownloadingText(state), ( localize(14864, "Downloading update")), ShowTooltipCommand);
|
|
73
73
|
break;
|
|
74
74
|
case StateType.Downloaded:
|
|
75
|
-
this.updateEntry("$(circle-filled) " + ( localize(
|
|
75
|
+
this.updateEntry("$(circle-filled) " + ( localize(14865, "Update downloaded, click to install.")), ( localize(14866, "Update downloaded, click to install.")), "update.install");
|
|
76
76
|
break;
|
|
77
77
|
case StateType.Updating:
|
|
78
78
|
this.updateEntry(this.getUpdatingText(state), undefined, ShowTooltipCommand);
|
|
79
79
|
break;
|
|
80
80
|
case StateType.Ready:
|
|
81
|
-
this.updateEntry("$(circle-filled) " + ( localize(
|
|
81
|
+
this.updateEntry("$(circle-filled) " + ( localize(14867, "Update is ready, click to restart.")), ( localize(14868, "Update is ready, click to restart.")), "update.restart");
|
|
82
82
|
break;
|
|
83
83
|
case StateType.Overwriting:
|
|
84
|
-
this.updateEntry("$(loading~spin) " + ( localize(
|
|
84
|
+
this.updateEntry("$(loading~spin) " + ( localize(14869, "Downloading update...")), ( localize(14870, "Downloading a newer update")), ShowTooltipCommand);
|
|
85
85
|
break;
|
|
86
86
|
default:
|
|
87
87
|
this.accessor.clear();
|
|
@@ -92,7 +92,7 @@ let UpdateStatusBarContribution = class UpdateStatusBarContribution extends Disp
|
|
|
92
92
|
const entry = {
|
|
93
93
|
text,
|
|
94
94
|
ariaLabel: ariaLabel ?? text,
|
|
95
|
-
name: ( localize(
|
|
95
|
+
name: ( localize(14871, "Update Status")),
|
|
96
96
|
tooltip: this.tooltip?.domNode,
|
|
97
97
|
command
|
|
98
98
|
};
|
|
@@ -111,14 +111,14 @@ let UpdateStatusBarContribution = class UpdateStatusBarContribution extends Disp
|
|
|
111
111
|
if (downloadedBytes !== undefined && totalBytes !== undefined && totalBytes > 0) {
|
|
112
112
|
const percent = computeProgressPercent(downloadedBytes, totalBytes) ?? 0;
|
|
113
113
|
return "$(loading~spin) " + ( localize(
|
|
114
|
-
|
|
114
|
+
14872,
|
|
115
115
|
"Downloading update: {0} / {1} • {2}%",
|
|
116
116
|
formatBytes(downloadedBytes),
|
|
117
117
|
formatBytes(totalBytes),
|
|
118
118
|
percent
|
|
119
119
|
));
|
|
120
120
|
} else {
|
|
121
|
-
return "$(loading~spin) " + ( localize(
|
|
121
|
+
return "$(loading~spin) " + ( localize(14873, "Downloading update..."));
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
getUpdatingText(
|
|
@@ -129,9 +129,9 @@ let UpdateStatusBarContribution = class UpdateStatusBarContribution extends Disp
|
|
|
129
129
|
) {
|
|
130
130
|
const percentage = computeProgressPercent(currentProgress, maxProgress);
|
|
131
131
|
if (percentage !== undefined) {
|
|
132
|
-
return "$(loading~spin) " + ( localize(
|
|
132
|
+
return "$(loading~spin) " + ( localize(14874, "Installing update: {0}%", percentage));
|
|
133
133
|
} else {
|
|
134
|
-
return "$(loading~spin) " + ( localize(
|
|
134
|
+
return "$(loading~spin) " + ( localize(14875, "Installing update..."));
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
};
|
|
@@ -19,22 +19,19 @@ import { UpdateTooltip } from "./updateTooltip.js";
|
|
|
19
19
|
* Displays update status and actions in the title bar.
|
|
20
20
|
*/
|
|
21
21
|
export declare class UpdateTitleBarContribution extends Disposable implements IWorkbenchContribution {
|
|
22
|
-
private readonly configurationService;
|
|
23
22
|
private readonly hostService;
|
|
24
23
|
private readonly productService;
|
|
25
24
|
private readonly storageService;
|
|
26
|
-
private readonly telemetryService;
|
|
27
25
|
private readonly context;
|
|
28
26
|
private readonly tooltip;
|
|
29
27
|
private mode;
|
|
30
28
|
private state;
|
|
31
29
|
private entry;
|
|
32
30
|
private tooltipVisible;
|
|
33
|
-
constructor(actionViewItemService: IActionViewItemService, configurationService: IConfigurationService, contextKeyService: IContextKeyService, hostService: IHostService, instantiationService: IInstantiationService, productService: IProductService, storageService: IStorageService,
|
|
31
|
+
constructor(actionViewItemService: IActionViewItemService, configurationService: IConfigurationService, contextKeyService: IContextKeyService, hostService: IHostService, instantiationService: IInstantiationService, productService: IProductService, storageService: IStorageService, updateService: IUpdateService);
|
|
34
32
|
private updateContext;
|
|
35
33
|
private onStateChange;
|
|
36
34
|
private detectVersionChange;
|
|
37
|
-
private trackVersionChange;
|
|
38
35
|
}
|
|
39
36
|
/**
|
|
40
37
|
* Custom action view item for the update indicator in the title bar.
|
|
@@ -41,7 +41,7 @@ registerAction2(class UpdateIndicatorTitleBarAction extends Action2 {
|
|
|
41
41
|
constructor() {
|
|
42
42
|
super({
|
|
43
43
|
id: UPDATE_TITLE_BAR_ACTION_ID,
|
|
44
|
-
title: ( localize(
|
|
44
|
+
title: ( localize(14876, "Update")),
|
|
45
45
|
f1: false,
|
|
46
46
|
menu: [{
|
|
47
47
|
id: MenuId.TitleBarAdjacentCenter,
|
|
@@ -61,15 +61,12 @@ let UpdateTitleBarContribution = class UpdateTitleBarContribution extends Dispos
|
|
|
61
61
|
instantiationService,
|
|
62
62
|
productService,
|
|
63
63
|
storageService,
|
|
64
|
-
telemetryService,
|
|
65
64
|
updateService
|
|
66
65
|
) {
|
|
67
66
|
super();
|
|
68
|
-
this.configurationService = configurationService;
|
|
69
67
|
this.hostService = hostService;
|
|
70
68
|
this.productService = productService;
|
|
71
69
|
this.storageService = storageService;
|
|
72
|
-
this.telemetryService = telemetryService;
|
|
73
70
|
this.mode = "none";
|
|
74
71
|
this.tooltipVisible = false;
|
|
75
72
|
if (isWeb) {
|
|
@@ -123,7 +120,11 @@ let UpdateTitleBarContribution = class UpdateTitleBarContribution extends Dispos
|
|
|
123
120
|
}
|
|
124
121
|
async onStateChange(startup = false) {
|
|
125
122
|
this.updateContext();
|
|
126
|
-
if (this.mode === "none"
|
|
123
|
+
if (this.mode === "none") {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (this.tooltipVisible || !(await this.hostService.hadLastFocus())) {
|
|
127
|
+
this.tooltip.renderState(this.state);
|
|
127
128
|
return;
|
|
128
129
|
}
|
|
129
130
|
let showTooltip = startup && this.detectVersionChange();
|
|
@@ -169,25 +170,12 @@ let UpdateTitleBarContribution = class UpdateTitleBarContribution extends Dispos
|
|
|
169
170
|
StorageTarget.MACHINE
|
|
170
171
|
);
|
|
171
172
|
if (from) {
|
|
172
|
-
this.trackVersionChange(from, to);
|
|
173
173
|
return isMajorMinorVersionChange(from.version, to.version);
|
|
174
174
|
}
|
|
175
175
|
return false;
|
|
176
176
|
}
|
|
177
|
-
trackVersionChange(from, to) {
|
|
178
|
-
this.telemetryService.publicLog2("update:versionChanged", {
|
|
179
|
-
fromVersion: from.version,
|
|
180
|
-
fromCommit: from.commit,
|
|
181
|
-
fromVersionTime: from.timestamp,
|
|
182
|
-
toVersion: to.version,
|
|
183
|
-
toCommit: to.commit,
|
|
184
|
-
timeToUpdateMs: from.timestamp !== undefined ? to.timestamp - from.timestamp : undefined,
|
|
185
|
-
updateMode: this.configurationService.getValue("update.mode"),
|
|
186
|
-
titleBarMode: this.mode
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
177
|
};
|
|
190
|
-
UpdateTitleBarContribution = ( __decorate([( __param(0, IActionViewItemService)), ( __param(1, IConfigurationService)), ( __param(2, IContextKeyService)), ( __param(3, IHostService)), ( __param(4, IInstantiationService)), ( __param(5, IProductService)), ( __param(6, IStorageService)), ( __param(7,
|
|
178
|
+
UpdateTitleBarContribution = ( __decorate([( __param(0, IActionViewItemService)), ( __param(1, IConfigurationService)), ( __param(2, IContextKeyService)), ( __param(3, IHostService)), ( __param(4, IInstantiationService)), ( __param(5, IProductService)), ( __param(6, IStorageService)), ( __param(7, IUpdateService))], UpdateTitleBarContribution));
|
|
191
179
|
let UpdateTitleBarEntry = class UpdateTitleBarEntry extends BaseActionViewItem {
|
|
192
180
|
constructor(
|
|
193
181
|
action,
|
|
@@ -277,7 +265,7 @@ let UpdateTitleBarEntry = class UpdateTitleBarEntry extends BaseActionViewItem {
|
|
|
277
265
|
this.content.classList.remove("prominent", "progress-indefinite", "progress-percent", "update-disabled");
|
|
278
266
|
this.content.style.removeProperty("--update-progress");
|
|
279
267
|
const label = append(this.content, $(".indicator-label"));
|
|
280
|
-
label.textContent = ( localize(
|
|
268
|
+
label.textContent = ( localize(14877, "Update"));
|
|
281
269
|
switch (state.type) {
|
|
282
270
|
case StateType.Disabled:
|
|
283
271
|
this.content.classList.add("update-disabled");
|
|
@@ -60,7 +60,7 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
60
60
|
})));
|
|
61
61
|
actionBar.push(toAction({
|
|
62
62
|
id: "update.openSettings",
|
|
63
|
-
label: ( localize(
|
|
63
|
+
label: ( localize(14878, "Update Settings")),
|
|
64
64
|
class: ThemeIcon.asClassName(Codicon.gear),
|
|
65
65
|
run: () => this.runCommandAndClose("workbench.action.openSettings", "@id:update*")
|
|
66
66
|
}), {
|
|
@@ -82,7 +82,7 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
82
82
|
this.latestVersionCopyValue = latestVersionRow.copyValue;
|
|
83
83
|
this.releaseDateNode = append(details, $(".product-release-date"));
|
|
84
84
|
this.releaseNotesLink = append(details, $("a.release-notes-link"));
|
|
85
|
-
this.releaseNotesLink.textContent = ( localize(
|
|
85
|
+
this.releaseNotesLink.textContent = ( localize(14879, "Release Notes"));
|
|
86
86
|
this.releaseNotesLink.href = "#";
|
|
87
87
|
this._register(addDisposableListener(this.releaseNotesLink, "click", e => {
|
|
88
88
|
e.preventDefault();
|
|
@@ -107,7 +107,7 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
107
107
|
const productVersion = this.productService.version;
|
|
108
108
|
if (productVersion) {
|
|
109
109
|
const currentCommitId = this.productService.commit?.substring(0, 7);
|
|
110
|
-
this.currentVersionNode.textContent = currentCommitId ? ( localize(
|
|
110
|
+
this.currentVersionNode.textContent = currentCommitId ? ( localize(14880, "Current Version: {0} ({1})", productVersion, currentCommitId)) : ( localize(14881, "Current Version: {0}", productVersion));
|
|
111
111
|
this.currentVersionCopyValue.value = currentCommitId ? `${productVersion} (${this.productService.commit})` : productVersion;
|
|
112
112
|
this.currentVersionNode.parentElement.style.display = "";
|
|
113
113
|
} else {
|
|
@@ -159,46 +159,46 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
renderUninitialized() {
|
|
162
|
-
this.renderTitleAndInfo(( localize(
|
|
163
|
-
this.renderMessage(( localize(
|
|
162
|
+
this.renderTitleAndInfo(( localize(14882, "Initializing")));
|
|
163
|
+
this.renderMessage(( localize(14883, "Initializing update service...")));
|
|
164
164
|
}
|
|
165
165
|
renderDisabled(
|
|
166
166
|
{
|
|
167
167
|
reason
|
|
168
168
|
}
|
|
169
169
|
) {
|
|
170
|
-
this.renderTitleAndInfo(( localize(
|
|
170
|
+
this.renderTitleAndInfo(( localize(14884, "Updates Disabled")));
|
|
171
171
|
switch (reason) {
|
|
172
172
|
case DisablementReason.NotBuilt:
|
|
173
|
-
this.renderMessage(( localize(
|
|
173
|
+
this.renderMessage(( localize(14885, "Updates are not available for this build.")), Codicon.info);
|
|
174
174
|
break;
|
|
175
175
|
case DisablementReason.DisabledByEnvironment:
|
|
176
|
-
this.renderMessage(( localize(
|
|
176
|
+
this.renderMessage(( localize(14886, "Updates are disabled by the --disable-updates command line flag.")), Codicon.warning);
|
|
177
177
|
break;
|
|
178
178
|
case DisablementReason.ManuallyDisabled:
|
|
179
179
|
this.renderMessage(( localize(
|
|
180
|
-
|
|
180
|
+
14887,
|
|
181
181
|
"Updates are manually disabled. Change the \"update.mode\" setting to enable."
|
|
182
182
|
)), Codicon.warning);
|
|
183
183
|
break;
|
|
184
184
|
case DisablementReason.Policy:
|
|
185
|
-
this.renderMessage(( localize(
|
|
185
|
+
this.renderMessage(( localize(14888, "Updates are disabled by organization policy.")), Codicon.info);
|
|
186
186
|
break;
|
|
187
187
|
case DisablementReason.MissingConfiguration:
|
|
188
|
-
this.renderMessage(( localize(
|
|
188
|
+
this.renderMessage(( localize(14889, "Updates are disabled because no update URL is configured.")), Codicon.info);
|
|
189
189
|
break;
|
|
190
190
|
case DisablementReason.InvalidConfiguration:
|
|
191
|
-
this.renderMessage(( localize(
|
|
191
|
+
this.renderMessage(( localize(14890, "Updates are disabled because the update URL is invalid.")), Codicon.error);
|
|
192
192
|
break;
|
|
193
193
|
case DisablementReason.RunningAsAdmin:
|
|
194
194
|
this.renderMessage(( localize(
|
|
195
|
-
|
|
195
|
+
14891,
|
|
196
196
|
"Updates are not available when running a user install of {0} as administrator.",
|
|
197
197
|
this.productService.nameShort
|
|
198
198
|
)), Codicon.warning);
|
|
199
199
|
break;
|
|
200
200
|
default:
|
|
201
|
-
this.renderMessage(( localize(
|
|
201
|
+
this.renderMessage(( localize(14892, "Updates are disabled.")), Codicon.warning);
|
|
202
202
|
break;
|
|
203
203
|
}
|
|
204
204
|
}
|
|
@@ -209,57 +209,57 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
209
209
|
}
|
|
210
210
|
) {
|
|
211
211
|
if (error) {
|
|
212
|
-
this.renderTitleAndInfo(( localize(
|
|
212
|
+
this.renderTitleAndInfo(( localize(14893, "Update Error")));
|
|
213
213
|
this.renderMessage(error, Codicon.error);
|
|
214
214
|
return;
|
|
215
215
|
}
|
|
216
216
|
if (notAvailable) {
|
|
217
|
-
this.renderTitleAndInfo(( localize(
|
|
218
|
-
this.renderMessage(( localize(
|
|
217
|
+
this.renderTitleAndInfo(( localize(14894, "No Update Available")));
|
|
218
|
+
this.renderMessage(( localize(14895, "There are no updates currently available.")), Codicon.info);
|
|
219
219
|
return;
|
|
220
220
|
}
|
|
221
|
-
this.renderTitleAndInfo(( localize(
|
|
221
|
+
this.renderTitleAndInfo(( localize(14896, "Up to Date")));
|
|
222
222
|
switch (this.configurationService.getValue("update.mode")) {
|
|
223
223
|
case "none":
|
|
224
|
-
this.renderMessage(( localize(
|
|
224
|
+
this.renderMessage(( localize(14897, "Automatic updates are disabled.")), Codicon.warning);
|
|
225
225
|
break;
|
|
226
226
|
case "manual":
|
|
227
227
|
this.renderMessage(( localize(
|
|
228
|
-
|
|
228
|
+
14898,
|
|
229
229
|
"Automatic updates will be checked but not installed automatically."
|
|
230
230
|
)));
|
|
231
231
|
break;
|
|
232
232
|
case "start":
|
|
233
|
-
this.renderMessage(( localize(
|
|
233
|
+
this.renderMessage(( localize(14899, "Updates will be applied on restart.")));
|
|
234
234
|
break;
|
|
235
235
|
case "default":
|
|
236
236
|
if (this.meteredConnectionService.isConnectionMetered) {
|
|
237
237
|
this.renderMessage(( localize(
|
|
238
|
-
|
|
238
|
+
14900,
|
|
239
239
|
"Automatic updates are paused because the network connection is metered."
|
|
240
240
|
)), Codicon.radioTower);
|
|
241
241
|
} else {
|
|
242
|
-
this.renderMessage(( localize(
|
|
242
|
+
this.renderMessage(( localize(14901, "Automatic updates are enabled. Happy Coding!")), Codicon.smiley);
|
|
243
243
|
}
|
|
244
244
|
break;
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
247
|
renderCheckingForUpdates() {
|
|
248
|
-
this.renderTitleAndInfo(( localize(
|
|
249
|
-
this.renderMessage(( localize(
|
|
248
|
+
this.renderTitleAndInfo(( localize(14902, "Checking for Updates")));
|
|
249
|
+
this.renderMessage(( localize(14903, "Checking for updates, please wait...")));
|
|
250
250
|
}
|
|
251
251
|
renderAvailableForDownload(
|
|
252
252
|
{
|
|
253
253
|
update
|
|
254
254
|
}
|
|
255
255
|
) {
|
|
256
|
-
this.renderTitleAndInfo(( localize(
|
|
256
|
+
this.renderTitleAndInfo(( localize(14904, "Update Available")), update);
|
|
257
257
|
if (this.hostedByTitleBar) {
|
|
258
|
-
this.renderMessage(( localize(
|
|
258
|
+
this.renderMessage(( localize(14905, "Click the Update button to download.")));
|
|
259
259
|
}
|
|
260
260
|
}
|
|
261
261
|
renderDownloading(state) {
|
|
262
|
-
this.renderTitleAndInfo(( localize(
|
|
262
|
+
this.renderTitleAndInfo(( localize(14906, "Downloading Update")), state.update);
|
|
263
263
|
const {
|
|
264
264
|
downloadedBytes,
|
|
265
265
|
totalBytes
|
|
@@ -272,15 +272,15 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
272
272
|
this.progressContainer.style.display = "";
|
|
273
273
|
const speed = computeDownloadSpeed(state);
|
|
274
274
|
if (speed !== undefined && speed > 0) {
|
|
275
|
-
this.speedInfoNode.textContent = ( localize(
|
|
275
|
+
this.speedInfoNode.textContent = ( localize(14907, "{0}/s", formatBytes(speed)));
|
|
276
276
|
}
|
|
277
277
|
const timeRemaining = computeDownloadTimeRemaining(state);
|
|
278
278
|
if (timeRemaining !== undefined && timeRemaining > 0) {
|
|
279
|
-
this.timeRemainingNode.textContent = `~${formatTimeRemaining(timeRemaining)} ${( localize(
|
|
279
|
+
this.timeRemainingNode.textContent = `~${formatTimeRemaining(timeRemaining)} ${( localize(14908, "remaining"))}`;
|
|
280
280
|
}
|
|
281
281
|
this.downloadStatsContainer.style.display = "";
|
|
282
282
|
} else {
|
|
283
|
-
this.renderMessage(( localize(
|
|
283
|
+
this.renderMessage(( localize(14909, "Downloading update, please wait...")));
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
286
|
renderDownloaded(
|
|
@@ -288,9 +288,9 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
288
288
|
update
|
|
289
289
|
}
|
|
290
290
|
) {
|
|
291
|
-
this.renderTitleAndInfo(( localize(
|
|
291
|
+
this.renderTitleAndInfo(( localize(14910, "Update is Ready to Install")), update);
|
|
292
292
|
if (this.hostedByTitleBar) {
|
|
293
|
-
this.renderMessage(( localize(
|
|
293
|
+
this.renderMessage(( localize(14911, "Click the Update button to install.")));
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
renderUpdating(
|
|
@@ -300,7 +300,7 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
300
300
|
maxProgress
|
|
301
301
|
}
|
|
302
302
|
) {
|
|
303
|
-
this.renderTitleAndInfo(( localize(
|
|
303
|
+
this.renderTitleAndInfo(( localize(14912, "Installing Update")), update);
|
|
304
304
|
const percentage = computeProgressPercent(currentProgress, maxProgress);
|
|
305
305
|
if (percentage !== undefined) {
|
|
306
306
|
this.progressFill.style.width = `${percentage}%`;
|
|
@@ -308,7 +308,7 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
308
308
|
this.progressSizeNode.textContent = "";
|
|
309
309
|
this.progressContainer.style.display = "";
|
|
310
310
|
} else {
|
|
311
|
-
this.renderMessage(( localize(
|
|
311
|
+
this.renderMessage(( localize(14913, "Installing update, please wait...")));
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
314
|
renderReady(
|
|
@@ -316,9 +316,9 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
316
316
|
update
|
|
317
317
|
}
|
|
318
318
|
) {
|
|
319
|
-
this.renderTitleAndInfo(( localize(
|
|
319
|
+
this.renderTitleAndInfo(( localize(14914, "Update Installed")), update);
|
|
320
320
|
if (this.hostedByTitleBar) {
|
|
321
|
-
this.renderMessage(( localize(
|
|
321
|
+
this.renderMessage(( localize(14915, "Click the Update button to restart and apply.")));
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
324
|
renderOverwriting(
|
|
@@ -326,13 +326,13 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
326
326
|
update
|
|
327
327
|
}
|
|
328
328
|
) {
|
|
329
|
-
this.renderTitleAndInfo(( localize(
|
|
330
|
-
this.renderMessage(( localize(
|
|
329
|
+
this.renderTitleAndInfo(( localize(14916, "Downloading Newer Update")), update);
|
|
330
|
+
this.renderMessage(( localize(14917, "A newer update was released. Downloading, please wait...")));
|
|
331
331
|
}
|
|
332
332
|
async renderPostInstall() {
|
|
333
333
|
this.hideAll();
|
|
334
|
-
this.renderTitleAndInfo(( localize(
|
|
335
|
-
this.renderMessage(( localize(
|
|
334
|
+
this.renderTitleAndInfo(( localize(14918, "New Update Installed")));
|
|
335
|
+
this.renderMessage(( localize(14919, "See release notes for details on what's new in this release.")), Codicon.info);
|
|
336
336
|
let text = null;
|
|
337
337
|
try {
|
|
338
338
|
const url = getUpdateInfoUrl(this.productService.version);
|
|
@@ -345,7 +345,7 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
345
345
|
if (!text) {
|
|
346
346
|
return;
|
|
347
347
|
}
|
|
348
|
-
this.titleNode.textContent = ( localize(
|
|
348
|
+
this.titleNode.textContent = ( localize(14920, "New in {0}", this.productService.version));
|
|
349
349
|
this.productInfoNode.style.display = "none";
|
|
350
350
|
this.messageNode.style.display = "none";
|
|
351
351
|
const rendered = this.markdownRendererService.render(( new MarkdownString(text, {
|
|
@@ -368,7 +368,7 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
368
368
|
const version = update?.productVersion;
|
|
369
369
|
if (version) {
|
|
370
370
|
const updateCommitId = update.version?.substring(0, 7);
|
|
371
|
-
this.latestVersionNode.textContent = updateCommitId ? ( localize(
|
|
371
|
+
this.latestVersionNode.textContent = updateCommitId ? ( localize(14921, "Latest Version: {0} ({1})", version, updateCommitId)) : ( localize(14922, "Latest Version: {0}", version));
|
|
372
372
|
this.latestVersionCopyValue.value = updateCommitId ? `${version} (${update.version})` : version;
|
|
373
373
|
this.latestVersionNode.parentElement.style.display = "";
|
|
374
374
|
} else {
|
|
@@ -376,7 +376,7 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
376
376
|
}
|
|
377
377
|
const releaseDate = update?.timestamp ?? tryParseDate(this.productService.date);
|
|
378
378
|
if (typeof releaseDate === "number" && releaseDate > 0) {
|
|
379
|
-
this.releaseDateNode.textContent = ( localize(
|
|
379
|
+
this.releaseDateNode.textContent = ( localize(14923, "Released {0}", formatDate(releaseDate)));
|
|
380
380
|
this.releaseDateNode.style.display = "";
|
|
381
381
|
} else {
|
|
382
382
|
this.releaseDateNode.style.display = "none";
|
|
@@ -402,7 +402,7 @@ let UpdateTooltip = class UpdateTooltip extends Disposable {
|
|
|
402
402
|
const copyButton = append(row, $("a.copy-version-button"));
|
|
403
403
|
copyButton.setAttribute("role", "button");
|
|
404
404
|
copyButton.setAttribute("tabindex", "0");
|
|
405
|
-
const title = ( localize(
|
|
405
|
+
const title = ( localize(14924, "Copy"));
|
|
406
406
|
copyButton.title = title;
|
|
407
407
|
copyButton.setAttribute("aria-label", title);
|
|
408
408
|
const copyIcon = append(copyButton, $(".copy-icon"));
|
|
@@ -54,31 +54,31 @@ function formatTimeRemaining(seconds) {
|
|
|
54
54
|
if (hours >= 1) {
|
|
55
55
|
const formattedHours = formatDecimal(hours);
|
|
56
56
|
if (formattedHours === "1") {
|
|
57
|
-
return localize(
|
|
57
|
+
return localize(14925, "{0} hour", formattedHours);
|
|
58
58
|
} else {
|
|
59
|
-
return localize(
|
|
59
|
+
return localize(14926, "{0} hours", formattedHours);
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
const minutes = Math.floor(seconds / 60);
|
|
63
63
|
if (minutes >= 1) {
|
|
64
|
-
return localize(
|
|
64
|
+
return localize(14927, "{0} min", minutes);
|
|
65
65
|
}
|
|
66
|
-
return localize(
|
|
66
|
+
return localize(14928, "{0}s", seconds);
|
|
67
67
|
}
|
|
68
68
|
function formatBytes(bytes) {
|
|
69
69
|
if (bytes < 1024) {
|
|
70
|
-
return localize(
|
|
70
|
+
return localize(14929, "{0} B", bytes);
|
|
71
71
|
}
|
|
72
72
|
const kb = bytes / 1024;
|
|
73
73
|
if (kb < 1024) {
|
|
74
|
-
return localize(
|
|
74
|
+
return localize(14930, "{0} KB", formatDecimal(kb));
|
|
75
75
|
}
|
|
76
76
|
const mb = kb / 1024;
|
|
77
77
|
if (mb < 1024) {
|
|
78
|
-
return localize(
|
|
78
|
+
return localize(14931, "{0} MB", formatDecimal(mb));
|
|
79
79
|
}
|
|
80
80
|
const gb = mb / 1024;
|
|
81
|
-
return localize(
|
|
81
|
+
return localize(14932, "{0} GB", formatDecimal(gb));
|
|
82
82
|
}
|
|
83
83
|
function tryParseDate(date) {
|
|
84
84
|
if (date === undefined) {
|