@dsh-workbench/shared 0.3.11 → 1.0.0-beta.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/LICENSE +21 -0
- package/README.md +97 -0
- package/dist/api/blocker-table.d.ts +3 -3
- package/dist/api/blocker-table.js +47 -23
- package/dist/api/dsh.d.ts +1 -1
- package/dist/api/workbench-client.js +2 -1
- package/dist/components/Activity.css +0 -1
- package/dist/components/ApprovalDetail.css +1 -2
- package/dist/components/ApprovalDetail.d.ts +1 -1
- package/dist/components/ApprovalPlan.css +0 -1
- package/dist/components/Card.css +0 -1
- package/dist/components/Card.d.ts +1 -1
- package/dist/components/CardBoundary.d.ts +1 -1
- package/dist/components/CardHead.css +0 -1
- package/dist/components/CardHead.d.ts +1 -1
- package/dist/components/ChoiceGroup.css +1 -2
- package/dist/components/ConfirmBar.d.ts +1 -1
- package/dist/components/ConfirmBar.js +1 -1
- package/dist/components/Form.css +1 -1
- package/dist/components/FormActions.js +1 -1
- package/dist/components/LongTaskRow.css +1 -2
- package/dist/components/LongTaskRow.d.ts +1 -1
- package/dist/components/LongTaskRow.js +1 -1
- package/dist/components/Note.css +0 -1
- package/dist/components/ResourceStates.css +0 -1
- package/dist/components/SettingsSection.css +0 -1
- package/dist/components/Spinner.css +0 -1
- package/dist/components/Stack.css +0 -1
- package/dist/components/StateBlock.css +0 -1
- package/dist/components/board-module.d.ts +3 -3
- package/dist/components/icons.d.ts +1 -1
- package/dist/components/icons.js +11 -4
- package/dist/config/constants.d.ts +2 -2
- package/dist/config/constants.js +2 -2
- package/dist/contract/adapters.d.ts +10 -0
- package/dist/contract/cli.d.ts +3 -0
- package/dist/contract/data.d.ts +126 -0
- package/dist/{api → contract}/facts.d.ts +12 -3
- package/dist/{api → contract}/facts.js +19 -1
- package/dist/contract/needs.d.ts +132 -0
- package/dist/contract/needs.js +232 -0
- package/dist/contract/plugin-source.d.ts +1 -0
- package/dist/contract/protocol/bundle-install.d.ts +136 -0
- package/dist/contract/protocol/bundle-install.js +12 -0
- package/dist/contract/protocol/config-sync.d.ts +55 -0
- package/dist/contract/protocol/config-sync.js +2 -0
- package/dist/contract/protocol/diy.d.ts +4 -0
- package/dist/contract/protocol/diy.js +4 -0
- package/dist/contract/protocol/dsh-plugins.d.ts +11 -0
- package/dist/contract/protocol/dsh-plugins.js +1 -0
- package/dist/contract/protocol/long-tasks.d.ts +13 -0
- package/dist/contract/protocol/long-tasks.js +1 -0
- package/dist/contract/protocol/market-index.d.ts +195 -0
- package/dist/contract/protocol/market-index.js +7 -0
- package/dist/contract/protocol/platform.d.ts +44 -0
- package/dist/contract/protocol/platform.js +1 -0
- package/dist/contract/protocol/preflight-wake.d.ts +7 -0
- package/dist/contract/protocol/preflight-wake.js +1 -0
- package/dist/contract/protocol/profile-create.d.ts +30 -0
- package/dist/contract/protocol/profile-create.js +2 -0
- package/dist/contract/protocol/sidebar-edition.d.ts +14 -0
- package/dist/contract/protocol/sidebar-edition.js +2 -0
- package/dist/contract/protocol/unit-manifests.d.ts +6 -0
- package/dist/contract/protocol/unit-manifests.js +1 -0
- package/dist/contract/unit-board.js +1 -0
- package/dist/contract/unit-capability.d.ts +34 -0
- package/dist/contract/unit-capability.js +1 -0
- package/dist/{host → contract}/unit-declaration.d.ts +7 -5
- package/dist/{api → contract}/unit-declaration.js +19 -13
- package/dist/contract/unit.d.ts +57 -0
- package/dist/contract/unit.js +24 -0
- package/dist/contract/workbench-contract.d.ts +15 -0
- package/dist/contract/workbench-contract.js +1 -0
- package/dist/host/adapter-set.d.ts +26 -0
- package/dist/host/adapter-set.js +243 -0
- package/dist/host/adapter-types.d.ts +79 -0
- package/dist/host/adapter-types.js +23 -0
- package/dist/host/adapters.d.ts +22 -0
- package/dist/host/adapters.js +9 -0
- package/dist/host/browser.d.ts +3 -0
- package/dist/host/browser.js +3 -0
- package/dist/host/changelog.d.ts +21 -0
- package/dist/host/changelog.js +188 -0
- package/dist/host/channel-plugin.d.ts +15 -0
- package/dist/host/channel-plugin.js +42 -0
- package/dist/host/cli.d.ts +4 -0
- package/dist/host/cli.js +7 -0
- package/dist/host/command-name.d.ts +1 -0
- package/dist/host/command-name.js +14 -0
- package/dist/host/data-error.d.ts +13 -0
- package/dist/host/data-error.js +20 -0
- package/dist/host/data-root.js +3 -0
- package/dist/host/diy-debug.js +2 -1
- package/dist/host/diy-record.js +2 -1
- package/dist/host/facts.d.ts +1 -1
- package/dist/host/facts.js +3 -2
- package/dist/host/git.js +2 -2
- package/dist/host/http.js +1 -1
- package/dist/host/lib-capabilities.d.ts +22 -0
- package/dist/host/lib-capabilities.js +37 -0
- package/dist/host/lib-install.d.ts +9 -0
- package/dist/host/lib-install.js +10 -0
- package/dist/host/long-task.d.ts +1 -1
- package/dist/host/long-task.js +4 -3
- package/dist/host/market-index.d.ts +22 -0
- package/dist/host/market-index.js +420 -0
- package/dist/host/needs.d.ts +4 -0
- package/dist/host/needs.js +2 -0
- package/dist/host/patch.d.ts +9 -0
- package/dist/host/patch.js +78 -0
- package/dist/host/paths.d.ts +12 -0
- package/dist/host/paths.js +28 -0
- package/dist/host/platform.d.ts +14 -0
- package/dist/host/platform.js +40 -0
- package/dist/host/plugin-source.d.ts +8 -6
- package/dist/host/plugin-source.js +43 -33
- package/dist/host/plugin.d.ts +4 -0
- package/dist/host/plugin.js +39 -0
- package/dist/host/port-types.d.ts +191 -0
- package/dist/host/port-types.js +1 -0
- package/dist/host/preflight.d.ts +28 -0
- package/dist/host/preflight.js +1 -0
- package/dist/host/profile-port.d.ts +4 -0
- package/dist/host/profile-port.js +4 -0
- package/dist/host/provision.d.ts +2 -2
- package/dist/host/provision.js +5 -3
- package/dist/host/recipe-rules.d.ts +5 -0
- package/dist/host/recipe-rules.js +382 -0
- package/dist/host/recipe.d.ts +14 -0
- package/dist/host/recipe.js +283 -0
- package/dist/host/shell-text.d.ts +9 -2
- package/dist/host/shell-text.js +15 -3
- package/dist/host/shell.d.ts +2 -0
- package/dist/host/shell.js +7 -0
- package/dist/host/spec.d.ts +8 -0
- package/dist/host/spec.js +24 -0
- package/dist/host/supply-index.d.ts +34 -0
- package/dist/host/supply-index.js +202 -0
- package/dist/host/supply-port.d.ts +5 -0
- package/dist/host/supply-port.js +39 -0
- package/dist/host/time.d.ts +12 -0
- package/dist/host/time.js +19 -0
- package/dist/host/tokens.d.ts +26 -0
- package/dist/host/tokens.js +154 -0
- package/dist/host/tool-kit.js +1 -1
- package/dist/host/unit-face.d.ts +5 -4
- package/dist/host/version-range.d.ts +2 -0
- package/dist/host/version-range.js +73 -0
- package/dist/host/version.d.ts +3 -0
- package/dist/host/version.js +29 -0
- package/dist/host.d.ts +47 -16
- package/dist/host.js +47 -16
- package/dist/i18n/en.js +224 -71
- package/dist/i18n/index.d.ts +298 -73
- package/dist/i18n/merge.js +1 -1
- package/dist/i18n/need-text.d.ts +26 -0
- package/dist/i18n/need-text.js +26 -0
- package/dist/i18n/settings.d.ts +70 -0
- package/dist/i18n/settings.js +136 -0
- package/dist/i18n/zh.d.ts +297 -72
- package/dist/i18n/zh.js +226 -73
- package/dist/index.d.ts +23 -7
- package/dist/index.js +23 -7
- package/dist/{api → lib}/dsh-client.d.ts +11 -1
- package/dist/lib/dsh-client.js +1 -0
- package/dist/lib/market-index.d.ts +7 -0
- package/dist/lib/market-index.js +25 -0
- package/dist/lib/react.d.ts +0 -40
- package/dist/lib/react.js +0 -36
- package/dist/lib/ui.js +3 -9
- package/dist/testing/data.d.ts +13 -0
- package/dist/testing/data.js +46 -0
- package/dist/testing/declaration.d.ts +1 -1
- package/dist/testing/declaration.js +1 -1
- package/dist/testing/host-fakes.d.ts +0 -13
- package/dist/testing/host-fakes.js +0 -24
- package/dist/testing/needs.d.ts +16 -0
- package/dist/testing/needs.js +46 -0
- package/dist/testing.d.ts +2 -0
- package/dist/testing.js +2 -0
- package/package.json +18 -2
- package/src/api/__tests__/blocker-table.test.ts +135 -86
- package/src/api/blocker-table.ts +52 -26
- package/src/api/dsh.ts +1 -1
- package/src/api/host-write.ts +0 -1
- package/src/api/workbench-client.test.ts +2 -2
- package/src/api/workbench-client.ts +2 -1
- package/src/components/Activity.css +0 -1
- package/src/components/ApprovalDetail.css +1 -2
- package/src/components/ApprovalDetail.tsx +1 -1
- package/src/components/ApprovalPlan.css +0 -1
- package/src/components/Card.css +0 -1
- package/src/components/Card.tsx +1 -1
- package/src/components/CardAnchor.test.tsx +1 -1
- package/src/components/CardBoundary.tsx +1 -1
- package/src/components/CardHead.css +0 -1
- package/src/components/CardHead.tsx +1 -1
- package/src/components/ChoiceGroup.css +1 -2
- package/src/components/ConfirmBar.tsx +1 -1
- package/src/components/Form.css +1 -1
- package/src/components/Form.tsx +1 -1
- package/src/components/FormActions.tsx +1 -1
- package/src/components/LongTaskRow.css +1 -2
- package/src/components/LongTaskRow.tsx +1 -1
- package/src/components/Note.css +0 -1
- package/src/components/ResourceStates.css +0 -1
- package/src/components/SelectFieldNodes.tsx +0 -1
- package/src/components/SettingsSection.css +0 -1
- package/src/components/Spinner.css +0 -1
- package/src/components/Stack.css +0 -1
- package/src/components/StateBlock.css +0 -1
- package/src/components/__tests__/long-task-row.test.ts +1 -1
- package/src/components/board-module.ts +3 -3
- package/src/components/icons.tsx +16 -8
- package/src/config/constants.ts +2 -2
- package/src/{api → contract}/__tests__/facts.test.ts +73 -25
- package/src/{api → contract}/__tests__/long-task.test.ts +3 -3
- package/src/contract/__tests__/needs.test.ts +74 -0
- package/src/{host → contract}/__tests__/unit-declaration.test.ts +1 -1
- package/src/contract/__tests__/unit.test.ts +43 -0
- package/src/contract/adapters.ts +9 -0
- package/src/contract/cli.ts +3 -0
- package/src/contract/data.ts +145 -0
- package/src/{api → contract}/facts.ts +34 -4
- package/src/contract/needs.ts +331 -0
- package/src/contract/plugin-source.ts +1 -0
- package/src/contract/protocol/bundle-install.ts +198 -0
- package/src/contract/protocol/config-sync.ts +65 -0
- package/src/contract/protocol/diy.ts +4 -0
- package/src/contract/protocol/dsh-plugins.ts +13 -0
- package/src/contract/protocol/long-tasks.ts +16 -0
- package/src/contract/protocol/market-index.ts +246 -0
- package/src/contract/protocol/platform.ts +47 -0
- package/src/contract/protocol/preflight-wake.ts +17 -0
- package/src/contract/protocol/profile-create.ts +36 -0
- package/src/contract/protocol/sidebar-edition.ts +19 -0
- package/src/contract/protocol/unit-manifests.ts +8 -0
- package/src/{api → contract}/unit-board.ts +0 -1
- package/src/contract/unit-capability.ts +37 -0
- package/src/{host → contract}/unit-declaration.ts +22 -18
- package/src/contract/unit.ts +76 -0
- package/src/contract/workbench-contract.ts +30 -0
- package/src/host/__tests__/adapter-set.test.ts +228 -0
- package/src/host/__tests__/adapters.test.ts +27 -0
- package/src/host/__tests__/changelog.test.ts +102 -0
- package/src/host/__tests__/command-name.test.ts +16 -0
- package/src/host/__tests__/diy-record.test.ts +3 -3
- package/src/host/__tests__/facts.test.ts +5 -5
- package/src/host/__tests__/long-task.test.ts +1 -1
- package/src/host/__tests__/market-index.test.ts +179 -0
- package/src/host/__tests__/plugin-ledger.test.ts +10 -10
- package/src/host/__tests__/provision.test.ts +7 -6
- package/src/host/__tests__/shell-text.test.ts +16 -1
- package/src/host/__tests__/supply-index.test.ts +137 -0
- package/src/host/__tests__/tokens.test.ts +110 -0
- package/src/host/__tests__/version-range.test.ts +21 -0
- package/src/host/adapter-set.ts +298 -0
- package/src/host/adapter-types.ts +105 -0
- package/src/host/adapters.ts +44 -0
- package/src/host/browser.ts +3 -0
- package/src/host/changelog.ts +212 -0
- package/src/host/channel-plugin.ts +55 -0
- package/src/host/cli.ts +11 -0
- package/src/host/command-name.ts +15 -0
- package/src/host/data-error.ts +21 -0
- package/src/host/data-root.ts +2 -0
- package/src/host/diy-debug.ts +2 -1
- package/src/host/diy-record.ts +2 -1
- package/src/host/facts.ts +4 -3
- package/src/host/git.ts +2 -2
- package/src/host/http.ts +1 -1
- package/src/host/lib-capabilities.ts +52 -0
- package/src/host/lib-install.ts +18 -0
- package/src/host/long-task.ts +4 -3
- package/src/host/market-index.ts +413 -0
- package/src/host/needs.ts +6 -0
- package/src/host/patch.ts +93 -0
- package/src/host/paths.ts +37 -0
- package/src/host/platform.ts +48 -0
- package/src/host/plugin-source.ts +48 -56
- package/src/host/plugin.ts +39 -0
- package/src/host/port-types.ts +222 -0
- package/src/host/preflight.ts +31 -0
- package/src/host/profile-port.ts +9 -0
- package/src/host/provision.ts +7 -4
- package/src/host/recipe-rules.ts +330 -0
- package/src/host/recipe.test.ts +334 -0
- package/src/host/recipe.ts +323 -0
- package/src/host/shell-text.ts +15 -3
- package/src/host/shell.ts +9 -0
- package/src/host/spec.ts +32 -0
- package/src/host/supply-index.ts +256 -0
- package/src/host/supply-port.ts +45 -0
- package/src/host/time.ts +22 -0
- package/src/host/tokens.ts +186 -0
- package/src/host/tool-kit.ts +1 -1
- package/src/host/unit-face.ts +5 -4
- package/src/host/version-range.ts +71 -0
- package/src/host/version.ts +30 -0
- package/src/host.ts +47 -16
- package/src/i18n/en.ts +224 -71
- package/src/i18n/merge.test.ts +6 -6
- package/src/i18n/merge.ts +1 -1
- package/src/i18n/need-text.ts +27 -0
- package/src/i18n/settings.ts +141 -0
- package/src/i18n/zh.ts +227 -73
- package/src/index.ts +23 -7
- package/src/lib/blocker-action.ts +0 -1
- package/src/{api → lib}/dsh-client.ts +12 -1
- package/src/lib/market-index.ts +36 -0
- package/src/lib/react.ts +0 -40
- package/src/lib/text.test.ts +2 -2
- package/src/lib/ui.test.ts +6 -5
- package/src/lib/ui.ts +3 -9
- package/src/testing/__tests__/declaration.test.ts +1 -1
- package/src/testing/data.ts +66 -0
- package/src/testing/declaration.ts +2 -2
- package/src/testing/host-fakes.ts +0 -38
- package/src/testing/needs.ts +80 -0
- package/src/testing.ts +2 -0
- package/dist/api/unit-declaration.d.ts +0 -65
- package/dist/api/unit.d.ts +0 -85
- package/dist/api/unit.js +0 -8
- package/dist/api/workbench-contract.d.ts +0 -44
- package/dist/components/MockStrip.css +0 -39
- package/dist/components/MockStrip.d.ts +0 -15
- package/dist/components/MockStrip.js +0 -8
- package/dist/components/SaveBar.css +0 -7
- package/dist/host/browser-find.d.ts +0 -38
- package/dist/host/browser-find.js +0 -242
- package/dist/host/browser-read.d.ts +0 -28
- package/dist/host/browser-read.js +0 -243
- package/dist/host/opencli-runtime.d.ts +0 -25
- package/dist/host/opencli-runtime.js +0 -56
- package/dist/host/opencli-window.d.ts +0 -2
- package/dist/host/opencli-window.js +0 -8
- package/dist/host/opencli.d.ts +0 -37
- package/dist/host/opencli.js +0 -155
- package/dist/host/unit-declaration.js +0 -213
- package/dist/host/unit-libs.d.ts +0 -37
- package/dist/lib/diy-debug.d.ts +0 -80
- package/dist/lib/diy-debug.js +0 -88
- package/dist/lib/diy-record.d.ts +0 -135
- package/dist/lib/diy-record.js +0 -162
- package/dist/lib/lint-probe.d.ts +0 -1
- package/dist/lib/lint-probe.js +0 -6
- package/dist/lib/panel-state.d.ts +0 -120
- package/dist/lib/panel-state.js +0 -176
- package/src/api/__tests__/unit.test.ts +0 -38
- package/src/api/unit.ts +0 -93
- package/src/api/workbench-contract.ts +0 -59
- package/src/host/__tests__/browser-find.test.ts +0 -330
- package/src/host/__tests__/browser-read.test.ts +0 -228
- package/src/host/__tests__/opencli-runtime.test.ts +0 -46
- package/src/host/browser-find.ts +0 -311
- package/src/host/browser-read.ts +0 -311
- package/src/host/opencli-runtime.ts +0 -79
- package/src/host/opencli-window.ts +0 -11
- package/src/host/opencli.ts +0 -213
- package/src/host/unit-libs.ts +0 -41
- /package/dist/{api/blocker.js → contract/adapters.js} +0 -0
- /package/dist/{api → contract}/blocker.d.ts +0 -0
- /package/dist/{api/dsh-client.js → contract/blocker.js} +0 -0
- /package/dist/{api/unit-board.js → contract/cli.js} +0 -0
- /package/dist/{api/workbench-contract.js → contract/data.js} +0 -0
- /package/dist/{api → contract}/long-task.d.ts +0 -0
- /package/dist/{api → contract}/long-task.js +0 -0
- /package/dist/{host/unit-libs.js → contract/plugin-source.js} +0 -0
- /package/dist/{api → contract}/unit-board.d.ts +0 -0
- /package/src/{api → contract}/blocker.ts +0 -0
- /package/src/{api → contract}/long-task.ts +0 -0
package/src/i18n/en.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { enSettings } from './settings.js';
|
|
2
|
+
import { enNeedText } from './need-text.js';
|
|
1
3
|
import type { WorkbenchMessages } from './zh.js';
|
|
2
4
|
|
|
3
5
|
/** 外壳自带的英文词表:键必须与 `zh` 逐一对应,值不许为空串。 */
|
|
4
6
|
export const en: Record<keyof WorkbenchMessages, string> = {
|
|
7
|
+
...enSettings,
|
|
5
8
|
'brand.name': 'Workbench',
|
|
6
9
|
|
|
7
10
|
'toggle.open': 'Open sidebar',
|
|
@@ -24,7 +27,7 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
24
27
|
'project.rename.title': 'Give “{name}” a display name',
|
|
25
28
|
'project.rename.description': 'Shown after the folder name. It renames the workspace itself.',
|
|
26
29
|
'project.rename.field': 'Display name',
|
|
27
|
-
'project.rename.placeholder': 'e.g.
|
|
30
|
+
'project.rename.placeholder': 'e.g. My workbench',
|
|
28
31
|
'project.rename.hint': 'Empty = folder name only',
|
|
29
32
|
'project.rename.save': 'Save',
|
|
30
33
|
'project.rename.saving': 'Saving…',
|
|
@@ -96,9 +99,11 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
96
99
|
'panels.labelWithHint': '{label} ({hint})',
|
|
97
100
|
'panels.hintJoin': '; ',
|
|
98
101
|
'panels.dep.failed': '⚠ failed to start',
|
|
99
|
-
'panels.dep.missingPlugin': '⚠ not ready yet',
|
|
100
|
-
'panels.dep.missingCommands': '⚠ needs an update',
|
|
101
102
|
'panels.dep.unchecked': '⚠ cannot check',
|
|
103
|
+
'panels.dep.missing': '⚠ missing a dependency',
|
|
104
|
+
'panels.dep.outdated': '⚠ needs an update',
|
|
105
|
+
'panels.dep.degraded': '⚠ an optional item is missing',
|
|
106
|
+
'panels.dep.unsupported': '⚠ needs a newer workbench',
|
|
102
107
|
'panels.tab.modules': 'Panel setup',
|
|
103
108
|
'panels.tab.market': 'Workbench module market',
|
|
104
109
|
'panels.browseMarket': 'Browse the module market',
|
|
@@ -110,11 +115,12 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
110
115
|
'panels.market.broken': 'broken',
|
|
111
116
|
'panels.market.hasNew': 'New version',
|
|
112
117
|
'panels.market.hasProblem': 'Module problem',
|
|
113
|
-
'panels.market.missing': '
|
|
118
|
+
'panels.market.missing': 'missing dependency',
|
|
114
119
|
'panels.market.unchecked': 'unknown',
|
|
120
|
+
'panels.market.uncheckedHint': 'restart the workbench and try again',
|
|
115
121
|
'panels.market.checking': 'checking',
|
|
116
122
|
'panels.market.sectionInstalled': 'Installed modules',
|
|
117
|
-
'panels.market.sectionPending': 'Not
|
|
123
|
+
'panels.market.sectionPending': 'Not ready',
|
|
118
124
|
'panels.market.sectionShared': 'Shared dependencies',
|
|
119
125
|
'panels.market.sharedUsedBy': 'Used by module {modules}',
|
|
120
126
|
'panels.market.listSeparator': ', ',
|
|
@@ -124,9 +130,10 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
124
130
|
'panels.market.sharedOk': 'ready',
|
|
125
131
|
'panels.market.versionArrow': '{from} → {to}',
|
|
126
132
|
'panels.market.lead': 'Installed on this machine, shared by every project.',
|
|
127
|
-
'panels.market.install': 'Install',
|
|
133
|
+
'panels.market.install': 'Install dependency',
|
|
128
134
|
'panels.market.update': 'Update',
|
|
129
135
|
'panels.market.swapSlow': 'Not swapped yet — maybe a slow or failed download. Press Update again; if it stays like this, restart dsh.',
|
|
136
|
+
'panels.market.removeSlow': 'Not removed yet — maybe a slow network or an uninstall that did not finish. Check again in a moment; if it stays like this, restart dsh.',
|
|
130
137
|
'panels.market.updateNoChange': 'Not updated: you were on {from}, and after the run the disk still has that version; the newest on the registry is {latest}.',
|
|
131
138
|
'panels.market.updateUnknownVersion': '(unknown)',
|
|
132
139
|
'panels.market.updateGone': 'Not updated: after the run the module cannot be read from disk.',
|
|
@@ -150,23 +157,18 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
150
157
|
'panels.market.failed': 'Failed: {reason}',
|
|
151
158
|
'panels.market.needEnv': 'Set {env} in the terminal that started the workbench first',
|
|
152
159
|
'panels.market.needCommands': 'Missing commands: {commands}',
|
|
160
|
+
'panels.market.needBinary': 'Install the {command} command first',
|
|
161
|
+
'panels.market.needLib': 'Install the shared dependency {name} first',
|
|
153
162
|
'panels.market.localMark': 'local',
|
|
154
|
-
'panels.market.localHint': 'This is your machine’s own copy (not taken from the registry).',
|
|
155
163
|
'panels.market.noSource': 'This module declares no install method — install it yourself',
|
|
156
164
|
'panels.market.badSource': 'The install method is incomplete — install it yourself',
|
|
157
165
|
'panels.market.empty': 'No modules available',
|
|
158
166
|
'panels.market.sectionPlugins': 'Installed opencli plugins',
|
|
159
167
|
'panels.market.moduleOutdated': 'update available',
|
|
160
168
|
'panels.market.moduleRefused': 'This module does not match this workbench, so it cannot be used for now.',
|
|
161
|
-
'panels.market.moduleRefusedDetail': 'Why it cannot be used: {reason}',
|
|
162
169
|
'panels.market.moduleRestartHint': 'restart dsh once to bring it up',
|
|
163
170
|
'panels.market.pendingRestart': 'restart required',
|
|
164
171
|
'panels.market.workbenchName': 'Workbench',
|
|
165
|
-
'panels.market.workbenchLocal': 'This is the copy from your working repository; it does not come from the registry.',
|
|
166
|
-
'panels.market.pluginKeptInUse': 'Files kept for now: {names} still uses it.',
|
|
167
|
-
'panels.market.pluginKeptUnsure': 'Files kept for now: some modules on this machine do not say what they use, so it is unclear who needs it.',
|
|
168
|
-
'panels.market.pluginKeptHeld': 'Files kept: this one is yours, and a module letting go will not remove it.',
|
|
169
|
-
'panels.market.pluginKeptUnnamed': 'Files kept for now: this one cannot be identified as a plugin, so it is unclear who needs it.',
|
|
170
172
|
'panels.market.pluginBroken': 'This plugin install is broken: it cannot be identified. Uninstall it first, then ask the agent to reinstall it by package name.',
|
|
171
173
|
'panels.market.restartNeeded': 'The new version is installed — restart once to pick it up.',
|
|
172
174
|
'panels.market.foot': 'After installing, enable it in the panel page of that project.',
|
|
@@ -269,6 +271,142 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
269
271
|
'panels.market.add.close': 'Close',
|
|
270
272
|
'panels.market.add.retry': 'Retry',
|
|
271
273
|
'panels.market.add.changeSource': 'Change source',
|
|
274
|
+
'panels.market.tabInstalled': 'Installed',
|
|
275
|
+
'panels.market.tabs': 'The two faces of the module market',
|
|
276
|
+
'panels.tab.discover': 'Discover',
|
|
277
|
+
'panels.discover.loading': 'Reading the index',
|
|
278
|
+
'panels.discover.lead': 'Browse modules from an index source; install and go.',
|
|
279
|
+
'panels.discover.addSource': 'Add',
|
|
280
|
+
'panels.discover.addFirstSource': 'Add index source',
|
|
281
|
+
'panels.discover.removeSource': 'Remove',
|
|
282
|
+
'panels.discover.removeSourceNamed': 'Remove {url}',
|
|
283
|
+
'panels.discover.refresh': 'Refresh',
|
|
284
|
+
'panels.discover.search': 'Search modules',
|
|
285
|
+
'panels.discover.all': 'All',
|
|
286
|
+
'panels.discover.sourceLabel': 'Name',
|
|
287
|
+
'panels.discover.sourceKind': 'Type',
|
|
288
|
+
'panels.discover.sourceKindHttp': 'http address',
|
|
289
|
+
'panels.discover.sourceKindGit': 'git repository',
|
|
290
|
+
'panels.discover.sourceUrl': 'Index URL',
|
|
291
|
+
'panels.discover.sourcePlaceholder': 'https://example.com/index.json or git@git.example.com:wb/market.git',
|
|
292
|
+
'panels.discover.sourceRef': 'Branch',
|
|
293
|
+
'panels.discover.sourcePath': 'Index file',
|
|
294
|
+
'panels.discover.sourceLocal': 'Local clone (optional)',
|
|
295
|
+
'panels.discover.sourceLocalHint': 'Leave empty to clone into ~/.dsh/workbench/market-index/.',
|
|
296
|
+
'panels.discover.save': 'Save and refresh',
|
|
297
|
+
'panels.discover.cancel': 'Cancel',
|
|
298
|
+
'panels.discover.retry': 'Retry',
|
|
299
|
+
'panels.discover.noSource': 'No module market yet',
|
|
300
|
+
'panels.discover.noSourceHint': 'Add a module market index (http address or git repository) to browse and install its modules here',
|
|
301
|
+
'panels.discover.sourcesFailed': 'Could not read the index sources.',
|
|
302
|
+
'panels.discover.unreadable': 'Could not read this index.',
|
|
303
|
+
'panels.discover.invalid': 'This index is not in a valid format.',
|
|
304
|
+
'panels.discover.emptyRepo': 'This repository has no commits yet.',
|
|
305
|
+
'panels.discover.missingIndex': 'This repository has no {path} yet.',
|
|
306
|
+
'panels.discover.initTitle': 'Initialize this repository as a module market index?',
|
|
307
|
+
'panels.discover.initCta': 'Initialize market index',
|
|
308
|
+
'panels.discover.initWhat': 'It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their artifacts under packages/<unit>/. The repository stays owned by its owner.',
|
|
309
|
+
'panels.discover.initBranch': 'Branch',
|
|
310
|
+
'panels.discover.initBranchHint': 'The index and artifacts go to this branch; an empty repository gets it created.',
|
|
311
|
+
'panels.discover.initBranchBad': 'Use only letters, digits, dots, underscores, slashes, or dashes in a branch name.',
|
|
312
|
+
'panels.discover.initOk': 'Initialize',
|
|
313
|
+
'panels.discover.initBusy': 'Initializing…',
|
|
314
|
+
'panels.discover.initDone': 'Market index initialized ({branch})',
|
|
315
|
+
'panels.discover.stale': 'Cannot read the latest; showing the last good cache.',
|
|
316
|
+
'panels.discover.empty': 'This index lists no modules.',
|
|
317
|
+
'panels.discover.noMatch': 'No modules match.',
|
|
318
|
+
'panels.discover.notInstalled': 'Not installed',
|
|
319
|
+
'panels.discover.installed': 'Installed',
|
|
320
|
+
'panels.discover.installedVersion': 'Installed {version}',
|
|
321
|
+
'panels.discover.update': 'Update available',
|
|
322
|
+
'panels.discover.badShell': 'Not installable',
|
|
323
|
+
'panels.discover.badShellDetail': 'This version is not compatible with the running workbench {current}; it requires {peer}',
|
|
324
|
+
'panels.discover.unverified': 'Workbench unverified',
|
|
325
|
+
'panels.discover.installing': 'Installing…',
|
|
326
|
+
'panels.discover.installedDone': 'Installed: {name}',
|
|
327
|
+
'panels.discover.failed': 'Failed: {reason}',
|
|
328
|
+
'panels.discover.expand': 'Show versions',
|
|
329
|
+
'panels.discover.collapse': 'Hide versions',
|
|
330
|
+
'panels.discover.versionCount': '{n} versions',
|
|
331
|
+
'panels.discover.sourceNpm': 'npm · {registry}',
|
|
332
|
+
'panels.discover.sourceNpmDefault': 'default registry',
|
|
333
|
+
'panels.discover.sourceGit': 'git · {commit}',
|
|
334
|
+
'panels.discover.installVersion': 'Install {version}',
|
|
335
|
+
'panels.discover.confirmTitle': 'Install "{name}"?',
|
|
336
|
+
'panels.discover.confirmDetail': 'Source: {source}. The index is a teammate-maintained catalog, not a signed official feed; installing a different version replaces the current one.',
|
|
337
|
+
'panels.discover.confirmAck': 'I understand this is not an official source',
|
|
338
|
+
'panels.discover.confirmOk': 'Install',
|
|
339
|
+
'panels.discover.confirmCancel': 'Cancel',
|
|
340
|
+
'panels.discover.marketMenu': 'Switch module market, currently {market}',
|
|
341
|
+
'panels.discover.manageSources': 'Manage index sources…',
|
|
342
|
+
'panels.discover.sourcesTitle': 'Index sources',
|
|
343
|
+
'panels.discover.sourcesIntro': 'A module market is published as the URL of one index file, either an http(s) address or a git repository. Discover browses the indexes listed here.',
|
|
344
|
+
'panels.discover.sourcesLabel': 'Added index sources',
|
|
345
|
+
'panels.discover.sourceTrust': 'Indexes come from third parties. Add only sources you trust: their modules run with your permissions once installed.',
|
|
346
|
+
'panels.discover.sourceDuplicate': 'This index source is already added.',
|
|
347
|
+
'panels.discover.sourceBadUrl': 'Use an http(s) or git repository address without a user name, password, or # fragment',
|
|
348
|
+
'panels.discover.close': 'Close',
|
|
349
|
+
'panels.discover.labelsMenu': 'Labels',
|
|
350
|
+
'panels.discover.labelsCount': 'Labels · {count}',
|
|
351
|
+
'panels.discover.tagsAll': 'All labels',
|
|
352
|
+
'panels.discover.sort': 'Sort',
|
|
353
|
+
'panels.discover.sortWith': 'Sort: {label}',
|
|
354
|
+
'panels.discover.sortRelevance': 'Best match',
|
|
355
|
+
'panels.discover.sortDefault': 'Default order',
|
|
356
|
+
'panels.discover.sortPublished': 'Publish date',
|
|
357
|
+
'panels.discover.categoriesLabel': 'Categories',
|
|
358
|
+
'panels.discover.showMore': 'Show more',
|
|
359
|
+
'panels.discover.entryMeta': '{version} · {date}',
|
|
360
|
+
'panels.discover.entryMetaAuthor': '{version} · {author} · {date}',
|
|
361
|
+
'panels.discover.openEntry': 'View {name}',
|
|
362
|
+
'panels.discover.cardInstall': 'Install',
|
|
363
|
+
'panels.discover.cardInstalled': 'Installed',
|
|
364
|
+
'panels.discover.cardUpdate': 'Update available',
|
|
365
|
+
'panels.discover.cardBlocked': 'No usable version',
|
|
366
|
+
'panels.discover.installTitle': 'Install {name}',
|
|
367
|
+
'panels.discover.installVersionTitle': 'Install {name} {version}',
|
|
368
|
+
'panels.discover.openInstalled': 'View {name} in Installed',
|
|
369
|
+
'panels.discover.noCompatibleVersion': 'No version is compatible with workbench {runtime}',
|
|
370
|
+
'panels.discover.detailBack': 'Discover',
|
|
371
|
+
'panels.discover.publishedAt': 'Published {date}',
|
|
372
|
+
'panels.discover.detailMarket': 'Index source {label}',
|
|
373
|
+
'panels.discover.detailIncompatible': 'Needs workbench {peer}; this one is {current}',
|
|
374
|
+
'panels.discover.detailUnknown': 'Workbench compatibility is unverified: the index has no readable package.json.',
|
|
375
|
+
'panels.discover.detailSource': 'Source',
|
|
376
|
+
'panels.discover.authorUnknown': 'Unattributed',
|
|
377
|
+
'panels.discover.tabOverview': 'Overview',
|
|
378
|
+
'panels.discover.tabReadme': 'Readme',
|
|
379
|
+
'panels.discover.tabChangelog': 'Changelog',
|
|
380
|
+
'panels.discover.docTitle': '{kind} for {version}',
|
|
381
|
+
'panels.discover.docReadme': 'readme',
|
|
382
|
+
'panels.discover.docChangelog': 'changelog',
|
|
383
|
+
'panels.discover.docLoading': 'Reading…',
|
|
384
|
+
'panels.discover.docMissing': 'This version ships no {kind}',
|
|
385
|
+
'panels.discover.docUnavailable': 'Could not read the {kind} for this version: {reason}',
|
|
386
|
+
'panels.discover.docUnknownReason': 'unknown',
|
|
387
|
+
'panels.discover.detailTabs': 'Module details',
|
|
388
|
+
'panels.discover.factPackage': 'Package',
|
|
389
|
+
'panels.discover.factRegistry': 'Registry',
|
|
390
|
+
'panels.discover.factRepository': 'Repository',
|
|
391
|
+
'panels.discover.factCommit': 'Commit',
|
|
392
|
+
'panels.discover.factDirectory': 'Directory',
|
|
393
|
+
'panels.discover.factPublished': 'Published',
|
|
394
|
+
'panels.discover.factAuthor': 'Author',
|
|
395
|
+
'panels.discover.factHomepage': 'Homepage',
|
|
396
|
+
'panels.discover.factCategory': 'Category',
|
|
397
|
+
'panels.discover.factLabels': 'Labels',
|
|
398
|
+
'panels.discover.factMarket': 'Index source',
|
|
399
|
+
'panels.discover.detailVersions': 'Versions',
|
|
400
|
+
'panels.discover.versionsLabel': 'Versions of {name}',
|
|
401
|
+
'panels.discover.tagRecommended': 'Recommended',
|
|
402
|
+
'panels.discover.tagPrerelease': 'Pre-release',
|
|
403
|
+
'panels.discover.tagInstalled': 'Installed',
|
|
404
|
+
'panels.discover.tagIncompatible': 'Incompatible',
|
|
405
|
+
'panels.discover.tagUnknown': 'Unverified',
|
|
406
|
+
'panels.discover.selected': 'Current',
|
|
407
|
+
'panels.discover.done': 'Done',
|
|
408
|
+
'panels.discover.installTrust': 'Modules run on this machine with your permissions. Make sure you trust where this comes from',
|
|
409
|
+
'panels.discover.progress': 'Showing {shown} of {total}',
|
|
272
410
|
'panels.market.add.approveBuilds': 'Allow these scripts and retry',
|
|
273
411
|
'panels.market.add.approveHint': 'These packages want to run install scripts: {packages}',
|
|
274
412
|
'panels.market.add.doneApplied': 'Installed and live.',
|
|
@@ -325,7 +463,7 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
325
463
|
'blocker.login.titleGeneric': 'Sign-in required',
|
|
326
464
|
'blocker.login.hint': 'The workbench uses your browser session; sign in once and you are done.',
|
|
327
465
|
'blocker.login.go': 'Go sign in',
|
|
328
|
-
'blocker.login.manual': 'Run
|
|
466
|
+
'blocker.login.manual': 'Run the plugin login command in a terminal (see its docs), then retry.',
|
|
329
467
|
'blocker.forbidden.title': 'No access to {platform}',
|
|
330
468
|
'blocker.forbidden.titleGeneric': 'No access',
|
|
331
469
|
'blocker.forbidden.hint': 'You are signed in, but this project/repo is not permitted for your account.',
|
|
@@ -339,26 +477,29 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
339
477
|
'panels.empty': 'No modules on the panel yet',
|
|
340
478
|
'panels.emptyHint': 'You can also just tell the agent: “add a module to the panel”.',
|
|
341
479
|
'env.title': 'Preparing the workbench',
|
|
342
|
-
'env.checking': '
|
|
343
|
-
'env.installing': 'Installing the
|
|
480
|
+
'env.checking': 'Getting the runtime ready…',
|
|
481
|
+
'env.installing': 'Installing background tools — the first run takes a moment…',
|
|
344
482
|
'env.failed': 'One step away',
|
|
345
483
|
'env.elapsed': 'Waiting {seconds}s',
|
|
346
484
|
'env.stepFailed.install': 'install failed',
|
|
347
485
|
'env.stepFailed.path': 'installed but not found',
|
|
348
486
|
'env.stepFailed.shell': 'no shell channel',
|
|
487
|
+
'env.toolchain.ok': 'Looks good',
|
|
488
|
+
'env.toolchain.warn': 'Almost ready',
|
|
489
|
+
'env.opencli.ok': 'Ready',
|
|
349
490
|
'env.bridge.ok': 'Connected',
|
|
350
|
-
'env.bridge.short': 'Not connected',
|
|
351
|
-
'env.bridge.why': 'Panel data
|
|
352
|
-
'env.bridge.hold': 'The browser
|
|
491
|
+
'env.bridge.short': 'Not connected yet',
|
|
492
|
+
'env.bridge.why': 'Panel data uses the login state in your browser. Without this connection, modules cannot fetch data. It does not block startup: fix it, or enter the workbench first.',
|
|
493
|
+
'env.bridge.hold': 'The browser is not connected yet \u2014 fix it below and hit Retry, or enter the workbench first.',
|
|
353
494
|
'env.bridge.daemon': 'The background service is not running. It usually starts by itself \u2014 run the command below in your terminal first.',
|
|
354
|
-
'env.bridge.extension': 'The browser extension is not connected.
|
|
495
|
+
'env.bridge.extension': 'The browser extension is not connected. Make sure the browser is running and the extension is enabled; install it once from the store if needed (then hit Retry here).',
|
|
355
496
|
'env.bridge.extensionLink': 'Get the extension in the Chrome Web Store',
|
|
356
|
-
'env.bridge.profile': 'Several browser
|
|
357
|
-
'env.bridge.stale': 'The default browser
|
|
497
|
+
'env.bridge.profile': 'Several browser accounts are connected but none is the default: list them (command below), then pick one.',
|
|
498
|
+
'env.bridge.stale': 'The default browser account is stale (it names an extension instance that no longer exists): pick one again.',
|
|
358
499
|
'env.bridge.unknown': 'Could not tell what went wrong. Expand the raw output and follow the steps in it.',
|
|
359
500
|
'env.fix.title': 'How to fix it',
|
|
360
|
-
'env.fix.why': 'The workbench uses its own
|
|
361
|
-
'env.fix.whyPath': '
|
|
501
|
+
'env.fix.why': 'The workbench uses its own background tool (installed separately from the one in your terminal), and it is not set up on this machine yet.',
|
|
502
|
+
'env.fix.whyPath': 'The background tool is installed, but this environment cannot find it \u2014 usually a PATH or shell-session issue.',
|
|
362
503
|
'env.fix.whyShell': 'The workbench has no shell channel, so it cannot fetch data \u2014 you cannot install this from here; someone needs to fix the background environment.',
|
|
363
504
|
'env.fix.step': 'Run this in a terminal, then hit Retry:',
|
|
364
505
|
'env.fix.stepPath': 'Open a new terminal window (or make sure npm\u2019s global bin directory is on PATH), then hit Retry.',
|
|
@@ -367,32 +508,47 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
367
508
|
'env.fix.network': 'Network unreachable: check your network or proxy, then retry.',
|
|
368
509
|
'env.fix.details': 'Details (for troubleshooting)',
|
|
369
510
|
'env.retry': 'Retry',
|
|
511
|
+
'env.wake': 'Open browser',
|
|
512
|
+
'env.wake.opening': 'Opening the browser…',
|
|
513
|
+
'env.wake.browserOpen': 'The browser is already running but the extension is not connected — check that it is enabled.',
|
|
514
|
+
'env.wake.noBrowser': 'No Chrome / Edge / Brave / Chromium / Vivaldi found; open one manually.',
|
|
515
|
+
'env.wake.failed': 'Could not open the browser this time; try again.',
|
|
370
516
|
'env.bridge.continue': 'Enter the workbench anyway',
|
|
371
517
|
'env.diy.ok': 'Available',
|
|
372
|
-
'env.diy.short': '
|
|
373
|
-
'env.diy.hold': 'DIY mode
|
|
374
|
-
'env.diy.why': 'The dsh on this machine is older than the one this workbench was verified against, so DIY mode cannot
|
|
518
|
+
'env.diy.short': 'Unavailable for now',
|
|
519
|
+
'env.diy.hold': 'DIY mode is unavailable for now \u2014 upgrade dsh, then hit Retry; or enter the workbench first.',
|
|
520
|
+
'env.diy.why': 'The dsh on this machine is older than the one this workbench was verified against, so DIY mode cannot run. Panels and everything else are unaffected. Upgrade dsh and restart.',
|
|
375
521
|
'env.diy.rows': 'This dsh is missing these items: {rows}',
|
|
376
522
|
'env.diy.noRow': 'The health check did not find \u201cWorkbench DIY mode\u201d in dsh\u2019s mode roster \u2014 the workbench install most likely did not include the matching mode patch.',
|
|
377
523
|
'env.diy.step': 'Upgrade dsh, then restart the workbench:',
|
|
378
524
|
'env.diy.continue': 'Enter the workbench anyway',
|
|
379
525
|
'env.copyCommand': 'Copy command',
|
|
380
526
|
'env.copied': 'Copied',
|
|
381
|
-
'env.step.
|
|
382
|
-
'env.step.
|
|
383
|
-
'env.step.bridge': '
|
|
384
|
-
'env.step.diy': '
|
|
385
|
-
'env.step.warm': '
|
|
386
|
-
'env.warm.done': '{n}
|
|
387
|
-
'env.warm.short': '
|
|
527
|
+
'env.step.toolchain': 'Runtime',
|
|
528
|
+
'env.step.opencli': 'Background tools',
|
|
529
|
+
'env.step.bridge': 'Browser connection',
|
|
530
|
+
'env.step.diy': 'DIY mode',
|
|
531
|
+
'env.step.warm': 'Site sign-in',
|
|
532
|
+
'env.warm.done': 'Ready ({n} sites)',
|
|
533
|
+
'env.warm.short': 'Could not sign in early this time \u2014 nothing breaks; the first read fills it in',
|
|
388
534
|
'env.unit.failed': 'This module cannot start',
|
|
389
535
|
'env.unit.failedHint': 'It failed while assembling itself; other modules are unaffected.',
|
|
390
|
-
'env.unit.missingPlugin': 'This module is not ready yet',
|
|
391
|
-
'env.unit.missingCommandsHint': 'Updating it should fix this.',
|
|
392
536
|
'env.unit.unchecked': 'Cannot check: no shell channel',
|
|
393
537
|
'env.unit.uncheckedHint': 'The module is not the problem \u2014 the shell channel is unavailable. Restart the workbench.',
|
|
394
|
-
'
|
|
538
|
+
'adapterSet.not-configured': 'No adapter set configured; using the default.',
|
|
539
|
+
'adapterSet.no-profile': 'No profile found, so the adapter set cannot load; using the default.',
|
|
540
|
+
'adapterSet.malformed': 'An adapter set must be a package name (for example @acme/adapters-set); using the default.',
|
|
541
|
+
'adapterSet.not-resolvable': '{spec} is not installed in this profile; install it or remove the config line.',
|
|
542
|
+
'adapterSet.import-failed': '{spec} did not load; using the default set.',
|
|
543
|
+
'adapterSet.bad-export': '{spec} does not export createAdapterSet(ctx); using the default set.',
|
|
544
|
+
'adapterSet.factory-failed': '{spec} threw while creating the set; using the default set.',
|
|
545
|
+
'adapterSet.incompatible-version': '{spec} uses an unsupported adapter protocol version; upgrade the adapter set or the workbench and retry.',
|
|
546
|
+
'adapterSet.missing-member': '{spec} is missing a required member; using the default set.',
|
|
395
547
|
'env.unit.hint': 'Retry after installing; other modules are unaffected.',
|
|
548
|
+
'env.unit.unsupported': 'This module needs something this workbench does not know',
|
|
549
|
+
'env.unit.unsupportedHint': 'It uses a need kind only newer workbenches have: upgrade the workbench, or ask the module author to use a v2 kind.',
|
|
550
|
+
'env.unit.degraded': 'This module is missing one optional thing',
|
|
551
|
+
'env.unit.degradedHint': 'It still works; use the command below to fill the gap.',
|
|
396
552
|
'rightbar.label': 'Data panels',
|
|
397
553
|
'rightbar.expand': 'Expand the data panel',
|
|
398
554
|
'rightbar.collapse': 'Collapse the data panel',
|
|
@@ -404,7 +560,6 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
404
560
|
'rightbar.updatedAt': 'updated {time}',
|
|
405
561
|
'rightbar.noProject': 'The current session has no workspace',
|
|
406
562
|
'rightbar.openPlatform': 'Open on the platform',
|
|
407
|
-
'coding.notARepo.title': 'This workspace is not a Coding repository',
|
|
408
563
|
'error.unknown': 'Something went wrong',
|
|
409
564
|
|
|
410
565
|
'board.title': 'Workbench panel',
|
|
@@ -412,6 +567,12 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
412
567
|
'panel.conversation': 'Conversation',
|
|
413
568
|
'panels.label': 'Global panels',
|
|
414
569
|
|
|
570
|
+
'adapterSet.title': 'Adapter set',
|
|
571
|
+
'adapterSet.lead': 'The host adapters this workbench is using. Change the workbench config in the profile and restart.',
|
|
572
|
+
'adapterSet.active': 'Active: {id}@{version}',
|
|
573
|
+
'adapterSet.defaults': 'Missing modules / runtime / plugins / actions are filled by the default set.',
|
|
574
|
+
'adapterSet.failed': 'The configured set did not load; using the default.',
|
|
575
|
+
'adapterSet.healthUnreadable': 'Could not read the workbench health; reopen this page later.',
|
|
415
576
|
'workbenchSettings.nav': 'Workbench settings',
|
|
416
577
|
'workbenchSettings.lead': 'Settings the workbench itself owns live here.',
|
|
417
578
|
|
|
@@ -426,39 +587,6 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
426
587
|
'sidebarEdition.reload': 'Reload page',
|
|
427
588
|
'sidebarEdition.failed': 'That choice did not save; try again.',
|
|
428
589
|
|
|
429
|
-
'configSync.nav': 'Config sync',
|
|
430
|
-
'configSync.lead': 'Bring over the rows another profile configures explicitly — pick any profile as the source.',
|
|
431
|
-
'configSync.source': 'Source',
|
|
432
|
-
'configSync.sourceBroken': 'its config is unreadable',
|
|
433
|
-
'configSync.sourceRows': '{name}: {count} rows are new or different for the workbench',
|
|
434
|
-
'configSync.sourceDead': 'unreadable',
|
|
435
|
-
'configSync.refresh': 'Read again',
|
|
436
|
-
'configSync.loading': 'Reading the source config…',
|
|
437
|
-
'configSync.readHint': 'Pick another source, or read again.',
|
|
438
|
-
'configSync.tag.new': 'New',
|
|
439
|
-
'configSync.tag.differs': 'Differs',
|
|
440
|
-
'configSync.conflictNote': 'Applying replaces this workbench copy with the source',
|
|
441
|
-
'configSync.code.lang': 'yaml',
|
|
442
|
-
'configSync.code.copy': 'Copy',
|
|
443
|
-
'configSync.code.copied': 'Copied',
|
|
444
|
-
'configSync.code.wrap': 'Wrap lines',
|
|
445
|
-
'configSync.code.unwrap': 'No wrap',
|
|
446
|
-
'configSync.code.collapse': 'Collapse',
|
|
447
|
-
'configSync.code.collapseAria': 'Collapse this row',
|
|
448
|
-
'configSync.code.expandAria': 'Expand the diff ({count} more lines)',
|
|
449
|
-
'configSync.code.expand': 'Show {count} more lines',
|
|
450
|
-
'configSync.missing': '{pkg} is not installed: the row will not take effect — run `dsh plugin --profile {profile} add {pkg}`, or install it from the module market',
|
|
451
|
-
'configSync.apply': 'Sync {count} selected items',
|
|
452
|
-
'configSync.applyNone': 'Choose what to sync',
|
|
453
|
-
'configSync.applying': 'Writing…',
|
|
454
|
-
'configSync.applied': 'Written to the workbench config · applied',
|
|
455
|
-
'configSync.appliedIds': 'Written this time: {ids}',
|
|
456
|
-
'configSync.skippedIds': 'Left alone (already here): {ids}',
|
|
457
|
-
'configSync.nothing': 'Nothing to sync',
|
|
458
|
-
'configSync.unreadable': 'Cannot read {path}: {reason}',
|
|
459
|
-
'configSync.noSource': 'This machine has no other profile to sync from',
|
|
460
|
-
'configSync.emptyProviders': 'The workbench has no model provider yet — sync the model-provider rows from some profile, or configure one under Models.',
|
|
461
|
-
'configSync.failed': 'The sync did not go through; try again.',
|
|
462
590
|
|
|
463
591
|
'debug.workspace': 'this workspace',
|
|
464
592
|
'debug.status': 'Debugging “{title}”',
|
|
@@ -491,4 +619,29 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
491
619
|
'approval.longTask.what': 'Stops',
|
|
492
620
|
'approval.longTask.signal':
|
|
493
621
|
'stopping only sends an interrupt signal — how the platform-side run finishes is up to the module',
|
|
622
|
+
'approval.publish.module': 'Module',
|
|
623
|
+
'approval.publish.target': 'Target',
|
|
624
|
+
'approval.publish.version': 'Version',
|
|
625
|
+
'approval.publish.registry': 'Registry',
|
|
626
|
+
'approval.publish.repo': 'Repository',
|
|
627
|
+
'approval.publish.branch': 'Branch',
|
|
628
|
+
'approval.publish.defaultBranch': 'default branch',
|
|
629
|
+
'approval.publish.artifacts': 'Artifacts',
|
|
630
|
+
'approval.publish.index': 'Index',
|
|
631
|
+
'approval.publish.commits': 'Commits',
|
|
632
|
+
'approval.publish.twoCommits': 'artifacts + market.json in 2 commits, one push',
|
|
633
|
+
'approval.publish.reading': 'Reading…',
|
|
634
|
+
'approval.publish.changelog': 'Changelog for {version}',
|
|
635
|
+
'approval.publish.changelogMissing': 'No changelog entry for {version}; publishing will be blocked',
|
|
636
|
+
'approval.publish.targetAuto': 'configured default',
|
|
637
|
+
'approval.publish.targetTeam': 'team registry',
|
|
638
|
+
'approval.publish.targetPublic': 'public npm',
|
|
639
|
+
'approval.publish.targetTarball': 'local tarball',
|
|
640
|
+
'approval.publish.targetGit': 'git repository',
|
|
641
|
+
'approval.publish.targetMarket': 'module market index',
|
|
642
|
+
'approval.publish.targetLocal': 'keep local',
|
|
643
|
+
'markdown.copy': 'Copy',
|
|
644
|
+
'markdown.copied': 'Copied',
|
|
645
|
+
'markdown.footnotes': 'Footnotes',
|
|
646
|
+
...enNeedText,
|
|
494
647
|
};
|
package/src/i18n/merge.test.ts
CHANGED
|
@@ -36,7 +36,7 @@ describe('mergeMessages', () => {
|
|
|
36
36
|
mergeMessages(legacy, [
|
|
37
37
|
{ unit: 'issues', messages: { zh: { 'issues.title': '缺陷' }, en: { 'issues.title': 'Defects' } } },
|
|
38
38
|
]),
|
|
39
|
-
).toThrow(/文案键冲突:issues\.title 由
|
|
39
|
+
).toThrow(/文案键冲突:issues\.title 由 工作台 与 issues/);
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
it('★ 套件自己的两语言不同构 → 抛(外壳的类型管不到别的套件)', () => {
|
|
@@ -65,7 +65,7 @@ describe('mergeMessagesSkipping', () => {
|
|
|
65
65
|
messages: { zh: { 'issues.mine': '我的缺陷' }, en: { 'issues.mine': 'My defects' } },
|
|
66
66
|
};
|
|
67
67
|
const bad = {
|
|
68
|
-
unit: '
|
|
68
|
+
unit: 'inventory',
|
|
69
69
|
messages: { zh: { 'wrong.prefix': '错了' }, en: { 'wrong.prefix': 'nope' } },
|
|
70
70
|
};
|
|
71
71
|
const later = {
|
|
@@ -83,15 +83,15 @@ describe('mergeMessagesSkipping', () => {
|
|
|
83
83
|
});
|
|
84
84
|
expect(dictionaries.en['builds.recent']).toBe('Recent builds');
|
|
85
85
|
expect(problems).toHaveLength(1);
|
|
86
|
-
expect(problems[0]?.unit).toBe('
|
|
87
|
-
expect(problems[0]?.reason).toMatch(/必须以 "
|
|
86
|
+
expect(problems[0]?.unit).toBe('inventory');
|
|
87
|
+
expect(problems[0]?.reason).toMatch(/必须以 "inventory\." 开头/);
|
|
88
88
|
});
|
|
89
89
|
|
|
90
90
|
it('★ 坏的在前、好的在后:后面那份不受影响(不会因为前者坏就整批拒收)', () => {
|
|
91
91
|
const { dictionaries, problems } = mergeMessagesSkipping(base, [bad, good]);
|
|
92
92
|
|
|
93
93
|
expect(dictionaries.zh['issues.mine']).toBe('我的缺陷');
|
|
94
|
-
expect(problems.map((item) => item.unit)).toEqual(['
|
|
94
|
+
expect(problems.map((item) => item.unit)).toEqual(['inventory']);
|
|
95
95
|
});
|
|
96
96
|
|
|
97
97
|
it('都好时与 mergeMessages 逐字一致、没有问题', () => {
|
|
@@ -109,7 +109,7 @@ describe('mergeMessagesSkipping', () => {
|
|
|
109
109
|
const { dictionaries, problems } = mergeMessagesSkipping(base, [clash]);
|
|
110
110
|
|
|
111
111
|
expect(dictionaries.zh['board.title']).toBe('看板');
|
|
112
|
-
expect(problems[0]?.reason).toMatch(/文案键冲突:board\.title 由
|
|
112
|
+
expect(problems[0]?.reason).toMatch(/文案键冲突:board\.title 由 工作台 与 board/);
|
|
113
113
|
});
|
|
114
114
|
|
|
115
115
|
it('没带文案的那份直接跳过,不算问题', () => {
|
package/src/i18n/merge.ts
CHANGED
|
@@ -31,7 +31,7 @@ export function mergeMessages(
|
|
|
31
31
|
): Dictionaries {
|
|
32
32
|
const zh: Record<string, string> = { ...base.zh };
|
|
33
33
|
const en: Record<string, string> = { ...base.en };
|
|
34
|
-
const owner = new Map<string, string>(Object.keys(base.zh).map((key) => [key, '
|
|
34
|
+
const owner = new Map<string, string>(Object.keys(base.zh).map((key) => [key, '工作台']));
|
|
35
35
|
|
|
36
36
|
for (const item of contributions) {
|
|
37
37
|
const messages = item.messages;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const zhNeedText = {
|
|
2
|
+
'env.need.bin.missing': '这台机器上缺命令',
|
|
3
|
+
'env.need.bin.hint': '先把这条命令装进 PATH,再重试。',
|
|
4
|
+
'env.need.extension.missing': '这个模块要的插件没装',
|
|
5
|
+
'env.need.extension.outdated': '这个模块要的插件版本旧了',
|
|
6
|
+
'env.need.extension.hint': '装好或升级之后点重试;不影响其它模块。',
|
|
7
|
+
'env.need.lib.missing': '这个模块要的共用依赖没装',
|
|
8
|
+
'env.need.lib.outdated': '这个模块要的共用依赖版本旧了',
|
|
9
|
+
'env.need.lib.unsatisfied': '这个模块要的共用依赖版本不对',
|
|
10
|
+
'env.need.lib.hint': '按下面的命令装好,再重试。',
|
|
11
|
+
'env.need.env.missing': '这个模块要的环境变量没设',
|
|
12
|
+
'env.need.env.hint': '设好这个变量后重启工作台;它的值不会被任何界面回显。',
|
|
13
|
+
} as const;
|
|
14
|
+
|
|
15
|
+
export const enNeedText = {
|
|
16
|
+
'env.need.bin.missing': 'A command is missing on this machine',
|
|
17
|
+
'env.need.bin.hint': 'Put that command on PATH, then retry.',
|
|
18
|
+
'env.need.extension.missing': 'A plugin this module needs is not installed',
|
|
19
|
+
'env.need.extension.outdated': 'A plugin this module needs is out of date',
|
|
20
|
+
'env.need.extension.hint': 'Install or upgrade it, then retry; other modules are unaffected.',
|
|
21
|
+
'env.need.lib.missing': 'A shared dependency this module needs is not installed',
|
|
22
|
+
'env.need.lib.outdated': 'A shared dependency this module needs is out of date',
|
|
23
|
+
'env.need.lib.unsatisfied': 'A shared dependency is at the wrong version',
|
|
24
|
+
'env.need.lib.hint': 'Run the command below, then retry.',
|
|
25
|
+
'env.need.env.missing': 'An environment variable this module needs is not set',
|
|
26
|
+
'env.need.env.hint': 'Set it and restart the workbench; its value is never shown in any UI.',
|
|
27
|
+
} as const;
|