@deepseek-ai/dsh-client-ui-settings-general 0.2.1-alpha.3 → 0.2.1-alpha.5
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.i18n.yaml +5 -2
- package/README.md +6 -0
- package/README.zh.md +6 -0
- package/lib/client.js +176 -39
- package/lib/types/client/HostReleasePrompt.d.ts +24 -0
- package/lib/types/client/index.d.ts +2 -1
- package/lib/types/client/locales.d.ts +14 -0
- package/package.json +20 -16
package/README.i18n.yaml
CHANGED
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
en: 2843d46e95311bce
|
|
16
16
|
zh: ec11bdeb5d3ce818
|
|
17
17
|
/deepseek-ai-dsh-client-ui-settings-general/use-this-package:
|
|
18
|
-
en:
|
|
19
|
-
zh:
|
|
18
|
+
en: 2bc21e57fe17eab9
|
|
19
|
+
zh: e441cd313f747b22
|
|
20
20
|
/deepseek-ai-dsh-client-ui-settings-general/use-this-package/the-general-section:
|
|
21
21
|
en: 8b8a7c6287bb303b
|
|
22
22
|
zh: 19535112531aedd5
|
|
@@ -35,6 +35,9 @@
|
|
|
35
35
|
/deepseek-ai-dsh-client-ui-settings-general/understand-the-implementation/connection-recovery:
|
|
36
36
|
en: e37fb7df883ea356
|
|
37
37
|
zh: c972524e56c6d6c2
|
|
38
|
+
/deepseek-ai-dsh-client-ui-settings-general/understand-the-implementation/host-release-changes:
|
|
39
|
+
en: d464f726b026c39a
|
|
40
|
+
zh: c949e5f4d65a639f
|
|
38
41
|
/deepseek-ai-dsh-client-ui-settings-general/understand-the-implementation/document-availability:
|
|
39
42
|
en: ff1aec9eb1a87a79
|
|
40
43
|
zh: eb91ab8bef59742d
|
package/README.md
CHANGED
|
@@ -31,6 +31,8 @@ Users reach the shell through the sidebar's bottom Settings control; feature plu
|
|
|
31
31
|
|
|
32
32
|
Settings uses the [frame’s shared overlay inset](../ui-layout/README.md#window-chrome-seat) and keeps at least 24px of viewport margin. Its mask leaves the Windows caption unpainted; the full-viewport layer still blocks background clicks.
|
|
33
33
|
|
|
34
|
+
When the page reconnects to a Host running another release, a **Service version changed** dialog draws two lines: **Service** from the Host's previous release (gray) to its current release, joined by a thin solid green arrow because the Host already switched, and **Page** from the release this page booted from to the Host's release (gray), joined by an equally thin dashed gray arrow because only a reload completes it. A line shows versions when its two versions differ and commits otherwise. The page applies no plugin update from that release. **Reload to load the new version** loads it; **Not now**, the close control, a mask click, and Escape keep the page at its own release and stop asking about that Host release. When the Host returns to the page's release, the dialog closes and live updates resume.
|
|
35
|
+
|
|
34
36
|
When the section navigation exceeds the panel's available height, the list scrolls independently of the settings content and keeps the Settings title fixed.
|
|
35
37
|
|
|
36
38
|
In Desktop, the account-row update control shows availability, progress, verification, readiness, and persistent retry feedback. It shares the connection indicator’s 28px height, 8px corners, 14px icon slot, 4px icon gap, and 12px medium text with an 18px line height; update-state border, fill, and text colors remain independently defined. Retry text and its dot use the same brand blue as other update labels; numeric download progress has no ellipsis. The preload carries semantic phase, version, progress, and classified failures; the component resolves every visible and accessible string from the active `settings` locale, including after an in-application language change. Selecting an available update starts downloading; installation requires a separate shell-owned confirmation. A collapsed sidebar shows the same status as a brand-blue dot on its top expand button, including failures. Connection feedback takes priority except during shell-reported installation, when the expected backend disconnect must not hide update status. Failure restores connection feedback. Both controls share one carrier subscription; browser code cannot choose packages or authorize installation. [Desktop updates](../../../apps/desktop/README.md) owns the release workflow. Checking, verifying, and preparing-to-restart tooltips show only the supplied version; without a version, they retain the state label. Desktop update tooltips preserve the complete version and prerelease suffix without adding v or V; their error summaries match the shell update dialogs.
|
|
@@ -73,6 +75,10 @@ The navigation is a projection of the `settings.section` ledger; nav labels may
|
|
|
73
75
|
|
|
74
76
|
The shell is an explicit recovery consumer, so it injects Connection directly rather than adding lifecycle controls to `ctx.remote`. Its private hooks compartment binds `ctx.connection.state`, while the component receives only the selected state and an injected callback for `ctx.connection.reconnect()`. `ConnectionIndicator` owns the inline presentation and receives all visible and accessible copy from the `settings` locale namespace; the shell owns the 800ms minimum-visible hold for the connecting state and the two-second recovered-state timer, which starts when the recovered pill becomes visible after the hold.
|
|
75
77
|
|
|
78
|
+
### Host release changes
|
|
79
|
+
|
|
80
|
+
The `shell.overlay` entry `host-release-change` binds `ctx.modules.entries.releaseChange` in its hooks compartment and receives two callbacks: one calls `ctx.modules.entries.dismissRelease()`, the other reloads the page. Release identities are Host data and render verbatim; [Client Modules](../modules/README.md#host-release-changes) owns which release counts as current.
|
|
81
|
+
|
|
76
82
|
### Document availability
|
|
77
83
|
|
|
78
84
|
On a loopback page, the Client loads the provider's `hasDocument` capability through `settings/describe` and renders **Open configuration file** only when the Host confirms that a provider-owned local document can be prepared. The action calls the pathless, browser-authenticated `settings/openSettingsDocument` Remote; the Host resolves the provider path again, materializes an absent document, and hands it to a native text editor (`open -t` on macOS, bypassing a browser file association; the desktop file association on Linux and Windows; Windows association after `wslpath -w` translation on WSL). Open failures keep the action available and render a localized error. Reopening the dialog or reconnecting refreshes availability after a transient read failure or Host topology change. Non-loopback pages withhold this native action through the Client policy.
|
package/README.zh.md
CHANGED
|
@@ -31,6 +31,8 @@ kind: "package-reference"
|
|
|
31
31
|
|
|
32
32
|
设置面板使用[框架共享的浮层起点](../ui-layout/README.zh.md#window-chrome-seat),视口边距至少为 24px。其遮罩不绘制 Windows 顶栏区域,覆盖整个视口的模态层仍阻挡背景点击。
|
|
33
33
|
|
|
34
|
+
页面重连到运行另一个 release 的 Host 时,会弹出**服务版本变化**对话框,画出两条线:**服务**从 Host 之前的 release(灰色)指向它当前的 release,用细的绿色实线箭头连接,表示 Host 已经切换;**页面**从页面启动时的 release 指向 Host 的 release(灰色),用同样细的灰色虚线箭头连接,表示要刷新后才完成。每行两端版本号不同时显示版本号,否则显示 commit。页面不应用该 release 的任何插件更新。**刷新以加载新版本**加载它;**暂不刷新**、关闭按钮、点击遮罩和 Escape 都让页面保持自己的 release,并不再为该 Host release 提示。Host 回到页面的 release 时,对话框关闭,热更新恢复。
|
|
35
|
+
|
|
34
36
|
当分区导航超出面板可用高度时,列表独立于设置内容滚动,并保持「设置」标题固定。
|
|
35
37
|
|
|
36
38
|
在 Desktop 中,账户行更新控件显示可用版本、进度、验证、就绪和持久重试反馈。它与连接指示器共用 28px 高度、8px 圆角、14px 图标占位、4px 图文间距,以及 12px 中等字重文字和 18px 行高;更新状态的边框、填充和文字颜色独立定义。重试文字及其圆点与其他更新文案使用相同的品牌蓝色;数字下载进度不带省略号。预加载仅传递语义化阶段、版本、进度和失败类别;组件从当前 `settings` locale 解析全部可见与无障碍文案,并在应用内语言变化后同步更新。选择可用更新即开始下载;安装需要独立的壳拥有的确认。侧栏收起时,其顶部展开按钮以品牌蓝色圆点显示相同状态,包括失败状态。连接反馈通常优先展示,但壳报告正在安装时,预期的后端断开不能遮盖更新状态;失败后恢复连接反馈。两个控件共用一次载体订阅;浏览器代码不能选择安装包或授权安装。[Desktop 更新](../../../apps/desktop/README.zh.md)负责发布流程。检查中、校验中和准备重启状态的悬浮提示只显示已提供的版本号;没有版本号时保留状态文案。桌面更新提示完整保留版本号及预发布后缀,不额外添加 v 或 V;错误提示与桌面升级弹窗保持一致。
|
|
@@ -73,6 +75,10 @@ Web 与桌面端的通用设置底部显示当前发布版本,使用构建注
|
|
|
73
75
|
|
|
74
76
|
外壳是明确的恢复功能消费方,因此直接注入 Connection,而不把生命周期控制放进 `ctx.remote`。它的私有 hooks compartment 绑定 `ctx.connection.state`,组件只接收选出的状态与调用 `ctx.connection.reconnect()` 的注入回调。`ConnectionIndicator` 拥有内联展示并从 `settings` locale namespace 接收全部可见与无障碍文案;连接中状态的 800ms 最短可见驻留与 2 秒恢复确认计时器归外壳所有;恢复计时从驻留结束、恢复药丸实际可见时开始。
|
|
75
77
|
|
|
78
|
+
### Host release 变化
|
|
79
|
+
|
|
80
|
+
`shell.overlay` 条目 `host-release-change` 在其 hooks compartment 中绑定 `ctx.modules.entries.releaseChange`,并接收两个回调:一个调用 `ctx.modules.entries.dismissRelease()`,另一个刷新页面。release 身份是 Host 数据,按原样显示;哪个 release 算当前由 [Client Modules](../modules/README.zh.md#host-release-changes) 决定。
|
|
81
|
+
|
|
76
82
|
### 文档可用性
|
|
77
83
|
|
|
78
84
|
在 loopback 页面上,Client 通过 `settings/describe` 加载提供方的 `hasDocument` 能力,且只有在 Host 确认可准备好一份由提供方持有的本地文档时才渲染**打开配置文件**操作。该操作调用无路径参数且经浏览器认证的 `settings/openSettingsDocument` Remote;Host 会再次解析提供方路径、在文档缺失时将其创建出来,并交给原生文本编辑器(macOS 上使用 `open -t`,绕过浏览器文件关联;Linux 和 Windows 上使用桌面文件关联;WSL 上经 `wslpath -w` 转换后使用 Windows 文件关联)。打开失败时该操作仍可使用,并渲染本地化错误。临时读取失败或 Host 拓扑变化后,重新打开对话框或重新连接会刷新可用性。非 loopback 页面通过 Client 策略拦下该原生操作。
|
package/lib/client.js
CHANGED
|
@@ -57,13 +57,13 @@ window.__ModuleLoader__.load({
|
|
|
57
57
|
}
|
|
58
58
|
//#endregion
|
|
59
59
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-settings-general/src/client/SettingsRoot.module.css.mjs
|
|
60
|
-
const css$
|
|
61
|
-
const tagId$
|
|
62
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
60
|
+
const css$7 = ".VOzbGW_triggerRow{flex:none;align-items:center;gap:8px;width:calc(100% + 4px);margin:4px -2px;display:flex;position:relative}.VOzbGW_triggerRow.VOzbGW_railRow{width:36px;margin:8px 0 10px}.VOzbGW_trigger{box-sizing:border-box;border-radius:var(--dsw-radius-md);cursor:pointer;width:auto;min-width:0;height:42px;color:var(--dsw-alias-label-primary);background:0 0;border:none;flex:1;align-items:center;gap:8px;margin:0;padding:0 10px 0 8px;font-family:inherit;font-size:14px;line-height:22px;display:flex;overflow:hidden}.VOzbGW_trigger:hover{background:var(--dsw-alias-interactive-bg-hover)}.VOzbGW_trigger.VOzbGW_rail{flex:none;justify-content:center;gap:0;width:36px;height:36px;margin:0;padding:0}.VOzbGW_triggerLabel{white-space:nowrap;overflow:hidden}.VOzbGW_overlay{z-index:1000;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.VOzbGW_mask{inset:var(--dsh-frame-chrome-top,0px) 0 0;background:var(--dsw-alias-bg-mask-1);backdrop-filter:var(--dsw-mask-blur);position:absolute}.VOzbGW_panel{z-index:1;width:800px;height:min(800px, calc(100vh - 2 * max(24px, var(--dsh-frame-overlay-top,24px))));border-radius:var(--dsw-radius-panel);background:var(--dsw-alias-bg-layer-2);max-width:calc(100vw - 48px);box-shadow:var(--dsw-elevation-prominent);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);display:flex;position:relative;overflow:hidden}.VOzbGW_panel:focus{outline:none}.VOzbGW_nav{box-sizing:border-box;flex-direction:column;flex:none;gap:18px;width:188px;padding:22px 12px 0;display:flex}.VOzbGW_navTitle{color:var(--dsw-alias-label-primary);padding:0 12px;font-size:16px;font-weight:500;line-height:24px}.VOzbGW_navList{flex-direction:column;gap:4px;display:flex;overflow-y:auto}.VOzbGW_navCell{box-sizing:border-box;border-radius:var(--dsw-radius-md);cursor:pointer;height:40px;color:var(--dsw-alias-label-primary);text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:9px 16px 9px 12px;font-family:inherit;font-size:14px;font-weight:400;line-height:22px;display:flex}.VOzbGW_navCell:hover{background:var(--dsw-specific-sidebar-nav-item-hover)}.VOzbGW_navCell.VOzbGW_active{background:var(--dsw-specific-sidebar-nav-item-active)}.VOzbGW_navIcon{flex:none}.VOzbGW_navLabel{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.VOzbGW_content{flex-direction:column;flex:1;min-width:0;display:flex}.VOzbGW_header{box-sizing:border-box;flex:none;justify-content:space-between;align-items:flex-start;gap:8px;height:54px;padding:20px 14px 8px 10px;display:flex}.VOzbGW_actions{justify-content:flex-end;align-items:center;gap:8px;min-width:0;margin-left:auto;display:flex}.VOzbGW_close{border-radius:var(--dsw-radius-sm);cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-primary);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.VOzbGW_close:hover{background:var(--dsw-alias-interactive-bg-hover)}.VOzbGW_options{flex:1;min-height:0;padding:0 24px 24px;overflow-y:auto}.VOzbGW_hiddenLabel{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}";
|
|
61
|
+
const tagId$7 = "@deepseek-ai/dsh-client-ui-settings-general/SettingsRoot.module.css";
|
|
62
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
|
|
63
63
|
const tag = document.createElement("style");
|
|
64
64
|
tag.dataset.plugin = "@deepseek-ai/dsh-client-ui-settings-general";
|
|
65
|
-
tag.dataset.pluginCss = tagId$
|
|
66
|
-
tag.textContent = css$
|
|
65
|
+
tag.dataset.pluginCss = tagId$7;
|
|
66
|
+
tag.textContent = css$7;
|
|
67
67
|
document.head.appendChild(tag);
|
|
68
68
|
}
|
|
69
69
|
var SettingsRoot_module_css_default = {
|
|
@@ -91,13 +91,13 @@ window.__ModuleLoader__.load({
|
|
|
91
91
|
};
|
|
92
92
|
//#endregion
|
|
93
93
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-settings-general/src/client/DesktopUpdateIndicator.module.css.mjs
|
|
94
|
-
const css$
|
|
95
|
-
const tagId$
|
|
96
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
94
|
+
const css$6 = ".DOUpOa_indicator{box-sizing:border-box;border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 20%, transparent);border-radius:var(--dsw-radius-sm);height:28px;color:var(--dsw-alias-brand-primary-new-colorprimary-new-color);background:color-mix(in srgb, var(--dsw-alias-brand-primary-new-colorprimary-new-color) 8%, transparent);text-align:left;white-space:nowrap;cursor:pointer;flex:none;grid-template-columns:14px max-content;align-items:center;column-gap:4px;padding:0 8px;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;display:inline-grid}.DOUpOa_icon{place-items:center;width:14px;height:14px;display:grid}.DOUpOa_badge{inset-inline-end:2px;corner-shape:round;background:var(--dsw-alias-brand-primary-new-colorprimary-new-color);border-radius:50%;width:6px;height:6px;position:absolute;top:2px}.DOUpOa_errorDot{corner-shape:round;background:currentColor;border-radius:50%;width:6px;height:6px}.DOUpOa_spinner{animation:1s linear infinite DOUpOa_spin}@keyframes DOUpOa_spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.DOUpOa_spinner{animation:none}}.DOUpOa_indicator[aria-disabled=true]{cursor:default}";
|
|
95
|
+
const tagId$6 = "@deepseek-ai/dsh-client-ui-settings-general/DesktopUpdateIndicator.module.css";
|
|
96
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$6) + "]") === null) {
|
|
97
97
|
const tag = document.createElement("style");
|
|
98
98
|
tag.dataset.plugin = "@deepseek-ai/dsh-client-ui-settings-general";
|
|
99
|
-
tag.dataset.pluginCss = tagId$
|
|
100
|
-
tag.textContent = css$
|
|
99
|
+
tag.dataset.pluginCss = tagId$6;
|
|
100
|
+
tag.textContent = css$6;
|
|
101
101
|
document.head.appendChild(tag);
|
|
102
102
|
}
|
|
103
103
|
var DesktopUpdateIndicator_module_css_default = {
|
|
@@ -568,13 +568,13 @@ window.__ModuleLoader__.load({
|
|
|
568
568
|
};
|
|
569
569
|
//#endregion
|
|
570
570
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-settings-general/src/client/chrome.module.css.mjs
|
|
571
|
-
const css$
|
|
572
|
-
const tagId$
|
|
573
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
571
|
+
const css$5 = ".UQsH_q_triggerLabel{white-space:nowrap;overflow:hidden}";
|
|
572
|
+
const tagId$5 = "@deepseek-ai/dsh-client-ui-settings-general/chrome.module.css";
|
|
573
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$5) + "]") === null) {
|
|
574
574
|
const tag = document.createElement("style");
|
|
575
575
|
tag.dataset.plugin = "@deepseek-ai/dsh-client-ui-settings-general";
|
|
576
|
-
tag.dataset.pluginCss = tagId$
|
|
577
|
-
tag.textContent = css$
|
|
576
|
+
tag.dataset.pluginCss = tagId$5;
|
|
577
|
+
tag.textContent = css$5;
|
|
578
578
|
document.head.appendChild(tag);
|
|
579
579
|
}
|
|
580
580
|
var chrome_module_css_default = { "triggerLabel": "UQsH_q_triggerLabel" };
|
|
@@ -615,13 +615,13 @@ window.__ModuleLoader__.load({
|
|
|
615
615
|
}
|
|
616
616
|
//#endregion
|
|
617
617
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-settings-general/src/client/GeneralSection.module.css.mjs
|
|
618
|
-
const css$
|
|
619
|
-
const tagId$
|
|
620
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
618
|
+
const css$4 = "._WvWnq_section{flex-direction:column;width:100%;display:flex}._WvWnq_section>[data-slot=\"settings.general.item\"]>:last-child{border-bottom:none}";
|
|
619
|
+
const tagId$4 = "@deepseek-ai/dsh-client-ui-settings-general/GeneralSection.module.css";
|
|
620
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
621
621
|
const tag = document.createElement("style");
|
|
622
622
|
tag.dataset.plugin = "@deepseek-ai/dsh-client-ui-settings-general";
|
|
623
|
-
tag.dataset.pluginCss = tagId$
|
|
624
|
-
tag.textContent = css$
|
|
623
|
+
tag.dataset.pluginCss = tagId$4;
|
|
624
|
+
tag.textContent = css$4;
|
|
625
625
|
document.head.appendChild(tag);
|
|
626
626
|
}
|
|
627
627
|
var GeneralSection_module_css_default = { "section": "_WvWnq_section" };
|
|
@@ -640,13 +640,13 @@ window.__ModuleLoader__.load({
|
|
|
640
640
|
}
|
|
641
641
|
//#endregion
|
|
642
642
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-settings-general/src/client/CurrentVersionRow.module.css.mjs
|
|
643
|
-
const css$
|
|
644
|
-
const tagId$
|
|
645
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
643
|
+
const css$3 = ".yIbyla_row{color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;padding:16px 0;font-size:14px;line-height:22px}";
|
|
644
|
+
const tagId$3 = "@deepseek-ai/dsh-client-ui-settings-general/CurrentVersionRow.module.css";
|
|
645
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
646
646
|
const tag = document.createElement("style");
|
|
647
647
|
tag.dataset.plugin = "@deepseek-ai/dsh-client-ui-settings-general";
|
|
648
|
-
tag.dataset.pluginCss = tagId$
|
|
649
|
-
tag.textContent = css$
|
|
648
|
+
tag.dataset.pluginCss = tagId$3;
|
|
649
|
+
tag.textContent = css$3;
|
|
650
650
|
document.head.appendChild(tag);
|
|
651
651
|
}
|
|
652
652
|
var CurrentVersionRow_module_css_default = { "row": "yIbyla_row" };
|
|
@@ -660,18 +660,18 @@ window.__ModuleLoader__.load({
|
|
|
660
660
|
function CurrentVersionRow({ t }) {
|
|
661
661
|
return (0, react_jsx_runtime.jsx)("div", {
|
|
662
662
|
className: CurrentVersionRow_module_css_default.row,
|
|
663
|
-
children: t("general.currentVersion", { version: "0.2.1-alpha.
|
|
663
|
+
children: t("general.currentVersion", { version: "0.2.1-alpha.5" })
|
|
664
664
|
});
|
|
665
665
|
}
|
|
666
666
|
//#endregion
|
|
667
667
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-settings-general/src/client/DeveloperToolsRow.module.css.mjs
|
|
668
|
-
const css$
|
|
669
|
-
const tagId$
|
|
670
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
668
|
+
const css$2 = ".Pt1bsG_row{border-bottom:.5px solid var(--dsw-alias-border-l2);justify-content:space-between;align-items:center;gap:24px;padding:16px 0;display:flex}.Pt1bsG_title{font-size:14px;line-height:20px}.Pt1bsG_description{color:var(--dsw-alias-label-secondary);margin-top:4px;font-size:12px;line-height:18px}";
|
|
669
|
+
const tagId$2 = "@deepseek-ai/dsh-client-ui-settings-general/DeveloperToolsRow.module.css";
|
|
670
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
671
671
|
const tag = document.createElement("style");
|
|
672
672
|
tag.dataset.plugin = "@deepseek-ai/dsh-client-ui-settings-general";
|
|
673
|
-
tag.dataset.pluginCss = tagId$
|
|
674
|
-
tag.textContent = css$
|
|
673
|
+
tag.dataset.pluginCss = tagId$2;
|
|
674
|
+
tag.textContent = css$2;
|
|
675
675
|
document.head.appendChild(tag);
|
|
676
676
|
}
|
|
677
677
|
var DeveloperToolsRow_module_css_default = {
|
|
@@ -724,13 +724,13 @@ window.__ModuleLoader__.load({
|
|
|
724
724
|
}
|
|
725
725
|
//#endregion
|
|
726
726
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-settings-general/src/client/SettingsDocumentAction.module.css.mjs
|
|
727
|
-
const css = ".me01iq_action{align-items:center;gap:8px;min-width:0;display:flex}.me01iq_error{max-width:180px;color:var(--dsw-alias-state-error-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}";
|
|
728
|
-
const tagId = "@deepseek-ai/dsh-client-ui-settings-general/SettingsDocumentAction.module.css";
|
|
729
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
727
|
+
const css$1 = ".me01iq_action{align-items:center;gap:8px;min-width:0;display:flex}.me01iq_error{max-width:180px;color:var(--dsw-alias-state-error-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}";
|
|
728
|
+
const tagId$1 = "@deepseek-ai/dsh-client-ui-settings-general/SettingsDocumentAction.module.css";
|
|
729
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
730
730
|
const tag = document.createElement("style");
|
|
731
731
|
tag.dataset.plugin = "@deepseek-ai/dsh-client-ui-settings-general";
|
|
732
|
-
tag.dataset.pluginCss = tagId;
|
|
733
|
-
tag.textContent = css;
|
|
732
|
+
tag.dataset.pluginCss = tagId$1;
|
|
733
|
+
tag.textContent = css$1;
|
|
734
734
|
document.head.appendChild(tag);
|
|
735
735
|
}
|
|
736
736
|
var SettingsDocumentAction_module_css_default = {
|
|
@@ -854,6 +854,113 @@ window.__ModuleLoader__.load({
|
|
|
854
854
|
}
|
|
855
855
|
};
|
|
856
856
|
//#endregion
|
|
857
|
+
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-settings-general/src/client/HostReleasePrompt.module.css.mjs
|
|
858
|
+
const css = "._64N1GW_dialog{width:min(480px,100%)}._64N1GW_transitions{grid-template-columns:max-content minmax(0,max-content) 56px minmax(0,max-content);justify-content:start;align-items:center;gap:8px 12px;font-size:13px;line-height:20px;display:grid}._64N1GW_label{color:var(--dsw-alias-label-secondary)}._64N1GW_release{font-family:var(--ds-font-family-code);overflow-wrap:anywhere}._64N1GW_solid{color:var(--dsw-alias-label-primary)}._64N1GW_faded{color:var(--dsw-alias-label-tertiary)}._64N1GW_line{border-top-width:1px;height:0;position:relative}._64N1GW_line:after{content:\"\";border-top:3px solid #0000;border-bottom:3px solid #0000;border-left:5px solid;position:absolute;top:-3.5px;right:-1px}._64N1GW_done{border-top-style:solid;border-top-color:var(--dsw-alias-state-success-primary);color:var(--dsw-alias-state-success-primary)}._64N1GW_pending{border-top-style:dashed;border-top-color:var(--dsw-alias-label-tertiary);color:var(--dsw-alias-label-tertiary)}";
|
|
859
|
+
const tagId = "@deepseek-ai/dsh-client-ui-settings-general/HostReleasePrompt.module.css";
|
|
860
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
861
|
+
const tag = document.createElement("style");
|
|
862
|
+
tag.dataset.plugin = "@deepseek-ai/dsh-client-ui-settings-general";
|
|
863
|
+
tag.dataset.pluginCss = tagId;
|
|
864
|
+
tag.textContent = css;
|
|
865
|
+
document.head.appendChild(tag);
|
|
866
|
+
}
|
|
867
|
+
var HostReleasePrompt_module_css_default = {
|
|
868
|
+
"dialog": "_64N1GW_dialog",
|
|
869
|
+
"done": "_64N1GW_done",
|
|
870
|
+
"faded": "_64N1GW_faded",
|
|
871
|
+
"label": "_64N1GW_label",
|
|
872
|
+
"line": "_64N1GW_line",
|
|
873
|
+
"pending": "_64N1GW_pending",
|
|
874
|
+
"release": "_64N1GW_release",
|
|
875
|
+
"solid": "_64N1GW_solid",
|
|
876
|
+
"transitions": "_64N1GW_transitions"
|
|
877
|
+
};
|
|
878
|
+
//#endregion
|
|
879
|
+
//#region lib/types/client/HostReleasePrompt.js
|
|
880
|
+
/** Confirmation shown when this page reconnects to a Host running another release. */
|
|
881
|
+
/**
|
|
882
|
+
* Name both ends of one release transition: their versions when those differ, otherwise their commits.
|
|
883
|
+
* @param from - release the transition starts at.
|
|
884
|
+
* @param to - release the transition ends at.
|
|
885
|
+
* @param unknown - text for a release or field the Host did not publish.
|
|
886
|
+
* @returns the start and end text.
|
|
887
|
+
*/
|
|
888
|
+
function transitionText(from, to, unknown) {
|
|
889
|
+
const field = from?.version !== to?.version ? "version" : "commit";
|
|
890
|
+
return [from?.[field] ?? unknown, to?.[field] ?? unknown];
|
|
891
|
+
}
|
|
892
|
+
/**
|
|
893
|
+
* One labelled transition line. A completed transition fades its start; a pending one fades its end.
|
|
894
|
+
* @param props - row label, both ends, and completion.
|
|
895
|
+
* @returns the row's cells for the shared transition grid.
|
|
896
|
+
*/
|
|
897
|
+
function Transition({ label, from, to, done }) {
|
|
898
|
+
return (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
899
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
900
|
+
className: HostReleasePrompt_module_css_default.label,
|
|
901
|
+
children: label
|
|
902
|
+
}),
|
|
903
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
904
|
+
className: clsx(HostReleasePrompt_module_css_default.release, done ? HostReleasePrompt_module_css_default.faded : HostReleasePrompt_module_css_default.solid),
|
|
905
|
+
children: from
|
|
906
|
+
}),
|
|
907
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
908
|
+
"aria-hidden": "true",
|
|
909
|
+
className: clsx(HostReleasePrompt_module_css_default.line, done ? HostReleasePrompt_module_css_default.done : HostReleasePrompt_module_css_default.pending)
|
|
910
|
+
}),
|
|
911
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
912
|
+
className: clsx(HostReleasePrompt_module_css_default.release, done ? HostReleasePrompt_module_css_default.solid : HostReleasePrompt_module_css_default.faded),
|
|
913
|
+
children: to
|
|
914
|
+
})
|
|
915
|
+
] });
|
|
916
|
+
}
|
|
917
|
+
/**
|
|
918
|
+
* Ask whether to reload after the Host changed releases; closing the dialog keeps the page.
|
|
919
|
+
* The service line shows the Host's completed switch from its previous release; the page line shows the
|
|
920
|
+
* switch from the page's boot release that only a reload completes.
|
|
921
|
+
* @param props - the release change, both decisions, and localized copy.
|
|
922
|
+
* @returns the dialog while a change is announced; otherwise nothing.
|
|
923
|
+
*/
|
|
924
|
+
function HostReleasePrompt({ useReleaseChange, dismissRelease, reloadPage, t }) {
|
|
925
|
+
const change = useReleaseChange((value) => value);
|
|
926
|
+
if (change === void 0) return null;
|
|
927
|
+
const unknown = t("hostRelease.unknown");
|
|
928
|
+
const [serviceFrom, serviceTo] = transitionText(change.previous, change.host, unknown);
|
|
929
|
+
const [pageFrom, pageTo] = transitionText(change.page, change.host, unknown);
|
|
930
|
+
return (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
931
|
+
open: true,
|
|
932
|
+
title: t("hostRelease.title"),
|
|
933
|
+
description: t("hostRelease.description"),
|
|
934
|
+
closeLabel: t("hostRelease.later"),
|
|
935
|
+
onClose: dismissRelease,
|
|
936
|
+
className: clsx(HostReleasePrompt_module_css_default.dialog),
|
|
937
|
+
footer: (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
938
|
+
variant: "outline",
|
|
939
|
+
"data-modal-autofocus": true,
|
|
940
|
+
onClick: dismissRelease,
|
|
941
|
+
children: t("hostRelease.later")
|
|
942
|
+
}), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
943
|
+
variant: "primary",
|
|
944
|
+
onClick: reloadPage,
|
|
945
|
+
children: t("hostRelease.reload")
|
|
946
|
+
})] }),
|
|
947
|
+
children: (0, react_jsx_runtime.jsxs)("div", {
|
|
948
|
+
className: HostReleasePrompt_module_css_default.transitions,
|
|
949
|
+
children: [(0, react_jsx_runtime.jsx)(Transition, {
|
|
950
|
+
label: t("hostRelease.service"),
|
|
951
|
+
from: serviceFrom,
|
|
952
|
+
to: serviceTo,
|
|
953
|
+
done: true
|
|
954
|
+
}), (0, react_jsx_runtime.jsx)(Transition, {
|
|
955
|
+
label: t("hostRelease.page"),
|
|
956
|
+
from: pageFrom,
|
|
957
|
+
to: pageTo,
|
|
958
|
+
done: false
|
|
959
|
+
})]
|
|
960
|
+
})
|
|
961
|
+
});
|
|
962
|
+
}
|
|
963
|
+
//#endregion
|
|
857
964
|
//#region lib/types/client/locales.js
|
|
858
965
|
/** Shell chrome and General-nav dictionaries; feature rows own their copy. */
|
|
859
966
|
/** Simplified Chinese dictionary (the key-set source of truth). */
|
|
@@ -891,7 +998,14 @@ window.__ModuleLoader__.load({
|
|
|
891
998
|
"connection.connecting": "重新连接中",
|
|
892
999
|
"connection.connected": "连接成功",
|
|
893
1000
|
"connection.reconnect": "连接异常,点击立即重连",
|
|
894
|
-
"connection.restart": "连接中断,正在重试,点击立即重连"
|
|
1001
|
+
"connection.restart": "连接中断,正在重试,点击立即重连",
|
|
1002
|
+
"hostRelease.title": "服务版本变化",
|
|
1003
|
+
"hostRelease.description": "服务版本已变化,本页面已暂停热更新,刷新后加载新版本。",
|
|
1004
|
+
"hostRelease.service": "服务",
|
|
1005
|
+
"hostRelease.page": "页面",
|
|
1006
|
+
"hostRelease.unknown": "未解析",
|
|
1007
|
+
"hostRelease.reload": "刷新以加载新版本",
|
|
1008
|
+
"hostRelease.later": "暂不刷新"
|
|
895
1009
|
};
|
|
896
1010
|
/** English dictionary, checked complete against the zh key set. */
|
|
897
1011
|
const en = {
|
|
@@ -928,7 +1042,14 @@ window.__ModuleLoader__.load({
|
|
|
928
1042
|
"connection.connecting": "Reconnecting",
|
|
929
1043
|
"connection.connected": "Connected",
|
|
930
1044
|
"connection.reconnect": "Disconnected, reconnect now",
|
|
931
|
-
"connection.restart": "Reconnecting, reconnect now"
|
|
1045
|
+
"connection.restart": "Reconnecting, reconnect now",
|
|
1046
|
+
"hostRelease.title": "Service version changed",
|
|
1047
|
+
"hostRelease.description": "The service version changed. This page paused live updates; reload to load the new version.",
|
|
1048
|
+
"hostRelease.service": "Service",
|
|
1049
|
+
"hostRelease.page": "Page",
|
|
1050
|
+
"hostRelease.unknown": "Unknown",
|
|
1051
|
+
"hostRelease.reload": "Reload to load the new version",
|
|
1052
|
+
"hostRelease.later": "Not now"
|
|
932
1053
|
};
|
|
933
1054
|
//#endregion
|
|
934
1055
|
//#region lib/types/client/index.js
|
|
@@ -946,7 +1067,8 @@ window.__ModuleLoader__.load({
|
|
|
946
1067
|
"remote",
|
|
947
1068
|
"remote.settings",
|
|
948
1069
|
"configForms",
|
|
949
|
-
"shortcuts"
|
|
1070
|
+
"shortcuts",
|
|
1071
|
+
"modules"
|
|
950
1072
|
];
|
|
951
1073
|
/**
|
|
952
1074
|
* Register the `settings` dictionaries, the chrome content, and the General
|
|
@@ -1179,6 +1301,21 @@ window.__ModuleLoader__.load({
|
|
|
1179
1301
|
scope: "root"
|
|
1180
1302
|
} }
|
|
1181
1303
|
}, GeneralSection));
|
|
1304
|
+
const releasePromptInjected = () => ({
|
|
1305
|
+
dismissRelease: () => {
|
|
1306
|
+
ctx.modules.entries.dismissRelease();
|
|
1307
|
+
},
|
|
1308
|
+
reloadPage: () => {
|
|
1309
|
+
globalThis.location.reload();
|
|
1310
|
+
},
|
|
1311
|
+
hooks: { releaseChange: ctx.modules.entries.releaseChange }
|
|
1312
|
+
});
|
|
1313
|
+
ctx.slots.inject("shell.overlay", () => ctx.slots.register({
|
|
1314
|
+
name: "shell.overlay",
|
|
1315
|
+
id: "host-release-change",
|
|
1316
|
+
locale: NS,
|
|
1317
|
+
inject: releasePromptInjected
|
|
1318
|
+
}, HostReleasePrompt));
|
|
1182
1319
|
}
|
|
1183
1320
|
//#endregion
|
|
1184
1321
|
exports.SettingsDocumentStore = SettingsDocumentStore;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ClientReleaseChange } from '@deepseek-ai/dsh-client-modules/client';
|
|
2
|
+
import type { HostObservable, InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
3
|
+
/** Registrant-private face: the page's release change and its two decisions. */
|
|
4
|
+
export type HostReleasePromptInjected = {
|
|
5
|
+
/** Keep this page at its boot release and stop asking about the connected Host's release. */
|
|
6
|
+
dismissRelease: () => void;
|
|
7
|
+
/** Reload the page from the Host. */
|
|
8
|
+
reloadPage: () => void;
|
|
9
|
+
hooks: {
|
|
10
|
+
/** Host release change owned by the page's module system. */
|
|
11
|
+
releaseChange: HostObservable<ClientReleaseChange | undefined>;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
/** Overlay props: the root overlay owner share, the `settings` copy, and the injected face. */
|
|
15
|
+
export type HostReleasePromptProps = PropsRuntime<'shell.overlay'> & PropsLocale<'settings'> & InjectFace<HostReleasePromptInjected>;
|
|
16
|
+
/**
|
|
17
|
+
* Ask whether to reload after the Host changed releases; closing the dialog keeps the page.
|
|
18
|
+
* The service line shows the Host's completed switch from its previous release; the page line shows the
|
|
19
|
+
* switch from the page's boot release that only a reload completes.
|
|
20
|
+
* @param props - the release change, both decisions, and localized copy.
|
|
21
|
+
* @returns the dialog while a change is announced; otherwise nothing.
|
|
22
|
+
*/
|
|
23
|
+
export declare function HostReleasePrompt({ useReleaseChange, dismissRelease, reloadPage, t }: HostReleasePromptProps): import("react").JSX.Element | null;
|
|
24
|
+
//# sourceMappingURL=HostReleasePrompt.d.ts.map
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* `sidebar.settings` occupant — panel chrome, section navigation, and the
|
|
4
4
|
* onboarding stage — and registers everything on the Settings pages that
|
|
5
5
|
* belongs to no single feature: the trigger/header chrome content,
|
|
6
|
-
* local-document action, General section,
|
|
6
|
+
* local-document action, General section, `settings` dictionaries, and the
|
|
7
|
+
* Host release change confirmation.
|
|
7
8
|
* Feature-owned rows and sections stay with their features.
|
|
8
9
|
* Export discipline: packages/client/AGENTS.md.
|
|
9
10
|
*/
|
|
@@ -35,6 +35,13 @@ export declare const zh: {
|
|
|
35
35
|
'connection.connected': string;
|
|
36
36
|
'connection.reconnect': string;
|
|
37
37
|
'connection.restart': string;
|
|
38
|
+
'hostRelease.title': string;
|
|
39
|
+
'hostRelease.description': string;
|
|
40
|
+
'hostRelease.service': string;
|
|
41
|
+
'hostRelease.page': string;
|
|
42
|
+
'hostRelease.unknown': string;
|
|
43
|
+
'hostRelease.reload': string;
|
|
44
|
+
'hostRelease.later': string;
|
|
38
45
|
};
|
|
39
46
|
/** The settings namespace key union. */
|
|
40
47
|
export type SettingsKey = keyof typeof zh;
|
|
@@ -74,5 +81,12 @@ export declare const en: {
|
|
|
74
81
|
'connection.connected': string;
|
|
75
82
|
'connection.reconnect': string;
|
|
76
83
|
'connection.restart': string;
|
|
84
|
+
'hostRelease.title': string;
|
|
85
|
+
'hostRelease.description': string;
|
|
86
|
+
'hostRelease.service': string;
|
|
87
|
+
'hostRelease.page': string;
|
|
88
|
+
'hostRelease.unknown': string;
|
|
89
|
+
'hostRelease.reload': string;
|
|
90
|
+
'hostRelease.later': string;
|
|
77
91
|
};
|
|
78
92
|
//# sourceMappingURL=locales.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-client-ui-settings-general",
|
|
3
3
|
"description": "Settings ownerless-copy and product onboarding plugin: the General section, shell trigger/header chrome content, settings dictionaries, and the versioned welcome notice",
|
|
4
|
-
"version": "0.2.1-alpha.
|
|
4
|
+
"version": "0.2.1-alpha.5",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -37,7 +37,9 @@
|
|
|
37
37
|
"@deepseek-ai/dsh-client-connection",
|
|
38
38
|
"@deepseek-ai/dsh-api-remotes",
|
|
39
39
|
"@deepseek-ai/dsh-client-ui-sidebar",
|
|
40
|
-
"@deepseek-ai/dsh-client-shortcuts"
|
|
40
|
+
"@deepseek-ai/dsh-client-shortcuts",
|
|
41
|
+
"@deepseek-ai/dsh-client-modules",
|
|
42
|
+
"@deepseek-ai/dsh-client-ui-layout"
|
|
41
43
|
],
|
|
42
44
|
"platform": "web"
|
|
43
45
|
}
|
|
@@ -51,23 +53,25 @@
|
|
|
51
53
|
},
|
|
52
54
|
"devDependencies": {
|
|
53
55
|
"@deepseek-ai/cordis": "~4.0.5-alpha.2",
|
|
54
|
-
"@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.
|
|
55
|
-
"@deepseek-ai/dsh-client-connection": "0.2.1-alpha.
|
|
56
|
-
"@deepseek-ai/dsh-client-locale": "0.2.1-alpha.
|
|
57
|
-
"@deepseek-ai/dsh-client-
|
|
58
|
-
"@deepseek-ai/dsh-client-
|
|
59
|
-
"@deepseek-ai/dsh-client-
|
|
60
|
-
"@deepseek-ai/dsh-client-ui-
|
|
61
|
-
"@deepseek-ai/dsh-client-ui-
|
|
62
|
-
"@deepseek-ai/dsh-client-ui-
|
|
63
|
-
"@deepseek-ai/dsh-client-ui-
|
|
64
|
-
"@deepseek-ai/dsh-client-ui-
|
|
65
|
-
"@deepseek-ai/dsh-
|
|
56
|
+
"@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.5",
|
|
57
|
+
"@deepseek-ai/dsh-client-connection": "0.2.1-alpha.5",
|
|
58
|
+
"@deepseek-ai/dsh-client-locale": "0.2.1-alpha.5",
|
|
59
|
+
"@deepseek-ai/dsh-client-modules": "0.2.1-alpha.5",
|
|
60
|
+
"@deepseek-ai/dsh-client-store": "0.2.1-alpha.5",
|
|
61
|
+
"@deepseek-ai/dsh-client-test-runtime": "0.2.1-alpha.5",
|
|
62
|
+
"@deepseek-ai/dsh-client-ui-layout": "0.2.1-alpha.5",
|
|
63
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.2.1-alpha.5",
|
|
64
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.2.1-alpha.5",
|
|
65
|
+
"@deepseek-ai/dsh-client-ui-session": "0.2.1-alpha.5",
|
|
66
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.2.1-alpha.5",
|
|
67
|
+
"@deepseek-ai/dsh-client-ui-sidebar": "0.2.1-alpha.5",
|
|
68
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.5",
|
|
69
|
+
"@deepseek-ai/dsh-remote-mock": "0.2.1-alpha.5",
|
|
66
70
|
"clsx": "^2.0.0",
|
|
67
71
|
"react": "^18.2.0",
|
|
68
|
-
"@deepseek-ai/dsh-settings": "0.2.1-alpha.
|
|
72
|
+
"@deepseek-ai/dsh-settings": "0.2.1-alpha.5",
|
|
69
73
|
"react-dom": "^18.2.0",
|
|
70
|
-
"@deepseek-ai/dsh-client-shortcuts": "0.2.1-alpha.
|
|
74
|
+
"@deepseek-ai/dsh-client-shortcuts": "0.2.1-alpha.5"
|
|
71
75
|
},
|
|
72
76
|
"files": [
|
|
73
77
|
"locale/*.json",
|