@codingame/monaco-vscode-issue-service-override 14.0.5 → 15.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-issue-service-override",
3
- "version": "14.0.5",
3
+ "version": "15.0.0",
4
4
  "private": false,
5
5
  "description": "VSCode public API plugged on the monaco editor - issue service-override",
6
6
  "keywords": [],
@@ -15,8 +15,8 @@
15
15
  },
16
16
  "type": "module",
17
17
  "dependencies": {
18
- "@codingame/monaco-vscode-89a82baf-8ded-5b2f-b8af-e5fbd72dc5ad-common": "14.0.5",
19
- "@codingame/monaco-vscode-api": "14.0.5"
18
+ "@codingame/monaco-vscode-89a82baf-8ded-5b2f-b8af-e5fbd72dc5ad-common": "15.0.0",
19
+ "@codingame/monaco-vscode-api": "15.0.0"
20
20
  },
21
21
  "main": "index.js",
22
22
  "module": "index.js",
@@ -26,12 +26,12 @@
26
26
  "default": "./index.js"
27
27
  },
28
28
  "./vscode/*": {
29
- "default": "./vscode/src/*.js",
30
- "types": "./vscode/src/*.d.ts"
29
+ "types": "./vscode/src/*.d.ts",
30
+ "default": "./vscode/src/*.js"
31
31
  },
32
32
  "./*": {
33
- "default": "./*.js",
34
- "types": "./*.d.ts"
33
+ "types": "./*.d.ts",
34
+ "default": "./*.js"
35
35
  }
36
36
  },
