@dsh-workbench/shared 0.3.10 → 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 +19 -1
- package/dist/api/host-write.d.ts +0 -15
- package/dist/api/host-write.js +1 -35
- 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 -7
- package/dist/components/icons.js +11 -16
- package/dist/config/constants.d.ts +2 -2
- package/dist/config/constants.js +2 -2
- package/dist/config/storage.d.ts +0 -4
- package/dist/config/storage.js +0 -11
- 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/plugin-source.js +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.d.ts +18 -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/{api → 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-approval.d.ts +12 -0
- package/dist/host/tool-approval.js +4 -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 +259 -86
- package/dist/i18n/index.d.ts +333 -88
- 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 +332 -87
- package/dist/i18n/zh.js +260 -87
- package/dist/index.d.ts +24 -8
- package/dist/index.js +24 -8
- package/dist/lib/blocker-action.d.ts +0 -15
- package/dist/lib/blocker-action.js +1 -25
- package/dist/{api → lib}/dsh-client.d.ts +12 -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-types.d.ts +5 -0
- package/dist/lib/react-types.js +1 -0
- package/dist/lib/react.d.ts +1 -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 +17 -1
- package/src/api/host-write.ts +0 -43
- 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 -24
- package/src/config/constants.ts +2 -2
- package/src/config/storage.test.ts +1 -25
- package/src/config/storage.ts +0 -12
- 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/contract/unit-board.ts +23 -0
- 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-approval.ts +17 -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 +261 -86
- 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 +263 -87
- package/src/index.ts +24 -8
- package/src/lib/blocker-action.ts +0 -28
- package/src/{api → lib}/dsh-client.ts +16 -2
- package/src/lib/market-index.ts +36 -0
- package/src/lib/react-types.ts +5 -0
- package/src/lib/react.ts +1 -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-board.d.ts +0 -39
- package/dist/api/unit-board.js +0 -45
- 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.d.ts +0 -65
- 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__/host-write.test.ts +0 -75
- package/src/api/__tests__/unit-board.test.ts +0 -76
- package/src/api/__tests__/unit.test.ts +0 -38
- package/src/api/unit-board.ts +0 -69
- 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/src/lib/blocker-action.test.ts +0 -40
- /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/workbench-contract.js → contract/cli.js} +0 -0
- /package/dist/{host/unit-libs.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/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…',
|
|
@@ -92,13 +95,15 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
92
95
|
'panels.buildModule': 'Build a module',
|
|
93
96
|
'panels.failed': 'Could not save the change. Try again.',
|
|
94
97
|
'panels.dragHint': 'Drag to reorder',
|
|
95
|
-
'panels.unknownStep': 'No
|
|
98
|
+
'panels.unknownStep': 'No panel for this view yet',
|
|
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,18 @@ 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.',
|
|
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}.',
|
|
138
|
+
'panels.market.updateUnknownVersion': '(unknown)',
|
|
139
|
+
'panels.market.updateGone': 'Not updated: after the run the module cannot be read from disk.',
|
|
140
|
+
'panels.market.updateRestored': 'Not updated: the new version was missing from disk, so {version} was put back.',
|
|
141
|
+
'panels.market.updateBehind': 'Installed {installed}, but the newest on the registry is {latest} — not the latest; you can update once more.',
|
|
142
|
+
'panels.market.selfUpdateFailed': 'Self-update failed: {reason}',
|
|
143
|
+
'panels.market.selfUpdateUnknown': 'the outside process left no reason (see ~/.dsh/workbench/self-update.log)',
|
|
144
|
+
'panels.market.selfUpdateRolledBack': 'Not swapped; rolled back to {version}.',
|
|
130
145
|
'panels.market.uninstall': 'Uninstall',
|
|
131
146
|
'panels.market.uninstallLabel': 'Uninstall {name}',
|
|
132
147
|
'panels.market.installing': 'Installing…',
|
|
@@ -142,24 +157,19 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
142
157
|
'panels.market.failed': 'Failed: {reason}',
|
|
143
158
|
'panels.market.needEnv': 'Set {env} in the terminal that started the workbench first',
|
|
144
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',
|
|
145
162
|
'panels.market.localMark': 'local',
|
|
146
|
-
'panels.market.localHint': 'This is your machine’s own copy (not taken from the registry).',
|
|
147
163
|
'panels.market.noSource': 'This module declares no install method — install it yourself',
|
|
148
164
|
'panels.market.badSource': 'The install method is incomplete — install it yourself',
|
|
149
165
|
'panels.market.empty': 'No modules available',
|
|
150
166
|
'panels.market.sectionPlugins': 'Installed opencli plugins',
|
|
151
167
|
'panels.market.moduleOutdated': 'update available',
|
|
152
168
|
'panels.market.moduleRefused': 'This module does not match this workbench, so it cannot be used for now.',
|
|
153
|
-
'panels.market.moduleRefusedDetail': 'Why it cannot be used: {reason}',
|
|
154
169
|
'panels.market.moduleRestartHint': 'restart dsh once to bring it up',
|
|
155
170
|
'panels.market.pendingRestart': 'restart required',
|
|
156
171
|
'panels.market.workbenchName': 'Workbench',
|
|
157
|
-
'panels.market.
|
|
158
|
-
'panels.market.pluginKeptInUse': 'Files kept for now: {names} still uses it.',
|
|
159
|
-
'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.',
|
|
160
|
-
'panels.market.pluginKeptHeld': 'Files kept: this one is yours, and a module letting go will not remove it.',
|
|
161
|
-
'panels.market.pluginKeptUnnamed': 'Files kept for now: this one cannot be identified as a plugin, so it is unclear who needs it.',
|
|
162
|
-
'panels.market.pluginBroken': 'This install is broken: it cannot be identified as a plugin. Uninstall it, or tell the agent to reinstall it by package name with workbench_modules_install_bundle.',
|
|
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.',
|
|
163
173
|
'panels.market.restartNeeded': 'The new version is installed — restart once to pick it up.',
|
|
164
174
|
'panels.market.foot': 'After installing, enable it in the panel page of that project.',
|
|
165
175
|
'panels.market.recheck': 'Check for updates',
|
|
@@ -204,7 +214,7 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
204
214
|
'panels.market.add.cancelledTitle': 'Cancelled',
|
|
205
215
|
'panels.market.add.failureNetworkHost': 'Cannot reach {host}. Git URLs and .tgz links bypass the registry, so this machine needs direct access or a proxy; if the module is also on npm, use its package name instead.',
|
|
206
216
|
'panels.market.add.problemInvalid': 'Cannot read this package name or address: {reason}',
|
|
207
|
-
'panels.market.add.problemInstalled': 'This module is already installed',
|
|
217
|
+
'panels.market.add.problemInstalled': 'This module is already installed (add @version to switch versions)',
|
|
208
218
|
'panels.market.add.problemNotFound': 'No such module found',
|
|
209
219
|
'panels.market.add.problemNotPackage': 'That path does not exist or is not a valid module package',
|
|
210
220
|
'panels.market.add.problemNotBundle':
|
|
@@ -228,7 +238,7 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
228
238
|
'panels.market.add.failureTimeout': 'The install timed out',
|
|
229
239
|
'panels.market.add.failurePnpmMissing': 'pnpm was not found, cannot install',
|
|
230
240
|
'panels.market.add.failureInstalled':
|
|
231
|
-
'It is already in this
|
|
241
|
+
'It is already installed in this workbench. The same package cannot be installed over itself: uninstall it first, then install again. The uninstall did not succeed this time.',
|
|
232
242
|
'panels.market.add.failureGeneric': 'Something went wrong during install — see the install details',
|
|
233
243
|
'panels.market.add.approveTitle': 'Your approval is needed for install scripts',
|
|
234
244
|
'panels.market.add.approveCaution': 'Only allow packages you trust: install scripts run on this machine with your permissions.',
|
|
@@ -261,12 +271,148 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
261
271
|
'panels.market.add.close': 'Close',
|
|
262
272
|
'panels.market.add.retry': 'Retry',
|
|
263
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}',
|
|
264
410
|
'panels.market.add.approveBuilds': 'Allow these scripts and retry',
|
|
265
411
|
'panels.market.add.approveHint': 'These packages want to run install scripts: {packages}',
|
|
266
412
|
'panels.market.add.doneApplied': 'Installed and live.',
|
|
267
413
|
'panels.market.add.doneRestart': 'Installed — restart once to pick it up.',
|
|
268
414
|
'panels.market.add.restartWhy': 'Why this needs a restart: {reason}',
|
|
269
|
-
'panels.market.add.restartWhy.no-hmr': 'this
|
|
415
|
+
'panels.market.add.restartWhy.no-hmr': 'this configuration only applies changes at startup (hot reload is off)',
|
|
270
416
|
'panels.market.add.restartWhy.package-moved':
|
|
271
417
|
'an installed package now resolves to another directory, or the change replaced something dsh itself provides',
|
|
272
418
|
'panels.market.add.restartWhy.host-module': 'the change reaches modules dsh itself loaded',
|
|
@@ -282,17 +428,17 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
282
428
|
'panels.market.add.remove': 'Remove it',
|
|
283
429
|
'panels.market.add.problem.invalidSpec': "That is not a spec we accept: it cannot be empty or start with a dash.",
|
|
284
430
|
'panels.market.add.problem.alreadyInstalled': 'That package is already in the profile (add @version to switch versions).',
|
|
285
|
-
'panels.market.add.problem.notFound': 'No such package on that source.',
|
|
286
|
-
'panels.market.add.problem.notAPackage': 'There is no package at that location.',
|
|
287
|
-
'panels.market.add.problem.notABundle': 'It is an npm package, but not a dsh plugin (
|
|
288
|
-
'panels.market.add.problem.network': 'The source is unreachable.',
|
|
289
|
-
'panels.market.add.problem.unknown': 'The check did not pass (reason unknown).',
|
|
431
|
+
'panels.market.add.problem.notFound': 'No such package on that source. Try another name or version.',
|
|
432
|
+
'panels.market.add.problem.notAPackage': 'There is no package at that location. Pick a folder that contains a package.json.',
|
|
433
|
+
'panels.market.add.problem.notABundle': 'It is an npm package, but not a dsh plugin (it is missing the dsh wiring declaration).',
|
|
434
|
+
'panels.market.add.problem.network': 'The source is unreachable. Check the network and retry.',
|
|
435
|
+
'panels.market.add.problem.unknown': 'The check did not pass (reason unknown). Open the install details for the raw output, or retry.',
|
|
290
436
|
'panels.market.add.reason.invalidSpec': 'the spec is not accepted',
|
|
291
437
|
'panels.market.add.reason.incompatible': 'it wants a different dsh version than this machine runs',
|
|
292
438
|
'panels.market.add.reason.notBundle': 'it is not a dsh plugin package',
|
|
293
439
|
'panels.market.add.reason.notRemovable': 'it ships with the installation and cannot be removed',
|
|
294
440
|
'panels.market.add.reason.bundleInUse': 'something is still using it',
|
|
295
|
-
'panels.market.add.reason.stopProfile': 'this
|
|
441
|
+
'panels.market.add.reason.stopProfile': 'this configuration has no hot reload, so stop the process first',
|
|
296
442
|
'panels.market.add.reason.staleApproval': 'the scripts to allow changed — start over',
|
|
297
443
|
'panels.market.add.reason.operationError': 'pnpm failed (see the install output)',
|
|
298
444
|
'panels.market.add.reason.buildBlocked': 'pnpm blocked install scripts',
|
|
@@ -317,7 +463,7 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
317
463
|
'blocker.login.titleGeneric': 'Sign-in required',
|
|
318
464
|
'blocker.login.hint': 'The workbench uses your browser session; sign in once and you are done.',
|
|
319
465
|
'blocker.login.go': 'Go sign in',
|
|
320
|
-
'blocker.login.manual': 'Run
|
|
466
|
+
'blocker.login.manual': 'Run the plugin login command in a terminal (see its docs), then retry.',
|
|
321
467
|
'blocker.forbidden.title': 'No access to {platform}',
|
|
322
468
|
'blocker.forbidden.titleGeneric': 'No access',
|
|
323
469
|
'blocker.forbidden.hint': 'You are signed in, but this project/repo is not permitted for your account.',
|
|
@@ -331,27 +477,30 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
331
477
|
'panels.empty': 'No modules on the panel yet',
|
|
332
478
|
'panels.emptyHint': 'You can also just tell the agent: “add a module to the panel”.',
|
|
333
479
|
'env.title': 'Preparing the workbench',
|
|
334
|
-
'env.checking': '
|
|
335
|
-
'env.installing': 'Installing the
|
|
480
|
+
'env.checking': 'Getting the runtime ready…',
|
|
481
|
+
'env.installing': 'Installing background tools — the first run takes a moment…',
|
|
336
482
|
'env.failed': 'One step away',
|
|
337
483
|
'env.elapsed': 'Waiting {seconds}s',
|
|
338
484
|
'env.stepFailed.install': 'install failed',
|
|
339
485
|
'env.stepFailed.path': 'installed but not found',
|
|
340
486
|
'env.stepFailed.shell': 'no shell channel',
|
|
487
|
+
'env.toolchain.ok': 'Looks good',
|
|
488
|
+
'env.toolchain.warn': 'Almost ready',
|
|
489
|
+
'env.opencli.ok': 'Ready',
|
|
341
490
|
'env.bridge.ok': 'Connected',
|
|
342
|
-
'env.bridge.short': 'Not connected',
|
|
343
|
-
'env.bridge.why': 'Panel data
|
|
344
|
-
'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.',
|
|
345
494
|
'env.bridge.daemon': 'The background service is not running. It usually starts by itself \u2014 run the command below in your terminal first.',
|
|
346
|
-
'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).',
|
|
347
496
|
'env.bridge.extensionLink': 'Get the extension in the Chrome Web Store',
|
|
348
|
-
'env.bridge.profile': 'Several browser
|
|
349
|
-
'env.bridge.stale': 'The default browser
|
|
350
|
-
'env.bridge.unknown': 'Could not tell what went wrong
|
|
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.',
|
|
499
|
+
'env.bridge.unknown': 'Could not tell what went wrong. Expand the raw output and follow the steps in it.',
|
|
351
500
|
'env.fix.title': 'How to fix it',
|
|
352
|
-
'env.fix.why': 'The workbench uses its own
|
|
353
|
-
'env.fix.whyPath': '
|
|
354
|
-
'env.fix.whyShell': 'The workbench has no shell channel, so it cannot fetch data \u2014
|
|
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.',
|
|
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.',
|
|
355
504
|
'env.fix.step': 'Run this in a terminal, then hit Retry:',
|
|
356
505
|
'env.fix.stepPath': 'Open a new terminal window (or make sure npm\u2019s global bin directory is on PATH), then hit Retry.',
|
|
357
506
|
'env.fix.stepShell': 'Restart the workbench (or dsh); if it keeps happening, the shell channel is not wired up.',
|
|
@@ -359,32 +508,47 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
359
508
|
'env.fix.network': 'Network unreachable: check your network or proxy, then retry.',
|
|
360
509
|
'env.fix.details': 'Details (for troubleshooting)',
|
|
361
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.',
|
|
362
516
|
'env.bridge.continue': 'Enter the workbench anyway',
|
|
363
517
|
'env.diy.ok': 'Available',
|
|
364
|
-
'env.diy.short': '
|
|
365
|
-
'env.diy.hold': 'DIY mode
|
|
366
|
-
'env.diy.why': '
|
|
367
|
-
'env.diy.rows': 'This dsh is missing these
|
|
368
|
-
'env.diy.noRow': 'The health check did not find \u201cWorkbench DIY\u201d in dsh\u2019s
|
|
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.',
|
|
521
|
+
'env.diy.rows': 'This dsh is missing these items: {rows}',
|
|
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.',
|
|
369
523
|
'env.diy.step': 'Upgrade dsh, then restart the workbench:',
|
|
370
524
|
'env.diy.continue': 'Enter the workbench anyway',
|
|
371
525
|
'env.copyCommand': 'Copy command',
|
|
372
526
|
'env.copied': 'Copied',
|
|
373
|
-
'env.step.
|
|
374
|
-
'env.step.
|
|
375
|
-
'env.step.bridge': '
|
|
376
|
-
'env.step.diy': '
|
|
377
|
-
'env.step.warm': '
|
|
378
|
-
'env.warm.done': '{n}
|
|
379
|
-
'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',
|
|
380
534
|
'env.unit.failed': 'This module cannot start',
|
|
381
535
|
'env.unit.failedHint': 'It failed while assembling itself; other modules are unaffected.',
|
|
382
|
-
'env.unit.missingPlugin': 'This module is not ready yet',
|
|
383
|
-
'env.unit.missingCommandsHint': 'Updating it should fix this.',
|
|
384
536
|
'env.unit.unchecked': 'Cannot check: no shell channel',
|
|
385
537
|
'env.unit.uncheckedHint': 'The module is not the problem \u2014 the shell channel is unavailable. Restart the workbench.',
|
|
386
|
-
'
|
|
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.',
|
|
387
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.',
|
|
388
552
|
'rightbar.label': 'Data panels',
|
|
389
553
|
'rightbar.expand': 'Expand the data panel',
|
|
390
554
|
'rightbar.collapse': 'Collapse the data panel',
|
|
@@ -396,7 +560,6 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
396
560
|
'rightbar.updatedAt': 'updated {time}',
|
|
397
561
|
'rightbar.noProject': 'The current session has no workspace',
|
|
398
562
|
'rightbar.openPlatform': 'Open on the platform',
|
|
399
|
-
'coding.notARepo.title': 'This workspace is not a Coding repository',
|
|
400
563
|
'error.unknown': 'Something went wrong',
|
|
401
564
|
|
|
402
565
|
'board.title': 'Workbench panel',
|
|
@@ -404,39 +567,26 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
404
567
|
'panel.conversation': 'Conversation',
|
|
405
568
|
'panels.label': 'Global panels',
|
|
406
569
|
|
|
407
|
-
'
|
|
408
|
-
'
|
|
409
|
-
'
|
|
410
|
-
'
|
|
411
|
-
'
|
|
412
|
-
'
|
|
413
|
-
'
|
|
414
|
-
'
|
|
415
|
-
|
|
416
|
-
'
|
|
417
|
-
'
|
|
418
|
-
'
|
|
419
|
-
'
|
|
420
|
-
'
|
|
421
|
-
'
|
|
422
|
-
'
|
|
423
|
-
'
|
|
424
|
-
'
|
|
425
|
-
'
|
|
426
|
-
|
|
427
|
-
'configSync.code.expand': 'Show {count} more lines',
|
|
428
|
-
'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',
|
|
429
|
-
'configSync.apply': 'Sync {count} selected',
|
|
430
|
-
'configSync.applyNone': 'Pick some rows first',
|
|
431
|
-
'configSync.applying': 'Writing…',
|
|
432
|
-
'configSync.applied': 'Written to the workbench config · applied',
|
|
433
|
-
'configSync.appliedIds': 'Written this time: {ids}',
|
|
434
|
-
'configSync.skippedIds': 'Left alone (already here): {ids}',
|
|
435
|
-
'configSync.nothing': 'Nothing to sync',
|
|
436
|
-
'configSync.unreadable': 'Cannot read {path}: {reason}',
|
|
437
|
-
'configSync.noSource': 'This machine has no other profile to sync from',
|
|
438
|
-
'configSync.emptyProviders': 'The workbench has no model provider yet — sync the llm- rows from some profile, or configure one under Models.',
|
|
439
|
-
'configSync.failed': 'The sync did not go through; try again.',
|
|
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.',
|
|
576
|
+
'workbenchSettings.nav': 'Workbench settings',
|
|
577
|
+
'workbenchSettings.lead': 'Settings the workbench itself owns live here.',
|
|
578
|
+
|
|
579
|
+
'sidebarEdition.nav': 'Session list',
|
|
580
|
+
'sidebarEdition.lead': 'Which whole left column to use: the official dsh one, or the workbench’s own.',
|
|
581
|
+
'sidebarEdition.official': 'Official',
|
|
582
|
+
'sidebarEdition.officialHint': 'Matches dsh exactly and stays stable: search, view options, show more, archive, add workspace — no waiting for us to catch up. Pick it to keep things simple.',
|
|
583
|
+
'sidebarEdition.custom': 'Custom',
|
|
584
|
+
'sidebarEdition.customHint': 'Built for multi-project work: one project per dropdown, recency-first sessions, edge fades, marquee, DIY new session. Easier when you juggle projects.',
|
|
585
|
+
'sidebarEdition.saving': 'Configuring…',
|
|
586
|
+
'sidebarEdition.reloadRequired': 'Saved. Reload the page to apply — no workbench restart needed.',
|
|
587
|
+
'sidebarEdition.reload': 'Reload page',
|
|
588
|
+
'sidebarEdition.failed': 'That choice did not save; try again.',
|
|
589
|
+
|
|
440
590
|
|
|
441
591
|
'debug.workspace': 'this workspace',
|
|
442
592
|
'debug.status': 'Debugging “{title}”',
|
|
@@ -469,4 +619,29 @@ export const en: Record<keyof WorkbenchMessages, string> = {
|
|
|
469
619
|
'approval.longTask.what': 'Stops',
|
|
470
620
|
'approval.longTask.signal':
|
|
471
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,
|
|
472
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;
|