@theia/core 1.76.0-next.7 → 1.76.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.
Files changed (179) hide show
  1. package/README.md +8 -8
  2. package/i18n/nls.cs.json +187 -49
  3. package/i18n/nls.de.json +187 -49
  4. package/i18n/nls.es.json +187 -49
  5. package/i18n/nls.fr.json +187 -49
  6. package/i18n/nls.hu.json +187 -49
  7. package/i18n/nls.it.json +187 -49
  8. package/i18n/nls.ja.json +187 -49
  9. package/i18n/nls.json +187 -49
  10. package/i18n/nls.ko.json +187 -49
  11. package/i18n/nls.pl.json +187 -49
  12. package/i18n/nls.pt-br.json +187 -49
  13. package/i18n/nls.ru.json +187 -49
  14. package/i18n/nls.tr.json +187 -49
  15. package/i18n/nls.zh-cn.json +187 -49
  16. package/i18n/nls.zh-tw.json +187 -49
  17. package/lib/browser/catalog.json +175 -95
  18. package/lib/browser/dialogs.d.ts +2 -0
  19. package/lib/browser/dialogs.d.ts.map +1 -1
  20. package/lib/browser/dialogs.js +9 -5
  21. package/lib/browser/dialogs.js.map +1 -1
  22. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  23. package/lib/browser/frontend-application-module.js +3 -0
  24. package/lib/browser/frontend-application-module.js.map +1 -1
  25. package/lib/browser/index.d.ts +1 -0
  26. package/lib/browser/index.d.ts.map +1 -1
  27. package/lib/browser/index.js +1 -0
  28. package/lib/browser/index.js.map +1 -1
  29. package/lib/browser/resource-context-key.d.ts +25 -0
  30. package/lib/browser/resource-context-key.d.ts.map +1 -1
  31. package/lib/browser/resource-context-key.js +41 -16
  32. package/lib/browser/resource-context-key.js.map +1 -1
  33. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +7 -5
  34. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -1
  35. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +13 -12
  36. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
  37. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts +11 -1
  38. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
  39. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +38 -3
  40. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
  41. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +2 -1
  42. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
  43. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +4 -2
  44. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
  45. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js +123 -2
  46. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js.map +1 -1
  47. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts +12 -4
  48. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts.map +1 -1
  49. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js +2 -2
  50. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js.map +1 -1
  51. package/lib/browser/tree/tree-widget.d.ts +20 -2
  52. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  53. package/lib/browser/tree/tree-widget.js +31 -13
  54. package/lib/browser/tree/tree-widget.js.map +1 -1
  55. package/lib/browser/tree/tree-widget.spec.d.ts +2 -0
  56. package/lib/browser/tree/tree-widget.spec.d.ts.map +1 -0
  57. package/lib/browser/tree/tree-widget.spec.js +192 -0
  58. package/lib/browser/tree/tree-widget.spec.js.map +1 -0
  59. package/lib/browser/view-container.d.ts.map +1 -1
  60. package/lib/browser/view-container.js +2 -2
  61. package/lib/browser/view-container.js.map +1 -1
  62. package/lib/browser/widget-context-key-contribution.d.ts +17 -0
  63. package/lib/browser/widget-context-key-contribution.d.ts.map +1 -0
  64. package/lib/browser/widget-context-key-contribution.js +20 -0
  65. package/lib/browser/widget-context-key-contribution.js.map +1 -0
  66. package/lib/browser/window/browser-window-module.d.ts.map +1 -1
  67. package/lib/browser/window/browser-window-module.js +3 -0
  68. package/lib/browser/window/browser-window-module.js.map +1 -1
  69. package/lib/browser/window/window-launch-args.d.ts +29 -0
  70. package/lib/browser/window/window-launch-args.d.ts.map +1 -0
  71. package/lib/browser/window/window-launch-args.js +39 -0
  72. package/lib/browser/window/window-launch-args.js.map +1 -0
  73. package/lib/browser-only/frontend-only-application-module.d.ts.map +1 -1
  74. package/lib/browser-only/frontend-only-application-module.js +5 -2
  75. package/lib/browser-only/frontend-only-application-module.js.map +1 -1
  76. package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts +3 -1
  77. package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts.map +1 -1
  78. package/lib/browser-only/messaging/frontend-only-service-connection-provider.js +8 -7
  79. package/lib/browser-only/messaging/frontend-only-service-connection-provider.js.map +1 -1
  80. package/lib/common/index.d.ts +2 -0
  81. package/lib/common/index.d.ts.map +1 -1
  82. package/lib/common/index.js +2 -0
  83. package/lib/common/index.js.map +1 -1
  84. package/lib/common/launch-arguments.d.ts +32 -0
  85. package/lib/common/launch-arguments.d.ts.map +1 -0
  86. package/lib/common/launch-arguments.js +44 -0
  87. package/lib/common/launch-arguments.js.map +1 -0
  88. package/lib/common/remote-cli-args-contribution.d.ts +22 -0
  89. package/lib/common/remote-cli-args-contribution.d.ts.map +1 -0
  90. package/lib/common/remote-cli-args-contribution.js +20 -0
  91. package/lib/common/remote-cli-args-contribution.js.map +1 -0
  92. package/lib/electron-browser/messaging/electron-ipc-connection-source.d.ts +6 -3
  93. package/lib/electron-browser/messaging/electron-ipc-connection-source.d.ts.map +1 -1
  94. package/lib/electron-browser/messaging/electron-ipc-connection-source.js +4 -3
  95. package/lib/electron-browser/messaging/electron-ipc-connection-source.js.map +1 -1
  96. package/lib/electron-browser/preload.d.ts.map +1 -1
  97. package/lib/electron-browser/preload.js +3 -1
  98. package/lib/electron-browser/preload.js.map +1 -1
  99. package/lib/electron-browser/window/electron-window-launch-args.d.ts +14 -0
  100. package/lib/electron-browser/window/electron-window-launch-args.d.ts.map +1 -0
  101. package/lib/electron-browser/window/electron-window-launch-args.js +41 -0
  102. package/lib/electron-browser/window/electron-window-launch-args.js.map +1 -0
  103. package/lib/electron-browser/window/electron-window-launch-args.spec.d.ts +2 -0
  104. package/lib/electron-browser/window/electron-window-launch-args.spec.d.ts.map +1 -0
  105. package/lib/electron-browser/window/electron-window-launch-args.spec.js +43 -0
  106. package/lib/electron-browser/window/electron-window-launch-args.spec.js.map +1 -0
  107. package/lib/electron-browser/window/electron-window-module.d.ts.map +1 -1
  108. package/lib/electron-browser/window/electron-window-module.js +7 -0
  109. package/lib/electron-browser/window/electron-window-module.js.map +1 -1
  110. package/lib/electron-common/electron-api.d.ts +10 -0
  111. package/lib/electron-common/electron-api.d.ts.map +1 -1
  112. package/lib/electron-common/electron-api.js.map +1 -1
  113. package/lib/electron-main/electron-api-main.d.ts.map +1 -1
  114. package/lib/electron-main/electron-api-main.js +7 -1
  115. package/lib/electron-main/electron-api-main.js.map +1 -1
  116. package/lib/electron-main/electron-main-application-module.d.ts.map +1 -1
  117. package/lib/electron-main/electron-main-application-module.js +2 -0
  118. package/lib/electron-main/electron-main-application-module.js.map +1 -1
  119. package/lib/electron-main/electron-main-application.d.ts +57 -2
  120. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  121. package/lib/electron-main/electron-main-application.js +68 -8
  122. package/lib/electron-main/electron-main-application.js.map +1 -1
  123. package/lib/electron-main/launch-args-store.d.ts +45 -0
  124. package/lib/electron-main/launch-args-store.d.ts.map +1 -0
  125. package/lib/electron-main/launch-args-store.js +76 -0
  126. package/lib/electron-main/launch-args-store.js.map +1 -0
  127. package/lib/electron-main/launch-args-store.spec.d.ts +2 -0
  128. package/lib/electron-main/launch-args-store.spec.d.ts.map +1 -0
  129. package/lib/electron-main/launch-args-store.spec.js +53 -0
  130. package/lib/electron-main/launch-args-store.spec.js.map +1 -0
  131. package/lib/electron-main/launch-argv-parser.d.ts +19 -0
  132. package/lib/electron-main/launch-argv-parser.d.ts.map +1 -0
  133. package/lib/electron-main/launch-argv-parser.js +71 -0
  134. package/lib/electron-main/launch-argv-parser.js.map +1 -0
  135. package/lib/electron-main/launch-argv-parser.spec.d.ts +2 -0
  136. package/lib/electron-main/launch-argv-parser.spec.d.ts.map +1 -0
  137. package/lib/electron-main/launch-argv-parser.spec.js +62 -0
  138. package/lib/electron-main/launch-argv-parser.spec.js.map +1 -0
  139. package/lib/electron-main/theia-electron-window.d.ts +2 -0
  140. package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
  141. package/lib/electron-main/theia-electron-window.js +12 -0
  142. package/lib/electron-main/theia-electron-window.js.map +1 -1
  143. package/package.json +11 -11
  144. package/src/browser/dialogs.ts +10 -5
  145. package/src/browser/frontend-application-module.ts +5 -1
  146. package/src/browser/index.ts +1 -0
  147. package/src/browser/resource-context-key.ts +61 -16
  148. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.tsx +13 -12
  149. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +36 -4
  150. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.ts +150 -3
  151. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +6 -3
  152. package/src/browser/shell/tab-bar-toolbar/tab-toolbar-item.tsx +13 -5
  153. package/src/browser/style/tree.css +7 -0
  154. package/src/browser/tree/tree-widget.spec.tsx +245 -0
  155. package/src/browser/tree/tree-widget.tsx +36 -12
  156. package/src/browser/view-container.ts +3 -3
  157. package/src/browser/widget-context-key-contribution.ts +34 -0
  158. package/src/browser/window/browser-window-module.ts +3 -0
  159. package/src/browser/window/window-launch-args.ts +53 -0
  160. package/src/browser-only/frontend-only-application-module.ts +5 -2
  161. package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +3 -1
  162. package/src/common/i18n/nls.metadata.json +5246 -1106
  163. package/src/common/index.ts +2 -0
  164. package/src/common/launch-arguments.ts +61 -0
  165. package/src/common/remote-cli-args-contribution.ts +39 -0
  166. package/src/electron-browser/messaging/electron-ipc-connection-source.ts +6 -3
  167. package/src/electron-browser/preload.ts +3 -1
  168. package/src/electron-browser/window/electron-window-launch-args.spec.ts +45 -0
  169. package/src/electron-browser/window/electron-window-launch-args.ts +38 -0
  170. package/src/electron-browser/window/electron-window-module.ts +7 -0
  171. package/src/electron-common/electron-api.ts +10 -0
  172. package/src/electron-main/electron-api-main.ts +7 -1
  173. package/src/electron-main/electron-main-application-module.ts +2 -0
  174. package/src/electron-main/electron-main-application.ts +101 -8
  175. package/src/electron-main/launch-args-store.spec.ts +59 -0
  176. package/src/electron-main/launch-args-store.ts +73 -0
  177. package/src/electron-main/launch-argv-parser.spec.ts +70 -0
  178. package/src/electron-main/launch-argv-parser.ts +66 -0
  179. package/src/electron-main/theia-electron-window.ts +9 -0