37
37
  "typesVersions": {
@@ -2,10 +2,12 @@ import { Button } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/b
2
2
  import { Delayer } from "@codingame/monaco-vscode-api/vscode/vs/base/common/async";
3
3
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
4
4
  import { IProductConfiguration } from "@codingame/monaco-vscode-api/vscode/vs/base/common/product";
5
+ import { IFileDialogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service";
6
+ import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
5
7
  import { IThemeService } from "@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service";
6
- import { IssueReporterModel } from "./issueReporterModel.js";
7
8
  import { IssueReporterData, IssueReporterExtensionData } from "../common/issue.js";
8
9
  import { IIssueFormService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/issue/common/issue.service";
10
+ import { IssueReporterModel } from "./issueReporterModel.js";
9
11
  export declare class BaseIssueReporterService extends Disposable {
10
12
  disableExtensions: boolean;
11
13
  data: IssueReporterData;
@@ -19,6 +21,8 @@ export declare class BaseIssueReporterService extends Disposable {
19
21
  readonly isWeb: boolean;
20
22
  readonly issueFormService: IIssueFormService;
21
23
  readonly themeService: IThemeService;
24
+ readonly fileService: IFileService;
25
+ readonly fileDialogService: IFileDialogService;
22
26
  issueReporterModel: IssueReporterModel;
23
27
  receivedSystemInfo: boolean;
24
28
  numberOfSearchResultsDisplayed: number;
@@ -35,7 +39,7 @@ export declare class BaseIssueReporterService extends Disposable {
35
39
  type: string;
36
40
  arch: string;
37
41
  release: string;
38
- }, product: IProductConfiguration, window: Window, isWeb: boolean, issueFormService: IIssueFormService, themeService: IThemeService);
42
+ }, product: IProductConfiguration, window: Window, isWeb: boolean, issueFormService: IIssueFormService, themeService: IThemeService, fileService: IFileService, fileDialogService: IFileDialogService);
39
43
  render(): void;
40
44
  setInitialFocus(): void;
41
45
  private applyStyles;
@@ -61,7 +65,7 @@ export declare class BaseIssueReporterService extends Disposable {
61
65
  private setUpTypes;
62
66
  makeOption(value: string, description: string, disabled: boolean): HTMLOptionElement;
63
67
  setSourceOptions(): void;
64
- renderBlocks(): void;
68
+ renderBlocks(): Promise<void>;
65
69
  validateInput(inputId: string): boolean;
66
70
  validateInputs(): boolean;
67
71
  submitToGitHub(issueTitle: string, issueBody: string, gitHubDetails: {
@@ -6,24 +6,30 @@ import { Button, unthemedButtonStyles } from '@codingame/monaco-vscode-api/vscod
6
6
  import { renderIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/iconLabel/iconLabels';
7
7
  import { mainWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/window';
8
8
  import { Delayer, RunOnceScheduler } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
9
+ import { VSBuffer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
9
10
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
10
11
  import { groupBy } from '@codingame/monaco-vscode-api/vscode/vs/base/common/collections';
11
12
  import { debounce } from '@codingame/monaco-vscode-api/vscode/vs/base/common/decorators';
12
13
  import { CancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
13
14
  import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
15
+ import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
14
16
  import { isLinuxSnap, isMacintosh } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
17
+ import { joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
15
18
  import { escape } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
16
19
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
17
20
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
18
21
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
22
+ import { IFileDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
23
+ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
19
24
  import { getIconsStyleSheet } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/iconsStyleSheet';
20
25
  import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
21
- import { IssueReporterModel } from './issueReporterModel.js';
22
26
  import { IssueType } from '../common/issue.js';
23
27
  import { IIssueFormService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/issue/common/issue.service';
24
28
  import { normalizeGitHubUrl } from '../common/issueReporterUtil.js';
29
+ import { IssueReporterModel } from './issueReporterModel.js';
25
30
 
26
31
  const MAX_URL_LENGTH = 7500;
32
+ const MAX_EXTENSION_DATA_LENGTH = 60000;
27
33
  var IssueSource;
28
34
  (function (IssueSource) {
29
35
  IssueSource["VSCode"] = "vscode";
@@ -32,7 +38,7 @@ var IssueSource;
32
38
  IssueSource["Unknown"] = "unknown";
33
39
  })(IssueSource || (IssueSource = {}));
34
40
  let BaseIssueReporterService = class BaseIssueReporterService extends Disposable {
35
- constructor(disableExtensions, data, os, product, window, isWeb, issueFormService, themeService) {
41
+ constructor(disableExtensions, data, os, product, window, isWeb, issueFormService, themeService, fileService, fileDialogService) {
36
42
  super();
37
43
  this.disableExtensions = disableExtensions;
38
44
  this.data = data;
@@ -42,6 +48,8 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
42
48
  this.isWeb = isWeb;
43
49
  this.issueFormService = issueFormService;
44
50
  this.themeService = themeService;
51
+ this.fileService = fileService;
52
+ this.fileDialogService = fileDialogService;
45
53
  this.receivedSystemInfo = false;
46
54
  this.numberOfSearchResultsDisplayed = 0;
47
55
  this.receivedPerformanceInfo = false;
@@ -237,7 +245,7 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
237
245
  const extensionsSelector = this.getElementById('extension-selector');
238
246
  if (extensionsSelector) {
239
247
  const { selectedExtension } = this.issueReporterModel.getData();
240
- reset(extensionsSelector, this.makeOption('', ( localize(7006, "Select extension")), true), ...( extensionOptions.map(extension => makeOption(extension, selectedExtension))));
248
+ reset(extensionsSelector, this.makeOption('', ( localize(7088, "Select extension")), true), ...( extensionOptions.map(extension => makeOption(extension, selectedExtension))));
241
249
  if (!selectedExtension) {
242
250
  extensionsSelector.selectedIndex = 0;
243
251
  }
@@ -318,11 +326,11 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
318
326
  const info = containingElement && containingElement.lastElementChild;
319
327
  if (info && info.classList.contains('hidden')) {
320
328
  show(info);
321
- label.textContent = ( localize(7007, "hide"));
329
+ label.textContent = ( localize(7089, "hide"));
322
330
  }
323
331
  else {
324
332
  hide(info);
325
- label.textContent = ( localize(7008, "show"));
333
+ label.textContent = ( localize(7090, "show"));
326
334
  }
327
335
  }
328
336
  });
@@ -342,16 +350,16 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
342
350
  }
343
351
  const descriptionTextArea = this.getElementById('issue-title');
344
352
  if (value === IssueSource.VSCode) {
345
- descriptionTextArea.placeholder = ( localize(7009, "E.g Workbench is missing problems panel"));
353
+ descriptionTextArea.placeholder = ( localize(7091, "E.g Workbench is missing problems panel"));
346
354
  }
347
355
  else if (value === IssueSource.Extension) {
348
- descriptionTextArea.placeholder = ( localize(7010, "E.g. Missing alt text on extension readme image"));
356
+ descriptionTextArea.placeholder = ( localize(7092, "E.g. Missing alt text on extension readme image"));
349
357
  }
350
358
  else if (value === IssueSource.Marketplace) {
351
- descriptionTextArea.placeholder = ( localize(7011, "E.g Cannot disable installed extension"));
359
+ descriptionTextArea.placeholder = ( localize(7093, "E.g Cannot disable installed extension"));
352
360
  }
353
361
  else {
354
- descriptionTextArea.placeholder = ( localize(7012, "Please enter a title"));
362
+ descriptionTextArea.placeholder = ( localize(7094, "Please enter a title"));
355
363
  }
356
364
  let fileOnExtension, fileOnMarketplace = false;
357
365
  if (value === IssueSource.Extension) {
@@ -456,16 +464,16 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
456
464
  updatePreviewButtonState() {
457
465
  if (this.isPreviewEnabled()) {
458
466
  if (this.data.githubAccessToken) {
459
- this.previewButton.label = ( localize(7013, "Create on GitHub"));
467
+ this.previewButton.label = ( localize(7095, "Create on GitHub"));
460
468
  }
461
469
  else {
462
- this.previewButton.label = ( localize(7014, "Preview on GitHub"));
470
+ this.previewButton.label = ( localize(7096, "Preview on GitHub"));
463
471
  }
464
472
  this.previewButton.enabled = true;
465
473
  }
466
474
  else {
467
475
  this.previewButton.enabled = false;
468
- this.previewButton.label = ( localize(7015, "Loading data..."));
476
+ this.previewButton.label = ( localize(7097, "Loading data..."));
469
477
  }
470
478
  const issueRepoName = this.getElementById('show-repo-name');
471
479
  const selectedExtension = this.issueReporterModel.getData().selectedExtension;
@@ -584,7 +592,7 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
584
592
  }
585
593
  else {
586
594
  const message = $('div.list-title');
587
- message.textContent = ( localize(7016, "GitHub query limit exceeded. Please wait."));
595
+ message.textContent = ( localize(7098, "GitHub query limit exceeded. Please wait."));
588
596
  similarIssues.appendChild(message);
589
597
  const resetTime = response.headers.get('X-RateLimit-Reset');
590
598
  const timeToWait = resetTime ? parseInt(resetTime) - Math.floor(Date.now() / 1000) : 1;
@@ -634,7 +642,7 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
634
642
  if (results.length) {
635
643
  const issues = $('div.issues-container');
636
644
  const issuesText = $('div.list-title');
637
- issuesText.textContent = ( localize(7017, "Similar issues"));
645
+ issuesText.textContent = ( localize(7099, "Similar issues"));
638
646
  this.numberOfSearchResultsDisplayed = results.length < 5 ? results.length : 5;
639
647
  for (let i = 0; i < this.numberOfSearchResultsDisplayed; i++) {
640
648
  const issue = results[i];
@@ -650,8 +658,8 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
650
658
  const issueIcon = $('span.issue-icon');
651
659
  issueIcon.appendChild(renderIcon(issue.state === 'open' ? Codicon.issueOpened : Codicon.issueClosed));
652
660
  const issueStateLabel = $('span.issue-state.label');
653
- issueStateLabel.textContent = issue.state === 'open' ? ( localize(7018, "Open")) : ( localize(7019, "Closed"));
654
- issueState.title = issue.state === 'open' ? ( localize(7018, "Open")) : ( localize(7019, "Closed"));
661
+ issueStateLabel.textContent = issue.state === 'open' ? ( localize(7100, "Open")) : ( localize(7101, "Closed"));
662
+ issueState.title = issue.state === 'open' ? ( localize(7100, "Open")) : ( localize(7101, "Closed"));
655
663
  issueState.appendChild(issueIcon);
656
664
  issueState.appendChild(issueStateLabel);
657
665
  item = $('div.issue', undefined, issueState, link);
@@ -666,7 +674,7 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
666
674
  }
667
675
  else {
668
676
  const message = $('div.list-title');
669
- message.textContent = ( localize(7020, "No similar issues found"));
677
+ message.textContent = ( localize(7102, "No similar issues found"));
670
678
  similarIssues.appendChild(message);
671
679
  }
672
680
  }
@@ -674,7 +682,7 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
674
682
  const makeOption = (issueType, description) => $('option', { 'value': issueType.valueOf() }, escape(description));
675
683
  const typeSelect = this.getElementById('issue-type');
676
684
  const { issueType } = this.issueReporterModel.getData();
677
- reset(typeSelect, makeOption(IssueType.Bug, ( localize(7021, "Bug Report"))), makeOption(IssueType.FeatureRequest, ( localize(7022, "Feature Request"))), makeOption(IssueType.PerformanceIssue, ( localize(7023, "Performance Issue (freeze, slow, crash)"))));
685
+ reset(typeSelect, makeOption(IssueType.Bug, ( localize(7103, "Bug Report"))), makeOption(IssueType.FeatureRequest, ( localize(7104, "Feature Request"))), makeOption(IssueType.PerformanceIssue, ( localize(7105, "Performance Issue (freeze, slow, crash)"))));
678
686
  typeSelect.value = ( issueType.toString());
679
687
  this.setSourceOptions();
680
688
  }
@@ -704,14 +712,14 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
704
712
  }
705
713
  }
706
714
  sourceSelect.innerText = '';
707
- sourceSelect.append(this.makeOption('', ( localize(7024, "Select source")), true));
708
- sourceSelect.append(this.makeOption(IssueSource.VSCode, ( localize(7025, "Visual Studio Code")), false));
709
- sourceSelect.append(this.makeOption(IssueSource.Extension, ( localize(7026, "A VS Code extension")), false));
715
+ sourceSelect.append(this.makeOption('', ( localize(7106, "Select source")), true));
716
+ sourceSelect.append(this.makeOption(IssueSource.VSCode, ( localize(7107, "Visual Studio Code")), false));
717
+ sourceSelect.append(this.makeOption(IssueSource.Extension, ( localize(7108, "A VS Code extension")), false));
710
718
  if (this.product.reportMarketplaceIssueUrl) {
711
- sourceSelect.append(this.makeOption(IssueSource.Marketplace, ( localize(7027, "Extensions Marketplace")), false));
719
+ sourceSelect.append(this.makeOption(IssueSource.Marketplace, ( localize(7109, "Extensions Marketplace")), false));
712
720
  }
713
721
  if (issueType !== IssueType.FeatureRequest) {
714
- sourceSelect.append(this.makeOption(IssueSource.Unknown, ( localize(7028, "Don't know")), false));
722
+ sourceSelect.append(this.makeOption(IssueSource.Unknown, ( localize(7110, "Don't know")), false));
715
723
  }
716
724
  if (selected !== -1 && selected < sourceSelect.options.length) {
717
725
  sourceSelect.selectedIndex = selected;
@@ -721,7 +729,7 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
721
729
  hide(this.getElementById('problem-source-help-text'));
722
730
  }
723
731
  }
724
- renderBlocks() {
732
+ async renderBlocks() {
725
733
  const { issueType, fileOnExtension, fileOnMarketplace, selectedExtension } = this.issueReporterModel.getData();
726
734
  const blockContainer = this.getElementById('block-container');
727
735
  const systemBlock = this.window.document.querySelector('.block-system');
@@ -734,6 +742,7 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
734
742
  const descriptionTitle = this.getElementById('issue-description-label');
735
743
  const descriptionSubtitle = this.getElementById('issue-description-subtitle');
736
744
  const extensionSelector = this.getElementById('extension-selection');
745
+ const downloadExtensionDataLink = this.getElementById('extension-data-download');
737
746
  const titleTextArea = this.getElementById('issue-title-container');
738
747
  const descriptionTextArea = this.getElementById('description');
739
748
  const extensionDataTextArea = this.getElementById('extension-data');
@@ -746,22 +755,45 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
746
755
  hide(extensionSelector);
747
756
  hide(extensionDataTextArea);
748
757
  hide(extensionDataBlock);
758
+ hide(downloadExtensionDataLink);
749
759
  show(problemSource);
750
760
  show(titleTextArea);
751
761
  show(descriptionTextArea);
752
762
  if (fileOnExtension) {
753
763
  show(extensionSelector);
754
764
  }
765
+ const extensionData = this.issueReporterModel.getData().extensionData;
766
+ if (extensionData && extensionData.length > MAX_EXTENSION_DATA_LENGTH) {
767
+ show(downloadExtensionDataLink);
768
+ const date = ( new Date());
769
+ const formattedDate = date.toISOString().split('T')[0];
770
+ const formattedTime = date.toTimeString().split(' ')[0].replace(/:/g, '-');
771
+ const fileName = `extensionData_${formattedDate}_${formattedTime}.md`;
772
+ const handleLinkClick = async () => {
773
+ const downloadPath = await this.fileDialogService.showSaveDialog({
774
+ title: ( localize(7111, "Save Extension Data")),
775
+ availableFileSystems: [Schemas.file],
776
+ defaultUri: joinPath(await this.fileDialogService.defaultFilePath(Schemas.file), fileName),
777
+ });
778
+ if (downloadPath) {
779
+ await this.fileService.writeFile(downloadPath, VSBuffer.fromString(extensionData));
780
+ }
781
+ };
782
+ downloadExtensionDataLink.addEventListener('click', handleLinkClick);
783
+ this._register({
784
+ dispose: () => downloadExtensionDataLink.removeEventListener('click', handleLinkClick)
785
+ });
786
+ }
755
787
  if (selectedExtension && this.nonGitHubIssueUrl) {
756
788
  hide(titleTextArea);
757
789
  hide(descriptionTextArea);
758
- reset(descriptionTitle, ( localize(7029, "This extension handles issues outside of VS Code")));
790
+ reset(descriptionTitle, ( localize(7112, "This extension handles issues outside of VS Code")));
759
791
  reset(descriptionSubtitle, ( localize(
760
- 7030,
792
+ 7113,
761
793
  "The '{0}' extension prefers to use an external issue reporter. To be taken to that issue reporting experience, click the button below.",
762
794
  selectedExtension.displayName
763
795
  )));
764
- this.previewButton.label = ( localize(7031, "Open External Issue Reporter"));
796
+ this.previewButton.label = ( localize(7114, "Open External Issue Reporter"));
765
797
  return;
766
798
  }
767
799
  if (fileOnExtension && selectedExtension?.data) {
@@ -788,9 +820,9 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
788
820
  show(extensionsBlock);
789
821
  }
790
822
  }
791
- reset(descriptionTitle, ( localize(7032, "Steps to Reproduce")) + ' ', $('span.required-input', undefined, '*'));
823
+ reset(descriptionTitle, ( localize(7115, "Steps to Reproduce")) + ' ', $('span.required-input', undefined, '*'));
792
824
  reset(descriptionSubtitle, ( localize(
793
- 7033,
825
+ 7116,
794
826
  "Share the steps needed to reliably reproduce the problem. Please include actual and expected results. We support GitHub-flavored Markdown. You will be able to edit your issue and add screenshots when we preview it on GitHub."
795
827
  )));
796
828
  }
@@ -808,16 +840,16 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
808
840
  else if (!fileOnMarketplace) {
809
841
  show(extensionsBlock);
810
842
  }
811
- reset(descriptionTitle, ( localize(7032, "Steps to Reproduce")) + ' ', $('span.required-input', undefined, '*'));
843
+ reset(descriptionTitle, ( localize(7115, "Steps to Reproduce")) + ' ', $('span.required-input', undefined, '*'));
812
844
  reset(descriptionSubtitle, ( localize(
813
- 7034,
845
+ 7117,
814
846
  "When did this performance issue happen? Does it occur on startup or after a specific series of actions? We support GitHub-flavored Markdown. You will be able to edit your issue and add screenshots when we preview it on GitHub."
815
847
  )));
816
848
  }
817
849
  else if (issueType === IssueType.FeatureRequest) {
818
- reset(descriptionTitle, ( localize(7035, "Description")) + ' ', $('span.required-input', undefined, '*'));
850
+ reset(descriptionTitle, ( localize(7118, "Description")) + ' ', $('span.required-input', undefined, '*'));
819
851
  reset(descriptionSubtitle, ( localize(
820
- 7036,
852
+ 7119,
821
853
  "Please describe the feature you would like to see. We support GitHub-flavored Markdown. You will be able to edit your issue and add screenshots when we preview it on GitHub."
822
854
  )));
823
855
  }
@@ -951,7 +983,7 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
951
983
  throw ( new CancellationError());
952
984
  }
953
985
  return baseUrl + `&body=${encodeURIComponent(( localize(
954
- 7037,
986
+ 7120,
955
987
  "We have written the needed data into your clipboard because it was too large to send. Please paste."
956
988
  )))}`;
957
989
  }
@@ -1121,7 +1153,7 @@ let BaseIssueReporterService = class BaseIssueReporterService extends Disposable
1121
1153
  const target = this.window.document.querySelector('.block-extensions .block-info');
1122
1154
  if (target) {
1123
1155
  if (this.disableExtensions) {
1124
- reset(target, ( localize(7038, "Extensions are disabled")));
1156
+ reset(target, ( localize(7121, "Extensions are disabled")));
1125
1157
  return;
1126
1158
  }
1127
1159
  const themeExclusionStr = numThemeExtensions ? `\n(${numThemeExtensions} theme extensions excluded)` : '';
@@ -1167,7 +1199,9 @@ BaseIssueReporterService.__decorator = ( __decorate([
1167
1199
  ], BaseIssueReporterService.prototype, "searchDuplicates", null));
1168
1200
  BaseIssueReporterService = ( __decorate([
1169
1201
  ( __param(6, IIssueFormService)),
1170
- ( __param(7, IThemeService))
1202
+ ( __param(7, IThemeService)),
1203
+ ( __param(8, IFileService)),
1204
+ ( __param(9, IFileDialogService))
1171
1205
  ], BaseIssueReporterService));
1172
1206
  function hide(el) {
1173
1207
  el?.classList.add('hidden');
@@ -35,5 +35,5 @@ WebIssueContribution = ( __decorate([
35
35
  ], WebIssueContribution));
36
36
  ( Registry.as(Extensions$1.Workbench)).registerWorkbenchContribution(WebIssueContribution, LifecyclePhase.Restored);
37
37
  CommandsRegistry.registerCommand('_issues.getSystemStatus', (accessor) => {
38
- return localize(7039, "The --status argument is not yet supported in browsers.");
38
+ return localize(7122, "The --status argument is not yet supported in browsers.");
39
39
  });
@@ -5,10 +5,10 @@ import { ExtensionIdentifierSet } from "@codingame/monaco-vscode-api/vscode/vs/p
5
5
  import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
6
6
  import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
7
7
  import { IRectangle } from "@codingame/monaco-vscode-api/vscode/vs/platform/window/common/window";
8
- import { IssueReporterData } from "../common/issue.js";
9
- import { IIssueFormService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/issue/common/issue.service";
10
8
  import { IAuxiliaryWindowService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService.service";
11
9
  import { IHostService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/host/browser/host.service";
10
+ import { IssueReporterData } from "../common/issue.js";
11
+ import { IIssueFormService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/issue/common/issue.service";
12
12
  export interface IssuePassData {
13
13
  issueTitle: string;
14
14
  issueBody: string;
@@ -2,8 +2,8 @@
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { safeInnerHtml } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
4
  import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
+ import { isWindows, isLinux } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
5
6
  import Severity from '@codingame/monaco-vscode-api/vscode/vs/base/common/severity';
6
- import './media/issueReporter.css.js';
7
7
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
8
8
  import { MenuId } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
9
9
  import { IMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions.service';
@@ -13,11 +13,12 @@ import { ExtensionIdentifierSet, ExtensionIdentifier } from '@codingame/monaco-v
13
13
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
14
14
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
15
15
  import product from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/product';
16
- import BaseHtml from './issueReporterPage.js';
17
- import { IssueWebReporter } from './issueReporterService.js';
18
16
  import { AuxiliaryWindowMode } from '@codingame/monaco-vscode-89a82baf-8ded-5b2f-b8af-e5fbd72dc5ad-common/vscode/vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService';
19
17
  import { IAuxiliaryWindowService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService.service';
20
18
  import { IHostService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/host/browser/host.service';
19
+ import BaseHtml from './issueReporterPage.js';
20
+ import { IssueWebReporter } from './issueReporterService.js';
21
+ import './media/issueReporter.css.js';
21
22
 
22
23
  let IssueFormService = class IssueFormService {
23
24
  constructor(instantiationService, auxiliaryWindowService, menuService, contextKeyService, logService, dialogService, hostService) {
@@ -53,10 +54,11 @@ let IssueFormService = class IssueFormService {
53
54
  }
54
55
  const disposables = ( new DisposableStore());
55
56
  const auxiliaryWindow = disposables.add(await this.auxiliaryWindowService.open({ mode: AuxiliaryWindowMode.Normal, bounds: issueReporterBounds, nativeTitlebar: true, disableFullscreen: true }));
57
+ const platformClass = isWindows ? 'windows' : isLinux ? 'linux' : 'mac';
56
58
  if (auxiliaryWindow) {
57
59
  await auxiliaryWindow.whenStylesHaveLoaded;
58
60
  auxiliaryWindow.window.document.title = 'Issue Reporter';
59
- auxiliaryWindow.window.document.body.classList.add('issue-reporter-body');
61
+ auxiliaryWindow.window.document.body.classList.add('issue-reporter-body', 'monaco-workbench', platformClass);
60
62
  const div = document.createElement('div');
61
63
  div.classList.add('monaco-workbench');
62
64
  auxiliaryWindow.container.remove();
@@ -112,19 +114,19 @@ let IssueFormService = class IssueFormService {
112
114
  await this.dialogService.prompt({
113
115
  type: Severity.Warning,
114
116
  message: ( localize(
115
- 7040,
117
+ 7123,
116
118
  "Your input will not be saved. Are you sure you want to close this window?"
117
119
  )),
118
120
  buttons: [
119
121
  {
120
- label: ( localize(7041, "&&Yes")),
122
+ label: ( localize(7124, "&&Yes")),
121
123
  run: () => {
122
124
  this.closeReporter();
123
125
  this.issueReporterWindow = null;
124
126
  }
125
127
  },
126
128
  {
127
- label: ( localize(7042, "Cancel")),
129
+ label: ( localize(7125, "Cancel")),
128
130
  run: () => { }
129
131
  }
130
132
  ]
@@ -135,16 +137,16 @@ let IssueFormService = class IssueFormService {
135
137
  await this.dialogService.prompt({
136
138
  type: Severity.Warning,
137
139
  message: ( localize(
138
- 7043,
140
+ 7126,
139
141
  "There is too much data to send to GitHub directly. The data will be copied to the clipboard, please paste it into the GitHub issue page that is opened."
140
142
  )),
141
143
  buttons: [
142
144
  {
143
- label: ( localize(7044, "&&OK")),
145
+ label: ( localize(7127, "&&OK")),
144
146
  run: () => { result = true; }
145
147
  },
146
148
  {
147
- label: ( localize(7042, "Cancel")),
149
+ label: ( localize(7125, "Cancel")),
148
150
  run: () => { result = false; }
149
151
  }
150
152
  ]
@@ -2,56 +2,56 @@
2
2
  import { escape } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
3
3
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
4
 
5
- const sendSystemInfoLabel = escape(( localize(7045, "Include my system information")));
6
- const sendProcessInfoLabel = escape(( localize(7046, "Include my currently running processes")));
7
- const sendWorkspaceInfoLabel = escape(( localize(7047, "Include my workspace metadata")));
8
- const sendExtensionsLabel = escape(( localize(7048, "Include my enabled extensions")));
9
- const sendExperimentsLabel = escape(( localize(7049, "Include A/B experiment info")));
10
- const sendExtensionData = escape(( localize(7050, "Include additional extension info")));
5
+ const sendSystemInfoLabel = escape(( localize(7128, "Include my system information")));
6
+ const sendProcessInfoLabel = escape(( localize(7129, "Include my currently running processes")));
7
+ const sendWorkspaceInfoLabel = escape(( localize(7130, "Include my workspace metadata")));
8
+ const sendExtensionsLabel = escape(( localize(7131, "Include my enabled extensions")));
9
+ const sendExperimentsLabel = escape(( localize(7132, "Include A/B experiment info")));
10
+ const sendExtensionData = escape(( localize(7133, "Include additional extension info")));
11
11
  const reviewGuidanceLabel = ( localize(
12
- 7051,
12
+ 7134,
13
13
  'Before you report an issue here please <a href="https://github.com/microsoft/vscode/wiki/Submitting-Bugs-and-Suggestions" target="_blank">review the guidance we provide</a>.'
14
14
  ));
15
15
  var BaseHtml = () => `
16
16
  <div class="issue-reporter" id="issue-reporter">
17
- <div id="english" class="input-group hidden">${escape(( localize(7052, "Please complete the form in English.")))}</div>
17
+ <div id="english" class="input-group hidden">${escape(( localize(7135, "Please complete the form in English.")))}</div>
18
18
 
19
19
  <div id="review-guidance-help-text" class="input-group">${reviewGuidanceLabel}</div>
20
20
 
21
21
  <div class="section">
22
22
  <div class="input-group">
23
- <label class="inline-label" for="issue-type">${escape(( localize(7053, "This is a")))}</label>
23
+ <label class="inline-label" for="issue-type">${escape(( localize(7136, "This is a")))}</label>
24
24
  <select id="issue-type" class="inline-form-control">
25
25
  <!-- To be dynamically filled -->
26
26
  </select>
27
27
  </div>
28
28
 
29
29
  <div class="input-group" id="problem-source">
30
- <label class="inline-label" for="issue-source">${escape(( localize(7054, "For")))} <span class="required-input">*</span></label>
30
+ <label class="inline-label" for="issue-source">${escape(( localize(7137, "For")))} <span class="required-input">*</span></label>
31
31
  <select id="issue-source" class="inline-form-control" required>
32
32
  <!-- To be dynamically filled -->
33
33
  </select>
34
- <div id="issue-source-empty-error" class="validation-error hidden" role="alert">${escape(( localize(7055, "An issue source is required.")))}</div>
34
+ <div id="issue-source-empty-error" class="validation-error hidden" role="alert">${escape(( localize(7138, "An issue source is required.")))}</div>
35
35
  <div id="problem-source-help-text" class="instructions hidden">${escape(( localize(
36
- 7056,
36
+ 7139,
37
37
  "Try to reproduce the problem after {0}. If the problem only reproduces when extensions are active, it is likely an issue with an extension."
38
38
  )))
39
- .replace('{0}', () => `<span tabIndex=0 role="button" id="disableExtensions" class="workbenchCommand">${escape(( localize(7057, "disabling all extensions and reloading the window")))}</span>`)}
39
+ .replace('{0}', () => `<span tabIndex=0 role="button" id="disableExtensions" class="workbenchCommand">${escape(( localize(7140, "disabling all extensions and reloading the window")))}</span>`)}
40
40
  </div>
41
41
 
42
42
  <div id="extension-selection">
43
- <label class="inline-label" for="extension-selector">${escape(( localize(7058, "Extension")))} <span class="required-input">*</span></label>
43
+ <label class="inline-label" for="extension-selector">${escape(( localize(7141, "Extension")))} <span class="required-input">*</span></label>
44
44
  <select id="extension-selector" class="inline-form-control">
45
45
  <!-- To be dynamically filled -->
46
46
  </select>
47
47
  <div id="extension-selection-validation-error" class="validation-error hidden" role="alert">${escape(( localize(
48
- 7059,
48
+ 7142,
49
49
  "The issue reporter is unable to create issues for this extension. Please visit {0} to report an issue."
50
50
  )))
51
51
  .replace('{0}', () => `<span tabIndex=0 role="button" id="extensionBugsLink" class="workbenchCommand"><!-- To be dynamically filled --></span>`)}</div>
52
52
  <div id="extension-selection-validation-error-no-url" class="validation-error hidden" role="alert">
53
53
  ${escape(( localize(
54
- 7060,
54
+ 7143,
55
55
  "The issue reporter is unable to create issues for this extension, as it does not specify a URL for reporting issues. Please check the marketplace page of this extension to see if other instructions are available."
56
56
  )))}
57
57
  </div>
@@ -59,10 +59,10 @@ var BaseHtml = () => `
59
59
  </div>
60
60
 
61
61
  <div id="issue-title-container" class="input-group">
62
- <label class="inline-label" for="issue-title">${escape(( localize(7061, "Title")))} <span class="required-input">*</span></label>
63
- <input id="issue-title" type="text" class="inline-form-control" placeholder="${escape(( localize(7062, "Please enter a title.")))}" required>
64
- <div id="issue-title-empty-error" class="validation-error hidden" role="alert">${escape(( localize(7063, "A title is required.")))}</div>
65
- <div id="issue-title-length-validation-error" class="validation-error hidden" role="alert">${escape(( localize(7064, "The title is too long.")))}</div>
62
+ <label class="inline-label" for="issue-title">${escape(( localize(7144, "Title")))} <span class="required-input">*</span></label>
63
+ <input id="issue-title" type="text" class="inline-form-control" placeholder="${escape(( localize(7145, "Please enter a title.")))}" required>
64
+ <div id="issue-title-empty-error" class="validation-error hidden" role="alert">${escape(( localize(7146, "A title is required.")))}</div>
65
+ <div id="issue-title-length-validation-error" class="validation-error hidden" role="alert">${escape(( localize(7147, "The title is too long.")))}</div>
66
66
  <small id="similar-issues">
67
67
  <!-- To be dynamically filled -->
68
68
  </small>
@@ -78,10 +78,10 @@ var BaseHtml = () => `
78
78
  <!-- To be dynamically filled -->
79
79
  </div>
80
80
  <div class="block-info-text">
81
- <textarea name="description" id="description" placeholder="${escape(( localize(7065, "Please enter details.")))}" required></textarea>
81
+ <textarea name="description" id="description" placeholder="${escape(( localize(7148, "Please enter details.")))}" required></textarea>
82
82
  </div>
83
- <div id="description-empty-error" class="validation-error hidden" role="alert">${escape(( localize(7066, "A description is required.")))}</div>
84
- <div id="description-short-error" class="validation-error hidden" role="alert">${escape(( localize(7067, "Please provide a longer description.")))}</div>
83
+ <div id="description-empty-error" class="validation-error hidden" role="alert">${escape(( localize(7149, "A description is required.")))}</div>
84
+ <div id="description-short-error" class="validation-error hidden" role="alert">${escape(( localize(7150, "Please provide a longer description.")))}</div>
85
85
  </div>
86
86
 
87
87
  <div class="system-info" id="block-container">
@@ -90,9 +90,10 @@ var BaseHtml = () => `
90
90
  <label class="extension-caption" id="extension-caption" for="includeExtensionData">
91
91
  ${sendExtensionData}
92
92
  <span id="ext-loading" hidden></span>
93
- <span class="ext-parens" hidden>(</span><a href="#" class="showInfo" id="extension-id">${escape(( localize(7068, "show")))}</a><span class="ext-parens" hidden>)</span>
93
+ <span class="ext-parens" hidden>(</span><a href="#" class="showInfo" id="extension-id">${escape(( localize(7151, "show")))}</a><span class="ext-parens" hidden>)</span>
94
+ <a id="extension-data-download">${escape(( localize(7152, "Download Extension Data")))}</a>
94
95
  </label>
95
- <pre class="block-info" id="extension-data" placeholder="${escape(( localize(7069, "Extension does not have additional data to include.")))}" style="white-space: pre-wrap; user-select: text;">
96
+ <pre class="block-info" id="extension-data" placeholder="${escape(( localize(7153, "Extension does not have additional data to include.")))}" style="white-space: pre-wrap; user-select: text;">
96
97
  <!-- To be dynamically filled -->
97
98
  </pre>
98
99
  </div>
@@ -101,7 +102,7 @@ var BaseHtml = () => `
101
102
  <input class="sendData" aria-label="${sendSystemInfoLabel}" type="checkbox" id="includeSystemInfo" checked/>
102
103
  <label class="caption" for="includeSystemInfo">
103
104
  ${sendSystemInfoLabel}
104
- (<a href="#" class="showInfo">${escape(( localize(7068, "show")))}</a>)
105
+ (<a href="#" class="showInfo">${escape(( localize(7151, "show")))}</a>)
105
106
  </label>
106
107
  <div class="block-info hidden" style="user-select: text;">
107
108
  <!-- To be dynamically filled -->
@@ -111,7 +112,7 @@ var BaseHtml = () => `
111
112
  <input class="sendData" aria-label="${sendProcessInfoLabel}" type="checkbox" id="includeProcessInfo" checked/>
112
113
  <label class="caption" for="includeProcessInfo">
113
114
  ${sendProcessInfoLabel}
114
- (<a href="#" class="showInfo">${escape(( localize(7068, "show")))}</a>)
115
+ (<a href="#" class="showInfo">${escape(( localize(7151, "show")))}</a>)
115
116
  </label>
116
117
  <pre class="block-info hidden" style="user-select: text;">
117
118
  <code>
@@ -123,7 +124,7 @@ var BaseHtml = () => `
123
124
  <input class="sendData" aria-label="${sendWorkspaceInfoLabel}" type="checkbox" id="includeWorkspaceInfo" checked/>
124
125
  <label class="caption" for="includeWorkspaceInfo">
125
126
  ${sendWorkspaceInfoLabel}
126
- (<a href="#" class="showInfo">${escape(( localize(7068, "show")))}</a>)
127
+ (<a href="#" class="showInfo">${escape(( localize(7151, "show")))}</a>)
127
128
  </label>
128
129
  <pre id="systemInfo" class="block-info hidden" style="user-select: text;">
129
130
  <code>
@@ -135,7 +136,7 @@ var BaseHtml = () => `
135
136
  <input class="sendData" aria-label="${sendExtensionsLabel}" type="checkbox" id="includeExtensions" checked/>
136
137
  <label class="caption" for="includeExtensions">
137
138
  ${sendExtensionsLabel}
138
- (<a href="#" class="showInfo">${escape(( localize(7068, "show")))}</a>)
139
+ (<a href="#" class="showInfo">${escape(( localize(7151, "show")))}</a>)
139
140
  </label>
140
141
  <div id="systemInfo" class="block-info hidden" style="user-select: text;">
141
142
  <!-- To be dynamically filled -->
@@ -145,7 +146,7 @@ var BaseHtml = () => `
145
146
  <input class="sendData" aria-label="${sendExperimentsLabel}" type="checkbox" id="includeExperiments" checked/>
146
147
  <label class="caption" for="includeExperiments">
147
148
  ${sendExperimentsLabel}
148
- (<a href="#" class="showInfo">${escape(( localize(7068, "show")))}</a>)
149
+ (<a href="#" class="showInfo">${escape(( localize(7151, "show")))}</a>)
149
150
  </label>
150
151
  <pre class="block-info hidden" style="user-select: text;">
151
152
  <!-- To be dynamically filled -->
@@ -1,13 +1,15 @@
1
1
  import { IProductConfiguration } from "@codingame/monaco-vscode-api/vscode/vs/base/common/product";
2
+ import { IFileDialogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service";
3
+ import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
2
4
  import { IThemeService } from "@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service";
3
- import { BaseIssueReporterService } from "./baseIssueReporterService.js";
4
5
  import { IssueReporterData } from "../common/issue.js";
5
6
  import { IIssueFormService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/issue/common/issue.service";
7
+ import { BaseIssueReporterService } from "./baseIssueReporterService.js";
6
8
  export declare class IssueWebReporter extends BaseIssueReporterService {
7
9
  constructor(disableExtensions: boolean, data: IssueReporterData, os: {
8
10
  type: string;
9
11
  arch: string;
10
12
  release: string;
11
- }, product: IProductConfiguration, window: Window, issueFormService: IIssueFormService, themeService: IThemeService);
13
+ }, product: IProductConfiguration, window: Window, issueFormService: IIssueFormService, themeService: IThemeService, fileService: IFileService, fileDialogService: IFileDialogService);
12
14
  setEventHandlers(): void;
13
15
  }
@@ -1,13 +1,15 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
+ import { IFileDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
5
+ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
4
6
  import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
5
- import { BaseIssueReporterService } from './baseIssueReporterService.js';
6
7
  import { IIssueFormService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/issue/common/issue.service';
8
+ import { BaseIssueReporterService } from './baseIssueReporterService.js';
7
9
 
8
10
  let IssueWebReporter = class IssueWebReporter extends BaseIssueReporterService {
9
- constructor(disableExtensions, data, os, product, window, issueFormService, themeService) {
10
- super(disableExtensions, data, os, product, window, true, issueFormService, themeService);
11
+ constructor(disableExtensions, data, os, product, window, issueFormService, themeService, fileService, fileDialogService) {
12
+ super(disableExtensions, data, os, product, window, true, issueFormService, themeService, fileService, fileDialogService);
11
13
  const target = this.window.document.querySelector('.block-system .block-info');
12
14
  const webInfo = this.window.navigator.userAgent;
13
15
  if (webInfo) {
@@ -24,7 +26,7 @@ let IssueWebReporter = class IssueWebReporter extends BaseIssueReporterService {
24
26
  this.issueReporterModel.update({ issueType: issueType });
25
27
  const descriptionTextArea = this.getElementById('issue-title');
26
28
  if (descriptionTextArea) {
27
- descriptionTextArea.placeholder = ( localize(7070, "Please enter a title"));
29
+ descriptionTextArea.placeholder = ( localize(7154, "Please enter a title"));
28
30
  }
29
31
  this.updatePreviewButtonState();
30
32
  this.setSourceOptions();
@@ -34,7 +36,9 @@ let IssueWebReporter = class IssueWebReporter extends BaseIssueReporterService {
34
36
  };
35
37
  IssueWebReporter = ( __decorate([
36
38
  ( __param(5, IIssueFormService)),
37
- ( __param(6, IThemeService))
39
+ ( __param(6, IThemeService)),
40
+ ( __param(7, IFileService)),
41
+ ( __param(8, IFileDialogService))
38
42
  ], IssueWebReporter));
39
43
 
40
44
  export { IssueWebReporter };
@@ -85,13 +85,13 @@ let TroubleshootIssueService = class TroubleshootIssueService extends Disposable
85
85
  throw ( new Error('invalid state'));
86
86
  }
87
87
  const res = await this.dialogService.confirm({
88
- message: ( localize(7071, "Troubleshoot Issue")),
88
+ message: ( localize(7155, "Troubleshoot Issue")),
89
89
  detail: ( localize(
90
- 7072,
90
+ 7156,
91
91
  "Issue troubleshooting is a process to help you identify the cause for an issue. The cause for an issue can be a misconfiguration, due to an extension, or be {0} itself.\n\nDuring the process the window reloads repeatedly. Each time you must confirm if you are still seeing the issue.",
92
92
  this.productService.nameLong
93
93
  )),
94
- primaryButton: ( localize(7073, "&&Troubleshoot Issue")),
94
+ primaryButton: ( localize(7157, "&&Troubleshoot Issue")),
95
95
  custom: true
96
96
  });
97
97
  if (!res.confirmed) {
@@ -135,7 +135,7 @@ let TroubleshootIssueService = class TroubleshootIssueService extends Disposable
135
135
  return;
136
136
  }
137
137
  const result = await this.askToReproduceIssue(( localize(
138
- 7074,
138
+ 7158,
139
139
  "Issue troubleshooting is active and has temporarily disabled all installed extensions. Check if you can still reproduce the problem and proceed by selecting from these options."
140
140
  )));
141
141
  if (result === 'good') {
@@ -153,7 +153,7 @@ let TroubleshootIssueService = class TroubleshootIssueService extends Disposable
153
153
  await this.userDataProfileManagementService.createAndEnterTransientProfile();
154
154
  this.updateState(this.state);
155
155
  const result = await this.askToReproduceIssue(( localize(
156
- 7075,
156
+ 7159,
157
157
  "Issue troubleshooting is active and has temporarily reset your configurations to defaults. Check if you can still reproduce the problem and proceed by selecting from these options."
158
158
  )));
159
159
  if (result === 'stop') {
@@ -161,13 +161,13 @@ let TroubleshootIssueService = class TroubleshootIssueService extends Disposable
161
161
  }
162
162
  if (result === 'good') {
163
163
  await this.askToReportIssue(( localize(
164
- 7076,
164
+ 7160,
165
165
  "Issue troubleshooting has identified that the issue is caused by your configurations. Please report the issue by exporting your configurations using \"Export Profile\" command and share the file in the issue report."
166
166
  )));
167
167
  }
168
168
  if (result === 'bad') {
169
169
  await this.askToReportIssue(( localize(
170
- 7077,
170
+ 7161,
171
171
  "Issue troubleshooting has identified that the issue is with {0}.",
172
172
  this.productService.nameLong
173
173
  )));
@@ -182,15 +182,15 @@ let TroubleshootIssueService = class TroubleshootIssueService extends Disposable
182
182
  askToReproduceIssue(message) {
183
183
  return (new Promise((c, e) => {
184
184
  const goodPrompt = {
185
- label: ( localize(7078, "I Can't Reproduce")),
185
+ label: ( localize(7162, "I Can't Reproduce")),
186
186
  run: () => c('good')
187
187
  };
188
188
  const badPrompt = {
189
- label: ( localize(7079, "I Can Reproduce")),
189
+ label: ( localize(7163, "I Can Reproduce")),
190
190
  run: () => c('bad')
191
191
  };
192
192
  const stop = {
193
- label: ( localize(7080, "Stop")),
193
+ label: ( localize(7164, "Stop")),
194
194
  run: () => c('stop')
195
195
  };
196
196
  this.notificationHandle = this.notificationService.prompt(Severity.Info, message, [goodPrompt, badPrompt, stop], { sticky: true, priority: NotificationPriority.URGENT });
@@ -203,9 +203,9 @@ let TroubleshootIssueService = class TroubleshootIssueService extends Disposable
203
203
  if (res === 'good') {
204
204
  await this.dialogService.prompt({
205
205
  type: Severity.Info,
206
- message: ( localize(7071, "Troubleshoot Issue")),
206
+ message: ( localize(7155, "Troubleshoot Issue")),
207
207
  detail: ( localize(
208
- 7081,
208
+ 7165,
209
209
  "This likely means that the issue has been addressed already and will be available in an upcoming release. You can safely use {0} insiders until the new stable version is available.",
210
210
  this.productService.nameLong
211
211
  )),
@@ -228,11 +228,11 @@ let TroubleshootIssueService = class TroubleshootIssueService extends Disposable
228
228
  async askToReproduceIssueWithInsiders() {
229
229
  const confirmRes = await this.dialogService.confirm({
230
230
  type: 'info',
231
- message: ( localize(7071, "Troubleshoot Issue")),
232
- primaryButton: ( localize(7082, "Download {0} Insiders", this.productService.nameLong)),
233
- cancelButton: ( localize(7083, "Report Issue Anyway")),
231
+ message: ( localize(7155, "Troubleshoot Issue")),
232
+ primaryButton: ( localize(7166, "Download {0} Insiders", this.productService.nameLong)),
233
+ cancelButton: ( localize(7167, "Report Issue Anyway")),
234
234
  detail: ( localize(
235
- 7084,
235
+ 7168,
236
236
  "Please try to download and reproduce the issue in {0} insiders.",
237
237
  this.productService.nameLong
238
238
  )),
@@ -249,20 +249,20 @@ let TroubleshootIssueService = class TroubleshootIssueService extends Disposable
249
249
  }
250
250
  const res = await this.dialogService.prompt({
251
251
  type: 'info',
252
- message: ( localize(7071, "Troubleshoot Issue")),
252
+ message: ( localize(7155, "Troubleshoot Issue")),
253
253
  buttons: [{
254
- label: ( localize(7085, "I can't reproduce")),
254
+ label: ( localize(7169, "I can't reproduce")),
255
255
  run: () => 'good'
256
256
  }, {
257
- label: ( localize(7086, "I can reproduce")),
257
+ label: ( localize(7170, "I can reproduce")),
258
258
  run: () => 'bad'
259
259
  }],
260
260
  cancelButton: {
261
- label: ( localize(7087, "Stop")),
261
+ label: ( localize(7171, "Stop")),
262
262
  run: () => 'stop'
263
263
  },
264
264
  detail: ( localize(
265
- 7088,
265
+ 7172,
266
266
  "Please try to reproduce the issue in {0} insiders and confirm if the issue exists there.",
267
267
  this.productService.nameLong
268
268
  )),
@@ -337,7 +337,7 @@ registerAction2(class TroubleshootIssueAction extends Action2 {
337
337
  constructor() {
338
338
  super({
339
339
  id: 'workbench.action.troubleshootIssue.start',
340
- title: ( localize2(7089, 'Troubleshoot Issue...')),
340
+ title: ( localize2(7173, 'Troubleshoot Issue...')),
341
341
  category: Categories.Help,
342
342
  f1: true,
343
343
  precondition: ( ContextKeyExpr.and(( IssueTroubleshootUi.ctxIsTroubleshootActive.negate()), ( RemoteNameContext.isEqualTo('')), ( IsWebContext.negate()))),
@@ -351,7 +351,7 @@ registerAction2(class extends Action2 {
351
351
  constructor() {
352
352
  super({
353
353
  id: 'workbench.action.troubleshootIssue.stop',
354
- title: ( localize2(7090, 'Stop Troubleshoot Issue')),
354
+ title: ( localize2(7174, 'Stop Troubleshoot Issue')),
355
355
  category: Categories.Help,
356
356
  f1: true,
357
357
  precondition: IssueTroubleshootUi.ctxIsTroubleshootActive
@@ -75,7 +75,7 @@ let BaseIssueContribution = class BaseIssueContribution extends Disposable {
75
75
  }));
76
76
  const reportIssue = {
77
77
  id: OpenIssueReporterActionId,
78
- title: ( localize2(7091, "Report Issue...")),
78
+ title: ( localize2(7175, "Report Issue...")),
79
79
  category: Categories.Help
80
80
  };
81
81
  this._register(MenuRegistry.appendMenuItem(MenuId.CommandPalette, { command: reportIssue }));
@@ -83,7 +83,7 @@ let BaseIssueContribution = class BaseIssueContribution extends Disposable {
83
83
  group: '3_feedback',
84
84
  command: {
85
85
  id: OpenIssueReporterActionId,
86
- title: ( localize(7092, "Report &&Issue"))
86
+ title: ( localize(7176, "Report &&Issue"))
87
87
  },
88
88
  order: 3
89
89
  }));