dsh-config-manager 0.1.3 → 0.1.4
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/README.md +12 -93
- package/README.zh-CN.md +13 -94
- package/lib/client.js +72 -72
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ DSH is your AI assistant workbench — it holds your settings: model configs, pl
|
|
|
30
30
|
| 🚀 | **One-click Export** | Package your recommended config into a ZIP |
|
|
31
31
|
| 📦 | **One-click Import** | Restore your environment on another machine |
|
|
32
32
|
| 👀 | **Preview before import** | Full preview first — **never touches your config silently** |
|
|
33
|
-
| ⚔️ | **Conflict handling** | Keep Current / Use Imported
|
|
33
|
+
| ⚔️ | **Conflict handling** | Keep Current / Use Imported — you decide |
|
|
34
34
|
| 🗺️ | **Path auto-mapping** | Detects dead absolute paths and lets you remap them |
|
|
35
35
|
| 🔒 | **Secret safety** | API Keys are never exported; re-enter them after import |
|
|
36
36
|
| ↩️ | **Automatic rollback** | Failed import restores everything automatically |
|
|
@@ -66,26 +66,12 @@ It's a standard **DSH plugin** — two steps:
|
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
68
|
# ① Install the plugin
|
|
69
|
-
dsh plugin --profile web add dsh-config-manager --config.auto-install-peers=false
|
|
69
|
+
dsh plugin --profile web add dsh-config-manager@latest --config.auto-install-peers=false
|
|
70
70
|
|
|
71
71
|
# ② Restart DSH (a "Backup & Migration" entry appears in Settings)
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
> 💡
|
|
75
|
-
|
|
76
|
-
**From source / local package** (for developers):
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
npm run build && npm pack # produces dsh-config-manager-0.1.2.tgz
|
|
80
|
-
dsh plugin --profile web add file:/absolute/path/dsh-config-manager-0.1.2.tgz
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
> 🧪 **Try it without touching your real environment?** Use an isolated `DSH_HOME`:
|
|
84
|
-
> ```bash
|
|
85
|
-
> $env:DSH_HOME = "D:\tmp\dsh-home" # Windows PowerShell
|
|
86
|
-
> dsh plugin --profile test add dsh-config-manager --config.auto-install-peers=false
|
|
87
|
-
> dsh --profile test --dump-config | Select-String config-manager
|
|
88
|
-
> ```
|
|
74
|
+
> 💡 Just copy-paste the command: `--config.auto-install-peers=false` skips a few DSH core packages that aren't on the public registry yet (the DSH runtime provides them), and `@latest` ensures you get the newest build.
|
|
89
75
|
|
|
90
76
|
---
|
|
91
77
|
|
|
@@ -144,7 +130,8 @@ When the target already has a same-named item, you choose:
|
|
|
144
130
|
|---|---|
|
|
145
131
|
| **Keep Current** | Leave the target's config untouched |
|
|
146
132
|
| **Use Imported** | Overwrite with the backup's value |
|
|
147
|
-
|
|
133
|
+
|
|
134
|
+
> Note: a "decide later / review" option is intentionally **not** offered — an undecided conflict would block the import from proceeding. Every conflict must be resolved before continuing.
|
|
148
135
|
|
|
149
136
|
### 🗺️ Path mapping
|
|
150
137
|
|
|
@@ -167,27 +154,6 @@ Save multiple configurations (Work / Personal) and switch anytime; switching inc
|
|
|
167
154
|
|
|
168
155
|
---
|
|
169
156
|
|
|
170
|
-
## 📦 What's inside a backup?
|
|
171
|
-
|
|
172
|
-
```
|
|
173
|
-
dsh-config-2026-08-14.zip
|
|
174
|
-
├── manifest.json # backup manifest: version / source / time / sections
|
|
175
|
-
├── config/
|
|
176
|
-
│ ├── settings.json # settings (redacted)
|
|
177
|
-
│ └── ui.json # UI preferences
|
|
178
|
-
├── ai/providers.json # AI providers / models
|
|
179
|
-
├── plugins/ # plugin manifest (binaries are never packaged)
|
|
180
|
-
├── mcp/servers.json # MCP server configs
|
|
181
|
-
├── custom/ # prompts / skills
|
|
182
|
-
├── agents/presets/ # agent presets
|
|
183
|
-
├── workspaces/ # workspaces
|
|
184
|
-
├── security/credentials.json # credential state (no values)
|
|
185
|
-
├── security/secrets.enc # encrypted backups only
|
|
186
|
-
└── integrity/checksums.json # SHA-256 checksums
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
157
|
## 🛡️ Security
|
|
192
158
|
|
|
193
159
|
- **The default backup contains no secret values** — a hard invariant, enforced at export
|
|
@@ -228,62 +194,15 @@ No. Items are deduplicated by stable IDs (plugin ID / MCP name / skill name…);
|
|
|
228
194
|
|
|
229
195
|
---
|
|
230
196
|
|
|
231
|
-
##
|
|
232
|
-
|
|
233
|
-
```bash
|
|
234
|
-
npm install --legacy-peer-deps # install dependencies
|
|
235
|
-
npm run typecheck # type checking
|
|
236
|
-
npm run build # build (host lib/ + client bundle)
|
|
237
|
-
npm test # run tests (192)
|
|
238
|
-
npm run bundle # rebuild the client bundle only
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
**Architecture**: the core engine is decoupled from the DSH runtime (mock-testable) → per-category adapters → security modules → centralized schema migrations.
|
|
242
|
-
|
|
243
|
-
**Auto-publish**: push a tag → automatically published to npm (GitHub Actions + OIDC, no stored secrets):
|
|
244
|
-
|
|
245
|
-
```bash
|
|
246
|
-
npm version patch # 0.1.2 → 0.1.3
|
|
247
|
-
git push origin main --tags # CI: test → build → publish
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
> One-time OIDC trusted-publisher setup:
|
|
251
|
-
> ```bash
|
|
252
|
-
> npm login
|
|
253
|
-
> npm trust github dsh-config-manager --file publish.yml --repo xiajiajun516/dsh-config-manager --allow-publish
|
|
254
|
-
> ```
|
|
255
|
-
> Or add the GitHub Actions trusted publisher on the package page (Settings → Publishing access).
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
## 🧪 Testing
|
|
260
|
-
|
|
261
|
-
**All 192 tests pass** (Node's built-in test runner, zero extra dependencies), covering:
|
|
197
|
+
## 📋 Known limitations (user-facing)
|
|
262
198
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
| Security | malicious ZIP / corrupt archive / checksum mismatch / path traversal |
|
|
269
|
-
| Cross-platform | Windows ↔ macOS ↔ Linux path handling |
|
|
270
|
-
| Migration | schema upgrade mechanism |
|
|
271
|
-
|
|
272
|
-
---
|
|
199
|
+
1. **Installing / updating plugins or MCP takes effect after restarting DSH**
|
|
200
|
+
2. **Some UI state is not migrated** (e.g. task board data, panel widths — they live in the browser, not in DSH's config files)
|
|
201
|
+
3. **keybindings / workflow configs / commands / rules** — DSH has no such concepts, so nothing is exported for them
|
|
202
|
+
4. **History/session migration is off by default** (v1 copies files only)
|
|
203
|
+
5. **Encrypted backups**: a lost password means the `secrets.enc` can't be decrypted (by design — keep your password safe)
|
|
273
204
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
1. **Workspace: create/rename title only** — DSH has no whole-overwrite write channel; paths & session lists are maintained by DSH itself (path mapping adapts cross-device)
|
|
277
|
-
2. **Some DSH core packages are not public** — features depending on their APIs only work in a local DSH; install needs `--config.auto-install-peers=false`
|
|
278
|
-
3. **No MCP management API** — MCP is imported as config lines and takes effect after restarting DSH
|
|
279
|
-
4. **Plugin install requires a restart**
|
|
280
|
-
5. **Browser UI state (localStorage) is not migrated** — e.g. task board data, panel widths
|
|
281
|
-
6. **keybindings / workflows / commands / rules** — DSH has no such concepts; no fake sections
|
|
282
|
-
7. **Credential values can't be rolled back** — re-enter manually after a rollback that touched them
|
|
283
|
-
8. **Newly created items can't be rollback-deleted** — DSH settings have no delete semantics
|
|
284
|
-
9. **Schema migration** — the mechanism is ready; the v1→v2 chain is a placeholder (v1 is current)
|
|
285
|
-
10. **History/session migration is off by default** — v1 copies files only
|
|
286
|
-
11. **Encrypted backups** — a lost password means the `secrets.enc` can't be decrypted (by design)
|
|
205
|
+
> Maintainers & developers: see [DEVELOPERS.md](DEVELOPERS.md) for build, testing, auto-publishing and full technical notes.
|
|
287
206
|
|
|
288
207
|
---
|
|
289
208
|
|
package/README.zh-CN.md
CHANGED
|
@@ -30,7 +30,7 @@ DSH 是你的 AI 助手工作台,里面存着你的各种设置:模型配置
|
|
|
30
30
|
| 🚀 | **一键导出** | 点一下,把推荐配置打包成一个 ZIP |
|
|
31
31
|
| 📦 | **一键导入** | 在另一台电脑点一下,环境就回来了 |
|
|
32
32
|
| 👀 | **先预览再导入** | 导入前完整预览,**绝不偷偷改你的配置** |
|
|
33
|
-
| ⚔️ | **冲突处理** | 遇到同名配置,让你自己选:保留现有的 / 用导入的
|
|
33
|
+
| ⚔️ | **冲突处理** | 遇到同名配置,让你自己选:保留现有的 / 用导入的 |
|
|
34
34
|
| 🗺️ | **路径自动映射** | 换了电脑路径变了?自动检测并让你重新指定 |
|
|
35
35
|
| 🔒 | **密钥安全** | API Key 默认不导出;导入后提醒你重新填写 |
|
|
36
36
|
| ↩️ | **自动回滚** | 导入失败自动恢复原样,不会弄坏现有配置 |
|
|
@@ -66,26 +66,12 @@ DSH 是你的 AI 助手工作台,里面存着你的各种设置:模型配置
|
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
68
|
# ① 安装插件
|
|
69
|
-
dsh plugin --profile web add dsh-config-manager --config.auto-install-peers=false
|
|
69
|
+
dsh plugin --profile web add dsh-config-manager@latest --config.auto-install-peers=false
|
|
70
70
|
|
|
71
71
|
# ② 重启 DSH(设置页就会出现「备份与迁移」入口)
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
> 💡
|
|
75
|
-
|
|
76
|
-
**从源码 / 本地包安装**(开发者用):
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
npm run build && npm pack # 产出 dsh-config-manager-0.1.2.tgz
|
|
80
|
-
dsh plugin --profile web add file:/绝对路径/dsh-config-manager-0.1.2.tgz
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
> 🧪 **想先试不碰正式环境?** 用隔离目录测试,完全不触碰 `~/.dsh`:
|
|
84
|
-
> ```bash
|
|
85
|
-
> $env:DSH_HOME = "D:\tmp\dsh-home" # Windows PowerShell
|
|
86
|
-
> dsh plugin --profile test add dsh-config-manager --config.auto-install-peers=false
|
|
87
|
-
> dsh --profile test --dump-config | Select-String config-manager
|
|
88
|
-
> ```
|
|
74
|
+
> 💡 照着复制就行:`--config.auto-install-peers=false` 跳过几个尚未公开发布的 DSH 核心依赖(运行时由 DSH 自己提供),`@latest` 确保装到最新版。
|
|
89
75
|
|
|
90
76
|
---
|
|
91
77
|
|
|
@@ -101,7 +87,7 @@ dsh plugin --profile web add file:/绝对路径/dsh-config-manager-0.1.2.tgz
|
|
|
101
87
|
1. 打开 DSH → 「备份与迁移」→「导入配置」
|
|
102
88
|
2. 选择 ZIP → 等待分析 → 查看「导入预览」
|
|
103
89
|
3. 有路径问题?→ 选择新路径(可批量映射)
|
|
104
|
-
4. 有同名配置冲突?→ 选择
|
|
90
|
+
4. 有同名配置冲突?→ 选择 保留现有的 / 用导入的
|
|
105
91
|
5. 确认导入 → 等待完成
|
|
106
92
|
6. 按提示重新填写缺失的 API Key
|
|
107
93
|
7. ✅ 设置 / 插件 / MCP / 技能 / 工作区都回来了
|
|
@@ -144,7 +130,8 @@ dsh plugin --profile web add file:/绝对路径/dsh-config-manager-0.1.2.tgz
|
|
|
144
130
|
|---|---|
|
|
145
131
|
| **保留现有的** | 不动目标电脑的原配置 |
|
|
146
132
|
| **用导入的** | 用备份里的配置覆盖 |
|
|
147
|
-
|
|
133
|
+
|
|
134
|
+
> 说明:刻意**不提供**「稍后决定 / 再看看」选项——未决的冲突会让导入无法继续,每个冲突都必须在继续前做出选择。
|
|
148
135
|
|
|
149
136
|
### 🗺️ 路径映射
|
|
150
137
|
|
|
@@ -167,27 +154,6 @@ dsh plugin --profile web add file:/绝对路径/dsh-config-manager-0.1.2.tgz
|
|
|
167
154
|
|
|
168
155
|
---
|
|
169
156
|
|
|
170
|
-
## 📦 备份里有什么?(文件结构)
|
|
171
|
-
|
|
172
|
-
```
|
|
173
|
-
dsh-config-2026-08-14.zip
|
|
174
|
-
├── manifest.json # 备份清单:版本 / 来源 / 时间 / 包含项
|
|
175
|
-
├── config/
|
|
176
|
-
│ ├── settings.json # 设置(已脱敏)
|
|
177
|
-
│ └── ui.json # 界面偏好
|
|
178
|
-
├── ai/providers.json # AI 模型 / 服务商配置
|
|
179
|
-
├── plugins/ # 插件清单(不打包插件本体)
|
|
180
|
-
├── mcp/servers.json # MCP 服务配置
|
|
181
|
-
├── custom/ # 提示词 / 技能
|
|
182
|
-
├── agents/presets/ # Agent 预设
|
|
183
|
-
├── workspaces/ # 工作区
|
|
184
|
-
├── security/credentials.json # 密钥状态(不含值)
|
|
185
|
-
├── security/secrets.enc # 仅加密备份时存在
|
|
186
|
-
└── integrity/checksums.json # SHA-256 校验和
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
157
|
## 🛡️ 安全
|
|
192
158
|
|
|
193
159
|
- **默认备份不包含任何密钥值** —— 这是硬性规则,导出时强制执行
|
|
@@ -228,62 +194,15 @@ dsh-config-2026-08-14.zip
|
|
|
228
194
|
|
|
229
195
|
---
|
|
230
196
|
|
|
231
|
-
##
|
|
232
|
-
|
|
233
|
-
```bash
|
|
234
|
-
npm install --legacy-peer-deps # 安装依赖
|
|
235
|
-
npm run typecheck # 类型检查
|
|
236
|
-
npm run build # 构建(Host lib/ + client bundle)
|
|
237
|
-
npm test # 运行测试(192 个)
|
|
238
|
-
npm run bundle # 仅重建 client bundle
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
**架构**:核心引擎与 DSH 运行时解耦(可 mock 测试)→ 各配置分类适配器 → 安全模块 → 迁移逻辑集中。
|
|
242
|
-
|
|
243
|
-
**自动发布**:打 tag 即自动发布到 npm(GitHub Actions + OIDC,无需任何密钥):
|
|
244
|
-
|
|
245
|
-
```bash
|
|
246
|
-
npm version patch # 0.1.2 → 0.1.3
|
|
247
|
-
git push origin main --tags # CI 自动: 测试 → 构建 → 发布
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
> 首次配置 OIDC 可信发布方(只需一次):
|
|
251
|
-
> ```bash
|
|
252
|
-
> npm login
|
|
253
|
-
> npm trust github dsh-config-manager --file publish.yml --repo xiajiajun516/dsh-config-manager --allow-publish
|
|
254
|
-
> ```
|
|
255
|
-
> 或在 npm 包设置页(Settings → Publishing access)添加 GitHub Actions 可信发布方。
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
## 🧪 测试
|
|
260
|
-
|
|
261
|
-
**192 个测试全部通过**(Node 内置测试框架,零额外依赖),覆盖:
|
|
197
|
+
## 📋 已知限制(用户须知)
|
|
262
198
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
| 安全 | 恶意 ZIP / 损坏文件 / 校验和不匹配 / 路径穿越 |
|
|
269
|
-
| 跨平台 | Windows ↔ macOS ↔ Linux 路径处理 |
|
|
270
|
-
| 迁移 | 版本升级机制 |
|
|
271
|
-
|
|
272
|
-
---
|
|
199
|
+
1. **安装/更新插件或 MCP 后需重启 DSH 才生效**
|
|
200
|
+
2. **部分界面状态不迁移**(如任务看板数据、面板宽度——它们存在浏览器里,不在 DSH 配置文件内)
|
|
201
|
+
3. **keybindings / workflows 配置 / commands / rules**:DSH 当前没有这些概念,因此不会导出相关内容
|
|
202
|
+
4. **历史会话默认不迁移**(v1 仅支持文件级复制)
|
|
203
|
+
5. **加密备份**:密码丢失则无法解密(设计使然——请牢记密码)
|
|
273
204
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
1. **工作区只能创建/改标题**:DSH 无整体覆盖写通道,路径与会话列表由 DSH 自行维护(路径映射适配跨设备)
|
|
277
|
-
2. **部分 DSH 核心包未公开发布**:依赖其 API 的功能仅在本地 DSH 环境可用;安装需跳过 peer 自动安装(见安装说明)
|
|
278
|
-
3. **MCP 无管理 API**:MCP 以配置行导入,需重启 DSH 生效
|
|
279
|
-
4. **插件安装需重启**:安装插件后重启 DSH 生效
|
|
280
|
-
5. **浏览器 UI 状态(localStorage)不迁移**:如任务看板数据、面板宽度
|
|
281
|
-
6. **keybindings / workflows / commands / rules**:DSH 当前无这些概念,不做假分区
|
|
282
|
-
7. **密钥值无法回滚**:导入中覆盖的密钥在回滚时需人工重新填写
|
|
283
|
-
8. **新建项无法回滚删除**:DSH 设置无删除语义,新建的配置项回滚时需人工处理
|
|
284
|
-
9. **Schema 迁移**:机制已就绪,v1→v2 迁移链为占位(当前版本即 v1)
|
|
285
|
-
10. **历史会话默认不迁移**:v1 仅支持文件级复制
|
|
286
|
-
11. **加密备份**:密码丢失则无法解密(设计使然,请牢记密码)
|
|
205
|
+
> 维护者与开发者:构建、测试、自动发布与完整技术说明见 [DEVELOPERS.md](DEVELOPERS.md)。
|
|
287
206
|
|
|
288
207
|
---
|
|
289
208
|
|
package/lib/client.js
CHANGED
|
@@ -559,93 +559,93 @@ if (typeof document !== "undefined" && document.querySelector("style[data-tag=\"
|
|
|
559
559
|
document.head.appendChild(tag);
|
|
560
560
|
}
|
|
561
561
|
var config_manager_module_css_default = {
|
|
562
|
-
"
|
|
563
|
-
"
|
|
564
|
-
"
|
|
565
|
-
"
|
|
566
|
-
"
|
|
567
|
-
"
|
|
562
|
+
"actionRow": "_367UGW_actionRow",
|
|
563
|
+
"formError": "_367UGW_formError",
|
|
564
|
+
"errorItem": "_367UGW_errorItem",
|
|
565
|
+
"secretFields": "_367UGW_secretFields",
|
|
566
|
+
"section": "_367UGW_section",
|
|
567
|
+
"sectionBody": "_367UGW_sectionBody",
|
|
568
|
+
"groupHeader": "_367UGW_groupHeader",
|
|
569
|
+
"fieldLabel": "_367UGW_fieldLabel",
|
|
570
|
+
"input": "_367UGW_input",
|
|
571
|
+
"groupLabel": "_367UGW_groupLabel",
|
|
572
|
+
"radioLabel": "_367UGW_radioLabel",
|
|
573
|
+
"modeTabs": "_367UGW_modeTabs",
|
|
574
|
+
"progressMeta": "_367UGW_progressMeta",
|
|
575
|
+
"conflictHead": "_367UGW_conflictHead",
|
|
576
|
+
"conflictOptions": "_367UGW_conflictOptions",
|
|
568
577
|
"conflictId": "_367UGW_conflictId",
|
|
569
578
|
"pathIssueKind": "_367UGW_pathIssueKind",
|
|
570
|
-
"
|
|
571
|
-
"modeTabs": "_367UGW_modeTabs",
|
|
572
|
-
"radioLabel": "_367UGW_radioLabel",
|
|
573
|
-
"categoryName": "_367UGW_categoryName",
|
|
574
|
-
"primaryButton": "_367UGW_primaryButton",
|
|
575
|
-
"pathNew": "_367UGW_pathNew",
|
|
576
|
-
"conflictList": "_367UGW_conflictList",
|
|
577
|
-
"reportText": "_367UGW_reportText",
|
|
578
|
-
"progressBarDone": "_367UGW_progressBarDone",
|
|
579
|
-
"errorActionLabel": "_367UGW_errorActionLabel",
|
|
579
|
+
"iconButton": "_367UGW_iconButton",
|
|
580
580
|
"empty": "_367UGW_empty",
|
|
581
|
-
"
|
|
582
|
-
"
|
|
583
|
-
"
|
|
584
|
-
"badgeOk": "_367UGW_badgeOk",
|
|
585
|
-
"progressBlock": "_367UGW_progressBlock",
|
|
586
|
-
"input": "_367UGW_input",
|
|
587
|
-
"secretsList": "_367UGW_secretsList",
|
|
588
|
-
"reportView": "_367UGW_reportView",
|
|
589
|
-
"progressMeta": "_367UGW_progressMeta",
|
|
590
|
-
"progressTrack": "_367UGW_progressTrack",
|
|
581
|
+
"dshCmSpin": "_367UGW_dshCmSpin",
|
|
582
|
+
"errorActionLabel": "_367UGW_errorActionLabel",
|
|
583
|
+
"progressLabel": "_367UGW_progressLabel",
|
|
591
584
|
"errorList": "_367UGW_errorList",
|
|
592
|
-
"
|
|
593
|
-
"
|
|
594
|
-
"badgeWarn": "_367UGW_badgeWarn",
|
|
595
|
-
"progressIndeterminate": "_367UGW_progressIndeterminate",
|
|
596
|
-
"sectionTitle": "_367UGW_sectionTitle",
|
|
597
|
-
"categoryItem": "_367UGW_categoryItem",
|
|
598
|
-
"sectionBody": "_367UGW_sectionBody",
|
|
599
|
-
"badgeError": "_367UGW_badgeError",
|
|
600
|
-
"groupLabel": "_367UGW_groupLabel",
|
|
601
|
-
"errorItem": "_367UGW_errorItem",
|
|
602
|
-
"errorTitle": "_367UGW_errorTitle",
|
|
603
|
-
"pathMappingList": "_367UGW_pathMappingList",
|
|
585
|
+
"conflictList": "_367UGW_conflictList",
|
|
586
|
+
"severityError": "_367UGW_severityError",
|
|
604
587
|
"banner": "_367UGW_banner",
|
|
605
|
-
"
|
|
606
|
-
"
|
|
588
|
+
"card": "_367UGW_card",
|
|
589
|
+
"pathMappingList": "_367UGW_pathMappingList",
|
|
607
590
|
"spinnerWrap": "_367UGW_spinnerWrap",
|
|
608
|
-
"
|
|
609
|
-
"
|
|
610
|
-
"
|
|
611
|
-
"progressPercent": "_367UGW_progressPercent",
|
|
612
|
-
"dshCmSpin": "_367UGW_dshCmSpin",
|
|
613
|
-
"optionsCard": "_367UGW_optionsCard",
|
|
591
|
+
"badgeInfo": "_367UGW_badgeInfo",
|
|
592
|
+
"pathOld": "_367UGW_pathOld",
|
|
593
|
+
"pathRow": "_367UGW_pathRow",
|
|
614
594
|
"spinner": "_367UGW_spinner",
|
|
615
|
-
"
|
|
616
|
-
"
|
|
617
|
-
"
|
|
618
|
-
"
|
|
619
|
-
"
|
|
620
|
-
"
|
|
621
|
-
"
|
|
622
|
-
"
|
|
623
|
-
"
|
|
595
|
+
"groupItems": "_367UGW_groupItems",
|
|
596
|
+
"errorLine": "_367UGW_errorLine",
|
|
597
|
+
"conflictItem": "_367UGW_conflictItem",
|
|
598
|
+
"progressBarDone": "_367UGW_progressBarDone",
|
|
599
|
+
"sectionTitle": "_367UGW_sectionTitle",
|
|
600
|
+
"pathValue": "_367UGW_pathValue",
|
|
601
|
+
"dshCmIndeterminate": "_367UGW_dshCmIndeterminate",
|
|
602
|
+
"progressBlock": "_367UGW_progressBlock",
|
|
603
|
+
"progressPercent": "_367UGW_progressPercent",
|
|
604
|
+
"badgeWarn": "_367UGW_badgeWarn",
|
|
605
|
+
"sectionSubtitle": "_367UGW_sectionSubtitle",
|
|
624
606
|
"conflictDetail": "_367UGW_conflictDetail",
|
|
625
|
-
"
|
|
626
|
-
"
|
|
607
|
+
"hiddenFile": "_367UGW_hiddenFile",
|
|
608
|
+
"groupCard": "_367UGW_groupCard",
|
|
627
609
|
"viewTabs": "_367UGW_viewTabs",
|
|
610
|
+
"spinnerLabel": "_367UGW_spinnerLabel",
|
|
611
|
+
"viewTab": "_367UGW_viewTab",
|
|
612
|
+
"progressIndeterminate": "_367UGW_progressIndeterminate",
|
|
613
|
+
"dangerButton": "_367UGW_dangerButton",
|
|
628
614
|
"field": "_367UGW_field",
|
|
629
|
-
"
|
|
630
|
-
"
|
|
631
|
-
"groupItems": "_367UGW_groupItems",
|
|
632
|
-
"card": "_367UGW_card",
|
|
633
|
-
"pathValue": "_367UGW_pathValue",
|
|
634
|
-
"fieldLabel": "_367UGW_fieldLabel",
|
|
615
|
+
"progressBar": "_367UGW_progressBar",
|
|
616
|
+
"sectionTitleBlock": "_367UGW_sectionTitleBlock",
|
|
635
617
|
"groupList": "_367UGW_groupList",
|
|
618
|
+
"progressTrack": "_367UGW_progressTrack",
|
|
619
|
+
"reportText": "_367UGW_reportText",
|
|
620
|
+
"rollbackBox": "_367UGW_rollbackBox",
|
|
621
|
+
"secretsList": "_367UGW_secretsList",
|
|
636
622
|
"warnList": "_367UGW_warnList",
|
|
637
|
-
"
|
|
638
|
-
"
|
|
623
|
+
"pathNew": "_367UGW_pathNew",
|
|
624
|
+
"badgeOk": "_367UGW_badgeOk",
|
|
625
|
+
"statRow": "_367UGW_statRow",
|
|
639
626
|
"errorBanner": "_367UGW_errorBanner",
|
|
640
|
-
"spinnerLabel": "_367UGW_spinnerLabel",
|
|
641
|
-
"checkboxRow": "_367UGW_checkboxRow",
|
|
642
|
-
"conflictItem": "_367UGW_conflictItem",
|
|
643
|
-
"sectionSubtitle": "_367UGW_sectionSubtitle",
|
|
644
627
|
"hint": "_367UGW_hint",
|
|
628
|
+
"sectionHeader": "_367UGW_sectionHeader",
|
|
629
|
+
"progressDetail": "_367UGW_progressDetail",
|
|
630
|
+
"reportFooter": "_367UGW_reportFooter",
|
|
631
|
+
"ghostButton": "_367UGW_ghostButton",
|
|
632
|
+
"checkboxRow": "_367UGW_checkboxRow",
|
|
633
|
+
"groupNote": "_367UGW_groupNote",
|
|
634
|
+
"categoryItem": "_367UGW_categoryItem",
|
|
635
|
+
"errorAction": "_367UGW_errorAction",
|
|
645
636
|
"categoryDesc": "_367UGW_categoryDesc",
|
|
646
|
-
"
|
|
647
|
-
"
|
|
648
|
-
"
|
|
637
|
+
"primaryButton": "_367UGW_primaryButton",
|
|
638
|
+
"categoryName": "_367UGW_categoryName",
|
|
639
|
+
"reportView": "_367UGW_reportView",
|
|
640
|
+
"errorFooter": "_367UGW_errorFooter",
|
|
641
|
+
"optionsCard": "_367UGW_optionsCard",
|
|
642
|
+
"errorTitle": "_367UGW_errorTitle",
|
|
643
|
+
"badgeError": "_367UGW_badgeError",
|
|
644
|
+
"badge": "_367UGW_badge",
|
|
645
|
+
"errorReason": "_367UGW_errorReason",
|
|
646
|
+
"modeTab": "_367UGW_modeTab",
|
|
647
|
+
"viewBody": "_367UGW_viewBody",
|
|
648
|
+
"modeHint": "_367UGW_modeHint"
|
|
649
649
|
};
|
|
650
650
|
//#endregion
|
|
651
651
|
//#region src/client/common/ui.tsx
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-config-manager",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "DSH Config Manager — backup / export / import / migrate DSH configuration (dual-face Cordis plugin: host engine + web UI). Manifest shape mirrors @linxin666/dsh-ssh@0.1.12.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|