package/i18n/nls.json CHANGED
@@ -72,6 +72,9 @@
72
72
  "title": "Agent Settings"
73
73
  },
74
74
  "anthropic": {
75
+ "allowEnvApiKey": {
76
+ "description": "Allow Theia to use an Anthropic API key found in the environment (`ANTHROPIC_API_KEY`). You are asked to confirm this once before the key is used; set it back to `false` to revoke consent."
77
+ },
75
78
  "apiKey": {
76
79
  "description": "Enter an API Key of your official Anthropic Account. **Please note:** By using this preference the Anthropic API key will be stored in clear text on the machine running Theia. Use the environment variable `ANTHROPIC_API_KEY` to set the key securely."
77
80
  },
@@ -91,13 +94,16 @@
91
94
  "enableStreaming": {
92
95
  "title": "Indicates whether the streaming API shall be used. `true` by default."
93
96
  },
97
+ "headers": {
98
+ "title": "Additional HTTP headers sent with every request to the endpoint"
99
+ },
94
100
  "id": {
95
101
  "title": "A unique identifier which is used in the UI to identify the custom model"
96
102
  },
97
103
  "maxRetries": {
98
104
  "title": "Maximum number of retries when a request fails. 3 by default"
99
105
  },
100
- "mdDescription": "Integrate custom models compatible with the Anthropic API. The required attributes are `model` and `url`. \n Optionally, you can \n - specify a unique `id` to identify the custom model in the UI. If none is given `model` will be used as `id`. \n - provide an `apiKey` to access the API served at the given url. Use `true` to indicate the use of the global anthropic API key. \n - specify `enableStreaming: false` to indicate that streaming shall not be used. \n - specify `useCaching: false` to indicate that prompt caching shall not be used. \n - specify `maxRetries: <number>` to indicate the maximum number of retries when a request fails. 3 by default. \n Reasoning capabilities and the maximum output token limit are derived from the endpoint's `/v1/models` response.",
106
+ "mdDescription": "Integrate custom models compatible with the Anthropic API. The required attributes are `model` and `url`. \n Optionally, you can \n - specify a unique `id` to identify the custom model in the UI. If none is given `model` will be used as `id`. \n - provide an `apiKey` to access the API served at the given url. Use `true` to indicate the use of the global anthropic API key. \n - specify `enableStreaming: false` to indicate that streaming shall not be used. \n - specify `useCaching: false` to indicate that prompt caching shall not be used. \n - specify `maxRetries: <number>` to indicate the maximum number of retries when a request fails. 3 by default. \n - specify `headers` to send additional HTTP headers with every request to the endpoint, e.g. headers required by a gateway in front of the API. \n Reasoning capabilities and the maximum output token limit are derived from the endpoint's `/v1/models` response.",
101
107
  "modelId": {
102
108
  "title": "Model ID"
103
109
  },
@@ -111,8 +117,16 @@
111
117
  "customProvider": {
112
118
  "label": "{0} (Custom)"
113
119
  },
114
- "models": {
115
- "description": "Official Anthropic models to use"
120
+ "discovery": {
121
+ "cached": "Showing cached models; last refresh failed: {0}",
122
+ "consentPrompt": "An Anthropic API key was found in the environment (ANTHROPIC_API_KEY). Allow Theia to use it to discover and call Anthropic models?",
123
+ "consentRequired": "An Anthropic API key was found in the environment. Confirm its use to discover models.",
124
+ "noKey": "No Anthropic API key set. Add a key to discover models.",
125
+ "overridden": "The model list is configured manually. Clear the model overrides to discover the models from the provider again.",
126
+ "useEnvKey": "Use key"
127
+ },
128
+ "modelOverrides": {
129
+ "description": "Override the models discovered from Anthropic. When empty (default), the available models are discovered from the provider. Set explicit model ids to use exactly those instead; discovery is then not used at all."
116
130
  }
117
131
  },
118
132
  "chat": {
@@ -306,7 +320,8 @@
306
320
  "status": {
307
321
  "canceled": "canceled",
308
322
  "generating": "generating...",
309
- "starting": "starting..."
323
+ "starting": "starting...",
324
+ "waitingForInput": "waiting for input"
310
325
  }
311
326
  },
312
327
  "deleteChangeSet": "Delete Change Set",
@@ -320,11 +335,14 @@
320
335
  "failedToLoadChats": "Failed to load chat sessions",
321
336
  "failedToRestoreSession": "Failed to restore chat session",
322
337
  "failedToRetry": "Failed to retry message",
338
+ "find": "Find in Chat",
339
+ "findHide": "Hide Find in Chat",
323
340
  "focusInput": "Focus Chat Input",
324
341
  "focusResponse": "Focus Chat Response",
325
342
  "functions": "Functions",
326
343
  "functionsDescription": "Built-in functions provided by {0} extensions",
327
344
  "genericCapabilities": "Generic Capabilities",
345
+ "manageModels": "Manage models…",
328
346
  "mcpFunctionsDescription": "Model Context Protocol (MCP) functions from connected servers",
329
347
  "mermaid-rendering": {
330
348
  "copySource": "Copy Source",
@@ -340,7 +358,6 @@
340
358
  "modelUnavailable": "unavailable",
341
359
  "noChatAgentsAvailable": "No chat agents available.",
342
360
  "noMatchingCapabilities": "No matching capabilities",
343
- "openDiff": "Open Diff",
344
361
  "openImage": "Open image",
345
362
  "openOriginalFile": "Open Original File",
346
363
  "performThisTask": "Perform this task.",
@@ -476,7 +493,6 @@
476
493
  "findMatchingFiles": "Find files matching the glob pattern \"{0}\" in the current directory",
477
494
  "findMatchingFilesWithPath": "Find files matching the glob pattern \"{0}\" within {1}",
478
495
  "finding": "Finding",
479
- "from": "From",
480
496
  "globPattern": "glob pattern",
481
497
  "grepOptions": {
482
498
  "caseInsensitive": "case-insensitive",
@@ -533,7 +549,6 @@
533
549
  "startingLine": "Starting Line",
534
550
  "timeout": "Timeout",
535
551
  "timeoutInMs": "Timeout: {0}ms",
536
- "to": "To",
537
552
  "todoList": "Todo List",
538
553
  "todoPriority": {
539
554
  "high": "high",
@@ -646,23 +661,32 @@
646
661
  "signIn": "Sign in to GitHub Copilot",
647
662
  "signOut": "Sign out of GitHub Copilot"
648
663
  },
664
+ "discovery": {
665
+ "disabled": "The GitHub Copilot provider is disabled. Enable it to discover models.",
666
+ "overridden": "The model list is configured manually. Clear the model overrides to discover the models from GitHub Copilot again.",
667
+ "signedOut": "Not signed in to GitHub Copilot. Sign in to discover the models it offers."
668
+ },
649
669
  "enabled": {
650
- "mdDescription": "Enable the GitHub Copilot provider. When enabled, a status bar entry appears for authentication and available models are discovered from your Copilot subscription."
670
+ "mdDescription": "Enable the GitHub Copilot provider. When enabled, a status bar entry appears for authentication and available models are discovered from your Copilot subscription.\n\nRequests are routed through the official GitHub Copilot CLI, which runs as a background process on the machine hosting the backend. It is given the credentials of your Copilot sign-in and nothing else, so a token in the environment or an existing sign-in of the GitHub CLI is not used."
651
671
  },
652
672
  "enterpriseUrl": {
653
- "mdDescription": "GitHub Enterprise domain for Copilot API (e.g., `github.mycompany.com`). Leave empty for GitHub.com."
673
+ "mdDescription": "GitHub Enterprise domain to authenticate and send requests against (e.g., `github.mycompany.com`). Leave empty for GitHub.com."
674
+ },
675
+ "enterpriseUrlChanged": "The GitHub Copilot domain changed. Sign in again for it to take effect.",
676
+ "executablePath": {
677
+ "mdDescription": "Location of the GitHub Copilot CLI executable on the machine hosting the backend. When empty (default), the CLI is searched for in the installation of the application, on the `PATH` and in the global `npm` directory. Set this when the CLI is installed somewhere else.\n\nThe CLI is not shipped with the application, install it with `npm install -g @github/copilot`."
654
678
  },
655
679
  "modelOverrides": {
656
680
  "mdDescription": "Override the automatically discovered GitHub Copilot models. When empty (default), available models are discovered from your Copilot subscription. Set explicit model IDs to override auto-discovery."
657
681
  },
682
+ "signInAgain": "GitHub Copilot now signs in through the GitHub Copilot CLI. Your previous sign-in could not be carried over and has been removed, please sign in again to use Copilot models.",
658
683
  "signOut": {
659
684
  "confirmMessage": "Are you sure you want to sign out of GitHub Copilot?"
660
685
  },
661
686
  "statusBar": {
662
687
  "signedIn": "Signed in to GitHub Copilot as {0}. Click to sign out.",
663
688
  "signedOut": "Not signed in to GitHub Copilot. Click to sign in."
664
- },
665
- "tokenMigration": "Your GitHub Copilot session used an outdated authentication method and has been cleared. Please sign in again to access all available models."
689
+ }
666
690
  },
667
691
  "core": {
668
692
  "agentConfiguration": {
@@ -760,12 +784,19 @@
760
784
  "discardCustomPrompt": {
761
785
  "tooltip": "Discard Customizations"
762
786
  },
787
+ "favoriteModels": {
788
+ "mdDescription": "Models the AI chat input's model picker shows in addition to the newest ones of each provider, as fully qualified ids (e.g. `anthropic/claude-opus-5`). This is for keeping an older or release-pinned model at hand. Check a model on its provider's page in the AI Configuration view to add it.",
789
+ "title": "Favorite Models"
790
+ },
763
791
  "fileVariable": {
764
792
  "description": "Resolves the contents of a file",
765
793
  "uri": {
766
794
  "description": "The URI of the requested file."
767
795
  }
768
796
  },
797
+ "hiddenModels": {
798
+ "mdDescription": "Models the AI chat input's model picker does not show even though it would by default, as fully qualified ids (e.g. `google/gemini-flash-lite-latest`). Only the models shown without being listed as a favorite end up here, i.e. the newest ones of a provider. Uncheck a model on its provider's page in the AI Configuration view to add it."
799
+ },
769
800
  "languageModelRenderer": {
770
801
  "alias": "[alias] {0}",
771
802
  "purposeTitle": "Purpose: {0}",
@@ -911,7 +942,6 @@
911
942
  "dotRelativePath": "Short reference to the workspace-relative path of the currently opened file ('currentRelativeFilePath')."
912
943
  },
913
944
  "variantSet": {
914
- "templateLabel": "Template",
915
945
  "unavailableVariant": "{0} (unavailable)",
916
946
  "variantCount": "{0} variants",
917
947
  "variantCountSingular": "1 variant"
@@ -931,14 +961,25 @@
931
961
  }
932
962
  },
933
963
  "google": {
964
+ "allowEnvApiKey": {
965
+ "description": "Allow Theia to use a Google AI (Gemini) API key found in the environment (`GOOGLE_API_KEY` / `GEMINI_API_KEY`). You are asked to confirm this once before the key is used; set it back to `false` to revoke consent."
966
+ },
934
967
  "apiKey": {
935
968
  "description": "Enter an API Key of your official Google AI (Gemini) Account. **Please note:** By using this preference the GOOGLE AI API key will be stored in clear text on the machine running Theia. Use the environment variable `GOOGLE_API_KEY` to set the key securely."
936
969
  },
970
+ "discovery": {
971
+ "cached": "Showing cached models; last refresh failed: {0}",
972
+ "consentPrompt": "A Google AI API key was found in the environment (GOOGLE_API_KEY / GEMINI_API_KEY). Allow Theia to use it to discover and call Gemini models?",
973
+ "consentRequired": "A Google AI API key was found in the environment. Confirm its use to discover models.",
974
+ "noKey": "No Google AI API key set. Add a key to discover models.",
975
+ "overridden": "The model list is configured manually. Clear the model overrides to discover the models from the provider again.",
976
+ "useEnvKey": "Use key"
977
+ },
937
978
  "maxRetriesOnErrors": {
938
979
  "description": "Maximum number of retries in case of errors. If smaller than 1, then the retry logic is disabled"
939
980
  },
940
- "models": {
941
- "description": "Official Google Gemini models to use"
981
+ "modelOverrides": {
982
+ "description": "Override the models discovered from Google Gemini. When empty (default), the available models are discovered from the provider. Set explicit model ids to use exactly those instead; discovery is then not used at all."
942
983
  },
943
984
  "retryDelayOnOtherErrors": {
944
985
  "description": "Delay in seconds between retries in case of other errors (sometimes the Google GenAI reports errors such as incomplete JSON syntax returned from the model or 500 Internal Server Error). Setting this to -1 prevents retries in these cases. Otherwise a retry happens either immediately (if set to 0) or after this delay in seconds (if set to a positive number)."
@@ -1053,6 +1094,7 @@
1053
1094
  "pageTypeLabel": "Page"
1054
1095
  },
1055
1096
  "allowAllMode": {
1097
+ "hideForThisSession": "Hide for this session",
1056
1098
  "stripTooltip": "AI tool calls run without confirmation in this session. Only enable in environments you trust.",
1057
1099
  "stripTooltipFooter": "Set via --session-preference. Restart without the flag to restore your saved settings.",
1058
1100
  "title": "Theia AI Allow-All Mode"
@@ -1111,7 +1153,6 @@
1111
1153
  "startNewChat": "Keep chats short and focused. [Start a new chat]({0}) for a new task or [start a new chat with a summary of this one]({1})."
1112
1154
  }
1113
1155
  },
1114
- "collapseSession": "Collapse {0}",
1115
1156
  "commandAgent": {
1116
1157
  "commandCallback": {
1117
1158
  "confirmAction": "Got it",
@@ -1131,19 +1172,16 @@
1131
1172
  }
1132
1173
  },
1133
1174
  "configurationState": "Configuration issues",
1134
- "configureAgent": {
1135
- "header": "Configure a default agent"
1136
- },
1137
1175
  "continueAnyway": "Continue Anyway",
1138
1176
  "createSkillAgent": {
1139
1177
  "mode": {
1140
1178
  "edit": "Default Mode"
1141
1179
  }
1142
1180
  },
1181
+ "defaultChatAgentSet": "The default chat agent is now {0}.",
1143
1182
  "enableAI": {
1144
1183
  "mdDescription": "This setting allows you to access the AI capabilities of Theia IDE. \n Please be aware that AI features may generate continuous requests to the language models (LLMs) you provide access to. This might incur costs that you need to monitor closely. By enabling this option, you acknowledge these risks. \n **Please note! The settings below in this section will only take effect\n once the main feature setting is enabled. After enabling the feature, you need to configure at least one LLM provider below. Also see [the documentation](https://theia-ide.org/docs/user_ai/)**."
1145
1184
  },
1146
- "expandSession": "Expand {0}",
1147
1185
  "exploreAgent": {
1148
1186
  "description": "A codebase exploration assistant that extracts and distills information from the codebase. Reports facts about what exists, provides code excerpts, and describes observed patterns."
1149
1187
  },
@@ -1201,16 +1239,36 @@
1201
1239
  },
1202
1240
  "model-selection-description": "Choose which Large Language Models (LLMs) are used by each AI agent in the [AI Configuration View]({0}).",
1203
1241
  "modelsConfiguration": {
1242
+ "awaitingConsent": "Awaiting consent",
1243
+ "defaultModel": "One of the newest models of this provider, which the AI chat input's model picker shows unless it is hidden here",
1204
1244
  "description": "Configure language-model providers and the models available to agents.",
1245
+ "discovery": "Model Discovery",
1246
+ "fetching": "Fetching…",
1247
+ "filterModels": "Filter models",
1248
+ "hideModel": "Hide this model from the AI chat input's model picker",
1249
+ "modelNotReady": "Not ready",
1205
1250
  "modelSettings": "Model Settings",
1251
+ "noKey": "No API key",
1252
+ "noModels": "No models discovered yet.",
1206
1253
  "noProviders": "No language-model providers are installed.",
1207
- "providers": "Providers"
1208
- },
1209
- "moreAgentsAvailable": {
1210
- "header": "More agents are available"
1254
+ "providers": "Providers",
1255
+ "ready": "Ready",
1256
+ "refresh": "Refresh the model list",
1257
+ "refreshUnavailable": "Nothing to refresh until the provider has a credential",
1258
+ "released": "released {0}",
1259
+ "resetShown": "Reset to defaults",
1260
+ "resetShownUnavailable": "Already at the defaults",
1261
+ "showAllModels": "Show all discovered models",
1262
+ "showCheckedModels": "Show only the models the AI chat input's model picker shows",
1263
+ "showModel": "Show this model in the AI chat input's model picker",
1264
+ "shownExplanation": "{0} of {1} shown in the AI chat input's model picker",
1265
+ "updated": "Updated {0}"
1266
+ },
1267
+ "noDefaultAgent": {
1268
+ "header": "No default agent"
1211
1269
  },
1212
- "noRecommendedAgents": "No recommended agents are available.",
1213
1270
  "openAiConfiguration": "Open AI Configuration",
1271
+ "openGettingStartedWalkthrough": "Get Started with AI",
1214
1272
  "orchestrator": {
1215
1273
  "error": {
1216
1274
  "noAgents": "No chat agent available to handle request. Please check your configuration whether any are enabled."
@@ -1234,8 +1292,7 @@
1234
1292
  "name": "GH PR Info"
1235
1293
  },
1236
1294
  "localCheckout": {
1237
- "description": "Checks out the pull request locally and protects existing worktree changes.",
1238
- "name": "Checkout"
1295
+ "description": "Checks out the pull request locally and protects existing worktree changes."
1239
1296
  },
1240
1297
  "localValidation": {
1241
1298
  "description": "Runs local install, build, lint, test, or comparable validation tasks for the pull request.",
@@ -1292,6 +1349,7 @@
1292
1349
  "toolConfirmation": "Per-tool confirmation overrides: {0}",
1293
1350
  "toolConfirmationGeneric": "Per-tool confirmation overrides set"
1294
1351
  },
1352
+ "setDefaultChatAgent": "Set Default Chat Agent",
1295
1353
  "shellExecutionCapability": {
1296
1354
  "description": "Allows the agent to run arbitrary shell commands on the host system. The agent can then delegate to execute scripts that are not available as tasks, query system information, and perform operations for which no dedicated tool exists.",
1297
1355
  "name": "Shell Execution"
@@ -1315,9 +1373,6 @@
1315
1373
  "slashCommandsGroupDescription": "Prompt fragments you invoke by typing /name in chat, available to one or more agents.",
1316
1374
  "slashCommandsSectionHeader": "Slash Commands"
1317
1375
  },
1318
- "toolConfirmationInfo": {
1319
- "header": "Tool confirmation"
1320
- },
1321
1376
  "toolConfirmationOverrides": {
1322
1377
  "stripTooltip": "One or more AI tools are auto-approved for this session via command-line flags.",
1323
1378
  "title": "AI Tool Confirmation Overrides"
@@ -1380,7 +1435,6 @@
1380
1435
  "filterPlaceholder": "Filter variables by name or description",
1381
1436
  "noMatches": "No variables match \"{0}\".",
1382
1437
  "noVariables": "No variables are available.",
1383
- "openAgent": "Open agent {0}",
1384
1438
  "optional": "optional",
1385
1439
  "pageSubtitle": "Values you can reference with {0}name in a prompt. They are resolved and inserted at request time.",
1386
1440
  "plainGroup": "Plain Variables",
@@ -1388,7 +1442,40 @@
1388
1442
  "required": "required",
1389
1443
  "usedByAgents": "Used by Agents"
1390
1444
  },
1391
- "waitingForInput": "Waiting for your input"
1445
+ "waitingForInput": "Waiting for your input",
1446
+ "walkthrough": {
1447
+ "aiSupport": {
1448
+ "description": "\n{0} comes with AI support: chat with specialized agents about your project, let them change code and run tasks, complete code as you type and get help in the terminal.\n\nThese features are disabled by default, so that you can opt in at your own discretion.\n\nOnce enabled, they may generate continuous requests to the language models you provide access to. This might incur costs that you need to monitor closely.\n\n[Read the documentation]({1}).\n\nWe welcome your feedback, contributions and sponsorship! Visit the [GitHub project]({2}) to support the ongoing development. Thank you for being part of our community!\n\nAll of this is built on Theia AI, the framework for AI-powered tools and IDEs, published as a stable release. [Read the framework documentation]({3}).\n",
1449
+ "title": "AI support in {0}"
1450
+ },
1451
+ "chooseAgent": {
1452
+ "intro": "\nEvery chat request goes to an agent, and one of them answers whenever you do not name one yourself.\n\n**Set your default agent:**\n",
1453
+ "outro": "\nYou can also [choose the default agent]({0}) in the settings, and address another one for a single message by starting it with *@AgentName*.\nThe [Agents]({1}) page lists them all.\n",
1454
+ "title": "Choose your default agent"
1455
+ },
1456
+ "connectModel": {
1457
+ "description": "\nAdd an API key for a hosted provider:\n\n- [OpenAI]({0})\n- [Anthropic]({1})\n- [Google]({2})\n\nPrefer to stay local or use another service? Ollama, llamafile and any OpenAI-compatible endpoint can be set up in the [Models]({3}) page.\n\nSome agents bring their own model, for example Claude Code, and work without a provider.\n",
1458
+ "title": "Connect a language model"
1459
+ },
1460
+ "description": "Set up the AI features of {0} and learn how to work with them.",
1461
+ "enableAi": {
1462
+ "description": "\nNothing is sent anywhere until you switch the AI features on, and you can switch them off again at any time.\n\n[Open the AI Configuration]({0}) and enable them there.\n",
1463
+ "title": "Turn on the AI features"
1464
+ },
1465
+ "firstQuestion": {
1466
+ "description": "\n[Open the AI Chat]({0}) and ask something about your project.\n\nTwo things make the answers a lot better:\n\n- *@AgentName* picks the agent for this message, for example *@Coder*.\n- *#* attaches context, for example *#file* or *#selectedText*. The paperclip button next to the input does the same.\n\nThe chat remembers your sessions, so you can pick a conversation up later.\n",
1467
+ "title": "Ask your first question"
1468
+ },
1469
+ "goFurther": {
1470
+ "description": "\nThe chat is only the beginning. AI also completes code as you type and assists in the terminal with *Ctrl+I*.\n\n- [Prompts and skills]({0}): read and adapt the instructions the agents work with.\n- [MCP servers]({1}): add tools beyond the ones {3} ships with.\n- [Token usage]({2}): see what your requests consume.\n- [Switch Perspective]({5}) (experimental): the *AI First* layout moves the chat into the main area, with the explorer and source control on the right.\n\nThe AI History view, where available, shows what was actually sent to the model.\n\nThere is more in [the documentation]({4}) - and your feedback is always welcome.\n",
1471
+ "title": "Go further"
1472
+ },
1473
+ "title": "Get started with AI",
1474
+ "toolConfirmation": {
1475
+ "description": "\nAgents act on your workspace through tools: they read files, run terminal commands or edit code.\n\nEvery tool call asks for your confirmation first. In the [Tools]({0}) page you can change that default or pre-approve the tools you trust.\n\nAI features stay off entirely while a workspace is not trusted. [Manage workspace trust]({1}) to decide per project.\n",
1476
+ "title": "Stay in control of what agents do"
1477
+ }
1478
+ }
1392
1479
  },
1393
1480
  "llamaFile": {
1394
1481
  "prefs": {
@@ -1434,6 +1521,7 @@
1434
1521
  "label": "MCP: Get MCP OAuth Redirect URL"
1435
1522
  },
1436
1523
  "info": {
1524
+ "noToolsAvailable": "No tools available.",
1437
1525
  "oauthRedirectUrl": "MCP OAuth redirect URL: {0}",
1438
1526
  "serverSignedIn": "Signed in to MCP server \"{0}\".",
1439
1527
  "serverSignedOut": "Signed out from MCP server \"{0}\".",
@@ -1609,6 +1697,7 @@
1609
1697
  "serverUrlPlaceholder": "e.g., https://mcp.example.com",
1610
1698
  "serverUrlRequired": "Server URL is required for remote servers"
1611
1699
  },
1700
+ "noServersConfigured": "No MCP servers configured",
1612
1701
  "oauth": "OAuth",
1613
1702
  "oauthAuthorizationServer": "Authorization Server",
1614
1703
  "oauthClientId": "OAuth Client ID",
@@ -1636,6 +1725,9 @@
1636
1725
  "typeRemoteOAuth": "Remote (OAuth)"
1637
1726
  },
1638
1727
  "openai": {
1728
+ "allowEnvApiKey": {
1729
+ "description": "Allow Theia to use an OpenAI API key found in the environment (`OPENAI_API_KEY`). You are asked to confirm this once before the key is used; set it back to `false` to revoke consent."
1730
+ },
1639
1731
  "apiKey": {
1640
1732
  "mdDescription": "Enter an API Key of your official OpenAI Account. **Please note:** By using this preference the Open AI API key will be stored in clear text on the machine running Theia. Use the environment variable `OPENAI_API_KEY` to set the key securely."
1641
1733
  },
@@ -1664,10 +1756,13 @@
1664
1756
  "enableStreaming": {
1665
1757
  "title": "Indicates whether the streaming API shall be used. `true` by default."
1666
1758
  },
1759
+ "headers": {
1760
+ "title": "Additional HTTP headers sent with every request to the endpoint"
1761
+ },
1667
1762
  "id": {
1668
1763
  "title": "A unique identifier which is used in the UI to identify the custom model"
1669
1764
  },
1670
- "mdDescription": "Integrate custom models compatible with the OpenAI API, for example via `vllm`. The required attributes are `model` and `url`. \n Optionally, you can \n - specify a unique `id` to identify the custom model in the UI. If none is given `model` will be used as `id`. \n - provide an `apiKey` to access the API served at the given url. Use `true` to indicate the use of the global OpenAI API key. \n - provide an `apiVersion` to access the API served at the given url in Azure. Use `true` to indicate the use of the global OpenAI API version. \n - provide a `deployment` name for your Azure deployment. \n - set `developerMessageSettings` to one of `user`, `system`, `developer`, `mergeWithFollowingUserMessage`, or `skip` to control how the developer message is included (where `user`, `system`, and `developer` will be used as a role, `mergeWithFollowingUserMessage` will prefix the following user message with the system message or convert the system message to user message if the next message is not a user message. `skip` will just remove the system message). Defaulting to `developer`. \n - specify `supportsStructuredOutput: false` to indicate that structured output shall not be used. \n - specify `enableStreaming: false` to indicate that streaming shall not be used. \n - specify `useResponseApi: true` to use the newer OpenAI Response API instead of the Chat Completion API (requires compatible endpoint). \n - specify `reasoningSupport` to opt in to the chat reasoning selector. Provide an object with `supportedLevels` (e.g. `[\"off\", \"low\", \"medium\", \"high\", \"auto\"]`) and an optional `defaultLevel`. \n Refer to [our documentation](https://theia-ide.org/docs/user_ai/#openai-compatible-models-eg-via-vllm) for more information.",
1765
+ "mdDescription": "Integrate custom models compatible with the OpenAI API, for example via `vllm`. The required attributes are `model` and `url`. \n Optionally, you can \n - specify a unique `id` to identify the custom model in the UI. If none is given `model` will be used as `id`. \n - provide an `apiKey` to access the API served at the given url. Use `true` to indicate the use of the global OpenAI API key. \n - provide an `apiVersion` to access the API served at the given url in Azure. Use `true` to indicate the use of the global OpenAI API version. \n - provide a `deployment` name for your Azure deployment. \n - set `developerMessageSettings` to one of `user`, `system`, `developer`, `mergeWithFollowingUserMessage`, or `skip` to control how the developer message is included (where `user`, `system`, and `developer` will be used as a role, `mergeWithFollowingUserMessage` will prefix the following user message with the system message or convert the system message to user message if the next message is not a user message. `skip` will just remove the system message). Defaulting to `developer`. \n - specify `supportsStructuredOutput: false` to indicate that structured output shall not be used. \n - specify `enableStreaming: false` to indicate that streaming shall not be used. \n - specify `useResponseApi: true` to use the newer OpenAI Response API instead of the Chat Completion API (requires compatible endpoint). \n - specify `reasoningSupport` to opt in to the chat reasoning selector. Provide an object with `supportedLevels` (e.g. `[\"off\", \"low\", \"medium\", \"high\", \"auto\"]`) and an optional `defaultLevel`. \n - specify `headers` to send additional HTTP headers with every request to the endpoint, e.g. headers required by a gateway in front of the API. \n Refer to [our documentation](https://theia-ide.org/docs/user_ai/#openai-compatible-models-eg-via-vllm) for more information.",
1671
1766
  "modelId": {
1672
1767
  "title": "Model ID"
1673
1768
  },
@@ -1687,8 +1782,16 @@
1687
1782
  "customProvider": {
1688
1783
  "label": "{0} (Custom)"
1689
1784
  },
1690
- "models": {
1691
- "description": "Official OpenAI models to use"
1785
+ "discovery": {
1786
+ "cached": "Showing cached models; last refresh failed: {0}",
1787
+ "consentPrompt": "An OpenAI API key was found in the environment (OPENAI_API_KEY). Allow Theia to use it to discover and call OpenAI models?",
1788
+ "consentRequired": "An OpenAI API key was found in the environment. Confirm its use to discover models.",
1789
+ "noKey": "No OpenAI API key set. Add a key to discover models.",
1790
+ "overridden": "The model list is configured manually. Clear the model overrides to discover the models from the provider again.",
1791
+ "useEnvKey": "Use key"
1792
+ },
1793
+ "modelOverrides": {
1794
+ "description": "Override the models discovered from OpenAI. When empty (default), the available models are discovered from the provider. Set explicit model ids to use exactly those instead; discovery is then not used at all."
1692
1795
  },
1693
1796
  "useResponseApi": {
1694
1797
  "mdDescription": "Use the newer OpenAI Response API instead of the Chat Completion API for official OpenAI models. This setting only applies to official OpenAI models - custom providers must configure this individually."
@@ -1936,6 +2039,26 @@
1936
2039
  "codeReview": {
1937
2040
  "description": "Delegates to code-reviewer agent after each implementation. Blocks next steps until review passes."
1938
2041
  },
2042
+ "commit-message": {
2043
+ "agent-disabled-tooltip": "The Commit Message agent is disabled. Enable it in the AI Configuration view.",
2044
+ "cancel-tooltip": "Cancel commit-message generation",
2045
+ "empty": "The model returned an empty commit message.",
2046
+ "failed": "Failed to generate commit message: {0}",
2047
+ "generate-from-staged": "Generate Commit Message from Staged Changes",
2048
+ "no-changes": "There are no staged changes to generate a commit message from.",
2049
+ "no-repository": "No source-control repository is selected.",
2050
+ "replace-prompt": "The commit message field is not empty. Replace its content with the generated message?",
2051
+ "replace-title": "Replace Commit Message",
2052
+ "staged-tooltip": "Generate commit message from staged changes"
2053
+ },
2054
+ "commitMessageAgent": {
2055
+ "description": "Generates git commit messages from the staged changes in the workspace repository. Invoked from the SCM commit-message input via the AI sparkle button.",
2056
+ "vars": {
2057
+ "changes": {
2058
+ "description": "The unified git diff of the staged changes the commit message is generated from."
2059
+ }
2060
+ }
2061
+ },
1939
2062
  "fixGhTicketCommand": {
1940
2063
  "argumentHint": "<ticket-number>",
1941
2064
  "description": "Analyze a GitHub ticket and implement the solution"
@@ -2004,6 +2127,7 @@
2004
2127
  "updateTooltip": "Update from {0} to {1}"
2005
2128
  },
2006
2129
  "autoUpdate": {
2130
+ "aiSettings": "AI Settings",
2007
2131
  "ask": "Notify when an update is available for an installed skill, MCP server or Agent Plugin.",
2008
2132
  "changeLater": "You can change this later in {0}.",
2009
2133
  "configureDefault": "Configure the default in {0}.",
@@ -2040,9 +2164,7 @@
2040
2164
  "oneSkipped": "Component \"{0}\" skipped: {1}"
2041
2165
  },
2042
2166
  "dialog": {
2043
- "contains": "Contains",
2044
2167
  "endorsedBy": "Endorsed by",
2045
- "from": "From",
2046
2168
  "install": {
2047
2169
  "title": "Install Agent Plugin \"{0}\""
2048
2170
  },
@@ -2104,10 +2226,6 @@
2104
2226
  "serverUnknownField": "The server configuration declares the field \"{0}\", which is not permitted for its transport type.",
2105
2227
  "serverUnknownType": "The server configuration declares the unknown transport type \"{0}\".",
2106
2228
  "serverUnsupportedTransport": "The MCP transport \"{0}\" is not supported.",
2107
- "stat": {
2108
- "oneServer": "1 MCP server",
2109
- "servers": "{0} MCP servers"
2110
- },
2111
2229
  "uninstalled": "Uninstalled Agent Plugin \"{0}\".",
2112
2230
  "unknownManifestField": "Ignoring the unknown \"plugin.json\" field \"{0}\".",
2113
2231
  "unlinked": "Unlinked Agent Plugin \"{0}\".",
@@ -2244,7 +2362,6 @@
2244
2362
  "collaborate": "Collaborate",
2245
2363
  "collaboration": "Collaboration",
2246
2364
  "collaborationWorkspace": "Collaboration Workspace",
2247
- "connected": "Connected",
2248
2365
  "connectedSession": "Connected to a collaboration session",
2249
2366
  "copiedInvitation": "Invitation code copied to clipboard.",
2250
2367
  "copyAgain": "Copy Again",
@@ -2471,6 +2588,25 @@
2471
2588
  "userSettingsDetail": "Apply to all workspaces",
2472
2589
  "workspaceSettingsDetail": "Apply to current workspace only"
2473
2590
  },
2591
+ "external-api": {
2592
+ "delivery": {
2593
+ "description": "Controls whether and how the external HTTP API is served.",
2594
+ "off": "Do not serve the external API.",
2595
+ "samePort": "Serve the external API on the same port as the backend.",
2596
+ "samePortLabel": "Same port as backend",
2597
+ "separatePort": "Serve the external API on a dedicated port, configured via \"externalApi.port\".",
2598
+ "separatePortLabel": "Separate port"
2599
+ },
2600
+ "hostname": {
2601
+ "description": "Hostname or IP address the external HTTP API server binds to. Use \"0.0.0.0\" to accept remote connections. A name such as \"localhost\" is bound as it resolves, so clients using the other loopback address may not reach the server; use \"127.0.0.1\" or \"::1\" to pin one. Only used when \"externalApi.delivery\" is set to \"separatePort\"."
2602
+ },
2603
+ "port": {
2604
+ "description": "Port on which the external HTTP API is served. Only used when \"externalApi.delivery\" is set to \"separatePort\"."
2605
+ },
2606
+ "token": {
2607
+ "description": "Bearer token required to access protected external API endpoints (\"Authorization: Bearer <token>\"). When empty, the external API is served without verification."
2608
+ }
2609
+ },
2474
2610
  "external-terminal": {
2475
2611
  "cwd": "Select current working directory for new external terminal"
2476
2612
  },
@@ -2514,10 +2650,6 @@
2514
2650
  "uploadedOutOf": "Uploaded {0} out of {1}"
2515
2651
  },
2516
2652
  "getting-started": {
2517
- "ai": {
2518
- "header": "AI Support in {0} is available!",
2519
- "openAIChatView": "Open the AI Chat View now to learn how to start!"
2520
- },
2521
2653
  "apiComparator": "{0} API Compatibility",
2522
2654
  "markStepUndone": "Mark Undone",
2523
2655
  "newExtension": "Building a New Extension",
@@ -2736,9 +2868,6 @@
2736
2868
  },
2737
2869
  "toolbar": "Toolbar"
2738
2870
  },
2739
- "preview": {
2740
- "openByDefault": "Open the preview instead of the editor by default."
2741
- },
2742
2871
  "property-view": {
2743
2872
  "lastModified": "Last modified",
2744
2873
  "noProperties": "No properties available.",
@@ -2749,6 +2878,16 @@
2749
2878
  "dev-container": {
2750
2879
  "attach": "Attach to Running Container",
2751
2880
  "attachError": "Failed to attach to container: {0}",
2881
+ "attachScreen": {
2882
+ "errorHeader": "Failed to attach to container",
2883
+ "firstStartNote": "The first start for a container can take a minute or two. Later starts are much faster.",
2884
+ "locating": "Locating container {0}...",
2885
+ "preparing": "Preparing to attach...",
2886
+ "preparingWorkspace": "Preparing workspace...",
2887
+ "starting": "Starting the application inside the container...",
2888
+ "title": "Attaching to container",
2889
+ "titleNamed": "Attaching to {0}"
2890
+ },
2752
2891
  "attachWarning": "Attaching to a container will execute code inside it. Only attach to containers whose origin you trust.",
2753
2892
  "attachWarningTitle": "Attach to Container",
2754
2893
  "attaching": "Attaching to container",
@@ -2799,7 +2938,6 @@
2799
2938
  "amendHeadCommit": "HEAD Commit",
2800
2939
  "amendLastCommit": "Amend last commit",
2801
2940
  "changeRepository": "Change Repository...",
2802
- "copyCommitHash": "Copy Commit Hash",
2803
2941
  "dirtyDiff": {
2804
2942
  "close": "Close Change Peek View"
2805
2943
  },