@codingame/monaco-vscode-workspace-trust-service-override 28.4.0 → 29.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/workspace/browser/media/workspaceTrustEditor.css +77 -32
- package/vscode/src/vs/workbench/contrib/workspace/browser/workspace.contribution.js +62 -63
- package/vscode/src/vs/workbench/contrib/workspace/browser/workspaceTrustEditor.js +60 -60
- package/vscode/src/vs/workbench/services/workspaces/browser/workspaceTrustEditorInput.js +3 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-workspace-trust-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "29.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - workspace-trust 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": "29.0.0"
|
|
19
19
|
},
|
|
20
20
|
"main": "index.js",
|
|
21
21
|
"module": "index.js",
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
|
|
6
6
|
.workspace-trust-editor {
|
|
7
|
-
max-width:
|
|
8
|
-
padding-top:
|
|
9
|
-
margin:
|
|
10
|
-
height: calc(100% -
|
|
7
|
+
max-width: 1600px;
|
|
8
|
+
padding-top: 12px;
|
|
9
|
+
margin: 0;
|
|
10
|
+
height: calc(100% - 12px);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
.workspace-trust-editor:focus {
|
|
@@ -15,12 +15,16 @@
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
.workspace-trust-editor > .workspace-trust-header {
|
|
18
|
-
padding:
|
|
18
|
+
padding: 16px 24px;
|
|
19
19
|
display: flex;
|
|
20
20
|
flex-direction: column;
|
|
21
21
|
align-items: center;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
.workspace-trust-editor > .workspace-trust-header:focus:not(:focus-visible) {
|
|
25
|
+
outline: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
24
28
|
.workspace-trust-editor .workspace-trust-header .workspace-trust-title {
|
|
25
29
|
font-size: 24px;
|
|
26
30
|
font-weight: 600;
|
|
@@ -35,7 +39,7 @@
|
|
|
35
39
|
}
|
|
36
40
|
|
|
37
41
|
.workspace-trust-editor .workspace-trust-header .workspace-trust-title .workspace-trust-title-icon {
|
|
38
|
-
color: var(--workspace-trust-selected-color)
|
|
42
|
+
color: var(--workspace-trust-selected-color);
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
.workspace-trust-editor .workspace-trust-header .workspace-trust-description {
|
|
@@ -43,7 +47,8 @@
|
|
|
43
47
|
user-select: text;
|
|
44
48
|
max-width: 600px;
|
|
45
49
|
text-align: center;
|
|
46
|
-
padding:
|
|
50
|
+
padding: 8px 0;
|
|
51
|
+
line-height: 20px;
|
|
47
52
|
}
|
|
48
53
|
|
|
49
54
|
.workspace-trust-editor .workspace-trust-section-title {
|
|
@@ -64,59 +69,67 @@
|
|
|
64
69
|
|
|
65
70
|
/** Features List */
|
|
66
71
|
.workspace-trust-editor .workspace-trust-features {
|
|
67
|
-
padding:
|
|
72
|
+
padding: 24px;
|
|
68
73
|
cursor: default;
|
|
69
74
|
user-select: text;
|
|
70
75
|
display: flex;
|
|
71
76
|
flex-direction: row;
|
|
72
|
-
flex-
|
|
73
|
-
justify-content:
|
|
77
|
+
flex-wrap: wrap;
|
|
78
|
+
justify-content: center;
|
|
79
|
+
gap: 16px;
|
|
74
80
|
}
|
|
75
81
|
|
|
76
82
|
.workspace-trust-editor .workspace-trust-features .workspace-trust-limitations {
|
|
77
|
-
min-height: 315px;
|
|
78
83
|
border: 1px solid var(--workspace-trust-unselected-color);
|
|
79
|
-
|
|
84
|
+
border-radius: var(--vscode-cornerRadius-medium);
|
|
80
85
|
display: flex;
|
|
81
86
|
flex-direction: column;
|
|
82
|
-
padding:
|
|
87
|
+
padding: 8px 36px;
|
|
83
88
|
}
|
|
84
89
|
|
|
85
90
|
.workspace-trust-editor.trusted .workspace-trust-features .workspace-trust-limitations.trusted,
|
|
86
91
|
.workspace-trust-editor.untrusted .workspace-trust-features .workspace-trust-limitations.untrusted {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
92
|
+
outline: 2px solid var(--workspace-trust-selected-color);
|
|
93
|
+
outline-offset: -2px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.workspace-trust-editor .workspace-trust-features .workspace-trust-limitations:focus:not(:focus-visible) {
|
|
97
|
+
outline: none;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.workspace-trust-editor .workspace-trust-features .workspace-trust-limitations:focus-visible {
|
|
101
|
+
outline: 1px solid var(--vscode-focusBorder);
|
|
102
|
+
outline-offset: -1px;
|
|
91
103
|
}
|
|
92
104
|
|
|
93
105
|
.workspace-trust-editor .workspace-trust-features .workspace-trust-limitations ul {
|
|
94
106
|
list-style: none;
|
|
95
107
|
padding-inline-start: 0px;
|
|
108
|
+
margin: 16px 0;
|
|
96
109
|
}
|
|
97
110
|
|
|
98
111
|
.workspace-trust-editor .workspace-trust-features .workspace-trust-limitations li {
|
|
99
112
|
display: flex;
|
|
100
|
-
padding-bottom:
|
|
113
|
+
padding-bottom: 4px;
|
|
101
114
|
}
|
|
102
115
|
|
|
103
116
|
.workspace-trust-editor .workspace-trust-features .workspace-trust-limitations .list-item-icon {
|
|
104
|
-
padding-right: 5px;
|
|
105
117
|
line-height: 24px;
|
|
118
|
+
padding: 0 6px 0 0;
|
|
106
119
|
}
|
|
107
120
|
|
|
108
121
|
.workspace-trust-editor .workspace-trust-features .workspace-trust-limitations.trusted .list-item-icon {
|
|
109
|
-
color: var(--workspace-trust-check-color)
|
|
110
|
-
font-size:
|
|
122
|
+
color: var(--workspace-trust-check-color);
|
|
123
|
+
font-size: 16px;
|
|
111
124
|
}
|
|
112
125
|
|
|
113
126
|
.workspace-trust-editor .workspace-trust-features .workspace-trust-limitations.untrusted .list-item-icon {
|
|
114
|
-
color: var(--workspace-trust-x-color)
|
|
115
|
-
font-size:
|
|
127
|
+
color: var(--workspace-trust-x-color);
|
|
128
|
+
font-size: 16px;
|
|
116
129
|
}
|
|
117
130
|
|
|
118
131
|
.workspace-trust-editor .workspace-trust-features .workspace-trust-limitations .list-item-text {
|
|
119
|
-
font-size:
|
|
132
|
+
font-size: 14px;
|
|
120
133
|
line-height: 24px;
|
|
121
134
|
}
|
|
122
135
|
|
|
@@ -130,7 +143,7 @@
|
|
|
130
143
|
font-size: 16px;
|
|
131
144
|
font-weight: 600;
|
|
132
145
|
line-height: 24px;
|
|
133
|
-
padding:
|
|
146
|
+
padding: 16px 0px;
|
|
134
147
|
display: flex;
|
|
135
148
|
}
|
|
136
149
|
|
|
@@ -143,12 +156,13 @@
|
|
|
143
156
|
.workspace-trust-editor.trusted .workspace-trust-features .workspace-trust-limitations.trusted .workspace-trust-limitations-header .workspace-trust-limitations-title .workspace-trust-title-icon,
|
|
144
157
|
.workspace-trust-editor.untrusted .workspace-trust-features .workspace-trust-limitations.untrusted .workspace-trust-limitations-header .workspace-trust-limitations-title .workspace-trust-title-icon {
|
|
145
158
|
display: unset;
|
|
146
|
-
color: var(--workspace-trust-selected-color)
|
|
159
|
+
color: var(--workspace-trust-selected-color);
|
|
147
160
|
}
|
|
148
161
|
|
|
149
162
|
.workspace-trust-editor .workspace-trust-features .workspace-trust-untrusted-description {
|
|
150
163
|
font-style: italic;
|
|
151
|
-
|
|
164
|
+
color: var(--vscode-descriptionForeground);
|
|
165
|
+
padding-bottom: 8px;
|
|
152
166
|
}
|
|
153
167
|
|
|
154
168
|
/** Buttons Container */
|
|
@@ -170,7 +184,7 @@
|
|
|
170
184
|
}
|
|
171
185
|
|
|
172
186
|
.workspace-trust-editor .workspace-trust-settings .trusted-uris-button-bar {
|
|
173
|
-
margin-top:
|
|
187
|
+
margin-top: 8px;
|
|
174
188
|
}
|
|
175
189
|
|
|
176
190
|
.workspace-trust-editor .workspace-trust-settings .trusted-uris-button-bar .monaco-button {
|
|
@@ -183,7 +197,7 @@
|
|
|
183
197
|
.workspace-trust-editor .workspace-trust-features .workspace-trust-buttons-row .workspace-trust-buttons > .monaco-button,
|
|
184
198
|
.workspace-trust-editor .workspace-trust-features .workspace-trust-buttons-row .workspace-trust-buttons > .monaco-button-dropdown,
|
|
185
199
|
.workspace-trust-editor .workspace-trust-settings .trusted-uris-button-bar .monaco-button {
|
|
186
|
-
margin: 4px
|
|
200
|
+
margin: 8px 4px; /* allows button focus outline to be visible */
|
|
187
201
|
}
|
|
188
202
|
|
|
189
203
|
.workspace-trust-editor .workspace-trust-features .workspace-trust-buttons-row .workspace-trust-buttons .monaco-button-dropdown .monaco-dropdown-button {
|
|
@@ -192,7 +206,7 @@
|
|
|
192
206
|
|
|
193
207
|
.workspace-trust-limitations {
|
|
194
208
|
width: 50%;
|
|
195
|
-
max-width:
|
|
209
|
+
max-width: 400px;
|
|
196
210
|
min-width: 250px;
|
|
197
211
|
flex: 1;
|
|
198
212
|
}
|
|
@@ -208,7 +222,7 @@
|
|
|
208
222
|
}
|
|
209
223
|
|
|
210
224
|
.workspace-trust-intro-dialog .workspace-trust-dialog-image-row.badge-row img {
|
|
211
|
-
max-height:
|
|
225
|
+
max-height: 36px;
|
|
212
226
|
padding-right: 10px;
|
|
213
227
|
}
|
|
214
228
|
|
|
@@ -218,7 +232,9 @@
|
|
|
218
232
|
}
|
|
219
233
|
|
|
220
234
|
.workspace-trust-editor .workspace-trust-settings {
|
|
221
|
-
padding:
|
|
235
|
+
padding: 24px 36px;
|
|
236
|
+
border-top: 1px solid var(--vscode-editorWidget-border);
|
|
237
|
+
margin-top: 8px;
|
|
222
238
|
}
|
|
223
239
|
|
|
224
240
|
.workspace-trust-editor .workspace-trust-settings .workspace-trusted-folders-title {
|
|
@@ -229,6 +245,10 @@
|
|
|
229
245
|
display: none;
|
|
230
246
|
}
|
|
231
247
|
|
|
248
|
+
.workspace-trust-editor .trusted-uris-table {
|
|
249
|
+
margin-top: 16px;
|
|
250
|
+
}
|
|
251
|
+
|
|
232
252
|
.workspace-trust-editor .monaco-table-tr .monaco-table-td .path {
|
|
233
253
|
width: 100%;
|
|
234
254
|
}
|
|
@@ -292,3 +312,28 @@
|
|
|
292
312
|
.workspace-trust-editor .workspace-trust-settings .monaco-list-row:hover .monaco-table-tr .monaco-table-td .actions .monaco-action-bar {
|
|
293
313
|
display: flex;
|
|
294
314
|
}
|
|
315
|
+
|
|
316
|
+
/** Responsive: single-column layout for narrow widths */
|
|
317
|
+
@container (max-width: 600px) {
|
|
318
|
+
.workspace-trust-editor .workspace-trust-features {
|
|
319
|
+
flex-direction: column;
|
|
320
|
+
align-items: center;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.workspace-trust-limitations {
|
|
324
|
+
width: 100%;
|
|
325
|
+
max-width: 400px;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
@media (max-width: 600px) {
|
|
330
|
+
.workspace-trust-editor .workspace-trust-features {
|
|
331
|
+
flex-direction: column;
|
|
332
|
+
align-items: center;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
.workspace-trust-limitations {
|
|
336
|
+
width: 100%;
|
|
337
|
+
max-width: 400px;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
@@ -16,7 +16,6 @@ import { IWorkspaceTrustEnablementService, IWorkspaceTrustManagementService, IWo
|
|
|
16
16
|
import { Extensions, registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions';
|
|
17
17
|
import { LifecyclePhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle';
|
|
18
18
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
19
|
-
import { MODAL_GROUP } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService';
|
|
20
19
|
import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
|
|
21
20
|
import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
22
21
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
@@ -108,29 +107,29 @@ let WorkspaceTrustRequestHandler = class WorkspaceTrustRequestHandler extends Di
|
|
|
108
107
|
await this.workspaceTrustManagementService.workspaceResolved;
|
|
109
108
|
const markdownDetails = [
|
|
110
109
|
this.workspaceContextService.getWorkbenchState() !== WorkbenchState.EMPTY ? ( localize(
|
|
111
|
-
|
|
110
|
+
15441,
|
|
112
111
|
"You are trying to open untrusted files in a workspace which is trusted."
|
|
113
112
|
)) : ( localize(
|
|
114
|
-
|
|
113
|
+
15442,
|
|
115
114
|
"You are trying to open untrusted files in a window which is trusted."
|
|
116
115
|
)),
|
|
117
116
|
( localize(
|
|
118
|
-
|
|
117
|
+
15443,
|
|
119
118
|
"If you don't want to open untrusted files, we recommend to open them in Restricted Mode in a new window as the files may be malicious. See [our docs](https://aka.ms/vscode-workspace-trust) to learn more."
|
|
120
119
|
))
|
|
121
120
|
];
|
|
122
121
|
await this.dialogService.prompt({
|
|
123
122
|
type: Severity.Info,
|
|
124
|
-
message: this.workspaceContextService.getWorkbenchState() !== WorkbenchState.EMPTY ? ( localize(
|
|
123
|
+
message: this.workspaceContextService.getWorkbenchState() !== WorkbenchState.EMPTY ? ( localize(15444, "Do you want to allow untrusted files in this workspace?")) : ( localize(15445, "Do you want to allow untrusted files in this window?")),
|
|
125
124
|
buttons: [{
|
|
126
|
-
label: ( localize(
|
|
125
|
+
label: ( localize(15446, "&&Open")),
|
|
127
126
|
run: (
|
|
128
127
|
{
|
|
129
128
|
checkboxChecked
|
|
130
129
|
}
|
|
131
130
|
) => this.workspaceTrustRequestService.completeOpenFilesTrustRequest(WorkspaceTrustUriResponse.Open, !!checkboxChecked)
|
|
132
131
|
}, {
|
|
133
|
-
label: ( localize(
|
|
132
|
+
label: ( localize(15447, "Open in &&Restricted Mode")),
|
|
134
133
|
run: (
|
|
135
134
|
{
|
|
136
135
|
checkboxChecked
|
|
@@ -141,7 +140,7 @@ let WorkspaceTrustRequestHandler = class WorkspaceTrustRequestHandler extends Di
|
|
|
141
140
|
run: () => this.workspaceTrustRequestService.completeOpenFilesTrustRequest(WorkspaceTrustUriResponse.Cancel)
|
|
142
141
|
},
|
|
143
142
|
checkbox: {
|
|
144
|
-
label: ( localize(
|
|
143
|
+
label: ( localize(15448, "Remember my decision for all workspaces")),
|
|
145
144
|
checked: false
|
|
146
145
|
},
|
|
147
146
|
custom: {
|
|
@@ -159,17 +158,17 @@ let WorkspaceTrustRequestHandler = class WorkspaceTrustRequestHandler extends Di
|
|
|
159
158
|
this.workspaceTrustRequestService.onDidInitiateResourcesTrustRequest(async options => {
|
|
160
159
|
await this.workspaceTrustManagementService.workspaceResolved;
|
|
161
160
|
const markdownDetails = [options?.message ?? ( localize(
|
|
162
|
-
|
|
161
|
+
15449,
|
|
163
162
|
"You are trying to open an untrusted folder. Do you trust the authors of this content?"
|
|
164
163
|
)), ( localize(
|
|
165
|
-
|
|
164
|
+
15450,
|
|
166
165
|
"If you don't trust the authors of these files, we recommend not continuing as the files may be malicious. See [our docs](https://aka.ms/vscode-workspace-trust) to learn more."
|
|
167
166
|
)), `\`${this.labelService.getUriLabel(options.uri)}\``];
|
|
168
167
|
await this.dialogService.prompt({
|
|
169
168
|
type: Severity.Info,
|
|
170
|
-
message: ( localize(
|
|
169
|
+
message: ( localize(15451, "Do you trust the authors of the files in this folder?")),
|
|
171
170
|
buttons: [{
|
|
172
|
-
label: ( localize(
|
|
171
|
+
label: ( localize(15452, "&&Trust Folder & Continue")),
|
|
173
172
|
run: () => this.workspaceTrustRequestService.completeResourcesTrustRequest(options.uri, WorkspaceTrustUriResponse.Open)
|
|
174
173
|
}],
|
|
175
174
|
cancelButton: {
|
|
@@ -189,22 +188,22 @@ let WorkspaceTrustRequestHandler = class WorkspaceTrustRequestHandler extends Di
|
|
|
189
188
|
this._register(
|
|
190
189
|
this.workspaceTrustRequestService.onDidInitiateWorkspaceTrustRequest(async requestOptions => {
|
|
191
190
|
await this.workspaceTrustManagementService.workspaceResolved;
|
|
192
|
-
const message = this.useWorkspaceLanguage ? ( localize(
|
|
191
|
+
const message = this.useWorkspaceLanguage ? ( localize(15453, "Do you trust the authors of the files in this workspace?")) : ( localize(15454, "Do you trust the authors of the files in this folder?"));
|
|
193
192
|
const defaultDetails = ( localize(
|
|
194
|
-
|
|
193
|
+
15455,
|
|
195
194
|
"A feature you are trying to use may be a security risk if you do not trust the source of the files or folders you currently have open."
|
|
196
195
|
));
|
|
197
196
|
const details = requestOptions?.message ?? defaultDetails;
|
|
198
197
|
const buttons = requestOptions?.buttons ?? [{
|
|
199
|
-
label: this.useWorkspaceLanguage ? ( localize(
|
|
198
|
+
label: this.useWorkspaceLanguage ? ( localize(15456, "&&Trust Workspace & Continue")) : ( localize(15457, "&&Trust Folder & Continue")),
|
|
200
199
|
type: "ContinueWithTrust"
|
|
201
200
|
}, {
|
|
202
|
-
label: ( localize(
|
|
201
|
+
label: ( localize(15458, "&&Manage")),
|
|
203
202
|
type: "Manage"
|
|
204
203
|
}];
|
|
205
204
|
if (!( buttons.some(b => b.type === "Cancel"))) {
|
|
206
205
|
buttons.push({
|
|
207
|
-
label: ( localize(
|
|
206
|
+
label: ( localize(15459, "Cancel")),
|
|
208
207
|
type: "Cancel"
|
|
209
208
|
});
|
|
210
209
|
}
|
|
@@ -219,7 +218,7 @@ let WorkspaceTrustRequestHandler = class WorkspaceTrustRequestHandler extends Di
|
|
|
219
218
|
markdown: ( new MarkdownString(details))
|
|
220
219
|
}, {
|
|
221
220
|
markdown: ( new MarkdownString(( localize(
|
|
222
|
-
|
|
221
|
+
15460,
|
|
223
222
|
"If you don't trust the authors of these files, we do not recommend continuing as the files may be malicious. See [our docs](https://aka.ms/vscode-workspace-trust) to learn more."
|
|
224
223
|
))))
|
|
225
224
|
}]
|
|
@@ -332,12 +331,12 @@ let WorkspaceTrustUXHandler = class WorkspaceTrustUXHandler extends Disposable {
|
|
|
332
331
|
confirmed
|
|
333
332
|
} = await this.dialogService.confirm({
|
|
334
333
|
type: Severity.Info,
|
|
335
|
-
message: ( localize(
|
|
334
|
+
message: ( localize(15461, "Do you trust the authors of the files in this folder?")),
|
|
336
335
|
detail: ( localize(
|
|
337
|
-
|
|
336
|
+
15462,
|
|
338
337
|
"You are adding files that are not currently trusted to a trusted workspace. Do you trust the authors of these new files?"
|
|
339
338
|
)),
|
|
340
|
-
cancelButton: ( localize(
|
|
339
|
+
cancelButton: ( localize(15463, "No")),
|
|
341
340
|
custom: {
|
|
342
341
|
icon: Codicon.shield
|
|
343
342
|
}
|
|
@@ -366,31 +365,31 @@ let WorkspaceTrustUXHandler = class WorkspaceTrustUXHandler extends Disposable {
|
|
|
366
365
|
} else {
|
|
367
366
|
console.warn("AI generated workspace trust dialog contents not available.");
|
|
368
367
|
}
|
|
369
|
-
const title = titleString ?? (this.useWorkspaceLanguage ? ( localize(
|
|
368
|
+
const title = titleString ?? (this.useWorkspaceLanguage ? ( localize(15453, "Do you trust the authors of the files in this workspace?")) : ( localize(15454, "Do you trust the authors of the files in this folder?")));
|
|
370
369
|
let checkboxText;
|
|
371
370
|
const workspaceIdentifier = toWorkspaceIdentifier(this.workspaceContextService.getWorkspace());
|
|
372
371
|
const isSingleFolderWorkspace = isSingleFolderWorkspaceIdentifier(workspaceIdentifier);
|
|
373
372
|
const isEmptyWindow = isEmptyWorkspaceIdentifier(workspaceIdentifier);
|
|
374
373
|
if (!isAiGeneratedWorkspace && this.workspaceTrustManagementService.canSetParentFolderTrust()) {
|
|
375
374
|
const name = basename(dirname(workspaceIdentifier.uri));
|
|
376
|
-
checkboxText = ( localize(
|
|
375
|
+
checkboxText = ( localize(15464, "Trust the authors of all files in the parent folder '{0}'", name));
|
|
377
376
|
}
|
|
378
377
|
this.doShowModal(title, {
|
|
379
|
-
label: trustOption ?? ( localize(
|
|
380
|
-
sublabel: isSingleFolderWorkspace ? ( localize(
|
|
378
|
+
label: trustOption ?? ( localize(15465, "&&Yes, I trust the authors")),
|
|
379
|
+
sublabel: isSingleFolderWorkspace ? ( localize(15466, "Trust folder and enable all features")) : ( localize(15467, "Trust workspace and enable all features"))
|
|
381
380
|
}, {
|
|
382
|
-
label: dontTrustOption ?? ( localize(
|
|
383
|
-
sublabel: isSingleFolderWorkspace ? ( localize(
|
|
381
|
+
label: dontTrustOption ?? ( localize(15468, "&&No, I don't trust the authors")),
|
|
382
|
+
sublabel: isSingleFolderWorkspace ? ( localize(15469, "Open folder in restricted mode")) : ( localize(15470, "Open workspace in restricted mode"))
|
|
384
383
|
}, [!isSingleFolderWorkspace ? ( localize(
|
|
385
|
-
|
|
384
|
+
15471,
|
|
386
385
|
"{0} provides features that may automatically execute files in this workspace.",
|
|
387
386
|
this.productService.nameShort
|
|
388
387
|
)) : ( localize(
|
|
389
|
-
|
|
388
|
+
15472,
|
|
390
389
|
"{0} provides features that may automatically execute files in this folder.",
|
|
391
390
|
this.productService.nameShort
|
|
392
391
|
)), learnMoreString ?? ( localize(
|
|
393
|
-
|
|
392
|
+
15473,
|
|
394
393
|
"If you don't trust the authors of these files, we recommend to continue in restricted mode as the files may be malicious. See [our docs](https://aka.ms/vscode-workspace-trust) to learn more."
|
|
395
394
|
)), !isEmptyWindow ? `\`${this.labelService.getWorkspaceLabel(workspaceIdentifier, {
|
|
396
395
|
verbose: Verbosity.LONG
|
|
@@ -516,10 +515,10 @@ let WorkspaceTrustUXHandler = class WorkspaceTrustUXHandler extends Disposable {
|
|
|
516
515
|
return undefined;
|
|
517
516
|
}
|
|
518
517
|
const actions = [{
|
|
519
|
-
label: ( localize(
|
|
518
|
+
label: ( localize(15474, "Manage")),
|
|
520
519
|
href: "command:" + MANAGE_TRUST_COMMAND_ID
|
|
521
520
|
}, {
|
|
522
|
-
label: ( localize(
|
|
521
|
+
label: ( localize(15475, "Learn More")),
|
|
523
522
|
href: "https://aka.ms/vscode-workspace-trust"
|
|
524
523
|
}];
|
|
525
524
|
return {
|
|
@@ -544,17 +543,17 @@ let WorkspaceTrustUXHandler = class WorkspaceTrustUXHandler extends Disposable {
|
|
|
544
543
|
switch (this.workspaceContextService.getWorkbenchState()) {
|
|
545
544
|
case WorkbenchState.EMPTY:
|
|
546
545
|
return localize(
|
|
547
|
-
|
|
546
|
+
15476,
|
|
548
547
|
"Restricted Mode is intended for safe code browsing. Trust this window to enable all features. Use navigation keys to access banner actions."
|
|
549
548
|
);
|
|
550
549
|
case WorkbenchState.FOLDER:
|
|
551
550
|
return localize(
|
|
552
|
-
|
|
551
|
+
15477,
|
|
553
552
|
"Restricted Mode is intended for safe code browsing. Trust this folder to enable all features. Use navigation keys to access banner actions."
|
|
554
553
|
);
|
|
555
554
|
case WorkbenchState.WORKSPACE:
|
|
556
555
|
return localize(
|
|
557
|
-
|
|
556
|
+
15478,
|
|
558
557
|
"Restricted Mode is intended for safe code browsing. Trust this workspace to enable all features. Use navigation keys to access banner actions."
|
|
559
558
|
);
|
|
560
559
|
}
|
|
@@ -563,17 +562,17 @@ let WorkspaceTrustUXHandler = class WorkspaceTrustUXHandler extends Disposable {
|
|
|
563
562
|
switch (this.workspaceContextService.getWorkbenchState()) {
|
|
564
563
|
case WorkbenchState.EMPTY:
|
|
565
564
|
return localize(
|
|
566
|
-
|
|
565
|
+
15479,
|
|
567
566
|
"Restricted Mode is intended for safe code browsing. Trust this window to enable all features."
|
|
568
567
|
);
|
|
569
568
|
case WorkbenchState.FOLDER:
|
|
570
569
|
return localize(
|
|
571
|
-
|
|
570
|
+
15480,
|
|
572
571
|
"Restricted Mode is intended for safe code browsing. Trust this folder to enable all features."
|
|
573
572
|
);
|
|
574
573
|
case WorkbenchState.WORKSPACE:
|
|
575
574
|
return localize(
|
|
576
|
-
|
|
575
|
+
15481,
|
|
577
576
|
"Restricted Mode is intended for safe code browsing. Trust this workspace to enable all features."
|
|
578
577
|
);
|
|
579
578
|
}
|
|
@@ -592,12 +591,12 @@ let WorkspaceTrustUXHandler = class WorkspaceTrustUXHandler extends Disposable {
|
|
|
592
591
|
case WorkbenchState.EMPTY:
|
|
593
592
|
{
|
|
594
593
|
ariaLabel = ( localize(
|
|
595
|
-
|
|
594
|
+
15482,
|
|
596
595
|
"Restricted Mode: Some features are disabled because this window is not trusted."
|
|
597
596
|
));
|
|
598
597
|
toolTip = {
|
|
599
598
|
value: ( localize(
|
|
600
|
-
|
|
599
|
+
15483,
|
|
601
600
|
"Running in Restricted Mode\n\nSome [features are disabled]({0}) because this [window is not trusted]({1}).",
|
|
602
601
|
`command:${LIST_WORKSPACE_UNSUPPORTED_EXTENSIONS_COMMAND_ID}`,
|
|
603
602
|
`command:${MANAGE_TRUST_COMMAND_ID}`
|
|
@@ -610,12 +609,12 @@ let WorkspaceTrustUXHandler = class WorkspaceTrustUXHandler extends Disposable {
|
|
|
610
609
|
case WorkbenchState.FOLDER:
|
|
611
610
|
{
|
|
612
611
|
ariaLabel = ( localize(
|
|
613
|
-
|
|
612
|
+
15484,
|
|
614
613
|
"Restricted Mode: Some features are disabled because this folder is not trusted."
|
|
615
614
|
));
|
|
616
615
|
toolTip = {
|
|
617
616
|
value: ( localize(
|
|
618
|
-
|
|
617
|
+
15485,
|
|
619
618
|
"Running in Restricted Mode\n\nSome [features are disabled]({0}) because this [folder is not trusted]({1}).",
|
|
620
619
|
`command:${LIST_WORKSPACE_UNSUPPORTED_EXTENSIONS_COMMAND_ID}`,
|
|
621
620
|
`command:${MANAGE_TRUST_COMMAND_ID}`
|
|
@@ -628,12 +627,12 @@ let WorkspaceTrustUXHandler = class WorkspaceTrustUXHandler extends Disposable {
|
|
|
628
627
|
case WorkbenchState.WORKSPACE:
|
|
629
628
|
{
|
|
630
629
|
ariaLabel = ( localize(
|
|
631
|
-
|
|
630
|
+
15486,
|
|
632
631
|
"Restricted Mode: Some features are disabled because this workspace is not trusted."
|
|
633
632
|
));
|
|
634
633
|
toolTip = {
|
|
635
634
|
value: ( localize(
|
|
636
|
-
|
|
635
|
+
15487,
|
|
637
636
|
"Running in Restricted Mode\n\nSome [features are disabled]({0}) because this [workspace is not trusted]({1}).",
|
|
638
637
|
`command:${LIST_WORKSPACE_UNSUPPORTED_EXTENSIONS_COMMAND_ID}`,
|
|
639
638
|
`command:${MANAGE_TRUST_COMMAND_ID}`
|
|
@@ -645,8 +644,8 @@ let WorkspaceTrustUXHandler = class WorkspaceTrustUXHandler extends Disposable {
|
|
|
645
644
|
}
|
|
646
645
|
}
|
|
647
646
|
return {
|
|
648
|
-
name: ( localize(
|
|
649
|
-
text: `$(shield) ${( localize(
|
|
647
|
+
name: ( localize(15488, "Workspace Trust")),
|
|
648
|
+
text: `$(shield) ${( localize(15489, "Restricted Mode"))}`,
|
|
650
649
|
ariaLabel: ariaLabel,
|
|
651
650
|
tooltip: toolTip,
|
|
652
651
|
command: MANAGE_TRUST_COMMAND_ID,
|
|
@@ -690,16 +689,16 @@ class WorkspaceTrustEditorInputSerializer {
|
|
|
690
689
|
}
|
|
691
690
|
( Registry.as(EditorExtensions.EditorFactory)).registerEditorSerializer(WorkspaceTrustEditorInput.ID, WorkspaceTrustEditorInputSerializer);
|
|
692
691
|
( Registry.as(EditorExtensions.EditorPane)).registerEditorPane(
|
|
693
|
-
EditorPaneDescriptor.create(WorkspaceTrustEditor, WorkspaceTrustEditor.ID, ( localize(
|
|
692
|
+
EditorPaneDescriptor.create(WorkspaceTrustEditor, WorkspaceTrustEditor.ID, ( localize(15490, "Workspace Trust Editor"))),
|
|
694
693
|
[( new SyncDescriptor(WorkspaceTrustEditorInput))]
|
|
695
694
|
);
|
|
696
695
|
const CONFIGURE_TRUST_COMMAND_ID = "workbench.trust.configure";
|
|
697
|
-
const WORKSPACES_CATEGORY = ( localize2(
|
|
696
|
+
const WORKSPACES_CATEGORY = ( localize2(15491, "Workspaces"));
|
|
698
697
|
registerAction2(class extends Action2 {
|
|
699
698
|
constructor() {
|
|
700
699
|
super({
|
|
701
700
|
id: CONFIGURE_TRUST_COMMAND_ID,
|
|
702
|
-
title: ( localize2(
|
|
701
|
+
title: ( localize2(15492, "Configure Workspace Trust Settings")),
|
|
703
702
|
precondition: ( ContextKeyExpr.and(WorkspaceTrustContext.IsEnabled, ( ContextKeyExpr.equals(`config.${WORKSPACE_TRUST_ENABLED}`, true)))),
|
|
704
703
|
category: WORKSPACES_CATEGORY,
|
|
705
704
|
f1: true
|
|
@@ -716,7 +715,7 @@ registerAction2(class extends Action2 {
|
|
|
716
715
|
constructor() {
|
|
717
716
|
super({
|
|
718
717
|
id: MANAGE_TRUST_COMMAND_ID,
|
|
719
|
-
title: ( localize2(
|
|
718
|
+
title: ( localize2(15493, "Manage Workspace Trust")),
|
|
720
719
|
precondition: ( ContextKeyExpr.and(WorkspaceTrustContext.IsEnabled, ( ContextKeyExpr.equals(`config.${WORKSPACE_TRUST_ENABLED}`, true)))),
|
|
721
720
|
category: WORKSPACES_CATEGORY,
|
|
722
721
|
f1: true
|
|
@@ -728,7 +727,7 @@ registerAction2(class extends Action2 {
|
|
|
728
727
|
const input = instantiationService.createInstance(WorkspaceTrustEditorInput);
|
|
729
728
|
editorService.openEditor(input, {
|
|
730
729
|
pinned: true
|
|
731
|
-
}
|
|
730
|
+
});
|
|
732
731
|
return;
|
|
733
732
|
}
|
|
734
733
|
});
|
|
@@ -739,7 +738,7 @@ registerAction2(class extends Action2 {
|
|
|
739
738
|
type: "boolean",
|
|
740
739
|
default: true,
|
|
741
740
|
description: ( localize(
|
|
742
|
-
|
|
741
|
+
15494,
|
|
743
742
|
"Controls whether or not Workspace Trust is enabled within VS Code."
|
|
744
743
|
)),
|
|
745
744
|
tags: [WORKSPACE_TRUST_SETTING_TAG],
|
|
@@ -748,29 +747,29 @@ registerAction2(class extends Action2 {
|
|
|
748
747
|
[WORKSPACE_TRUST_STARTUP_PROMPT]: {
|
|
749
748
|
type: "string",
|
|
750
749
|
default: "once",
|
|
751
|
-
description: ( localize(
|
|
750
|
+
description: ( localize(15495, "Controls when the startup prompt to trust a workspace is shown.")),
|
|
752
751
|
tags: [WORKSPACE_TRUST_SETTING_TAG],
|
|
753
752
|
scope: ConfigurationScope.APPLICATION,
|
|
754
753
|
enum: ["always", "once", "never"],
|
|
755
|
-
enumDescriptions: [( localize(
|
|
754
|
+
enumDescriptions: [( localize(15496, "Ask for trust every time an untrusted workspace is opened.")), ( localize(15497, "Ask for trust the first time an untrusted workspace is opened.")), ( localize(15498, "Do not ask for trust when an untrusted workspace is opened."))]
|
|
756
755
|
},
|
|
757
756
|
[WORKSPACE_TRUST_BANNER]: {
|
|
758
757
|
type: "string",
|
|
759
758
|
default: "untilDismissed",
|
|
760
|
-
description: ( localize(
|
|
759
|
+
description: ( localize(15499, "Controls when the restricted mode banner is shown.")),
|
|
761
760
|
tags: [WORKSPACE_TRUST_SETTING_TAG],
|
|
762
761
|
scope: ConfigurationScope.APPLICATION,
|
|
763
762
|
enum: ["always", "untilDismissed", "never"],
|
|
764
|
-
enumDescriptions: [( localize(
|
|
765
|
-
|
|
763
|
+
enumDescriptions: [( localize(15500, "Show the banner every time an untrusted workspace is open.")), ( localize(
|
|
764
|
+
15501,
|
|
766
765
|
"Show the banner when an untrusted workspace is opened until dismissed."
|
|
767
|
-
)), ( localize(
|
|
766
|
+
)), ( localize(15502, "Do not show the banner when an untrusted workspace is open."))]
|
|
768
767
|
},
|
|
769
768
|
[WORKSPACE_TRUST_UNTRUSTED_FILES]: {
|
|
770
769
|
type: "string",
|
|
771
770
|
default: "prompt",
|
|
772
771
|
markdownDescription: ( localize(
|
|
773
|
-
|
|
772
|
+
15503,
|
|
774
773
|
"Controls how to handle opening untrusted files in a trusted workspace. This setting also applies to opening files in an empty window which is trusted via `#{0}#`.",
|
|
775
774
|
WORKSPACE_TRUST_EMPTY_WINDOW
|
|
776
775
|
)),
|
|
@@ -778,13 +777,13 @@ registerAction2(class extends Action2 {
|
|
|
778
777
|
scope: ConfigurationScope.APPLICATION,
|
|
779
778
|
enum: ["prompt", "open", "newWindow"],
|
|
780
779
|
enumDescriptions: [( localize(
|
|
781
|
-
|
|
780
|
+
15504,
|
|
782
781
|
"Ask how to handle untrusted files for each workspace. Once untrusted files are introduced to a trusted workspace, you will not be prompted again."
|
|
783
782
|
)), ( localize(
|
|
784
|
-
|
|
783
|
+
15505,
|
|
785
784
|
"Always allow untrusted files to be introduced to a trusted workspace without prompting."
|
|
786
785
|
)), ( localize(
|
|
787
|
-
|
|
786
|
+
15506,
|
|
788
787
|
"Always open untrusted files in a separate window in restricted mode without prompting."
|
|
789
788
|
))]
|
|
790
789
|
},
|
|
@@ -792,7 +791,7 @@ registerAction2(class extends Action2 {
|
|
|
792
791
|
type: "boolean",
|
|
793
792
|
default: true,
|
|
794
793
|
markdownDescription: ( localize(
|
|
795
|
-
|
|
794
|
+
15507,
|
|
796
795
|
"Controls whether or not the empty window is trusted by default within VS Code. When used with `#{0}#`, you can enable the full functionality of VS Code without prompting in an empty window.",
|
|
797
796
|
WORKSPACE_TRUST_UNTRUSTED_FILES
|
|
798
797
|
)),
|
|
@@ -66,12 +66,12 @@ import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platf
|
|
|
66
66
|
import { basename, dirname } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
67
67
|
|
|
68
68
|
var TrustedUriActionsColumnRenderer_1, TrustedUriPathColumnRenderer_1, TrustedUriHostColumnRenderer_1, WorkspaceTrustEditor_1;
|
|
69
|
-
const shieldIcon = registerIcon("workspace-trust-banner", Codicon.shield, ( localize(
|
|
70
|
-
const checkListIcon = registerIcon("workspace-trust-editor-check", Codicon.check, ( localize(
|
|
71
|
-
const xListIcon = registerIcon("workspace-trust-editor-cross", Codicon.x, ( localize(
|
|
72
|
-
const folderPickerIcon = registerIcon("workspace-trust-editor-folder-picker", Codicon.folder, ( localize(
|
|
73
|
-
const editIcon = registerIcon("workspace-trust-editor-edit-folder", Codicon.edit, ( localize(
|
|
74
|
-
const removeIcon = registerIcon("workspace-trust-editor-remove-folder", Codicon.close, ( localize(
|
|
69
|
+
const shieldIcon = registerIcon("workspace-trust-banner", Codicon.shield, ( localize(15508, "Icon for workspace trust ion the banner.")));
|
|
70
|
+
const checkListIcon = registerIcon("workspace-trust-editor-check", Codicon.check, ( localize(15509, "Icon for the checkmark in the workspace trust editor.")));
|
|
71
|
+
const xListIcon = registerIcon("workspace-trust-editor-cross", Codicon.x, ( localize(15510, "Icon for the cross in the workspace trust editor.")));
|
|
72
|
+
const folderPickerIcon = registerIcon("workspace-trust-editor-folder-picker", Codicon.folder, ( localize(15511, "Icon for the pick folder icon in the workspace trust editor.")));
|
|
73
|
+
const editIcon = registerIcon("workspace-trust-editor-edit-folder", Codicon.edit, ( localize(15512, "Icon for the edit folder icon in the workspace trust editor.")));
|
|
74
|
+
const removeIcon = registerIcon("workspace-trust-editor-remove-folder", Codicon.close, ( localize(15513, "Icon for the remove folder icon in the workspace trust editor.")));
|
|
75
75
|
let WorkspaceTrustedUrisTable = class WorkspaceTrustedUrisTable extends Disposable {
|
|
76
76
|
constructor(
|
|
77
77
|
container,
|
|
@@ -102,7 +102,7 @@ let WorkspaceTrustedUrisTable = class WorkspaceTrustedUrisTable extends Disposab
|
|
|
102
102
|
const tableElement = container.appendChild($(".trusted-uris-table"));
|
|
103
103
|
const addButtonBarElement = container.appendChild($(".trusted-uris-button-bar"));
|
|
104
104
|
this.table = this.instantiationService.createInstance(WorkbenchTable, "WorkspaceTrust", tableElement, ( new TrustedUriTableVirtualDelegate()), [{
|
|
105
|
-
label: ( localize(
|
|
105
|
+
label: ( localize(15514, "Host")),
|
|
106
106
|
tooltip: "",
|
|
107
107
|
weight: 1,
|
|
108
108
|
templateId: TrustedUriHostColumnRenderer.TEMPLATE_ID,
|
|
@@ -110,7 +110,7 @@ let WorkspaceTrustedUrisTable = class WorkspaceTrustedUrisTable extends Disposab
|
|
|
110
110
|
return row;
|
|
111
111
|
}
|
|
112
112
|
}, {
|
|
113
|
-
label: ( localize(
|
|
113
|
+
label: ( localize(15515, "Path")),
|
|
114
114
|
tooltip: "",
|
|
115
115
|
weight: 8,
|
|
116
116
|
templateId: TrustedUriPathColumnRenderer.TEMPLATE_ID,
|
|
@@ -140,16 +140,16 @@ let WorkspaceTrustedUrisTable = class WorkspaceTrustedUrisTable extends Disposab
|
|
|
140
140
|
getAriaLabel: item => {
|
|
141
141
|
const hostLabel = getHostLabel(this.labelService, item);
|
|
142
142
|
if (hostLabel === undefined || hostLabel.length === 0) {
|
|
143
|
-
return localize(
|
|
143
|
+
return localize(15516, "{0}, trusted", this.labelService.getUriLabel(item.uri));
|
|
144
144
|
}
|
|
145
145
|
return localize(
|
|
146
|
-
|
|
146
|
+
15517,
|
|
147
147
|
"{0} on {1}, trusted",
|
|
148
148
|
this.labelService.getUriLabel(item.uri),
|
|
149
149
|
hostLabel
|
|
150
150
|
);
|
|
151
151
|
},
|
|
152
|
-
getWidgetAriaLabel: () => ( localize(
|
|
152
|
+
getWidgetAriaLabel: () => ( localize(15518, "Trusted Folders & Workspaces"))
|
|
153
153
|
},
|
|
154
154
|
identityProvider: {
|
|
155
155
|
getId(element) {
|
|
@@ -164,18 +164,18 @@ let WorkspaceTrustedUrisTable = class WorkspaceTrustedUrisTable extends Disposab
|
|
|
164
164
|
}));
|
|
165
165
|
const buttonBar = this._register(( new ButtonBar(addButtonBarElement)));
|
|
166
166
|
const addButton = this._register(buttonBar.addButton({
|
|
167
|
-
title: ( localize(
|
|
167
|
+
title: ( localize(15519, "Add Folder")),
|
|
168
168
|
...defaultButtonStyles
|
|
169
169
|
}));
|
|
170
|
-
addButton.label = ( localize(
|
|
170
|
+
addButton.label = ( localize(15519, "Add Folder"));
|
|
171
171
|
this._register(addButton.onDidClick(async () => {
|
|
172
172
|
const uri = await this.fileDialogService.showOpenDialog({
|
|
173
173
|
canSelectFiles: false,
|
|
174
174
|
canSelectFolders: true,
|
|
175
175
|
canSelectMany: false,
|
|
176
176
|
defaultUri: this.currentWorkspaceUri,
|
|
177
|
-
openLabel: ( localize(
|
|
178
|
-
title: ( localize(
|
|
177
|
+
openLabel: ( localize(15520, "Trust Folder")),
|
|
178
|
+
title: ( localize(15521, "Select Folder To Trust"))
|
|
179
179
|
});
|
|
180
180
|
if (uri) {
|
|
181
181
|
this.workspaceTrustManagementService.setUrisTrust(uri, true);
|
|
@@ -258,9 +258,9 @@ let WorkspaceTrustedUrisTable = class WorkspaceTrustedUrisTable extends Disposab
|
|
|
258
258
|
const entries = this.trustedUriEntries;
|
|
259
259
|
this.container.classList.toggle("empty", entries.length === 0);
|
|
260
260
|
this.descriptionElement.innerText = entries.length ? ( localize(
|
|
261
|
-
|
|
261
|
+
15522,
|
|
262
262
|
"You trust the following folders, their subfolders, and workspace files."
|
|
263
|
-
)) : ( localize(
|
|
263
|
+
)) : ( localize(15523, "You haven't trusted any folders or workspace files yet."));
|
|
264
264
|
this.table.splice(0, Number.POSITIVE_INFINITY, this.trustedUriEntries);
|
|
265
265
|
this.layout();
|
|
266
266
|
}
|
|
@@ -274,7 +274,7 @@ let WorkspaceTrustedUrisTable = class WorkspaceTrustedUrisTable extends Disposab
|
|
|
274
274
|
return {
|
|
275
275
|
type: MessageType.WARNING,
|
|
276
276
|
content: ( localize(
|
|
277
|
-
|
|
277
|
+
15524,
|
|
278
278
|
"You will trust all repositories on {0}.",
|
|
279
279
|
getHostLabel(this.labelService, item)
|
|
280
280
|
))
|
|
@@ -284,7 +284,7 @@ let WorkspaceTrustedUrisTable = class WorkspaceTrustedUrisTable extends Disposab
|
|
|
284
284
|
return {
|
|
285
285
|
type: MessageType.WARNING,
|
|
286
286
|
content: ( localize(
|
|
287
|
-
|
|
287
|
+
15525,
|
|
288
288
|
"You will trust all repositories and forks under '{0}' on {1}.",
|
|
289
289
|
segments[0],
|
|
290
290
|
getHostLabel(this.labelService, item)
|
|
@@ -294,7 +294,7 @@ let WorkspaceTrustedUrisTable = class WorkspaceTrustedUrisTable extends Disposab
|
|
|
294
294
|
if (segments.length > 2) {
|
|
295
295
|
return {
|
|
296
296
|
type: MessageType.ERROR,
|
|
297
|
-
content: ( localize(
|
|
297
|
+
content: ( localize(15526, "You cannot trust individual folders within a repository.", path))
|
|
298
298
|
};
|
|
299
299
|
}
|
|
300
300
|
}
|
|
@@ -331,8 +331,8 @@ let WorkspaceTrustedUrisTable = class WorkspaceTrustedUrisTable extends Disposab
|
|
|
331
331
|
canSelectFolders: true,
|
|
332
332
|
canSelectMany: false,
|
|
333
333
|
defaultUri: item.uri,
|
|
334
|
-
openLabel: ( localize(
|
|
335
|
-
title: ( localize(
|
|
334
|
+
openLabel: ( localize(15520, "Trust Folder")),
|
|
335
|
+
title: ( localize(15521, "Select Folder To Trust"))
|
|
336
336
|
});
|
|
337
337
|
if (uri) {
|
|
338
338
|
this.acceptEdit(item, uri[0]);
|
|
@@ -399,7 +399,7 @@ let TrustedUriActionsColumnRenderer = class TrustedUriActionsColumnRenderer {
|
|
|
399
399
|
class: ThemeIcon.asClassName(editIcon),
|
|
400
400
|
enabled: true,
|
|
401
401
|
id: "editTrustedUri",
|
|
402
|
-
tooltip: ( localize(
|
|
402
|
+
tooltip: ( localize(15527, "Edit Path")),
|
|
403
403
|
run: () => {
|
|
404
404
|
this.table.edit(item, false);
|
|
405
405
|
}
|
|
@@ -411,7 +411,7 @@ let TrustedUriActionsColumnRenderer = class TrustedUriActionsColumnRenderer {
|
|
|
411
411
|
class: ThemeIcon.asClassName(folderPickerIcon),
|
|
412
412
|
enabled: true,
|
|
413
413
|
id: "pickerTrustedUri",
|
|
414
|
-
tooltip: ( localize(
|
|
414
|
+
tooltip: ( localize(15528, "Open File Picker")),
|
|
415
415
|
run: () => {
|
|
416
416
|
this.table.edit(item, true);
|
|
417
417
|
}
|
|
@@ -423,7 +423,7 @@ let TrustedUriActionsColumnRenderer = class TrustedUriActionsColumnRenderer {
|
|
|
423
423
|
class: ThemeIcon.asClassName(removeIcon),
|
|
424
424
|
enabled: true,
|
|
425
425
|
id: "deleteTrustedUri",
|
|
426
|
-
tooltip: ( localize(
|
|
426
|
+
tooltip: ( localize(15529, "Delete Path")),
|
|
427
427
|
run: async () => {
|
|
428
428
|
await this.table.delete(item);
|
|
429
429
|
}
|
|
@@ -549,7 +549,7 @@ let TrustedUriPathColumnRenderer = class TrustedUriPathColumnRenderer {
|
|
|
549
549
|
};
|
|
550
550
|
TrustedUriPathColumnRenderer = TrustedUriPathColumnRenderer_1 = ( __decorate([( __param(1, IContextViewService))], TrustedUriPathColumnRenderer));
|
|
551
551
|
function getHostLabel(labelService, item) {
|
|
552
|
-
return item.uri.authority ? labelService.getHostLabel(item.uri.scheme, item.uri.authority) : ( localize(
|
|
552
|
+
return item.uri.authority ? labelService.getHostLabel(item.uri.scheme, item.uri.authority) : ( localize(15530, "Local"));
|
|
553
553
|
}
|
|
554
554
|
let TrustedUriHostColumnRenderer = class TrustedUriHostColumnRenderer {
|
|
555
555
|
static {
|
|
@@ -722,18 +722,18 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
722
722
|
getHeaderTitleText(trusted) {
|
|
723
723
|
if (trusted) {
|
|
724
724
|
if (this.workspaceTrustManagementService.isWorkspaceTrustForced()) {
|
|
725
|
-
return localize(
|
|
725
|
+
return localize(15531, "This window is trusted");
|
|
726
726
|
}
|
|
727
727
|
switch (this.workspaceService.getWorkbenchState()) {
|
|
728
728
|
case WorkbenchState.EMPTY:
|
|
729
|
-
return localize(
|
|
729
|
+
return localize(15532, "You trust this window");
|
|
730
730
|
case WorkbenchState.FOLDER:
|
|
731
|
-
return localize(
|
|
731
|
+
return localize(15533, "You trust this folder");
|
|
732
732
|
case WorkbenchState.WORKSPACE:
|
|
733
|
-
return localize(
|
|
733
|
+
return localize(15534, "You trust this workspace");
|
|
734
734
|
}
|
|
735
735
|
}
|
|
736
|
-
return localize(
|
|
736
|
+
return localize(15535, "You are in Restricted Mode");
|
|
737
737
|
}
|
|
738
738
|
getHeaderTitleIconClassNames(trusted) {
|
|
739
739
|
return ThemeIcon.asClassNameArray(shieldIcon);
|
|
@@ -744,36 +744,36 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
744
744
|
switch (this.workspaceService.getWorkbenchState()) {
|
|
745
745
|
case WorkbenchState.EMPTY:
|
|
746
746
|
{
|
|
747
|
-
title = trusted ? ( localize(
|
|
747
|
+
title = trusted ? ( localize(15536, "In a Trusted Window")) : ( localize(15537, "In Restricted Mode"));
|
|
748
748
|
subTitle = trusted ? ( localize(
|
|
749
|
-
|
|
749
|
+
15538,
|
|
750
750
|
"You trust the authors of the files in the current window. All features are enabled:"
|
|
751
751
|
)) : ( localize(
|
|
752
|
-
|
|
752
|
+
15539,
|
|
753
753
|
"You do not trust the authors of the files in the current window. The following features are disabled:"
|
|
754
754
|
));
|
|
755
755
|
break;
|
|
756
756
|
}
|
|
757
757
|
case WorkbenchState.FOLDER:
|
|
758
758
|
{
|
|
759
|
-
title = trusted ? ( localize(
|
|
759
|
+
title = trusted ? ( localize(15540, "In a Trusted Folder")) : ( localize(15537, "In Restricted Mode"));
|
|
760
760
|
subTitle = trusted ? ( localize(
|
|
761
|
-
|
|
761
|
+
15541,
|
|
762
762
|
"You trust the authors of the files in the current folder. All features are enabled:"
|
|
763
763
|
)) : ( localize(
|
|
764
|
-
|
|
764
|
+
15542,
|
|
765
765
|
"You do not trust the authors of the files in the current folder. The following features are disabled:"
|
|
766
766
|
));
|
|
767
767
|
break;
|
|
768
768
|
}
|
|
769
769
|
case WorkbenchState.WORKSPACE:
|
|
770
770
|
{
|
|
771
|
-
title = trusted ? ( localize(
|
|
771
|
+
title = trusted ? ( localize(15543, "In a Trusted Workspace")) : ( localize(15537, "In Restricted Mode"));
|
|
772
772
|
subTitle = trusted ? ( localize(
|
|
773
|
-
|
|
773
|
+
15544,
|
|
774
774
|
"You trust the authors of the files in the current workspace. All features are enabled:"
|
|
775
775
|
)) : ( localize(
|
|
776
|
-
|
|
776
|
+
15545,
|
|
777
777
|
"You do not trust the authors of the files in the current workspace. The following features are disabled:"
|
|
778
778
|
));
|
|
779
779
|
break;
|
|
@@ -796,16 +796,16 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
796
796
|
this.headerDescription.innerText = "";
|
|
797
797
|
const headerDescriptionText = append(this.headerDescription, $("div"));
|
|
798
798
|
headerDescriptionText.innerText = isWorkspaceTrusted ? ( localize(
|
|
799
|
-
|
|
799
|
+
15546,
|
|
800
800
|
"All features are enabled because trust has been granted to the workspace."
|
|
801
801
|
)) : ( localize(
|
|
802
|
-
|
|
802
|
+
15547,
|
|
803
803
|
"{0} is in a restricted mode intended for safe code browsing.",
|
|
804
804
|
this.productService.nameShort
|
|
805
805
|
));
|
|
806
806
|
const headerDescriptionActions = append(this.headerDescription, $("div"));
|
|
807
807
|
const headerDescriptionActionsText = ( localize(
|
|
808
|
-
|
|
808
|
+
15548,
|
|
809
809
|
"[Configure your settings]({0}) or [learn more](https://aka.ms/vscode-workspace-trust).",
|
|
810
810
|
`command:workbench.trust.configure`
|
|
811
811
|
));
|
|
@@ -820,7 +820,7 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
820
820
|
}
|
|
821
821
|
}
|
|
822
822
|
this.headerContainer.className = this.getHeaderContainerClass(isWorkspaceTrusted);
|
|
823
|
-
this.rootElement.setAttribute("aria-label", `${( localize(
|
|
823
|
+
this.rootElement.setAttribute("aria-label", `${( localize(15549, "Manage Workspace Trust"))}: ${this.headerContainer.innerText}`);
|
|
824
824
|
const restrictedSettings = this.configurationService.restrictedSettings;
|
|
825
825
|
const configurationRegistry = ( Registry.as(Extensions.Configuration));
|
|
826
826
|
const settingsRequiringTrustedWorkspaceCount = restrictedSettings.default.filter(key => {
|
|
@@ -888,7 +888,7 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
888
888
|
tabIndex: "0"
|
|
889
889
|
}));
|
|
890
890
|
const configurationTitle = append(this.configurationContainer, $(".workspace-trusted-folders-title"));
|
|
891
|
-
configurationTitle.innerText = ( localize(
|
|
891
|
+
configurationTitle.innerText = ( localize(15518, "Trusted Folders & Workspaces"));
|
|
892
892
|
this.workspaceTrustedUrisTable = this._register(
|
|
893
893
|
this.instantiationService.createInstance(WorkspaceTrustedUrisTable, this.configurationContainer)
|
|
894
894
|
);
|
|
@@ -913,7 +913,7 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
913
913
|
clearNode(this.untrustedContainer);
|
|
914
914
|
const [trustedTitle, trustedSubTitle] = this.getFeaturesHeaderText(true);
|
|
915
915
|
this.renderLimitationsHeaderElement(this.trustedContainer, trustedTitle, trustedSubTitle);
|
|
916
|
-
const trustedContainerItems = this.workspaceService.getWorkbenchState() === WorkbenchState.EMPTY ? [( localize(
|
|
916
|
+
const trustedContainerItems = this.workspaceService.getWorkbenchState() === WorkbenchState.EMPTY ? [( localize(15550, "Tasks are allowed to run")), ( localize(15551, "Debugging is enabled")), ( localize(15552, "All enabled extensions are activated"))] : [( localize(15550, "Tasks are allowed to run")), ( localize(15551, "Debugging is enabled")), ( localize(15553, "All workspace settings are applied")), ( localize(15552, "All enabled extensions are activated"))];
|
|
917
917
|
this.renderLimitationsListElement(
|
|
918
918
|
this.trustedContainer,
|
|
919
919
|
trustedContainerItems,
|
|
@@ -921,18 +921,18 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
921
921
|
);
|
|
922
922
|
const [untrustedTitle, untrustedSubTitle] = this.getFeaturesHeaderText(false);
|
|
923
923
|
this.renderLimitationsHeaderElement(this.untrustedContainer, untrustedTitle, untrustedSubTitle);
|
|
924
|
-
const untrustedContainerItems = this.workspaceService.getWorkbenchState() === WorkbenchState.EMPTY ? [( localize(
|
|
925
|
-
|
|
924
|
+
const untrustedContainerItems = this.workspaceService.getWorkbenchState() === WorkbenchState.EMPTY ? [( localize(15554, "Tasks are not allowed to run")), ( localize(15555, "Debugging is disabled")), fixBadLocalizedLinks(( localize(
|
|
925
|
+
15556,
|
|
926
926
|
"[{0} extensions]({1}) are disabled or have limited functionality",
|
|
927
927
|
numExtensions,
|
|
928
928
|
`command:${LIST_WORKSPACE_UNSUPPORTED_EXTENSIONS_COMMAND_ID}`
|
|
929
|
-
)))] : [( localize(
|
|
930
|
-
|
|
929
|
+
)))] : [( localize(15554, "Tasks are not allowed to run")), ( localize(15555, "Debugging is disabled")), fixBadLocalizedLinks(numSettings ? ( localize(
|
|
930
|
+
15557,
|
|
931
931
|
"[{0} workspace settings]({1}) are not applied",
|
|
932
932
|
numSettings,
|
|
933
933
|
"command:settings.filterUntrusted"
|
|
934
|
-
)) : ( localize(
|
|
935
|
-
|
|
934
|
+
)) : ( localize(15558, "Workspace settings requiring trust are not applied"))), fixBadLocalizedLinks(( localize(
|
|
935
|
+
15556,
|
|
936
936
|
"[{0} extensions]({1}) are disabled or have limited functionality",
|
|
937
937
|
numExtensions,
|
|
938
938
|
`command:${LIST_WORKSPACE_UNSUPPORTED_EXTENSIONS_COMMAND_ID}`
|
|
@@ -966,7 +966,7 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
966
966
|
button.label = action.label;
|
|
967
967
|
button.enabled = enabled !== undefined ? enabled : action.enabled;
|
|
968
968
|
button.description = keybinding.getLabel();
|
|
969
|
-
button.element.ariaLabel = action.label + ", " + ( localize(
|
|
969
|
+
button.element.ariaLabel = action.label + ", " + ( localize(15559, "Keyboard Shortcut: {0}", keybinding.getAriaLabel()));
|
|
970
970
|
this.rerenderDisposables.add(button.onDidClick(e => {
|
|
971
971
|
if (e) {
|
|
972
972
|
EventHelper.stop(e, true);
|
|
@@ -976,7 +976,7 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
976
976
|
}
|
|
977
977
|
}
|
|
978
978
|
addTrustButtonToElement(parent) {
|
|
979
|
-
const trustAction = this.rerenderDisposables.add(( new Action("workspace.trust.button.action.grant", ( localize(
|
|
979
|
+
const trustAction = this.rerenderDisposables.add(( new Action("workspace.trust.button.action.grant", ( localize(15560, "Trust")), undefined, true, async () => {
|
|
980
980
|
await this.workspaceTrustManagementService.setWorkspaceTrust(true);
|
|
981
981
|
})));
|
|
982
982
|
const trustActions = [{
|
|
@@ -988,11 +988,11 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
988
988
|
const name = basename(dirname(workspaceIdentifier.uri));
|
|
989
989
|
const trustMessageElement = append(parent, $(".trust-message-box"));
|
|
990
990
|
trustMessageElement.innerText = ( localize(
|
|
991
|
-
|
|
991
|
+
15561,
|
|
992
992
|
"Trust the authors of all files in the current folder or its parent '{0}'.",
|
|
993
993
|
name
|
|
994
994
|
));
|
|
995
|
-
const trustParentAction = this.rerenderDisposables.add(( new Action("workspace.trust.button.action.grantParent", ( localize(
|
|
995
|
+
const trustParentAction = this.rerenderDisposables.add(( new Action("workspace.trust.button.action.grantParent", ( localize(15562, "Trust Parent")), undefined, true, async () => {
|
|
996
996
|
await this.workspaceTrustManagementService.setParentFolderTrust(true);
|
|
997
997
|
})));
|
|
998
998
|
trustActions.push({
|
|
@@ -1004,7 +1004,7 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
1004
1004
|
}
|
|
1005
1005
|
addDontTrustButtonToElement(parent) {
|
|
1006
1006
|
this.createButtonRow(parent, [{
|
|
1007
|
-
action: this.rerenderDisposables.add(( new Action("workspace.trust.button.action.deny", ( localize(
|
|
1007
|
+
action: this.rerenderDisposables.add(( new Action("workspace.trust.button.action.deny", ( localize(15563, "Don't Trust")), undefined, true, async () => {
|
|
1008
1008
|
await this.workspaceTrustManagementService.setWorkspaceTrust(false);
|
|
1009
1009
|
}))),
|
|
1010
1010
|
keybinding: this.keybindingService.resolveUserBinding(isMacintosh ? "Cmd+Enter" : "Ctrl+Enter")[0]
|
|
@@ -1017,14 +1017,14 @@ let WorkspaceTrustEditor = class WorkspaceTrustEditor extends EditorPane {
|
|
|
1017
1017
|
const textElement = append(parent, $(".workspace-trust-untrusted-description"));
|
|
1018
1018
|
if (!this.workspaceTrustManagementService.isWorkspaceTrustForced()) {
|
|
1019
1019
|
textElement.innerText = this.workspaceService.getWorkbenchState() === WorkbenchState.WORKSPACE ? ( localize(
|
|
1020
|
-
|
|
1020
|
+
15564,
|
|
1021
1021
|
"This workspace is trusted via the bolded entries in the trusted folders below."
|
|
1022
1022
|
)) : ( localize(
|
|
1023
|
-
|
|
1023
|
+
15565,
|
|
1024
1024
|
"This folder is trusted via the bolded entries in the trusted folders below."
|
|
1025
1025
|
));
|
|
1026
1026
|
} else {
|
|
1027
|
-
textElement.innerText = ( localize(
|
|
1027
|
+
textElement.innerText = ( localize(15566, "This window is trusted by nature of the workspace that is opened."));
|
|
1028
1028
|
}
|
|
1029
1029
|
}
|
|
1030
1030
|
renderLimitationsHeaderElement(parent, headerText, subtitleText) {
|
|
@@ -7,7 +7,7 @@ import { registerIcon } from '@codingame/monaco-vscode-api/vscode/vs/platform/th
|
|
|
7
7
|
import { EditorInputCapabilities } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
|
|
8
8
|
import { EditorInput } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor/editorInput';
|
|
9
9
|
|
|
10
|
-
const WorkspaceTrustEditorIcon = registerIcon("workspace-trust-editor-label-icon", Codicon.shield, ( localize(
|
|
10
|
+
const WorkspaceTrustEditorIcon = registerIcon("workspace-trust-editor-label-icon", Codicon.shield, ( localize(16675, "Icon of the workspace trust editor label.")));
|
|
11
11
|
class WorkspaceTrustEditorInput extends EditorInput {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
@@ -20,7 +20,7 @@ class WorkspaceTrustEditorInput extends EditorInput {
|
|
|
20
20
|
this.ID = "workbench.input.workspaceTrust";
|
|
21
21
|
}
|
|
22
22
|
get capabilities() {
|
|
23
|
-
return EditorInputCapabilities.
|
|
23
|
+
return super.capabilities | EditorInputCapabilities.Singleton | EditorInputCapabilities.RequiresModal;
|
|
24
24
|
}
|
|
25
25
|
get typeId() {
|
|
26
26
|
return WorkspaceTrustEditorInput.ID;
|
|
@@ -29,7 +29,7 @@ class WorkspaceTrustEditorInput extends EditorInput {
|
|
|
29
29
|
return super.matches(otherInput) || otherInput instanceof WorkspaceTrustEditorInput;
|
|
30
30
|
}
|
|
31
31
|
getName() {
|
|
32
|
-
return localize(
|
|
32
|
+
return localize(16676, "Workspace Trust");
|
|
33
33
|
}
|
|
34
34
|
getIcon() {
|
|
35
35
|
return WorkspaceTrustEditorIcon;
|