dsh-config-manager 0.1.43 → 0.1.45
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 +55 -4
- package/README.zh-CN.md +56 -4
- package/lib/client.js +106 -106
- package/lib/client.js.map +1 -1
- package/lib/index.js +1 -1
- package/package.json +12 -2
- package/src/client/market/MarketPanel.tsx +41 -45
- package/src/client/market/MyConfigsView.tsx +166 -180
- package/src/index.ts +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
# 🎒 DSH Config Manager
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**DeepSeek Harness Backup, Restore & Migration Plugin.**
|
|
4
|
+
|
|
5
|
+
Backup, restore, export, import, migrate and sync your complete DeepSeek Harness (DSH) configuration — settings, model providers, plugins, MCP servers, skills, agent presets and workspaces — and restore your whole environment on a new machine with one click.
|
|
6
|
+
|
|
7
|
+
- 🔄 **Backup & Restore** DeepSeek Harness configuration
|
|
8
|
+
- 📦 **Export / Import** complete DSH configuration
|
|
9
|
+
- 🚚 **Migrate** DSH to another machine
|
|
10
|
+
- 🔌 Backup installed **plugins** and plugin configuration
|
|
11
|
+
- 🧩 Backup **MCP servers** and **Skills**
|
|
12
|
+
- 🔐 Encrypted backups with optional credentials
|
|
13
|
+
- ☁️ **Git / WebDAV** configuration sync
|
|
14
|
+
- 🛒 **Configuration market** — browse & one-click install shared configs
|
|
15
|
+
- ↩️ Automatic snapshot and rollback before restore
|
|
4
16
|
|
|
5
17
|
[English](README.md) · [简体中文](README.zh-CN.md)
|
|
6
18
|
|
|
@@ -23,6 +35,30 @@ DSH is your AI assistant workbench — it holds your settings: model configs, pl
|
|
|
23
35
|
|
|
24
36
|
---
|
|
25
37
|
|
|
38
|
+
## 🎯 Use Cases
|
|
39
|
+
|
|
40
|
+
### Backup DeepSeek Harness configuration
|
|
41
|
+
|
|
42
|
+
Create a portable backup of your DSH settings, model providers, plugins, MCP servers, skills, agent presets, profiles and workspace — one ZIP file, no secret values included by default.
|
|
43
|
+
|
|
44
|
+
### Restore DeepSeek Harness on another machine
|
|
45
|
+
|
|
46
|
+
Export your current DSH environment as a single ZIP and import it on a new Windows, macOS or Linux machine. One click brings back settings, plugins, MCP servers, skills and global instructions (AGENTS.md).
|
|
47
|
+
|
|
48
|
+
### Migrate DSH configuration to a new computer
|
|
49
|
+
|
|
50
|
+
Move your complete DeepSeek Harness setup without manually reinstalling plugins, MCP servers and skills. Dead absolute paths are detected and remapped automatically (batch prefix mapping supported).
|
|
51
|
+
|
|
52
|
+
### Sync DSH configuration across machines
|
|
53
|
+
|
|
54
|
+
Keep portable configuration synchronized between machines through a private Git repository or WebDAV — secrets never sync.
|
|
55
|
+
|
|
56
|
+
### Discover & install configurations from the marketplace
|
|
57
|
+
|
|
58
|
+
Browse the built-in official market for ready-made configurations (model providers, plugins, MCP servers, skills, agent presets…), preview what would be imported (dry-run), and install with one click — supply-chain warnings are always shown and every section must be explicitly approved before anything is written.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
26
62
|
## ✨ Highlights
|
|
27
63
|
|
|
28
64
|
| Icon | Feature | In one line |
|
|
@@ -36,6 +72,7 @@ DSH is your AI assistant workbench — it holds your settings: model configs, pl
|
|
|
36
72
|
| ↩️ | **Automatic rollback** | Failed import restores everything automatically |
|
|
37
73
|
| 📸 | **Snapshot restore** | Undo an import: whole-file restore + uninstall added plugins (CLI & GUI) |
|
|
38
74
|
| 🔄 | **Remote Sync** | Push/pull portable config via **Git private repo or WebDAV** (secrets never sync) |
|
|
75
|
+
| 🛒 | **Config Marketplace** | Browse & one-click install community configs — supply-chain warnings + per-section approval |
|
|
39
76
|
| 🗂️ | **Profiles** | Save multiple setups (Work / Personal) and switch anytime |
|
|
40
77
|
| 🌐 | **Bilingual UI** | Interface, reports and error details follow the DSH app language (中文 / English) |
|
|
41
78
|
|
|
@@ -51,6 +88,10 @@ DSH is your AI assistant workbench — it holds your settings: model configs, pl
|
|
|
51
88
|
|:---:|:---:|
|
|
52
89
|
|  |  |
|
|
53
90
|
|
|
91
|
+
| Configuration Market |
|
|
92
|
+
|:---:|
|
|
93
|
+
|  |
|
|
94
|
+
|
|
54
95
|
---
|
|
55
96
|
|
|
56
97
|
## 🔄 How it works?
|
|
@@ -81,17 +122,17 @@ It's a standard **DSH plugin** — two steps:
|
|
|
81
122
|
|
|
82
123
|
```bash
|
|
83
124
|
# ① Install the plugin
|
|
84
|
-
dsh plugin --profile web add dsh-config-manager@latest
|
|
125
|
+
dsh plugin --profile web add dsh-config-manager@latest
|
|
85
126
|
|
|
86
127
|
# ② Restart DSH (a "Backup & Migration" entry appears in Settings)
|
|
87
128
|
```
|
|
88
129
|
|
|
89
|
-
> 💡 Just copy-paste the command:
|
|
130
|
+
> 💡 Just copy-paste the command: `@latest` ensures you get the newest build.
|
|
90
131
|
>
|
|
91
132
|
> 🐛 **`@latest` installed an old version?** That's pnpm 11's `minimumReleaseAge` supply-chain policy, not a cache issue: versions published less than ~30 days ago are excluded from resolution until whitelisted. Two fixes:
|
|
92
133
|
> - Install an exact version once (it auto-whitelists, then `@latest` works):
|
|
93
134
|
> ```bash
|
|
94
|
-
> dsh plugin --profile web add dsh-config-manager@0.1.8
|
|
135
|
+
> dsh plugin --profile web add dsh-config-manager@0.1.8
|
|
95
136
|
> ```
|
|
96
137
|
> - Or disable the age gate with a one-liner (adds `minimumReleaseAge: 0` at the top of the profile's `pnpm-workspace.yaml`):
|
|
97
138
|
> ```powershell
|
|
@@ -195,6 +236,16 @@ Push / pull your portable config between machines through **either of two channe
|
|
|
195
236
|
- **WebDAV auth** uses HTTP Basic: the `username` is stored in the config and may be echoed back into the UI, while the `password` is read live from the DSH credentials slot `DSH_CONFIG_MANAGER_SYNC_WEBDAV_PASSWORD` — it never appears in any sync file or log.
|
|
196
237
|
- **Plugins auto-install**: when pulling diffs, plugins that are new in the backup are **installed automatically** on confirm — no manual per-item ticking in the diff list. Only **version-conflict** plugins still ask you to pick "Keep Current / Use Imported".
|
|
197
238
|
|
|
239
|
+
### 🛒 Configuration Marketplace
|
|
240
|
+
|
|
241
|
+
Browse and install ready-made configurations (model providers, plugins, MCP servers, skills, agent presets…) shared by the community:
|
|
242
|
+
|
|
243
|
+
- **Built-in official market** — read-only, bound to the official public repo (official badge shown, not editable); first open auto-refreshes, manual refresh also available
|
|
244
|
+
- **Search & filter** — keyword search, category filter, source filter (Official / Community), sorting (recently updated / most starred / name A–Z), and a ⭐ badge showing the **source repo's** star count (queried anonymously, no token involved)
|
|
245
|
+
- **Supply-chain warnings always shown** — source repo URL, "not officially reviewed", download time; **per-section approval** — high-risk sections (sessions / arbitrary files) are banned from listing outright, and every remaining section must be explicitly approved before the import is confirmed
|
|
246
|
+
- **Install reuses the safe import pipeline** — analyze → preview → auto-backup → apply → rollback; nothing is written before you confirm
|
|
247
|
+
- **"My Configs"** — sign in with GitHub (device flow), upload a config to **your own public repo** in one click, and an **auto listing PR** is opened against the official market repo; manage your listings (status badges: not listed / PR pending / listed), update in one click, install back locally, or delist (auto de-listing PR)
|
|
248
|
+
|
|
198
249
|
### 🗂️ Profiles
|
|
199
250
|
|
|
200
251
|
Save multiple configurations (Work / Personal) and switch anytime; switching includes preview + auto-backup + rollback.
|
package/README.zh-CN.md
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
# 🎒 DSH Config Manager
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**DeepSeek Harness(DSH)配置备份、恢复与迁移插件。**
|
|
4
|
+
|
|
5
|
+
DSH Config Manager 是一个 DeepSeek Harness 配置备份与迁移插件:一键备份、恢复、导出、导入和迁移完整 DSH 配置,包括——
|
|
6
|
+
|
|
7
|
+
- DSH 设置
|
|
8
|
+
- 模型 / Provider 配置
|
|
9
|
+
- 已安装插件及插件配置
|
|
10
|
+
- MCP Servers
|
|
11
|
+
- Skills
|
|
12
|
+
- Agent Presets
|
|
13
|
+
- Profiles(配置档案)
|
|
14
|
+
- Workspace / AGENTS.md
|
|
15
|
+
|
|
16
|
+
把当前 DeepSeek Harness 环境导出为可移植备份,在另一台电脑上一键恢复;也支持通过 Git / WebDAV 跨机同步(密钥永不参与同步);还能通过内置**配置市场**浏览、一键安装社区分享的现成配置。
|
|
4
17
|
|
|
5
18
|
[English](README.md) · [简体中文](README.zh-CN.md)
|
|
6
19
|
|
|
@@ -23,6 +36,30 @@ DSH 是你的 AI 助手工作台,里面存着你的各种设置:模型配置
|
|
|
23
36
|
|
|
24
37
|
---
|
|
25
38
|
|
|
39
|
+
## 🎯 典型使用场景
|
|
40
|
+
|
|
41
|
+
### 备份 DeepSeek Harness 配置
|
|
42
|
+
|
|
43
|
+
把你的 DSH 设置、模型供应商、插件、MCP 服务器、技能、Agent 预设、配置档案与工作区打包成一个便携 ZIP 备份——默认不含任何密钥值。
|
|
44
|
+
|
|
45
|
+
### 在另一台电脑上恢复 DeepSeek Harness
|
|
46
|
+
|
|
47
|
+
把当前 DSH 环境导出为一个 ZIP,在全新的 Windows / macOS / Linux 电脑上导入。一键恢复设置、插件、MCP 服务器、技能与全局指令(AGENTS.md)。
|
|
48
|
+
|
|
49
|
+
### 迁移 DSH 配置到新电脑
|
|
50
|
+
|
|
51
|
+
无需手动重装插件、MCP 服务器和技能,完整搬走你的 DSH 环境。失效的绝对路径会被自动检测并重新映射(支持批量前缀替换)。
|
|
52
|
+
|
|
53
|
+
### 在多台电脑间同步 DSH 配置
|
|
54
|
+
|
|
55
|
+
通过私有 Git 仓库或 WebDAV 在多台电脑间保持可移植配置同步——密钥永不参与同步。
|
|
56
|
+
|
|
57
|
+
### 从配置市场发现并安装共享配置
|
|
58
|
+
|
|
59
|
+
在内置官方市场浏览现成配置(模型 / Provider、插件、MCP、技能、Agent 预设……),先 dry-run 预览再一键安装——供应链警示恒展示,确认导入前每个分区都须显式批准。
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
26
63
|
## ✨ 核心亮点
|
|
27
64
|
|
|
28
65
|
| 图标 | 功能 | 一句话说明 |
|
|
@@ -36,6 +73,7 @@ DSH 是你的 AI 助手工作台,里面存着你的各种设置:模型配置
|
|
|
36
73
|
| ↩️ | **自动回滚** | 导入失败自动恢复原样,不会弄坏现有配置 |
|
|
37
74
|
| 📸 | **快照恢复** | 撤销一次导入:整文件还原 + 卸载新增插件(CLI 与 GUI 均支持) |
|
|
38
75
|
| 🔄 | **远程同步** | 通过 **Git 私有仓库或 WebDAV** 推送 / 拉取可移植配置(密钥永不参与同步) |
|
|
76
|
+
| 🛒 | **配置市场** | 浏览并一键安装社区分享的配置——供应链警示 + 逐分区批准 |
|
|
39
77
|
| 🗂️ | **配置档案 Profiles** | 保存多套配置(工作 / 个人),随时切换 |
|
|
40
78
|
|
|
41
79
|
---
|
|
@@ -50,6 +88,10 @@ DSH 是你的 AI 助手工作台,里面存着你的各种设置:模型配置
|
|
|
50
88
|
|:---:|:---:|
|
|
51
89
|
|  |  |
|
|
52
90
|
|
|
91
|
+
| 配置市场 |
|
|
92
|
+
|:---:|
|
|
93
|
+
|  |
|
|
94
|
+
|
|
53
95
|
---
|
|
54
96
|
|
|
55
97
|
## 🔄 它是怎么工作的?
|
|
@@ -80,17 +122,17 @@ DSH 是你的 AI 助手工作台,里面存着你的各种设置:模型配置
|
|
|
80
122
|
|
|
81
123
|
```bash
|
|
82
124
|
# ① 安装插件
|
|
83
|
-
dsh plugin --profile web add dsh-config-manager@latest
|
|
125
|
+
dsh plugin --profile web add dsh-config-manager@latest
|
|
84
126
|
|
|
85
127
|
# ② 重启 DSH(设置页就会出现「备份与迁移」入口)
|
|
86
128
|
```
|
|
87
129
|
|
|
88
|
-
> 💡
|
|
130
|
+
> 💡 照着复制就行:`@latest` 确保装到最新版。
|
|
89
131
|
>
|
|
90
132
|
> 🐛 **`@latest` 装到了旧版?** 这是 **pnpm 11 的 `minimumReleaseAge` 供应链发布年龄策略**(不是缓存):发布不足约 30 天的新版本会被排除出版本解析,直到进入白名单。两种解决办法:
|
|
91
133
|
> - 装一次精确版本即可自动白名单,之后 `@latest` 正常:
|
|
92
134
|
> ```bash
|
|
93
|
-
> dsh plugin --profile web add dsh-config-manager@0.1.8
|
|
135
|
+
> dsh plugin --profile web add dsh-config-manager@0.1.8
|
|
94
136
|
> ```
|
|
95
137
|
> - 或一行命令彻底关闭年龄门槛(在 profile 的 `pnpm-workspace.yaml` 顶部加 `minimumReleaseAge: 0`):
|
|
96
138
|
> ```powershell
|
|
@@ -194,6 +236,16 @@ dsh plugin --profile web add dsh-config-manager@latest --config.auto-install-pee
|
|
|
194
236
|
- **WebDAV 认证**采用 HTTP Basic:`username` 存配置、可在界面回显;`password` 则实时从 DSH credentials 槽位 `DSH_CONFIG_MANAGER_SYNC_WEBDAV_PASSWORD` 读取——绝不出现于任何同步文件或日志。
|
|
195
237
|
- **插件自动安装**:拉取差异时,备份里新增的插件会在确认导入时**自动安装**,无需在差异列表里逐项手动勾选;只有**版本冲突**的插件仍需要你决定「保留当前 / 采用备份」。
|
|
196
238
|
|
|
239
|
+
### 🛒 配置市场(Marketplace)
|
|
240
|
+
|
|
241
|
+
浏览并一键安装社区分享的现成配置(模型 / Provider、插件、MCP、技能、Agent 预设……):
|
|
242
|
+
|
|
243
|
+
- **内置官方市场**——只读、绑定官方公开仓库(官方徽章,不可编辑);首次打开自动刷新,也支持手动拉取最新
|
|
244
|
+
- **搜索与筛选**——关键词搜索、类别过滤、来源筛选(官方 / 个人)、排序(最近更新 / ⭐ 最多 / 名称 A–Z),并显示**来源仓库**的 ⭐ star 数(匿名查询,不触碰任何 token)
|
|
245
|
+
- **供应链警示恒展示**——来源仓库 URL +「未经官方审核」+ 下载时间;**逐分区批准**——高风险分区(历史会话 / 任意文件)直接禁止上架,其余分区确认导入前须逐项显式勾选
|
|
246
|
+
- **安装复用安全导入管道**——分析 → 预览 → 自动备份 → 执行 → 回滚;确认前零写入
|
|
247
|
+
- **「我的配置」**——GitHub 登录(device flow)后一键上传到**你自己的公开仓库**,并自动向官方市场仓库提交**收录 PR**;管理已上传条目(收录状态徽章:未收录 / PR 待审核 / 已收录)、一键更新、装回本地、删除(自动下架 PR)
|
|
248
|
+
|
|
197
249
|
### 🗂️ 配置档案(Profiles)
|
|
198
250
|
|
|
199
251
|
保存多套配置(如「工作」「个人」),随时切换;切换同样带预览 + 自动备份 + 回滚。
|
package/lib/client.js
CHANGED
|
@@ -2928,120 +2928,120 @@ if (typeof document !== "undefined" && document.querySelector("style[data-tag=\"
|
|
|
2928
2928
|
document.head.appendChild(tag);
|
|
2929
2929
|
}
|
|
2930
2930
|
var config_manager_module_css_default = {
|
|
2931
|
-
"
|
|
2932
|
-
"
|
|
2933
|
-
"
|
|
2934
|
-
"
|
|
2935
|
-
"
|
|
2931
|
+
"card": "_367UGW_card",
|
|
2932
|
+
"snapshotList": "_367UGW_snapshotList",
|
|
2933
|
+
"conflictItem": "_367UGW_conflictItem",
|
|
2934
|
+
"empty": "_367UGW_empty",
|
|
2935
|
+
"rowActions": "_367UGW_rowActions",
|
|
2936
2936
|
"radioLabel": "_367UGW_radioLabel",
|
|
2937
|
-
"
|
|
2938
|
-
"
|
|
2939
|
-
"
|
|
2940
|
-
"
|
|
2941
|
-
"
|
|
2942
|
-
"
|
|
2943
|
-
"
|
|
2944
|
-
"
|
|
2945
|
-
"
|
|
2946
|
-
"
|
|
2947
|
-
"
|
|
2948
|
-
"
|
|
2949
|
-
"
|
|
2950
|
-
"
|
|
2937
|
+
"conflictId": "_367UGW_conflictId",
|
|
2938
|
+
"badge": "_367UGW_badge",
|
|
2939
|
+
"groupList": "_367UGW_groupList",
|
|
2940
|
+
"groupNote": "_367UGW_groupNote",
|
|
2941
|
+
"progressBadgeCount": "_367UGW_progressBadgeCount",
|
|
2942
|
+
"progressBlock": "_367UGW_progressBlock",
|
|
2943
|
+
"dialogClose": "_367UGW_dialogClose",
|
|
2944
|
+
"pathValue": "_367UGW_pathValue",
|
|
2945
|
+
"errorActionLabel": "_367UGW_errorActionLabel",
|
|
2946
|
+
"errorItem": "_367UGW_errorItem",
|
|
2947
|
+
"groupLabel": "_367UGW_groupLabel",
|
|
2948
|
+
"actionRow": "_367UGW_actionRow",
|
|
2949
|
+
"reportFooter": "_367UGW_reportFooter",
|
|
2950
|
+
"planScroll": "_367UGW_planScroll",
|
|
2951
2951
|
"modeHint": "_367UGW_modeHint",
|
|
2952
|
+
"progressTrack": "_367UGW_progressTrack",
|
|
2953
|
+
"primaryButton": "_367UGW_primaryButton",
|
|
2954
|
+
"pathRow": "_367UGW_pathRow",
|
|
2955
|
+
"dialogBodyScroll": "_367UGW_dialogBodyScroll",
|
|
2956
|
+
"secretsList": "_367UGW_secretsList",
|
|
2957
|
+
"pullScroll": "_367UGW_pullScroll",
|
|
2952
2958
|
"aboutLinkRow": "_367UGW_aboutLinkRow",
|
|
2953
|
-
"
|
|
2954
|
-
"
|
|
2955
|
-
"
|
|
2956
|
-
"viewTabs": "_367UGW_viewTabs",
|
|
2957
|
-
"errorReason": "_367UGW_errorReason",
|
|
2958
|
-
"spinnerLabel": "_367UGW_spinnerLabel",
|
|
2959
|
-
"categoryItem": "_367UGW_categoryItem",
|
|
2960
|
-
"progressPercent": "_367UGW_progressPercent",
|
|
2961
|
-
"secretFields": "_367UGW_secretFields",
|
|
2962
|
-
"conflictDetail": "_367UGW_conflictDetail",
|
|
2963
|
-
"spinner": "_367UGW_spinner",
|
|
2964
|
-
"dialogMask": "_367UGW_dialogMask",
|
|
2965
|
-
"groupHeader": "_367UGW_groupHeader",
|
|
2966
|
-
"progressBarDone": "_367UGW_progressBarDone",
|
|
2967
|
-
"kindTag": "_367UGW_kindTag",
|
|
2968
|
-
"reportText": "_367UGW_reportText",
|
|
2969
|
-
"groupNote": "_367UGW_groupNote",
|
|
2959
|
+
"conflictList": "_367UGW_conflictList",
|
|
2960
|
+
"groupItems": "_367UGW_groupItems",
|
|
2961
|
+
"categoryDesc": "_367UGW_categoryDesc",
|
|
2970
2962
|
"reportView": "_367UGW_reportView",
|
|
2963
|
+
"modeTab": "_367UGW_modeTab",
|
|
2964
|
+
"conflictOptions": "_367UGW_conflictOptions",
|
|
2965
|
+
"groupCard": "_367UGW_groupCard",
|
|
2971
2966
|
"dialogCard": "_367UGW_dialogCard",
|
|
2972
|
-
"
|
|
2973
|
-
"aboutAuthor": "_367UGW_aboutAuthor",
|
|
2974
|
-
"planScroll": "_367UGW_planScroll",
|
|
2975
|
-
"statRow": "_367UGW_statRow",
|
|
2976
|
-
"sectionTitleBlock": "_367UGW_sectionTitleBlock",
|
|
2967
|
+
"badgeWarn": "_367UGW_badgeWarn",
|
|
2977
2968
|
"progressIndeterminate": "_367UGW_progressIndeterminate",
|
|
2978
|
-
"
|
|
2979
|
-
"
|
|
2980
|
-
"
|
|
2981
|
-
"
|
|
2982
|
-
"
|
|
2983
|
-
"
|
|
2984
|
-
"
|
|
2985
|
-
"
|
|
2969
|
+
"rollbackBox": "_367UGW_rollbackBox",
|
|
2970
|
+
"aboutAuthor": "_367UGW_aboutAuthor",
|
|
2971
|
+
"errorAction": "_367UGW_errorAction",
|
|
2972
|
+
"formError": "_367UGW_formError",
|
|
2973
|
+
"errorTitle": "_367UGW_errorTitle",
|
|
2974
|
+
"pathNew": "_367UGW_pathNew",
|
|
2975
|
+
"badgeOk": "_367UGW_badgeOk",
|
|
2976
|
+
"dialogHeaderRow": "_367UGW_dialogHeaderRow",
|
|
2986
2977
|
"errorFooter": "_367UGW_errorFooter",
|
|
2987
|
-
"
|
|
2978
|
+
"snapshotRow": "_367UGW_snapshotRow",
|
|
2979
|
+
"severityError": "_367UGW_severityError",
|
|
2980
|
+
"snapshotRowHeader": "_367UGW_snapshotRowHeader",
|
|
2981
|
+
"wizardCard": "_367UGW_wizardCard",
|
|
2982
|
+
"categoryName": "_367UGW_categoryName",
|
|
2983
|
+
"dialogMask": "_367UGW_dialogMask",
|
|
2984
|
+
"banner": "_367UGW_banner",
|
|
2985
|
+
"reportList": "_367UGW_reportList",
|
|
2986
|
+
"modeTabs": "_367UGW_modeTabs",
|
|
2988
2987
|
"progressBadge": "_367UGW_progressBadge",
|
|
2989
|
-
"
|
|
2990
|
-
"
|
|
2991
|
-
"
|
|
2992
|
-
"
|
|
2993
|
-
"
|
|
2994
|
-
"
|
|
2995
|
-
"
|
|
2988
|
+
"progressBadgeSection": "_367UGW_progressBadgeSection",
|
|
2989
|
+
"dialogHeader": "_367UGW_dialogHeader",
|
|
2990
|
+
"dangerButton": "_367UGW_dangerButton",
|
|
2991
|
+
"hint": "_367UGW_hint",
|
|
2992
|
+
"progressMeta": "_367UGW_progressMeta",
|
|
2993
|
+
"conflictDetail": "_367UGW_conflictDetail",
|
|
2994
|
+
"pathMappingList": "_367UGW_pathMappingList",
|
|
2995
|
+
"statRow": "_367UGW_statRow",
|
|
2996
|
+
"errorBanner": "_367UGW_errorBanner",
|
|
2997
|
+
"kindTag": "_367UGW_kindTag",
|
|
2998
|
+
"field": "_367UGW_field",
|
|
2999
|
+
"diffScroll": "_367UGW_diffScroll",
|
|
3000
|
+
"optionsCard": "_367UGW_optionsCard",
|
|
3001
|
+
"sectionTitle": "_367UGW_sectionTitle",
|
|
3002
|
+
"sectionBody": "_367UGW_sectionBody",
|
|
3003
|
+
"badgeInfo": "_367UGW_badgeInfo",
|
|
3004
|
+
"conflictHead": "_367UGW_conflictHead",
|
|
3005
|
+
"progressBar": "_367UGW_progressBar",
|
|
3006
|
+
"reportScroll": "_367UGW_reportScroll",
|
|
2996
3007
|
"sectionHeader": "_367UGW_sectionHeader",
|
|
2997
|
-
"
|
|
2998
|
-
"progressBlock": "_367UGW_progressBlock",
|
|
3008
|
+
"select": "_367UGW_select",
|
|
2999
3009
|
"dshCmSpin": "_367UGW_dshCmSpin",
|
|
3000
|
-
"
|
|
3001
|
-
"
|
|
3002
|
-
"errorLine": "_367UGW_errorLine",
|
|
3010
|
+
"errorReason": "_367UGW_errorReason",
|
|
3011
|
+
"warnList": "_367UGW_warnList",
|
|
3003
3012
|
"pathIssueKind": "_367UGW_pathIssueKind",
|
|
3004
|
-
"
|
|
3005
|
-
"
|
|
3006
|
-
"
|
|
3007
|
-
"pathMappingList": "_367UGW_pathMappingList",
|
|
3008
|
-
"progressBadgeCount": "_367UGW_progressBadgeCount",
|
|
3009
|
-
"hint": "_367UGW_hint",
|
|
3010
|
-
"reportFooter": "_367UGW_reportFooter",
|
|
3011
|
-
"conflictItem": "_367UGW_conflictItem",
|
|
3012
|
-
"pathNew": "_367UGW_pathNew",
|
|
3013
|
-
"errorList": "_367UGW_errorList",
|
|
3014
|
-
"progressBadgeSection": "_367UGW_progressBadgeSection",
|
|
3015
|
-
"primaryButton": "_367UGW_primaryButton",
|
|
3013
|
+
"warnText": "_367UGW_warnText",
|
|
3014
|
+
"dialogBody": "_367UGW_dialogBody",
|
|
3015
|
+
"viewTab": "_367UGW_viewTab",
|
|
3016
3016
|
"input": "_367UGW_input",
|
|
3017
|
-
"
|
|
3018
|
-
"
|
|
3017
|
+
"dialogWide": "_367UGW_dialogWide",
|
|
3018
|
+
"dshCmIndeterminate": "_367UGW_dshCmIndeterminate",
|
|
3019
|
+
"groupHeader": "_367UGW_groupHeader",
|
|
3020
|
+
"viewBody": "_367UGW_viewBody",
|
|
3021
|
+
"fieldLabel": "_367UGW_fieldLabel",
|
|
3022
|
+
"confirmScroll": "_367UGW_confirmScroll",
|
|
3023
|
+
"progressDetail": "_367UGW_progressDetail",
|
|
3024
|
+
"reportText": "_367UGW_reportText",
|
|
3025
|
+
"spinnerLabel": "_367UGW_spinnerLabel",
|
|
3019
3026
|
"checkboxRow": "_367UGW_checkboxRow",
|
|
3020
|
-
"
|
|
3027
|
+
"progressLabel": "_367UGW_progressLabel",
|
|
3021
3028
|
"badgeError": "_367UGW_badgeError",
|
|
3022
|
-
"
|
|
3023
|
-
"
|
|
3024
|
-
"
|
|
3025
|
-
"
|
|
3026
|
-
"
|
|
3027
|
-
"errorItem": "_367UGW_errorItem",
|
|
3028
|
-
"errorTitle": "_367UGW_errorTitle",
|
|
3029
|
-
"warnText": "_367UGW_warnText",
|
|
3030
|
-
"dialogClose": "_367UGW_dialogClose",
|
|
3031
|
-
"categoryName": "_367UGW_categoryName",
|
|
3032
|
-
"rollbackBox": "_367UGW_rollbackBox",
|
|
3033
|
-
"wizardCard": "_367UGW_wizardCard",
|
|
3034
|
-
"snapshotRow": "_367UGW_snapshotRow",
|
|
3035
|
-
"select": "_367UGW_select",
|
|
3036
|
-
"pullScroll": "_367UGW_pullScroll",
|
|
3037
|
-
"groupItems": "_367UGW_groupItems",
|
|
3038
|
-
"reportList": "_367UGW_reportList",
|
|
3029
|
+
"progressPercent": "_367UGW_progressPercent",
|
|
3030
|
+
"sectionTitleBlock": "_367UGW_sectionTitleBlock",
|
|
3031
|
+
"spinner": "_367UGW_spinner",
|
|
3032
|
+
"secretFields": "_367UGW_secretFields",
|
|
3033
|
+
"hiddenFile": "_367UGW_hiddenFile",
|
|
3039
3034
|
"optionsHeader": "_367UGW_optionsHeader",
|
|
3040
|
-
"
|
|
3041
|
-
"
|
|
3035
|
+
"pathOld": "_367UGW_pathOld",
|
|
3036
|
+
"sectionSubtitle": "_367UGW_sectionSubtitle",
|
|
3037
|
+
"viewTabs": "_367UGW_viewTabs",
|
|
3038
|
+
"categoryItem": "_367UGW_categoryItem",
|
|
3039
|
+
"errorList": "_367UGW_errorList",
|
|
3040
|
+
"errorLine": "_367UGW_errorLine",
|
|
3042
3041
|
"ghostButton": "_367UGW_ghostButton",
|
|
3043
3042
|
"spinnerWrap": "_367UGW_spinnerWrap",
|
|
3044
|
-
"
|
|
3043
|
+
"progressBarDone": "_367UGW_progressBarDone",
|
|
3044
|
+
"section": "_367UGW_section"
|
|
3045
3045
|
};
|
|
3046
3046
|
//#endregion
|
|
3047
3047
|
//#region src/client/common/ui.tsx
|
|
@@ -8718,7 +8718,7 @@ function MyConfigsView({ meApi, api, importApi, syncApi, t, myItems, myItemsErro
|
|
|
8718
8718
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8719
8719
|
className: config_manager_module_css_default.dialogBodyScroll,
|
|
8720
8720
|
children: [
|
|
8721
|
-
wizard.step === "select" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
8721
|
+
wizard.step === "select" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
8722
8722
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8723
8723
|
className: config_manager_module_css_default.hint,
|
|
8724
8724
|
children: t("myconfigs.upload.selectHint")
|
|
@@ -8746,7 +8746,7 @@ function MyConfigsView({ meApi, api, importApi, syncApi, t, myItems, myItemsErro
|
|
|
8746
8746
|
})
|
|
8747
8747
|
})
|
|
8748
8748
|
] }),
|
|
8749
|
-
wizard.step === "validate" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
8749
|
+
wizard.step === "validate" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
8750
8750
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8751
8751
|
className: config_manager_module_css_default.hint,
|
|
8752
8752
|
children: t("myconfigs.upload.selectHint")
|
|
@@ -8778,8 +8778,8 @@ function MyConfigsView({ meApi, api, importApi, syncApi, t, myItems, myItemsErro
|
|
|
8778
8778
|
children: redact(wizard.validationError)
|
|
8779
8779
|
})
|
|
8780
8780
|
] }),
|
|
8781
|
-
wizard.step === "form" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
8782
|
-
wizard.mode === "update" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
8781
|
+
wizard.step === "form" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
8782
|
+
wizard.mode === "update" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
8783
8783
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8784
8784
|
className: config_manager_module_css_default.hint,
|
|
8785
8785
|
children: t("myconfigs.update.zipHint")
|
|
@@ -8899,7 +8899,7 @@ function MyConfigsView({ meApi, api, importApi, syncApi, t, myItems, myItemsErro
|
|
|
8899
8899
|
kind: "error",
|
|
8900
8900
|
children: redact(wizard.error)
|
|
8901
8901
|
}),
|
|
8902
|
-
wizard.result !== null && (wizard.result.ok ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
8902
|
+
wizard.result !== null && (wizard.result.ok ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
8903
8903
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8904
8904
|
className: config_manager_module_css_default.groupLabel,
|
|
8905
8905
|
children: t("myconfigs.result.title")
|
|
@@ -9133,7 +9133,7 @@ function MyConfigsView({ meApi, api, importApi, syncApi, t, myItems, myItemsErro
|
|
|
9133
9133
|
className: config_manager_module_css_default.statRow,
|
|
9134
9134
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Spinner, { label: t("list.loading") })
|
|
9135
9135
|
}),
|
|
9136
|
-
detail !== null && detailView !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
9136
|
+
detail !== null && detailView !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
9137
9137
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Banner, {
|
|
9138
9138
|
kind: "warn",
|
|
9139
9139
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: t("detail.needReview") })
|
|
@@ -9148,7 +9148,7 @@ function MyConfigsView({ meApi, api, importApi, syncApi, t, myItems, myItemsErro
|
|
|
9148
9148
|
children: detailView.badge.sectionsText
|
|
9149
9149
|
})]
|
|
9150
9150
|
}),
|
|
9151
|
-
approvalList.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
9151
|
+
approvalList.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
9152
9152
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
9153
9153
|
className: config_manager_module_css_default.groupLabel,
|
|
9154
9154
|
children: t("detail.approval.title")
|
|
@@ -9713,7 +9713,7 @@ function MarketPanel({ api, myConfigsApi, importApi, syncApi, t }) {
|
|
|
9713
9713
|
})
|
|
9714
9714
|
]
|
|
9715
9715
|
}),
|
|
9716
|
-
detailView.errors.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
9716
|
+
detailView.errors.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
9717
9717
|
className: config_manager_module_css_default.fieldLabel,
|
|
9718
9718
|
children: t("detail.errors")
|
|
9719
9719
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
@@ -9727,7 +9727,7 @@ function MarketPanel({ api, myConfigsApi, importApi, syncApi, t }) {
|
|
|
9727
9727
|
kind: "info",
|
|
9728
9728
|
children: t("detail.previewHint")
|
|
9729
9729
|
}),
|
|
9730
|
-
detailView.canImport && approvalList.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
9730
|
+
detailView.canImport && approvalList.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
9731
9731
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
9732
9732
|
className: config_manager_module_css_default.groupLabel,
|
|
9733
9733
|
children: t("detail.approval.title")
|