@codingame/monaco-vscode-welcome-service-override 36.2.7 → 37.2.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/index.js +1 -0
- package/package.json +3 -2
- package/vscode/src/vs/workbench/contrib/onboarding/browser/media/spotlight.css +5 -0
- package/vscode/src/vs/workbench/contrib/onboarding/browser/onboarding.contribution.js +37 -7
- package/vscode/src/vs/workbench/contrib/onboarding/browser/onboardingService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/onboarding/browser/onboardingService.js +36 -5
- package/vscode/src/vs/workbench/contrib/onboarding/browser/sequence/runOnboardingStep.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/onboarding/browser/sequence/runOnboardingStep.js +32 -0
- package/vscode/src/vs/workbench/contrib/onboarding/browser/sequence/sequencePresentation.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/onboarding/browser/sequence/sequencePresentation.js +154 -0
- package/vscode/src/vs/workbench/contrib/onboarding/browser/spotlight/onboardingTarget.d.ts +7 -1
- package/vscode/src/vs/workbench/contrib/onboarding/browser/spotlight/onboardingTarget.js +5 -1
- package/vscode/src/vs/workbench/contrib/onboarding/browser/spotlight/spotlightOverlay.d.ts +13 -9
- package/vscode/src/vs/workbench/contrib/onboarding/browser/spotlight/spotlightOverlay.js +60 -15
- package/vscode/src/vs/workbench/contrib/onboarding/browser/spotlight/spotlightPresentation.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/onboarding/browser/spotlight/spotlightPresentation.js +222 -49
- package/vscode/src/vs/workbench/contrib/onboarding/browser/spotlight/spotlightTypes.d.ts +23 -5
- package/vscode/src/vs/workbench/contrib/onboarding/common/onboardingPresentation.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/onboarding/common/onboardingScenario.d.ts +9 -8
- package/vscode/src/vs/workbench/contrib/onboarding/common/onboardingScenarioService.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/onboarding/common/onboardingScenarioService.js +2 -1
- package/vscode/src/vs/workbench/contrib/onboarding/common/onboardingSequence.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/onboarding/common/onboardingSequence.js +29 -0
- package/vscode/src/vs/workbench/contrib/welcomeAgentSessions/browser/agentSessionsWelcome.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/welcomeAgentSessions/browser/agentSessionsWelcome.contribution.js +158 -0
- package/vscode/src/vs/workbench/contrib/welcomeAgentSessions/browser/agentSessionsWelcome.d.ts +105 -0
- package/vscode/src/vs/workbench/contrib/welcomeAgentSessions/browser/agentSessionsWelcome.js +765 -0
- package/vscode/src/vs/workbench/contrib/welcomeAgentSessions/browser/media/agentSessionsWelcome.css +564 -0
- package/vscode/src/vs/workbench/contrib/welcomeOnboarding/browser/media/variationA.css +2 -149
- package/vscode/src/vs/workbench/contrib/welcomeOnboarding/browser/onboardingVariationA.d.ts +5 -5
- package/vscode/src/vs/workbench/contrib/welcomeOnboarding/browser/onboardingVariationA.js +61 -131
- package/vscode/src/vs/workbench/contrib/welcomeOnboarding/browser/welcomeOnboarding.contribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/welcomeViews/common/newFile.contribution.js +10 -10
- package/vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcomeContribution.js +2 -2
- package/vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcomeExtensionPoint.js +8 -8
|
@@ -33,7 +33,7 @@ import product from '@codingame/monaco-vscode-api/vscode/vs/platform/product/com
|
|
|
33
33
|
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
34
34
|
import { IPathService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/path/common/pathService.service';
|
|
35
35
|
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
36
|
-
import { ChatSetupStrategy } from '@codingame/monaco-vscode-
|
|
36
|
+
import { ChatSetupStrategy } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/chat/browser/chatSetup/chatSetup';
|
|
37
37
|
import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
|
|
38
38
|
import { IAccessibilityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service';
|
|
39
39
|
import { ONBOARDING_STEPS, AiCollaborationMode, OnboardingStepId, getOnboardingStepTitle, getOnboardingStepSubtitle, parseGheInstanceInput, GheParseResultKind, GHE_FULL_URI_REGEX, ONBOARDING_AI_PREFERENCE_OPTIONS } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/welcomeOnboarding/common/onboardingTypes';
|
|
@@ -116,11 +116,11 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
116
116
|
this.overlay = append(container, $(".onboarding-a-overlay"));
|
|
117
117
|
this.overlay.setAttribute("role", "dialog");
|
|
118
118
|
this.overlay.setAttribute("aria-modal", "true");
|
|
119
|
-
this.overlay.setAttribute("aria-label", ( localize(
|
|
119
|
+
this.overlay.setAttribute("aria-label", ( localize(19034, "Welcome to Visual Studio Code")));
|
|
120
120
|
this.card = append(this.overlay, $(".onboarding-a-card"));
|
|
121
121
|
this.closeButton = append(this.card, $("button.onboarding-a-close-btn"));
|
|
122
122
|
this.closeButton.type = "button";
|
|
123
|
-
this.closeButton.setAttribute("aria-label", ( localize(
|
|
123
|
+
this.closeButton.setAttribute("aria-label", ( localize(19035, "Close")));
|
|
124
124
|
this.closeButton.appendChild(renderIcon(Codicon.close));
|
|
125
125
|
const header = append(this.card, $(".onboarding-a-header"));
|
|
126
126
|
this.progressContainer = append(header, $(".onboarding-a-progress"));
|
|
@@ -136,7 +136,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
136
136
|
this.footerLeft = append(footer, $(".onboarding-a-footer-left"));
|
|
137
137
|
const footerRight = append(footer, $(".onboarding-a-footer-right"));
|
|
138
138
|
this.backButton = append(footerRight, $("button.onboarding-a-btn.onboarding-a-btn-secondary"));
|
|
139
|
-
this.backButton.textContent = ( localize(
|
|
139
|
+
this.backButton.textContent = ( localize(19036, "Back"));
|
|
140
140
|
this.backButton.type = "button";
|
|
141
141
|
this.footerFocusableElements.push(this.backButton);
|
|
142
142
|
this.nextButton = append(footerRight, $("button.onboarding-a-btn.onboarding-a-btn-primary"));
|
|
@@ -159,6 +159,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
159
159
|
}));
|
|
160
160
|
this.disposables.add(addDisposableListener(this.nextButton, EventType.CLICK, () => {
|
|
161
161
|
if (this._isLastStep()) {
|
|
162
|
+
this._applyStepSelections(this.steps[this.currentStepIndex]);
|
|
162
163
|
this._logAction("complete");
|
|
163
164
|
this._dismiss("complete");
|
|
164
165
|
} else if (this.currentStepIndex === 0) {
|
|
@@ -225,9 +226,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
225
226
|
this.enterpriseInstanceValue = "";
|
|
226
227
|
this.enterpriseSignInWatch = undefined;
|
|
227
228
|
}
|
|
228
|
-
|
|
229
|
-
this._applyKeymap(this.selectedKeymapId);
|
|
230
|
-
}
|
|
229
|
+
this._applyStepSelections(leavingStep);
|
|
231
230
|
this.currentStepIndex++;
|
|
232
231
|
this._renderStep();
|
|
233
232
|
this._renderProgress();
|
|
@@ -236,6 +235,11 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
236
235
|
this._logStepView();
|
|
237
236
|
}
|
|
238
237
|
}
|
|
238
|
+
_applyStepSelections(stepId) {
|
|
239
|
+
if (stepId === OnboardingStepId.Personalize) {
|
|
240
|
+
this._applyKeymap(this.selectedKeymapId);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
239
243
|
_prevStep() {
|
|
240
244
|
if (this.currentStepIndex > 0) {
|
|
241
245
|
this.currentStepIndex--;
|
|
@@ -263,7 +267,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
263
267
|
}
|
|
264
268
|
}
|
|
265
269
|
this.progressContainer.appendChild(this.stepLabelEl);
|
|
266
|
-
this.stepLabelEl.textContent = ( localize(
|
|
270
|
+
this.stepLabelEl.textContent = ( localize(19037, "{0} of {1}", this.currentStepIndex + 1, this.steps.length));
|
|
267
271
|
}
|
|
268
272
|
_renderStep() {
|
|
269
273
|
if (!this.titleEl || !this.subtitleEl || !this.contentEl) {
|
|
@@ -276,9 +280,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
276
280
|
this.titleEl.style.display = useSignInHero ? "none" : "";
|
|
277
281
|
this.subtitleEl.style.display = useSignInHero ? "none" : "";
|
|
278
282
|
this.titleEl.textContent = getOnboardingStepTitle(stepId);
|
|
279
|
-
if (stepId === OnboardingStepId.
|
|
280
|
-
this._renderAgentSessionsSubtitle(this.subtitleEl);
|
|
281
|
-
} else if (stepId === OnboardingStepId.Personalize) {
|
|
283
|
+
if (stepId === OnboardingStepId.Personalize) {
|
|
282
284
|
this._renderPersonalizeSubtitle(this.subtitleEl);
|
|
283
285
|
} else {
|
|
284
286
|
this.subtitleEl.textContent = getOnboardingStepSubtitle(stepId);
|
|
@@ -294,12 +296,9 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
294
296
|
case OnboardingStepId.AiPreference:
|
|
295
297
|
this._renderAiPreferenceStep(this.contentEl);
|
|
296
298
|
break;
|
|
297
|
-
case OnboardingStepId.AgentSessions:
|
|
298
|
-
this._renderAgentSessionsStep(this.contentEl);
|
|
299
|
-
break;
|
|
300
299
|
}
|
|
301
300
|
this.bodyEl?.setAttribute("aria-label", ( localize(
|
|
302
|
-
|
|
301
|
+
19038,
|
|
303
302
|
"Step {0} of {1}: {2}",
|
|
304
303
|
this.currentStepIndex + 1,
|
|
305
304
|
this.steps.length,
|
|
@@ -315,17 +314,17 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
315
314
|
if (this.currentStepIndex === 0) {
|
|
316
315
|
if (this._userSignedIn) {
|
|
317
316
|
this.nextButton.className = "onboarding-a-btn onboarding-a-btn-primary";
|
|
318
|
-
this.nextButton.textContent = ( localize(
|
|
317
|
+
this.nextButton.textContent = ( localize(19039, "Continue"));
|
|
319
318
|
} else {
|
|
320
319
|
this.nextButton.className = "onboarding-a-btn onboarding-a-btn-secondary";
|
|
321
|
-
this.nextButton.textContent = ( localize(
|
|
320
|
+
this.nextButton.textContent = ( localize(19040, "Continue without Signing In"));
|
|
322
321
|
}
|
|
323
322
|
} else if (this._isLastStep()) {
|
|
324
323
|
this.nextButton.className = "onboarding-a-btn onboarding-a-btn-primary";
|
|
325
|
-
this.nextButton.textContent = ( localize(
|
|
324
|
+
this.nextButton.textContent = ( localize(19041, "Get Started"));
|
|
326
325
|
} else {
|
|
327
326
|
this.nextButton.className = "onboarding-a-btn onboarding-a-btn-primary";
|
|
328
|
-
this.nextButton.textContent = ( localize(
|
|
327
|
+
this.nextButton.textContent = ( localize(19042, "Continue"));
|
|
329
328
|
}
|
|
330
329
|
}
|
|
331
330
|
if (this.footerLeft) {
|
|
@@ -333,7 +332,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
333
332
|
if (!this._footerSignInBtn && !this._userSignedIn) {
|
|
334
333
|
this._footerSignInBtn = append(this.footerLeft, $("button.onboarding-a-signin-nudge-btn"));
|
|
335
334
|
this._footerSignInBtn.type = "button";
|
|
336
|
-
this._footerSignInBtn.textContent = ( localize(
|
|
335
|
+
this._footerSignInBtn.textContent = ( localize(19043, "Sign in to use GitHub Copilot"));
|
|
337
336
|
this.stepDisposables.add(
|
|
338
337
|
addDisposableListener(this._footerSignInBtn, EventType.CLICK, async () => {
|
|
339
338
|
this._logAction("signInNudge");
|
|
@@ -361,9 +360,9 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
361
360
|
const content = append(wrapper, $(".onboarding-a-signin-content"));
|
|
362
361
|
const contentMain = append(content, $(".onboarding-a-signin-content-main"));
|
|
363
362
|
const title = append(contentMain, $("h2.onboarding-a-signin-title"));
|
|
364
|
-
title.textContent = ( localize(
|
|
363
|
+
title.textContent = ( localize(19044, "Welcome to VS Code"));
|
|
365
364
|
const subtitle = append(contentMain, $("p.onboarding-a-signin-subtitle"));
|
|
366
|
-
subtitle.textContent = ( localize(
|
|
365
|
+
subtitle.textContent = ( localize(19045, "Sign in to use GitHub Copilot."));
|
|
367
366
|
const actions = append(contentMain, $(".onboarding-a-signin-actions"));
|
|
368
367
|
if (this._userSignedIn) {
|
|
369
368
|
const signedIn = append(actions, $(".onboarding-a-signin-confirmation"));
|
|
@@ -371,7 +370,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
371
370
|
icon.classList.add(...ThemeIcon.asClassNameArray(Codicon.check));
|
|
372
371
|
icon.setAttribute("aria-hidden", "true");
|
|
373
372
|
const text = append(signedIn, $("span"));
|
|
374
|
-
text.textContent = ( localize(
|
|
373
|
+
text.textContent = ( localize(19046, "You're signed in. You can continue to the next step."));
|
|
375
374
|
} else {
|
|
376
375
|
switch (this.enterpriseSignInUiState) {
|
|
377
376
|
case "instance":
|
|
@@ -389,49 +388,49 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
389
388
|
const disclaimerCol = append(footer, $(".onboarding-a-signin-disclaimer-col"));
|
|
390
389
|
const copilotDisclaimer = append(disclaimerCol, $(".onboarding-a-signin-disclaimer"));
|
|
391
390
|
copilotDisclaimer.append(( localize(
|
|
392
|
-
|
|
391
|
+
19047,
|
|
393
392
|
"By signing in, you agree to {0}'s ",
|
|
394
393
|
defaultChat.provider.default.name
|
|
395
394
|
)));
|
|
396
|
-
this._createInlineLink(copilotDisclaimer, ( localize(
|
|
397
|
-
copilotDisclaimer.append(( localize(
|
|
398
|
-
this._createInlineLink(copilotDisclaimer, ( localize(
|
|
399
|
-
copilotDisclaimer.append(( localize(
|
|
400
|
-
this._createInlineLink(copilotDisclaimer, ( localize(
|
|
401
|
-
copilotDisclaimer.append(( localize(
|
|
395
|
+
this._createInlineLink(copilotDisclaimer, ( localize(19048, "Terms")), defaultChat.termsStatementUrl);
|
|
396
|
+
copilotDisclaimer.append(( localize(19049, " and ")));
|
|
397
|
+
this._createInlineLink(copilotDisclaimer, ( localize(19050, "Privacy Statement")), defaultChat.privacyStatementUrl);
|
|
398
|
+
copilotDisclaimer.append(( localize(19051, ". {0} Copilot may show ", defaultChat.provider.default.name)));
|
|
399
|
+
this._createInlineLink(copilotDisclaimer, ( localize(19052, "public code")), defaultChat.publicCodeMatchesUrl);
|
|
400
|
+
copilotDisclaimer.append(( localize(19053, " suggestions and use your data to improve the product.")));
|
|
402
401
|
copilotDisclaimer.append(" ");
|
|
403
|
-
copilotDisclaimer.append(( localize(
|
|
404
|
-
this._createInlineLink(copilotDisclaimer, ( localize(
|
|
405
|
-
copilotDisclaimer.append(( localize(
|
|
402
|
+
copilotDisclaimer.append(( localize(19054, "You can change these ")));
|
|
403
|
+
this._createInlineLink(copilotDisclaimer, ( localize(19055, "settings")), this.defaultAccountService.resolveGitHubUrl(GitHubPaths.copilotSettings));
|
|
404
|
+
copilotDisclaimer.append(( localize(19056, " anytime.")));
|
|
406
405
|
}
|
|
407
406
|
_renderDefaultSignInActions(actions) {
|
|
408
|
-
const githubBtn = this._registerStepFocusable(this._createSignInButton(actions, "github", ( localize(
|
|
407
|
+
const githubBtn = this._registerStepFocusable(this._createSignInButton(actions, "github", ( localize(19057, "Continue with GitHub")), {
|
|
409
408
|
emphasized: true,
|
|
410
|
-
label: ( localize(
|
|
409
|
+
label: ( localize(19058, "Continue with GitHub"))
|
|
411
410
|
}));
|
|
412
411
|
this.stepDisposables.add(addDisposableListener(githubBtn, EventType.CLICK, () => {
|
|
413
412
|
this._logAction("signIn", undefined, "github");
|
|
414
413
|
this._handleSignIn();
|
|
415
414
|
}));
|
|
416
|
-
const googleBtn = this._registerStepFocusable(this._createSignInButton(actions, "google", ( localize(
|
|
415
|
+
const googleBtn = this._registerStepFocusable(this._createSignInButton(actions, "google", ( localize(19059, "Continue with Google")), {
|
|
417
416
|
iconOnly: true,
|
|
418
|
-
label: ( localize(
|
|
417
|
+
label: ( localize(19059, "Continue with Google"))
|
|
419
418
|
}));
|
|
420
419
|
this.stepDisposables.add(addDisposableListener(googleBtn, EventType.CLICK, () => {
|
|
421
420
|
this._logAction("signIn", undefined, "google");
|
|
422
421
|
this._handleSignIn("google");
|
|
423
422
|
}));
|
|
424
|
-
const appleBtn = this._registerStepFocusable(this._createSignInButton(actions, "apple", ( localize(
|
|
423
|
+
const appleBtn = this._registerStepFocusable(this._createSignInButton(actions, "apple", ( localize(19060, "Continue with Apple")), {
|
|
425
424
|
iconOnly: true,
|
|
426
|
-
label: ( localize(
|
|
425
|
+
label: ( localize(19060, "Continue with Apple"))
|
|
427
426
|
}));
|
|
428
427
|
this.stepDisposables.add(addDisposableListener(appleBtn, EventType.CLICK, () => {
|
|
429
428
|
this._logAction("signIn", undefined, "apple");
|
|
430
429
|
this._handleSignIn("apple");
|
|
431
430
|
}));
|
|
432
|
-
const gheBtn = this._registerStepFocusable(this._createSignInButton(actions, "github-enterprise", ( localize(
|
|
431
|
+
const gheBtn = this._registerStepFocusable(this._createSignInButton(actions, "github-enterprise", ( localize(19061, "GHE")), {
|
|
433
432
|
textOnly: true,
|
|
434
|
-
label: ( localize(
|
|
433
|
+
label: ( localize(19062, "Continue with GitHub Enterprise"))
|
|
435
434
|
}));
|
|
436
435
|
this.stepDisposables.add(addDisposableListener(gheBtn, EventType.CLICK, () => {
|
|
437
436
|
this._logAction("signIn", undefined, "github-enterprise");
|
|
@@ -444,9 +443,9 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
444
443
|
_renderEnterpriseInstanceForm(actions) {
|
|
445
444
|
const enterprisePromptLabel = this._getEnterpriseInstancePromptLabel();
|
|
446
445
|
const container = append(actions, $(".onboarding-a-signin-ghe-input"));
|
|
447
|
-
const submitAction = this.stepDisposables.add(( new Action("onboarding.signIn.enterprise.submit", ( localize(
|
|
446
|
+
const submitAction = this.stepDisposables.add(( new Action("onboarding.signIn.enterprise.submit", ( localize(19063, "Continue")), ThemeIcon.asClassName(Codicon.arrowRight), false)));
|
|
448
447
|
const inputBox = this.stepDisposables.add(( new InputBox(container, undefined, {
|
|
449
|
-
placeholder: ( localize(
|
|
448
|
+
placeholder: ( localize(19064, "i.e. \"octocat\" or \"https://octocat.ghe.com\"...")),
|
|
450
449
|
ariaLabel: enterprisePromptLabel,
|
|
451
450
|
actions: [submitAction],
|
|
452
451
|
inputBoxStyles: defaultInputBoxStyles
|
|
@@ -476,7 +475,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
476
475
|
return false;
|
|
477
476
|
case GheParseResultKind.SingleWord:
|
|
478
477
|
message.classList.add("info");
|
|
479
|
-
message.textContent = ( localize(
|
|
478
|
+
message.textContent = ( localize(19065, "Will resolve to {0}", result.resolvedUri));
|
|
480
479
|
submitAction.enabled = true;
|
|
481
480
|
return true;
|
|
482
481
|
case GheParseResultKind.FullUri:
|
|
@@ -487,7 +486,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
487
486
|
inputBox.element.classList.add("error");
|
|
488
487
|
message.classList.add("error");
|
|
489
488
|
message.textContent = ( localize(
|
|
490
|
-
|
|
489
|
+
19066,
|
|
491
490
|
"You must enter a valid {0} instance (i.e. \"octocat\" or \"https://octocat.ghe.com\")",
|
|
492
491
|
defaultChat.provider.enterprise.name
|
|
493
492
|
));
|
|
@@ -523,13 +522,13 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
523
522
|
spinner.setAttribute("aria-hidden", "true");
|
|
524
523
|
const message = append(container, $(".onboarding-a-signin-ghe-progress-message"));
|
|
525
524
|
message.textContent = ( localize(
|
|
526
|
-
|
|
525
|
+
19067,
|
|
527
526
|
"Waiting for {0} sign-in to complete...",
|
|
528
527
|
defaultChat.provider.enterprise.name
|
|
529
528
|
));
|
|
530
529
|
}
|
|
531
530
|
_getEnterpriseInstancePromptLabel() {
|
|
532
|
-
return localize(
|
|
531
|
+
return localize(19068, "What is your {0} instance?", defaultChat.provider.enterprise.name);
|
|
533
532
|
}
|
|
534
533
|
_setEnterpriseSignInUiState(state) {
|
|
535
534
|
this.enterpriseSignInUiState = state;
|
|
@@ -606,7 +605,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
606
605
|
});
|
|
607
606
|
this.notificationService.notify({
|
|
608
607
|
severity: Severity.Error,
|
|
609
|
-
message: ( localize(
|
|
608
|
+
message: ( localize(19069, "Sign-in failed. You can try again later from the Accounts menu."))
|
|
610
609
|
});
|
|
611
610
|
}
|
|
612
611
|
}
|
|
@@ -680,7 +679,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
680
679
|
this.notificationService.notify({
|
|
681
680
|
severity: Severity.Error,
|
|
682
681
|
message: ( localize(
|
|
683
|
-
|
|
682
|
+
19070,
|
|
684
683
|
"GitHub Enterprise sign-in failed. Check your instance URL and try again."
|
|
685
684
|
))
|
|
686
685
|
});
|
|
@@ -688,15 +687,15 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
688
687
|
_renderPersonalizeStep(container) {
|
|
689
688
|
const wrapper = append(container, $(".onboarding-a-personalize"));
|
|
690
689
|
const themeLabel = append(wrapper, $("div.onboarding-a-section-label"));
|
|
691
|
-
themeLabel.textContent = ( localize(
|
|
690
|
+
themeLabel.textContent = ( localize(19071, "Color Theme"));
|
|
692
691
|
const themeHint = append(wrapper, $("div.onboarding-a-theme-hint"));
|
|
693
692
|
themeHint.textContent = ( localize(
|
|
694
|
-
|
|
693
|
+
19072,
|
|
695
694
|
"You can browse and install more themes later from the Extensions view."
|
|
696
695
|
));
|
|
697
696
|
const themeGrid = append(wrapper, $(".onboarding-a-theme-grid"));
|
|
698
697
|
themeGrid.setAttribute("role", "radiogroup");
|
|
699
|
-
themeGrid.setAttribute("aria-label", ( localize(
|
|
698
|
+
themeGrid.setAttribute("aria-label", ( localize(19073, "Choose a color theme")));
|
|
700
699
|
const hasOtherEditors = this._hasOtherEditors();
|
|
701
700
|
const allThemes = product.onboardingThemes ?? [];
|
|
702
701
|
const themes = hasOtherEditors ? allThemes.filter(t => !t.id.startsWith("solarized")) : allThemes;
|
|
@@ -716,15 +715,15 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
716
715
|
wrapper,
|
|
717
716
|
$("div.onboarding-a-section-label.onboarding-a-section-label-keymap")
|
|
718
717
|
);
|
|
719
|
-
keymapLabel.textContent = ( localize(
|
|
718
|
+
keymapLabel.textContent = ( localize(19074, "Keyboard Mapping"));
|
|
720
719
|
const keymapHint = append(wrapper, $("div.onboarding-a-theme-hint"));
|
|
721
720
|
keymapHint.textContent = ( localize(
|
|
722
|
-
|
|
721
|
+
19075,
|
|
723
722
|
"Coming from another editor? Import your keyboard mapping to feel right at home."
|
|
724
723
|
));
|
|
725
724
|
const keymapList = append(wrapper, $(".onboarding-a-keymap-list"));
|
|
726
725
|
keymapList.setAttribute("role", "radiogroup");
|
|
727
|
-
keymapList.setAttribute("aria-label", ( localize(
|
|
726
|
+
keymapList.setAttribute("aria-label", ( localize(19076, "Choose a keyboard mapping")));
|
|
728
727
|
const keymapPills = [];
|
|
729
728
|
for (const keymap of keymapOptions) {
|
|
730
729
|
const pill = this._registerStepFocusable(append(keymapList, $("button.onboarding-a-keymap-pill")));
|
|
@@ -747,7 +746,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
747
746
|
}
|
|
748
747
|
pill.classList.add("selected");
|
|
749
748
|
pill.setAttribute("aria-checked", "true");
|
|
750
|
-
this.accessibilityService.alert(( localize(
|
|
749
|
+
this.accessibilityService.alert(( localize(19077, "{0} keyboard mapping selected", keymap.label)));
|
|
751
750
|
}));
|
|
752
751
|
}
|
|
753
752
|
const selectedKeymapIndex = keymapOptions.findIndex(k => k.id === this.selectedKeymapId);
|
|
@@ -757,7 +756,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
757
756
|
_renderPersonalizeSubtitle(container) {
|
|
758
757
|
clearNode(container);
|
|
759
758
|
const modifier = isMacintosh ? "Cmd" : "Ctrl";
|
|
760
|
-
container.append(( localize(
|
|
759
|
+
container.append(( localize(19078, "Tip: Press ")), this._createKbd(( localize(19079, "{0}", modifier))), "+", this._createKbd(( localize(19080, "Shift"))), "+", this._createKbd(( localize(19081, "P"))), ( localize(19082, " to access all VS Code commands.")));
|
|
761
760
|
}
|
|
762
761
|
_createThemeCard(parent, theme, allCards) {
|
|
763
762
|
const card = this._registerStepFocusable(append(parent, $("div.onboarding-a-theme-card")));
|
|
@@ -785,7 +784,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
785
784
|
}
|
|
786
785
|
card.classList.add("selected");
|
|
787
786
|
card.setAttribute("aria-checked", "true");
|
|
788
|
-
this.accessibilityService.alert(( localize(
|
|
787
|
+
this.accessibilityService.alert(( localize(19083, "{0} theme selected", theme.label)));
|
|
789
788
|
}));
|
|
790
789
|
this.stepDisposables.add(addDisposableListener(card, EventType.KEY_DOWN, e => {
|
|
791
790
|
if (e.key === "Enter" || e.key === " ") {
|
|
@@ -822,7 +821,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
822
821
|
this.notificationService.notify({
|
|
823
822
|
severity: Severity.Warning,
|
|
824
823
|
message: ( localize(
|
|
825
|
-
|
|
824
|
+
19084,
|
|
826
825
|
"Could not install {0} keymap. You can install it later from Extensions.",
|
|
827
826
|
keymap.label
|
|
828
827
|
))
|
|
@@ -945,7 +944,7 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
945
944
|
const wrapper = append(container, $(".onboarding-a-ai-pref"));
|
|
946
945
|
const cards = append(wrapper, $(".onboarding-a-ai-pref-cards"));
|
|
947
946
|
cards.setAttribute("role", "radiogroup");
|
|
948
|
-
cards.setAttribute("aria-label", ( localize(
|
|
947
|
+
cards.setAttribute("aria-label", ( localize(19085, "Choose your AI collaboration style")));
|
|
949
948
|
const allCards = [];
|
|
950
949
|
for (const option of ONBOARDING_AI_PREFERENCE_OPTIONS) {
|
|
951
950
|
const card = this._registerStepFocusable(append(cards, $("button.onboarding-a-ai-pref-card")));
|
|
@@ -973,13 +972,13 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
973
972
|
c.setAttribute("aria-checked", c.dataset.id === option.id ? "true" : "false");
|
|
974
973
|
}
|
|
975
974
|
this._applyAiPreference(option.id);
|
|
976
|
-
this.accessibilityService.alert(( localize(
|
|
975
|
+
this.accessibilityService.alert(( localize(19086, "{0} selected", option.label)));
|
|
977
976
|
}));
|
|
978
977
|
}
|
|
979
978
|
const selectedAiIndex = ONBOARDING_AI_PREFERENCE_OPTIONS.findIndex(o => o.id === this.selectedAiMode);
|
|
980
979
|
this._setupRadioGroupNavigation(allCards, Math.max(0, selectedAiIndex));
|
|
981
980
|
const hint = append(wrapper, $("div.onboarding-a-ai-pref-hint"));
|
|
982
|
-
hint.textContent = ( localize(
|
|
981
|
+
hint.textContent = ( localize(19087, "You can change this anytime in Settings."));
|
|
983
982
|
}
|
|
984
983
|
_applyAiPreference(mode) {
|
|
985
984
|
switch (mode) {
|
|
@@ -994,80 +993,11 @@ let OnboardingVariationA = class OnboardingVariationA extends Disposable {
|
|
|
994
993
|
break;
|
|
995
994
|
}
|
|
996
995
|
}
|
|
997
|
-
_renderAgentSessionsSubtitle(el) {
|
|
998
|
-
clearNode(el);
|
|
999
|
-
const keys = isMacintosh ?
|
|
1000
|
-
["⌘", "⌃", "I"] : ["Ctrl", "Alt", "I"];
|
|
1001
|
-
const shortcut = ( keys.map(k => this._createKbd(k)));
|
|
1002
|
-
el.append(( localize(17022, "Open Chat anytime with ")));
|
|
1003
|
-
for (let i = 0; i < shortcut.length; i++) {
|
|
1004
|
-
if (i > 0) {
|
|
1005
|
-
el.append("+");
|
|
1006
|
-
}
|
|
1007
|
-
el.append(shortcut[i]);
|
|
1008
|
-
}
|
|
1009
|
-
}
|
|
1010
|
-
_renderAgentSessionsStep(container) {
|
|
1011
|
-
const wrapper = append(container, $(".onboarding-a-sessions"));
|
|
1012
|
-
const features = append(wrapper, $(".onboarding-a-sessions-features"));
|
|
1013
|
-
const chatGroup = append(features, $(".onboarding-a-sessions-group"));
|
|
1014
|
-
const chatLabel = append(chatGroup, $("div.onboarding-a-sessions-group-label"));
|
|
1015
|
-
chatLabel.textContent = ( localize(17023, "Agents made for the task"));
|
|
1016
|
-
const chatGrid = append(chatGroup, $(".onboarding-a-sessions-grid.onboarding-a-sessions-grid-2"));
|
|
1017
|
-
this._createFeatureCard(chatGrid, Codicon.listOrdered, ( localize(17024, "Plan")), ( localize(
|
|
1018
|
-
17025,
|
|
1019
|
-
"Produce a structured implementation plan before any code changes, then hand it off to an agent to execute."
|
|
1020
|
-
)));
|
|
1021
|
-
this._createFeatureCard(chatGrid, Codicon.commentDiscussion, ( localize(17026, "Agent")), ( localize(
|
|
1022
|
-
17027,
|
|
1023
|
-
"Describe a goal. The agent plans the approach, edits files, runs commands, and self-corrects. You review and approve along the way."
|
|
1024
|
-
)));
|
|
1025
|
-
const moreGroup = append(features, $(".onboarding-a-sessions-group"));
|
|
1026
|
-
const moreLabel = append(moreGroup, $("div.onboarding-a-sessions-group-label"));
|
|
1027
|
-
moreLabel.textContent = ( localize(17028, "Agents that work your way"));
|
|
1028
|
-
const moreGrid = append(moreGroup, $(".onboarding-a-sessions-grid.onboarding-a-sessions-grid-2"));
|
|
1029
|
-
this._createFeatureCard(moreGrid, Codicon.rocket, ( localize(17029, "Run Agents Anywhere")), ( localize(
|
|
1030
|
-
17030,
|
|
1031
|
-
"Run agents locally for interactive work, in the background with Copilot CLI, or in the cloud with cloud agents that open a pull request your team can review."
|
|
1032
|
-
)));
|
|
1033
|
-
this._createFeatureCard(moreGrid, Codicon.settingsGear, ( localize(17031, "Customize Your Agents")), ( localize(
|
|
1034
|
-
17032,
|
|
1035
|
-
"Tailor Copilot to your project with custom instructions and agents, skills, reusable prompts, and MCP servers that connect to the tools and context you rely on."
|
|
1036
|
-
)));
|
|
1037
|
-
const docsRow = append(wrapper, $(".onboarding-a-sessions-docs"));
|
|
1038
|
-
this._createDocLink(docsRow, ( localize(17033, "Agents tutorial")), "https://code.visualstudio.com/docs/copilot/agents/agents-tutorial", "agentsTutorial");
|
|
1039
|
-
}
|
|
1040
|
-
_createFeatureCard(parent, icon, title, description) {
|
|
1041
|
-
const card = append(parent, $("div.onboarding-a-feature-card"));
|
|
1042
|
-
const iconCol = append(card, $("div.onboarding-a-feature-icon"));
|
|
1043
|
-
iconCol.appendChild(renderIcon(icon));
|
|
1044
|
-
const textCol = append(card, $("div.onboarding-a-feature-text"));
|
|
1045
|
-
const titleEl = append(textCol, $("div.onboarding-a-feature-title"));
|
|
1046
|
-
titleEl.textContent = title;
|
|
1047
|
-
const descEl = append(textCol, $("div.onboarding-a-feature-desc"));
|
|
1048
|
-
if (description) {
|
|
1049
|
-
descEl.textContent = description;
|
|
1050
|
-
}
|
|
1051
|
-
return descEl;
|
|
1052
|
-
}
|
|
1053
996
|
_createKbd(label) {
|
|
1054
997
|
const kbd = $("kbd.onboarding-a-kbd");
|
|
1055
998
|
kbd.textContent = label;
|
|
1056
999
|
return kbd;
|
|
1057
1000
|
}
|
|
1058
|
-
_createDocLink(parent, label, href, linkId) {
|
|
1059
|
-
const link = this._registerStepFocusable(append(parent, $("a.onboarding-a-doc-link")));
|
|
1060
|
-
link.textContent = label;
|
|
1061
|
-
link.href = href;
|
|
1062
|
-
link.target = "_blank";
|
|
1063
|
-
link.rel = "noopener";
|
|
1064
|
-
link.prepend(renderIcon(Codicon.linkExternal));
|
|
1065
|
-
if (linkId) {
|
|
1066
|
-
this.stepDisposables.add(addDisposableListener(link, EventType.CLICK, () => {
|
|
1067
|
-
this._logAction("docLinkClick", undefined, linkId);
|
|
1068
|
-
}));
|
|
1069
|
-
}
|
|
1070
|
-
}
|
|
1071
1001
|
_createInlineLink(parent, label, href) {
|
|
1072
1002
|
const link = this._registerStepFocusable(append(parent, $("a.onboarding-a-inline-link")));
|
|
1073
1003
|
link.textContent = label;
|
package/vscode/src/vs/workbench/contrib/welcomeOnboarding/browser/welcomeOnboarding.contribution.js
CHANGED
|
@@ -13,7 +13,7 @@ registerAction2(class extends Action2 {
|
|
|
13
13
|
constructor() {
|
|
14
14
|
super({
|
|
15
15
|
id: "workbench.action.welcomeOnboarding2026",
|
|
16
|
-
title: ( localize2(
|
|
16
|
+
title: ( localize2(19088, "Welcome Onboarding 2026")),
|
|
17
17
|
category: Categories.Developer,
|
|
18
18
|
f1: true
|
|
19
19
|
});
|
|
@@ -18,13 +18,13 @@ import { Extensions } from '@codingame/monaco-vscode-api/vscode/vs/workbench/com
|
|
|
18
18
|
import { LifecyclePhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle';
|
|
19
19
|
|
|
20
20
|
var NewFileTemplatesManager_1;
|
|
21
|
-
const builtInSource = ( localize(
|
|
22
|
-
const category = ( localize2(
|
|
21
|
+
const builtInSource = ( localize(19101, "Built-In"));
|
|
22
|
+
const category = ( localize2(19102, "Create"));
|
|
23
23
|
registerAction2(class extends Action2 {
|
|
24
24
|
constructor() {
|
|
25
25
|
super({
|
|
26
26
|
id: "welcome.showNewFileEntries",
|
|
27
|
-
title: ( localize2(
|
|
27
|
+
title: ( localize2(19103, "New File...")),
|
|
28
28
|
category,
|
|
29
29
|
f1: true,
|
|
30
30
|
precondition: ( IsSessionsWindowContext.negate()),
|
|
@@ -108,8 +108,8 @@ let NewFileTemplatesManager = class NewFileTemplatesManager extends Disposable {
|
|
|
108
108
|
const qp = this.quickInputService.createQuickPick({
|
|
109
109
|
useSeparators: true
|
|
110
110
|
});
|
|
111
|
-
qp.title = ( localize(
|
|
112
|
-
qp.placeholder = ( localize(
|
|
111
|
+
qp.title = ( localize(19104, "New File..."));
|
|
112
|
+
qp.placeholder = ( localize(19105, "Select File Type or Enter File Name..."));
|
|
113
113
|
qp.sortByLabel = false;
|
|
114
114
|
qp.matchOnDetail = true;
|
|
115
115
|
qp.matchOnDescription = true;
|
|
@@ -136,8 +136,8 @@ let NewFileTemplatesManager = class NewFileTemplatesManager extends Disposable {
|
|
|
136
136
|
return a.from.localeCompare(b.from);
|
|
137
137
|
};
|
|
138
138
|
const displayCategory = {
|
|
139
|
-
"file": ( localize(
|
|
140
|
-
"notebook": ( localize(
|
|
139
|
+
"file": ( localize(19106, "File")),
|
|
140
|
+
"notebook": ( localize(19107, "Notebook"))
|
|
141
141
|
};
|
|
142
142
|
const refreshQp = entries => {
|
|
143
143
|
const items = [];
|
|
@@ -159,7 +159,7 @@ let NewFileTemplatesManager = class NewFileTemplatesManager extends Disposable {
|
|
|
159
159
|
keybinding,
|
|
160
160
|
buttons: command ? [{
|
|
161
161
|
iconClass: "codicon codicon-gear",
|
|
162
|
-
tooltip: ( localize(
|
|
162
|
+
tooltip: ( localize(19108, "Configure Keybinding"))
|
|
163
163
|
}] : [],
|
|
164
164
|
detail: "",
|
|
165
165
|
description: entry.from
|
|
@@ -181,7 +181,7 @@ let NewFileTemplatesManager = class NewFileTemplatesManager extends Disposable {
|
|
|
181
181
|
viewType: undefined,
|
|
182
182
|
fileName: val
|
|
183
183
|
},
|
|
184
|
-
title: ( localize(
|
|
184
|
+
title: ( localize(19109, "Create New File ({0})", val)),
|
|
185
185
|
group: "file",
|
|
186
186
|
from: builtInSource
|
|
187
187
|
};
|
|
@@ -215,7 +215,7 @@ MenuRegistry.appendMenuItem(MenuId.NewFile, {
|
|
|
215
215
|
group: "file",
|
|
216
216
|
command: {
|
|
217
217
|
id: "workbench.action.files.newUntitledFile",
|
|
218
|
-
title: ( localize(
|
|
218
|
+
title: ( localize(19110, "Text File"))
|
|
219
219
|
},
|
|
220
220
|
order: 1
|
|
221
221
|
});
|
|
@@ -61,9 +61,9 @@ function parseGroupAndOrder(welcome, contribution) {
|
|
|
61
61
|
let group;
|
|
62
62
|
let order;
|
|
63
63
|
if (welcome.group) {
|
|
64
|
-
if (!isProposedApiEnabled(contribution.description)) {
|
|
64
|
+
if (!isProposedApiEnabled(contribution.description, "contribViewsWelcome")) {
|
|
65
65
|
contribution.collector.warn(( localize(
|
|
66
|
-
|
|
66
|
+
19111,
|
|
67
67
|
"The viewsWelcome contribution in '{0}' requires 'enabledApiProposals: [\"contribViewsWelcome\"]' in order to use the 'group' proposed property.",
|
|
68
68
|
contribution.description.identifier.value
|
|
69
69
|
)));
|
|
@@ -20,12 +20,12 @@ const ViewIdentifierMap = {
|
|
|
20
20
|
const viewsWelcomeExtensionPointSchema = ( Object.freeze({
|
|
21
21
|
type: "array",
|
|
22
22
|
description: ( localize(
|
|
23
|
-
|
|
23
|
+
19112,
|
|
24
24
|
"Contributed views welcome content. Welcome content will be rendered in tree based views whenever they have no meaningful content to display, ie. the File Explorer when no folder is open. Such content is useful as in-product documentation to drive users to use certain features before they are available. A good example would be a `Clone Repository` button in the File Explorer welcome view."
|
|
25
25
|
)),
|
|
26
26
|
items: {
|
|
27
27
|
type: "object",
|
|
28
|
-
description: ( localize(
|
|
28
|
+
description: ( localize(19113, "Contributed welcome content for a specific view.")),
|
|
29
29
|
required: [
|
|
30
30
|
ViewsWelcomeExtensionPointFields.view,
|
|
31
31
|
ViewsWelcomeExtensionPointFields.contents
|
|
@@ -35,13 +35,13 @@ const viewsWelcomeExtensionPointSchema = ( Object.freeze({
|
|
|
35
35
|
anyOf: [{
|
|
36
36
|
type: "string",
|
|
37
37
|
description: ( localize(
|
|
38
|
-
|
|
38
|
+
19114,
|
|
39
39
|
"Target view identifier for this welcome content. Only tree based views are supported."
|
|
40
40
|
))
|
|
41
41
|
}, {
|
|
42
42
|
type: "string",
|
|
43
43
|
description: ( localize(
|
|
44
|
-
|
|
44
|
+
19114,
|
|
45
45
|
"Target view identifier for this welcome content. Only tree based views are supported."
|
|
46
46
|
)),
|
|
47
47
|
enum: ( Object.keys(ViewIdentifierMap))
|
|
@@ -50,22 +50,22 @@ const viewsWelcomeExtensionPointSchema = ( Object.freeze({
|
|
|
50
50
|
[ViewsWelcomeExtensionPointFields.contents]: {
|
|
51
51
|
type: "string",
|
|
52
52
|
description: ( localize(
|
|
53
|
-
|
|
53
|
+
19115,
|
|
54
54
|
"Welcome content to be displayed. The format of the contents is a subset of Markdown, with support for links only."
|
|
55
55
|
))
|
|
56
56
|
},
|
|
57
57
|
[ViewsWelcomeExtensionPointFields.when]: {
|
|
58
58
|
type: "string",
|
|
59
|
-
description: ( localize(
|
|
59
|
+
description: ( localize(19116, "Condition when the welcome content should be displayed."))
|
|
60
60
|
},
|
|
61
61
|
[ViewsWelcomeExtensionPointFields.group]: {
|
|
62
62
|
type: "string",
|
|
63
|
-
description: ( localize(
|
|
63
|
+
description: ( localize(19117, "Group to which this welcome content belongs. Proposed API."))
|
|
64
64
|
},
|
|
65
65
|
[ViewsWelcomeExtensionPointFields.enablement]: {
|
|
66
66
|
type: "string",
|
|
67
67
|
description: ( localize(
|
|
68
|
-
|
|
68
|
+
19118,
|
|
69
69
|
"Condition when the welcome content buttons and command links should be enabled."
|
|
70
70
|
))
|
|
71
71
|
}
|