dsh-config-manager 0.1.44 → 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 +32 -3
- package/README.zh-CN.md +35 -5
- package/lib/client.js +106 -106
- package/lib/client.js.map +1 -1
- package/lib/index.js +1 -1
- package/package.json +1 -1
- 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
|
@@ -4,6 +4,16 @@
|
|
|
4
4
|
|
|
5
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
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
|
|
16
|
+
|
|
7
17
|
[English](README.md) · [简体中文](README.zh-CN.md)
|
|
8
18
|
|
|
9
19
|
---
|
|
@@ -43,6 +53,10 @@ Move your complete DeepSeek Harness setup without manually reinstalling plugins,
|
|
|
43
53
|
|
|
44
54
|
Keep portable configuration synchronized between machines through a private Git repository or WebDAV — secrets never sync.
|
|
45
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
|
+
|
|
46
60
|
---
|
|
47
61
|
|
|
48
62
|
## ✨ Highlights
|
|
@@ -58,6 +72,7 @@ Keep portable configuration synchronized between machines through a private Git
|
|
|
58
72
|
| ↩️ | **Automatic rollback** | Failed import restores everything automatically |
|
|
59
73
|
| 📸 | **Snapshot restore** | Undo an import: whole-file restore + uninstall added plugins (CLI & GUI) |
|
|
60
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 |
|
|
61
76
|
| 🗂️ | **Profiles** | Save multiple setups (Work / Personal) and switch anytime |
|
|
62
77
|
| 🌐 | **Bilingual UI** | Interface, reports and error details follow the DSH app language (中文 / English) |
|
|
63
78
|
|
|
@@ -73,6 +88,10 @@ Keep portable configuration synchronized between machines through a private Git
|
|
|
73
88
|
|:---:|:---:|
|
|
74
89
|
|  |  |
|
|
75
90
|
|
|
91
|
+
| Configuration Market |
|
|
92
|
+
|:---:|
|
|
93
|
+
|  |
|
|
94
|
+
|
|
76
95
|
---
|
|
77
96
|
|
|
78
97
|
## 🔄 How it works?
|
|
@@ -103,17 +122,17 @@ It's a standard **DSH plugin** — two steps:
|
|
|
103
122
|
|
|
104
123
|
```bash
|
|
105
124
|
# ① Install the plugin
|
|
106
|
-
dsh plugin --profile web add dsh-config-manager@latest
|
|
125
|
+
dsh plugin --profile web add dsh-config-manager@latest
|
|
107
126
|
|
|
108
127
|
# ② Restart DSH (a "Backup & Migration" entry appears in Settings)
|
|
109
128
|
```
|
|
110
129
|
|
|
111
|
-
> 💡 Just copy-paste the command:
|
|
130
|
+
> 💡 Just copy-paste the command: `@latest` ensures you get the newest build.
|
|
112
131
|
>
|
|
113
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:
|
|
114
133
|
> - Install an exact version once (it auto-whitelists, then `@latest` works):
|
|
115
134
|
> ```bash
|
|
116
|
-
> dsh plugin --profile web add dsh-config-manager@0.1.8
|
|
135
|
+
> dsh plugin --profile web add dsh-config-manager@0.1.8
|
|
117
136
|
> ```
|
|
118
137
|
> - Or disable the age gate with a one-liner (adds `minimumReleaseAge: 0` at the top of the profile's `pnpm-workspace.yaml`):
|
|
119
138
|
> ```powershell
|
|
@@ -217,6 +236,16 @@ Push / pull your portable config between machines through **either of two channe
|
|
|
217
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.
|
|
218
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".
|
|
219
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
|
+
|
|
220
249
|
### 🗂️ Profiles
|
|
221
250
|
|
|
222
251
|
Save multiple configurations (Work / Personal) and switch anytime; switching includes preview + auto-backup + rollback.
|
package/README.zh-CN.md
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
# 🎒 DSH Config Manager
|
|
2
2
|
|
|
3
|
-
**DeepSeek Harness(DSH
|
|
3
|
+
**DeepSeek Harness(DSH)配置备份、恢复与迁移插件。**
|
|
4
4
|
|
|
5
|
-
|
|
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 跨机同步(密钥永不参与同步);还能通过内置**配置市场**浏览、一键安装社区分享的现成配置。
|
|
6
17
|
|
|
7
18
|
[English](README.md) · [简体中文](README.zh-CN.md)
|
|
8
19
|
|
|
@@ -43,6 +54,10 @@ DSH 是你的 AI 助手工作台,里面存着你的各种设置:模型配置
|
|
|
43
54
|
|
|
44
55
|
通过私有 Git 仓库或 WebDAV 在多台电脑间保持可移植配置同步——密钥永不参与同步。
|
|
45
56
|
|
|
57
|
+
### 从配置市场发现并安装共享配置
|
|
58
|
+
|
|
59
|
+
在内置官方市场浏览现成配置(模型 / Provider、插件、MCP、技能、Agent 预设……),先 dry-run 预览再一键安装——供应链警示恒展示,确认导入前每个分区都须显式批准。
|
|
60
|
+
|
|
46
61
|
---
|
|
47
62
|
|
|
48
63
|
## ✨ 核心亮点
|
|
@@ -58,6 +73,7 @@ DSH 是你的 AI 助手工作台,里面存着你的各种设置:模型配置
|
|
|
58
73
|
| ↩️ | **自动回滚** | 导入失败自动恢复原样,不会弄坏现有配置 |
|
|
59
74
|
| 📸 | **快照恢复** | 撤销一次导入:整文件还原 + 卸载新增插件(CLI 与 GUI 均支持) |
|
|
60
75
|
| 🔄 | **远程同步** | 通过 **Git 私有仓库或 WebDAV** 推送 / 拉取可移植配置(密钥永不参与同步) |
|
|
76
|
+
| 🛒 | **配置市场** | 浏览并一键安装社区分享的配置——供应链警示 + 逐分区批准 |
|
|
61
77
|
| 🗂️ | **配置档案 Profiles** | 保存多套配置(工作 / 个人),随时切换 |
|
|
62
78
|
|
|
63
79
|
---
|
|
@@ -72,6 +88,10 @@ DSH 是你的 AI 助手工作台,里面存着你的各种设置:模型配置
|
|
|
72
88
|
|:---:|:---:|
|
|
73
89
|
|  |  |
|
|
74
90
|
|
|
91
|
+
| 配置市场 |
|
|
92
|
+
|:---:|
|
|
93
|
+
|  |
|
|
94
|
+
|
|
75
95
|
---
|
|
76
96
|
|
|
77
97
|
## 🔄 它是怎么工作的?
|
|
@@ -102,17 +122,17 @@ DSH 是你的 AI 助手工作台,里面存着你的各种设置:模型配置
|
|
|
102
122
|
|
|
103
123
|
```bash
|
|
104
124
|
# ① 安装插件
|
|
105
|
-
dsh plugin --profile web add dsh-config-manager@latest
|
|
125
|
+
dsh plugin --profile web add dsh-config-manager@latest
|
|
106
126
|
|
|
107
127
|
# ② 重启 DSH(设置页就会出现「备份与迁移」入口)
|
|
108
128
|
```
|
|
109
129
|
|
|
110
|
-
> 💡
|
|
130
|
+
> 💡 照着复制就行:`@latest` 确保装到最新版。
|
|
111
131
|
>
|
|
112
132
|
> 🐛 **`@latest` 装到了旧版?** 这是 **pnpm 11 的 `minimumReleaseAge` 供应链发布年龄策略**(不是缓存):发布不足约 30 天的新版本会被排除出版本解析,直到进入白名单。两种解决办法:
|
|
113
133
|
> - 装一次精确版本即可自动白名单,之后 `@latest` 正常:
|
|
114
134
|
> ```bash
|
|
115
|
-
> dsh plugin --profile web add dsh-config-manager@0.1.8
|
|
135
|
+
> dsh plugin --profile web add dsh-config-manager@0.1.8
|
|
116
136
|
> ```
|
|
117
137
|
> - 或一行命令彻底关闭年龄门槛(在 profile 的 `pnpm-workspace.yaml` 顶部加 `minimumReleaseAge: 0`):
|
|
118
138
|
> ```powershell
|
|
@@ -216,6 +236,16 @@ dsh plugin --profile web add dsh-config-manager@latest --config.auto-install-pee
|
|
|
216
236
|
- **WebDAV 认证**采用 HTTP Basic:`username` 存配置、可在界面回显;`password` 则实时从 DSH credentials 槽位 `DSH_CONFIG_MANAGER_SYNC_WEBDAV_PASSWORD` 读取——绝不出现于任何同步文件或日志。
|
|
217
237
|
- **插件自动安装**:拉取差异时,备份里新增的插件会在确认导入时**自动安装**,无需在差异列表里逐项手动勾选;只有**版本冲突**的插件仍需要你决定「保留当前 / 采用备份」。
|
|
218
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
|
+
|
|
219
249
|
### 🗂️ 配置档案(Profiles)
|
|
220
250
|
|
|
221
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
|
-
"modeTabs": "_367UGW_modeTabs",
|
|
2935
|
-
"spinnerWrap": "_367UGW_spinnerWrap",
|
|
2936
|
-
"viewTabs": "_367UGW_viewTabs",
|
|
2937
|
-
"banner": "_367UGW_banner",
|
|
2938
|
-
"radioLabel": "_367UGW_radioLabel",
|
|
2939
|
-
"pathMappingList": "_367UGW_pathMappingList",
|
|
2940
|
-
"errorAction": "_367UGW_errorAction",
|
|
2941
|
-
"reportFooter": "_367UGW_reportFooter",
|
|
2942
|
-
"conflictOptions": "_367UGW_conflictOptions",
|
|
2943
|
-
"dialogHeaderRow": "_367UGW_dialogHeaderRow",
|
|
2944
|
-
"categoryName": "_367UGW_categoryName",
|
|
2945
|
-
"progressDetail": "_367UGW_progressDetail",
|
|
2946
|
-
"pullScroll": "_367UGW_pullScroll",
|
|
2947
|
-
"spinnerLabel": "_367UGW_spinnerLabel",
|
|
2948
|
-
"dialogBodyScroll": "_367UGW_dialogBodyScroll",
|
|
2949
|
-
"viewBody": "_367UGW_viewBody",
|
|
2950
|
-
"errorTitle": "_367UGW_errorTitle",
|
|
2931
|
+
"card": "_367UGW_card",
|
|
2932
|
+
"snapshotList": "_367UGW_snapshotList",
|
|
2933
|
+
"conflictItem": "_367UGW_conflictItem",
|
|
2951
2934
|
"empty": "_367UGW_empty",
|
|
2952
|
-
"modeHint": "_367UGW_modeHint",
|
|
2953
|
-
"rollbackBox": "_367UGW_rollbackBox",
|
|
2954
|
-
"reportView": "_367UGW_reportView",
|
|
2955
|
-
"progressBadge": "_367UGW_progressBadge",
|
|
2956
|
-
"progressBar": "_367UGW_progressBar",
|
|
2957
|
-
"categoryItem": "_367UGW_categoryItem",
|
|
2958
|
-
"conflictId": "_367UGW_conflictId",
|
|
2959
|
-
"optionsCard": "_367UGW_optionsCard",
|
|
2960
|
-
"conflictDetail": "_367UGW_conflictDetail",
|
|
2961
|
-
"field": "_367UGW_field",
|
|
2962
|
-
"fieldLabel": "_367UGW_fieldLabel",
|
|
2963
2935
|
"rowActions": "_367UGW_rowActions",
|
|
2964
|
-
"
|
|
2965
|
-
"
|
|
2936
|
+
"radioLabel": "_367UGW_radioLabel",
|
|
2937
|
+
"conflictId": "_367UGW_conflictId",
|
|
2966
2938
|
"badge": "_367UGW_badge",
|
|
2967
|
-
"
|
|
2968
|
-
"
|
|
2969
|
-
"
|
|
2970
|
-
"
|
|
2971
|
-
"
|
|
2972
|
-
"
|
|
2973
|
-
"sectionTitle": "_367UGW_sectionTitle",
|
|
2974
|
-
"severityError": "_367UGW_severityError",
|
|
2939
|
+
"groupList": "_367UGW_groupList",
|
|
2940
|
+
"groupNote": "_367UGW_groupNote",
|
|
2941
|
+
"progressBadgeCount": "_367UGW_progressBadgeCount",
|
|
2942
|
+
"progressBlock": "_367UGW_progressBlock",
|
|
2943
|
+
"dialogClose": "_367UGW_dialogClose",
|
|
2944
|
+
"pathValue": "_367UGW_pathValue",
|
|
2975
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
|
+
"modeHint": "_367UGW_modeHint",
|
|
2952
|
+
"progressTrack": "_367UGW_progressTrack",
|
|
2953
|
+
"primaryButton": "_367UGW_primaryButton",
|
|
2976
2954
|
"pathRow": "_367UGW_pathRow",
|
|
2955
|
+
"dialogBodyScroll": "_367UGW_dialogBodyScroll",
|
|
2956
|
+
"secretsList": "_367UGW_secretsList",
|
|
2957
|
+
"pullScroll": "_367UGW_pullScroll",
|
|
2958
|
+
"aboutLinkRow": "_367UGW_aboutLinkRow",
|
|
2959
|
+
"conflictList": "_367UGW_conflictList",
|
|
2960
|
+
"groupItems": "_367UGW_groupItems",
|
|
2961
|
+
"categoryDesc": "_367UGW_categoryDesc",
|
|
2962
|
+
"reportView": "_367UGW_reportView",
|
|
2963
|
+
"modeTab": "_367UGW_modeTab",
|
|
2964
|
+
"conflictOptions": "_367UGW_conflictOptions",
|
|
2965
|
+
"groupCard": "_367UGW_groupCard",
|
|
2966
|
+
"dialogCard": "_367UGW_dialogCard",
|
|
2967
|
+
"badgeWarn": "_367UGW_badgeWarn",
|
|
2968
|
+
"progressIndeterminate": "_367UGW_progressIndeterminate",
|
|
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",
|
|
2977
2977
|
"errorFooter": "_367UGW_errorFooter",
|
|
2978
2978
|
"snapshotRow": "_367UGW_snapshotRow",
|
|
2979
|
-
"
|
|
2980
|
-
"
|
|
2981
|
-
"
|
|
2982
|
-
"
|
|
2979
|
+
"severityError": "_367UGW_severityError",
|
|
2980
|
+
"snapshotRowHeader": "_367UGW_snapshotRowHeader",
|
|
2981
|
+
"wizardCard": "_367UGW_wizardCard",
|
|
2982
|
+
"categoryName": "_367UGW_categoryName",
|
|
2983
2983
|
"dialogMask": "_367UGW_dialogMask",
|
|
2984
|
+
"banner": "_367UGW_banner",
|
|
2985
|
+
"reportList": "_367UGW_reportList",
|
|
2986
|
+
"modeTabs": "_367UGW_modeTabs",
|
|
2987
|
+
"progressBadge": "_367UGW_progressBadge",
|
|
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",
|
|
2984
2995
|
"statRow": "_367UGW_statRow",
|
|
2985
|
-
"
|
|
2986
|
-
"progressPercent": "_367UGW_progressPercent",
|
|
2996
|
+
"errorBanner": "_367UGW_errorBanner",
|
|
2987
2997
|
"kindTag": "_367UGW_kindTag",
|
|
2988
|
-
"
|
|
2989
|
-
"
|
|
2990
|
-
"
|
|
2991
|
-
"
|
|
2992
|
-
"planScroll": "_367UGW_planScroll",
|
|
2993
|
-
"groupLabel": "_367UGW_groupLabel",
|
|
2994
|
-
"secretsList": "_367UGW_secretsList",
|
|
2995
|
-
"badgeOk": "_367UGW_badgeOk",
|
|
2996
|
-
"groupCard": "_367UGW_groupCard",
|
|
2997
|
-
"pathOld": "_367UGW_pathOld",
|
|
2998
|
-
"warnList": "_367UGW_warnList",
|
|
2999
|
-
"card": "_367UGW_card",
|
|
3000
|
-
"progressMeta": "_367UGW_progressMeta",
|
|
3001
|
-
"viewTab": "_367UGW_viewTab",
|
|
3002
|
-
"errorLine": "_367UGW_errorLine",
|
|
3003
|
-
"progressBadgeSection": "_367UGW_progressBadgeSection",
|
|
3004
|
-
"dshCmSpin": "_367UGW_dshCmSpin",
|
|
3005
|
-
"pathIssueKind": "_367UGW_pathIssueKind",
|
|
3006
|
-
"errorItem": "_367UGW_errorItem",
|
|
2998
|
+
"field": "_367UGW_field",
|
|
2999
|
+
"diffScroll": "_367UGW_diffScroll",
|
|
3000
|
+
"optionsCard": "_367UGW_optionsCard",
|
|
3001
|
+
"sectionTitle": "_367UGW_sectionTitle",
|
|
3007
3002
|
"sectionBody": "_367UGW_sectionBody",
|
|
3008
|
-
"reportScroll": "_367UGW_reportScroll",
|
|
3009
|
-
"ghostButton": "_367UGW_ghostButton",
|
|
3010
|
-
"select": "_367UGW_select",
|
|
3011
|
-
"categoryDesc": "_367UGW_categoryDesc",
|
|
3012
|
-
"sectionHeader": "_367UGW_sectionHeader",
|
|
3013
3003
|
"badgeInfo": "_367UGW_badgeInfo",
|
|
3014
|
-
"errorList": "_367UGW_errorList",
|
|
3015
3004
|
"conflictHead": "_367UGW_conflictHead",
|
|
3016
|
-
"
|
|
3017
|
-
"
|
|
3018
|
-
"
|
|
3019
|
-
"
|
|
3005
|
+
"progressBar": "_367UGW_progressBar",
|
|
3006
|
+
"reportScroll": "_367UGW_reportScroll",
|
|
3007
|
+
"sectionHeader": "_367UGW_sectionHeader",
|
|
3008
|
+
"select": "_367UGW_select",
|
|
3009
|
+
"dshCmSpin": "_367UGW_dshCmSpin",
|
|
3010
|
+
"errorReason": "_367UGW_errorReason",
|
|
3011
|
+
"warnList": "_367UGW_warnList",
|
|
3012
|
+
"pathIssueKind": "_367UGW_pathIssueKind",
|
|
3013
|
+
"warnText": "_367UGW_warnText",
|
|
3014
|
+
"dialogBody": "_367UGW_dialogBody",
|
|
3015
|
+
"viewTab": "_367UGW_viewTab",
|
|
3016
|
+
"input": "_367UGW_input",
|
|
3017
|
+
"dialogWide": "_367UGW_dialogWide",
|
|
3020
3018
|
"dshCmIndeterminate": "_367UGW_dshCmIndeterminate",
|
|
3021
|
-
"
|
|
3022
|
-
"
|
|
3023
|
-
"
|
|
3024
|
-
"
|
|
3025
|
-
"
|
|
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",
|
|
3026
|
+
"checkboxRow": "_367UGW_checkboxRow",
|
|
3026
3027
|
"progressLabel": "_367UGW_progressLabel",
|
|
3027
|
-
"
|
|
3028
|
-
"
|
|
3028
|
+
"badgeError": "_367UGW_badgeError",
|
|
3029
|
+
"progressPercent": "_367UGW_progressPercent",
|
|
3030
|
+
"sectionTitleBlock": "_367UGW_sectionTitleBlock",
|
|
3029
3031
|
"spinner": "_367UGW_spinner",
|
|
3030
|
-
"
|
|
3031
|
-
"
|
|
3032
|
-
"
|
|
3033
|
-
"
|
|
3034
|
-
"
|
|
3035
|
-
"
|
|
3036
|
-
"
|
|
3037
|
-
"
|
|
3038
|
-
"
|
|
3032
|
+
"secretFields": "_367UGW_secretFields",
|
|
3033
|
+
"hiddenFile": "_367UGW_hiddenFile",
|
|
3034
|
+
"optionsHeader": "_367UGW_optionsHeader",
|
|
3035
|
+
"pathOld": "_367UGW_pathOld",
|
|
3036
|
+
"sectionSubtitle": "_367UGW_sectionSubtitle",
|
|
3037
|
+
"viewTabs": "_367UGW_viewTabs",
|
|
3038
|
+
"categoryItem": "_367UGW_categoryItem",
|
|
3039
|
+
"errorList": "_367UGW_errorList",
|
|
3040
|
+
"errorLine": "_367UGW_errorLine",
|
|
3041
|
+
"ghostButton": "_367UGW_ghostButton",
|
|
3042
|
+
"spinnerWrap": "_367UGW_spinnerWrap",
|
|
3039
3043
|
"progressBarDone": "_367UGW_progressBarDone",
|
|
3040
|
-
"
|
|
3041
|
-
"badgeError": "_367UGW_badgeError",
|
|
3042
|
-
"diffScroll": "_367UGW_diffScroll",
|
|
3043
|
-
"progressBadgeCount": "_367UGW_progressBadgeCount",
|
|
3044
|
-
"errorReason": "_367UGW_errorReason"
|
|
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")
|