@deepseek-ai/dsh-client-ui-sidebar 0.1.7-rc.1 → 0.1.7-rc.2
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 +54 -5
- package/README.md +4 -2
- package/README.zh.md +4 -2
- package/lib/client.js +59 -21
- package/lib/types/client/HeaderLeadingControls.d.ts +1 -1
- package/lib/types/client/SidebarRoot.d.ts +1 -1
- package/lib/types/client/contract/slots.d.ts +2 -0
- package/package.json +15 -13
package/README.i18n.yaml
CHANGED
|
@@ -1,6 +1,55 @@
|
|
|
1
|
-
# Bilingual-pair consistency record (docs/i18n/README.md):
|
|
2
|
-
#
|
|
3
|
-
#
|
|
1
|
+
# Bilingual-pair consistency record for README.md (docs/i18n/README.md): per heading
|
|
2
|
+
# section, a hash of its English and Chinese blocks outside code blocks and generated regions.
|
|
3
|
+
# After editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write packages/client/ui-sidebar/README.md
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/:
|
|
6
|
+
en: 7884381c2c554eca
|
|
7
|
+
zh: e6d7199a9bb2f0f8
|
|
8
|
+
/deepseek-ai-dsh-client-ui-sidebar:
|
|
9
|
+
en: 3b3885c78b619c8a
|
|
10
|
+
zh: 2cabf9cfec748497
|
|
11
|
+
/deepseek-ai-dsh-client-ui-sidebar/summary:
|
|
12
|
+
en: af17f03561e5372b
|
|
13
|
+
zh: 91a1b9f6c7a51025
|
|
14
|
+
/deepseek-ai-dsh-client-ui-sidebar/table-of-contents:
|
|
15
|
+
en: d152484eb41ac6b4
|
|
16
|
+
zh: 09388d293f9be9cb
|
|
17
|
+
/deepseek-ai-dsh-client-ui-sidebar/use-this-package:
|
|
18
|
+
en: a970f0547496634f
|
|
19
|
+
zh: 36ef9a85b26e19f1
|
|
20
|
+
/deepseek-ai-dsh-client-ui-sidebar/use-this-package/brand-and-new-session:
|
|
21
|
+
en: d084cd6732966c41
|
|
22
|
+
zh: 466e028ca49b4230
|
|
23
|
+
/deepseek-ai-dsh-client-ui-sidebar/use-this-package/global-panel-entries:
|
|
24
|
+
en: 5d3300d3506254c5
|
|
25
|
+
zh: 541ae1ee1e10b921
|
|
26
|
+
/deepseek-ai-dsh-client-ui-sidebar/use-this-package/collapse-behavior:
|
|
27
|
+
en: 8996c9b65c8eb635
|
|
28
|
+
zh: 9c7ce08b90f3c1f5
|
|
29
|
+
/deepseek-ai-dsh-client-ui-sidebar/use-this-package/macos-desktop:
|
|
30
|
+
en: bcf4ba5b9276faa4
|
|
31
|
+
zh: f200ecad86631695
|
|
32
|
+
/deepseek-ai-dsh-client-ui-sidebar/use-this-package/scrollbars:
|
|
33
|
+
en: d053b1ed0f4fd293
|
|
34
|
+
zh: ff25a56541f57530
|
|
35
|
+
/deepseek-ai-dsh-client-ui-sidebar/understand-the-implementation:
|
|
36
|
+
en: 676cd4c309b4110d
|
|
37
|
+
zh: 25d1bd0b2c7db645
|
|
38
|
+
/deepseek-ai-dsh-client-ui-sidebar/understand-the-implementation/slot-discipline:
|
|
39
|
+
en: 6eefc5c45abe8a8f
|
|
40
|
+
zh: 20b651e48a0ea903
|
|
41
|
+
/deepseek-ai-dsh-client-ui-sidebar/further-exploration:
|
|
42
|
+
en: 5083bbf74e47bb67
|
|
43
|
+
zh: 0236e569178756a2
|
|
44
|
+
/deepseek-ai-dsh-client-ui-sidebar/model-experience:
|
|
45
|
+
en: 3120df665299c634
|
|
46
|
+
zh: 1d9f365d091d0d2a
|
|
47
|
+
/deepseek-ai-dsh-client-ui-sidebar/model-experience/kv-cache-effect:
|
|
48
|
+
en: ca75c51c89c2c9b0
|
|
49
|
+
zh: de54f3467ef3b9be
|
|
50
|
+
/deepseek-ai-dsh-client-ui-sidebar/known-limitations-and-deferred-work:
|
|
51
|
+
en: 262db5b10dfb7d98
|
|
52
|
+
zh: c1b5cf6aa58b054e
|
|
53
|
+
/deepseek-ai-dsh-client-ui-sidebar/known-limitations-and-deferred-work/dev-note:
|
|
54
|
+
en: c8d74533efbc8d23
|
|
55
|
+
zh: eb58f7098335f55e
|
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ The sidebar is the navigation shell: users see the brand, start new sessions, co
|
|
|
29
29
|
|
|
30
30
|
### Brand and New Session
|
|
31
31
|
|
|
32
|
-
The expanded brand row renders `sidebar.brand.mark` and `sidebar.brand.name` as independent single slots; the collapsed rail renders the same mark slot. Without occupants, the shell uses the fish mark and a localized local-build label. A complete build stacks a code badge below the label as `version[-commit][-dirty]`, using `DSH_CLIENT_VERSION`, the optional 7-character `DSH_CLIENT_COMMIT_HASH`, and `DSH_CLIENT_GIT_DIRTY=true`; missing version metadata omits the badge. New Session targets the explicit Workspace used by a scoped action, otherwise the current Session's Workspace, otherwise the most recently active Workspace; when none exists it clears into the blank New Session page.
|
|
32
|
+
The expanded brand row renders `sidebar.brand.mark` and `sidebar.brand.name` as independent single slots; the collapsed rail renders the same mark slot. Without occupants, the shell uses the fish mark and a localized local-build label. A complete build stacks a code badge below the label as `version[-commit][-dirty]`, using `DSH_CLIENT_VERSION`, the optional 7-character `DSH_CLIENT_COMMIT_HASH`, and `DSH_CLIENT_GIT_DIRTY=true`; missing version metadata omits the badge. New Session targets the explicit Workspace used by a scoped action, otherwise the current Session's Workspace, otherwise the most recently active Workspace; when none exists it clears into the blank New Session page. The expanded New Session button displays the effective binding as trailing grey text on hover or keyboard focus. While the shortcut is visible, the centered icon and label fade before it when space is narrow; CSS reserves the shortcut’s width without measuring the button. Icon-only controls retain tooltips with platform-formatted keycaps, including the resident macOS header control when the sidebar is hidden. All controls expose `aria-keyshortcuts`.
|
|
33
33
|
|
|
34
34
|
### Global panel entries
|
|
35
35
|
|
|
@@ -37,6 +37,8 @@ Plugins add an icon component to the root-scoped `sidebar.panellist` list with a
|
|
|
37
37
|
|
|
38
38
|
### Collapse behavior
|
|
39
39
|
|
|
40
|
+
The sidebar and conversation-header toggles show the effective shortcut from the command catalog in their hover and keyboard-focus tooltips and `aria-keyshortcuts`. An unbound command shows only the action label.
|
|
41
|
+
|
|
40
42
|
The top expand button hosts the optional, non-interactive `sidebar.toggle.badge` slot while collapsed. Its occupant supplies status and tooltip content without adding another action or changing the button's navigation behavior.
|
|
41
43
|
|
|
42
44
|
During a live collapse, the expanded content fades out at its current width, the upper controls share one fade and leftward translation into the 56px rail, and the layout's column slide ends the motion. A page that starts collapsed renders the rail statically, and reduced-motion mode disables both transitions. The bottom-pinned `sidebar.settings` control shares the fade timing but has no horizontal translation.
|
|
@@ -45,7 +47,7 @@ On Windows Electron, `html[data-windows-titlebar]` fixes the sidebar toggle in t
|
|
|
45
47
|
|
|
46
48
|
### macOS desktop
|
|
47
49
|
|
|
48
|
-
Under `html[data-platform='darwin']` (set only by the desktop preload) the expanded column opens with a 52px top strip that clears the hiddenInset traffic lights and carries the collapse toggle; the
|
|
50
|
+
Under `html[data-platform='darwin']` (set only by the desktop preload) the expanded column opens with a 52px top strip that clears the hiddenInset traffic lights and carries the collapse toggle; the strip and the logo row below each mark themselves `data-window-drag`, so each row's own box is the window's drag region (ui-web base.css declares the one darwin drag rule), and the brand wordmark is not a New Session shortcut there — the dedicated New Session button keeps the action — and collapsing hides the column entirely instead of leaving the rail. The package registers `HeaderLeadingControls` into the frame's `shell.leading` window-chrome seat (ui-layout), which mounts it — the open-sidebar and New Session controls beside the traffic lights — only while the column is hidden, over every main panel. Rationale and the window-integration contract: the [macOS hidden-titlebar Agent Note](../../../.agents/notes/implemented/feature/2026-09-13-macos-hidden-titlebar-vibrancy.md).
|
|
49
51
|
|
|
50
52
|
### Scrollbars
|
|
51
53
|
|
package/README.zh.md
CHANGED
|
@@ -29,7 +29,7 @@ dsh Web 客户端的侧边栏让用户识别当前构建、启动新会话、将
|
|
|
29
29
|
|
|
30
30
|
### 品牌与 New Session
|
|
31
31
|
|
|
32
|
-
展开的品牌行把 `sidebar.brand.mark` 与 `sidebar.brand.name` 渲染为两个独立的 single slot;收起轨道则渲染同一个 mark slot。没有占位者时,外壳使用鱼形标记和本地化的本地构建标签。完整构建会在标签下方显示代码徽标;该徽标使用 `DSH_CLIENT_VERSION`、可选的 7 位 `DSH_CLIENT_COMMIT_HASH` 与 `DSH_CLIENT_GIT_DIRTY=true` 组装成 `version[-commit][-dirty]`;缺少版本元数据时不显示徽标。New Session 优先使用作用域操作明确指定的 Workspace,否则使用当前 Session 所属 Workspace,再否则使用最近活跃 Workspace;一个 Workspace 都没有时则清空选择,进入空白 New Session 页面。
|
|
32
|
+
展开的品牌行把 `sidebar.brand.mark` 与 `sidebar.brand.name` 渲染为两个独立的 single slot;收起轨道则渲染同一个 mark slot。没有占位者时,外壳使用鱼形标记和本地化的本地构建标签。完整构建会在标签下方显示代码徽标;该徽标使用 `DSH_CLIENT_VERSION`、可选的 7 位 `DSH_CLIENT_COMMIT_HASH` 与 `DSH_CLIENT_GIT_DIRTY=true` 组装成 `version[-commit][-dirty]`;缺少版本元数据时不显示徽标。New Session 优先使用作用域操作明确指定的 Workspace,否则使用当前 Session 所属 Workspace,再否则使用最近活跃 Workspace;一个 Workspace 都没有时则清空选择,进入空白 New Session 页面。 展开态的新建会话按钮在悬停或键盘聚焦时于右侧以灰色文字显示当前有效绑定。快捷键可见且空间较窄时,居中的图标与文字在快捷键之前渐隐;CSS 为快捷键保留宽度,无需测量按钮。纯图标控件保留使用平台键位样式的 tooltip,侧栏隐藏时常驻的 macOS 头部控件也保持一致。所有控件均提供 `aria-keyshortcuts`。
|
|
33
33
|
|
|
34
34
|
### 全局面板入口
|
|
35
35
|
|
|
@@ -37,6 +37,8 @@ dsh Web 客户端的侧边栏让用户识别当前构建、启动新会话、将
|
|
|
37
37
|
|
|
38
38
|
### 折叠行为
|
|
39
39
|
|
|
40
|
+
侧栏及会话头部的开关从命令目录读取当前有效快捷键,用于悬停、键盘聚焦提示和 `aria-keyshortcuts`。未绑定的命令只显示操作名称。
|
|
41
|
+
|
|
40
42
|
侧栏收起时,顶部展开按钮承载可选、不可交互的 `sidebar.toggle.badge` slot。占用方提供状态和提示内容,不增加操作,也不改变按钮的导航行为。
|
|
41
43
|
|
|
42
44
|
实时收起时,展开内容在当前宽度淡出,上方控件共用同一段透明度渐变,并向左平移进入 56px 轨道,由布局的栏滑动结束整段动画。页面初始即为收起状态时会静态渲染轨道;减少动态效果模式会禁用两段过渡。固定在底部的 `sidebar.settings` 控件共用相同的透明度渐变时序,但不发生横向位移。
|
|
@@ -45,7 +47,7 @@ dsh Web 客户端的侧边栏让用户识别当前构建、启动新会话、将
|
|
|
45
47
|
|
|
46
48
|
### macOS 桌面
|
|
47
49
|
|
|
48
|
-
在 `html[data-platform='darwin']`(仅由桌面 preload 设置)下,展开的侧边栏列顶部有一条 52px 的顶部条:避开 hiddenInset
|
|
50
|
+
在 `html[data-platform='darwin']`(仅由桌面 preload 设置)下,展开的侧边栏列顶部有一条 52px 的顶部条:避开 hiddenInset 红绿灯并承载收起按钮;顶部条与其下的 logo 行各自打上 `data-window-drag`,于是每行自己的盒子就是窗口的拖拽区(唯一的 darwin drag 规则由 ui-web base.css 声明),因此品牌 wordmark 在 macOS 上不再是 New Session 快捷入口——专用的 New Session 按钮保留该操作;收起时整列隐藏而非保留轨道。本包向框架的 `shell.leading` 窗口 chrome 座(ui-layout)注册 `HeaderLeadingControls`——打开侧边栏与 New Session 两个控件,由框架仅在列隐藏时挂载于红绿灯旁,覆盖所有主面板。设计依据与窗口集成约定见 [macOS 隐藏标题栏 Agent Note](../../../.agents/notes/implemented/feature/2026-09-13-macos-hidden-titlebar-vibrancy.zh.md)。
|
|
49
51
|
|
|
50
52
|
### 滚动条
|
|
51
53
|
|
package/lib/client.js
CHANGED
|
@@ -10,7 +10,7 @@ window.__ModuleLoader__.load({
|
|
|
10
10
|
let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
11
11
|
let react = require("react");
|
|
12
12
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-sidebar/src/client/HeaderLeadingControls.module.css.mjs
|
|
13
|
-
const css$1 = ".IW6AQa_controls{align-items:center;gap:8px;display:flex}.IW6AQa_iconButton{
|
|
13
|
+
const css$1 = ".IW6AQa_controls{align-items:center;gap:8px;display:flex}.IW6AQa_iconButton{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.IW6AQa_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}";
|
|
14
14
|
const tagId$1 = "@deepseek-ai/dsh-client-ui-sidebar/HeaderLeadingControls.module.css";
|
|
15
15
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
16
16
|
const tag = document.createElement("style");
|
|
@@ -35,16 +35,20 @@ window.__ModuleLoader__.load({
|
|
|
35
35
|
* @param props - Injected sidebar actions plus the sidebar locale seat.
|
|
36
36
|
* @returns the two window-chrome controls.
|
|
37
37
|
*/
|
|
38
|
-
function HeaderLeadingControls({ toggleSidebar, startSession, t }) {
|
|
38
|
+
function HeaderLeadingControls({ toggleSidebar, startSession, useShortcuts, t }) {
|
|
39
|
+
const shortcut = useShortcuts((rows) => rows.find((row) => row.id === "sidebar.left.toggle"));
|
|
40
|
+
const newShortcut = useShortcuts((rows) => rows.find((row) => row.id === "session.new"));
|
|
39
41
|
return (0, react_jsx_runtime.jsxs)("div", {
|
|
40
42
|
className: HeaderLeadingControls_module_css_default.controls,
|
|
41
43
|
children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
42
44
|
label: t("toggle.open"),
|
|
45
|
+
shortcutKeys: shortcut?.keys,
|
|
43
46
|
delayMs: 500,
|
|
44
47
|
children: (0, react_jsx_runtime.jsx)("button", {
|
|
45
48
|
type: "button",
|
|
46
49
|
className: HeaderLeadingControls_module_css_default.iconButton,
|
|
47
50
|
"aria-label": t("toggle.open"),
|
|
51
|
+
"aria-keyshortcuts": shortcut?.aria,
|
|
48
52
|
onClick: () => {
|
|
49
53
|
toggleSidebar();
|
|
50
54
|
},
|
|
@@ -52,11 +56,13 @@ window.__ModuleLoader__.load({
|
|
|
52
56
|
})
|
|
53
57
|
}), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
54
58
|
label: t("session.new.label"),
|
|
59
|
+
shortcutKeys: newShortcut?.keys,
|
|
55
60
|
delayMs: 500,
|
|
56
61
|
children: (0, react_jsx_runtime.jsx)("button", {
|
|
57
62
|
type: "button",
|
|
58
63
|
className: HeaderLeadingControls_module_css_default.iconButton,
|
|
59
64
|
"aria-label": t("session.new.label"),
|
|
65
|
+
"aria-keyshortcuts": newShortcut?.aria,
|
|
60
66
|
onClick: () => {
|
|
61
67
|
startSession();
|
|
62
68
|
},
|
|
@@ -82,7 +88,7 @@ window.__ModuleLoader__.load({
|
|
|
82
88
|
}
|
|
83
89
|
//#endregion
|
|
84
90
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-sidebar/src/client/SidebarRoot.module.css.mjs
|
|
85
|
-
const css = ".hHd-Xa_root{--dsh-sidebar-inline-padding:12px;height:100%;padding:6px var(--dsh-sidebar-inline-padding);box-sizing:border-box;background:var(--dsw-specific-sidebar-fill);color:var(--dsw-alias-label-primary);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;font-size:14px;display:flex}[data-platform=darwin] .hHd-Xa_root{background:0 0}.hHd-Xa_root.hHd-Xa_collapsed{padding:18px 10px 6px}[data-windows-titlebar] .hHd-Xa_root .hHd-Xa_logoRow{height:40px;margin:0;padding:0}[data-windows-titlebar] .hHd-Xa_toggle{top:calc((var(--dsh-windows-titlebar-height) - 28px) / 2);z-index:30;-webkit-app-region:no-drag;position:fixed;left:12px}[data-windows-titlebar] .hHd-Xa_root.hHd-Xa_collapsed .hHd-Xa_logoRow{height:0}[data-windows-titlebar] .hHd-Xa_root:not(.hHd-Xa_collapsed) .hHd-Xa_brand{padding-left:4px}[data-windows-titlebar] .hHd-Xa_brandIdentity{transform:translateY(1px)}[data-windows-titlebar] .hHd-Xa_brandMark{transform:translate(1px)}[data-windows-titlebar] .hHd-Xa_brandName{font-weight:400}[data-windows-titlebar] .hHd-Xa_root.hHd-Xa_collapsed{padding:0}[data-windows-titlebar] .hHd-Xa_root:not(.hHd-Xa_collapsed) .hHd-Xa_newSession{margin-top:8px;margin-left:0}[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_panelList,[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_regionArea,[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_footArea{display:none}html[data-windows-titlebar]:has([data-sidebar-collapsed=true]){--dsh-windows-menu-start:84px}[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_newSession{top:calc((var(--dsh-windows-titlebar-height) - 28px) / 2);z-index:30;-webkit-app-region:no-drag;border:none;margin:0;padding:0;position:fixed;left:48px}[data-windows-titlebar] .hHd-Xa_railIn .hHd-Xa_iconButton,[data-windows-titlebar] .hHd-Xa_railIn .hHd-Xa_newSession{animation:none}[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_toggle,[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_newSession{corner-shape:round;width:28px;height:28px;color:var(--dsw-alias-label-secondary);border-radius:50%}[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_toggle .hHd-Xa_panelIcon{display:inline}.hHd-Xa_root.hHd-Xa_quietBars{--dsh-scrollbar-thumb:transparent;--dsh-scrollbar-thumb-hover:transparent}.hHd-Xa_fading>*{opacity:0;transition:opacity .15s var(--ds-ease-in-out)}.hHd-Xa_wide{animation:hHd-Xa_wide-in .2s var(--ds-ease-in-out)}@keyframes hHd-Xa_wide-in{0%{opacity:0}}.hHd-Xa_railIn .hHd-Xa_iconButton,.hHd-Xa_railIn .hHd-Xa_newSession,.hHd-Xa_railIn .hHd-Xa_panelList,.hHd-Xa_railIn .hHd-Xa_regionArea{animation:hHd-Xa_rail-in .15s var(--ds-ease-in-out) backwards}.hHd-Xa_railIn .hHd-Xa_footArea{animation:hHd-Xa_rail-fade-in .15s var(--ds-ease-in-out) backwards}@keyframes hHd-Xa_rail-in{0%{opacity:0;transform:translate(49px)}}@keyframes hHd-Xa_rail-fade-in{0%{opacity:0}}.hHd-Xa_topStrip{box-sizing:border-box;height:52px;margin:-6px calc(-1 * var(--dsh-sidebar-inline-padding)) 0;flex:none;justify-content:flex-end;align-items:center;padding:0 12px 2px;display:flex}[data-fullscreen] .hHd-Xa_topStrip{justify-content:flex-start}.hHd-Xa_topStrip+.hHd-Xa_logoRow{margin-top:-12px}.hHd-Xa_logoRow{box-sizing:border-box;flex:none;justify-content:flex-end;align-items:center;gap:8px;height:60px;margin-bottom:4px;padding:8px 0 8px 4px;display:flex;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_logoRow{justify-content:flex-start;height:36px;margin-bottom:12px;padding:0
|
|
91
|
+
const css = ".hHd-Xa_root{--dsh-sidebar-inline-padding:12px;height:100%;padding:6px var(--dsh-sidebar-inline-padding);box-sizing:border-box;background:var(--dsw-specific-sidebar-fill);color:var(--dsw-alias-label-primary);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;font-size:14px;display:flex}[data-platform=darwin] .hHd-Xa_root{background:0 0}.hHd-Xa_root.hHd-Xa_collapsed{padding:18px 10px 6px}[data-windows-titlebar] .hHd-Xa_root .hHd-Xa_logoRow{height:40px;margin:0;padding:0}[data-windows-titlebar] .hHd-Xa_toggle{top:calc((var(--dsh-windows-titlebar-height) - 28px) / 2);z-index:30;-webkit-app-region:no-drag;position:fixed;left:12px}[data-windows-titlebar] .hHd-Xa_root.hHd-Xa_collapsed .hHd-Xa_logoRow{height:0}[data-windows-titlebar] .hHd-Xa_root:not(.hHd-Xa_collapsed) .hHd-Xa_brand{padding-left:4px}[data-windows-titlebar] .hHd-Xa_brandIdentity{transform:translateY(1px)}[data-windows-titlebar] .hHd-Xa_brandMark{transform:translate(1px)}[data-windows-titlebar] .hHd-Xa_brandName{font-weight:400}[data-windows-titlebar] .hHd-Xa_root.hHd-Xa_collapsed{padding:0}[data-windows-titlebar] .hHd-Xa_root:not(.hHd-Xa_collapsed) .hHd-Xa_newSession{margin-top:8px;margin-left:0}[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_panelList,[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_regionArea,[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_footArea{display:none}html[data-windows-titlebar]:has([data-sidebar-collapsed=true]){--dsh-windows-menu-start:84px}[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_newSession{top:calc((var(--dsh-windows-titlebar-height) - 28px) / 2);z-index:30;-webkit-app-region:no-drag;border:none;margin:0;padding:0;position:fixed;left:48px}[data-windows-titlebar] .hHd-Xa_railIn .hHd-Xa_iconButton,[data-windows-titlebar] .hHd-Xa_railIn .hHd-Xa_newSession{animation:none}[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_toggle,[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_newSession{corner-shape:round;width:28px;height:28px;color:var(--dsw-alias-label-secondary);border-radius:50%}[data-windows-titlebar] .hHd-Xa_collapsed .hHd-Xa_toggle .hHd-Xa_panelIcon{display:inline}.hHd-Xa_root.hHd-Xa_quietBars{--dsh-scrollbar-thumb:transparent;--dsh-scrollbar-thumb-hover:transparent}.hHd-Xa_fading>*{opacity:0;transition:opacity .15s var(--ds-ease-in-out)}.hHd-Xa_wide{animation:hHd-Xa_wide-in .2s var(--ds-ease-in-out)}@keyframes hHd-Xa_wide-in{0%{opacity:0}}.hHd-Xa_railIn .hHd-Xa_iconButton,.hHd-Xa_railIn .hHd-Xa_newSession,.hHd-Xa_railIn .hHd-Xa_panelList,.hHd-Xa_railIn .hHd-Xa_regionArea{animation:hHd-Xa_rail-in .15s var(--ds-ease-in-out) backwards}.hHd-Xa_railIn .hHd-Xa_footArea{animation:hHd-Xa_rail-fade-in .15s var(--ds-ease-in-out) backwards}@keyframes hHd-Xa_rail-in{0%{opacity:0;transform:translate(49px)}}@keyframes hHd-Xa_rail-fade-in{0%{opacity:0}}.hHd-Xa_topStrip{box-sizing:border-box;height:52px;margin:-6px calc(-1 * var(--dsh-sidebar-inline-padding)) 0;flex:none;justify-content:flex-end;align-items:center;padding:0 12px 2px;display:flex}[data-fullscreen] .hHd-Xa_topStrip{justify-content:flex-start}.hHd-Xa_topStrip+.hHd-Xa_logoRow{margin-top:-12px}.hHd-Xa_logoRow{box-sizing:border-box;flex:none;justify-content:flex-end;align-items:center;gap:8px;height:60px;margin-bottom:4px;padding:8px 0 8px 4px;display:flex;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_logoRow{justify-content:flex-start;height:36px;margin-bottom:12px;padding:0;overflow:visible}.hHd-Xa_brand{min-width:0;color:inherit;cursor:pointer;background:0 0;border:none;flex:1;align-items:center;padding:0;display:inline-flex;overflow:hidden}[data-platform=darwin] .hHd-Xa_brand{cursor:default}.hHd-Xa_brandIdentity{align-items:center;gap:8px;min-width:0;height:24px;display:inline-flex}.hHd-Xa_brandMark{flex:none;justify-content:center;align-items:center;display:inline-flex}.hHd-Xa_brandName{letter-spacing:.04em;align-items:center;gap:6px;min-width:0;height:24px;font-size:18px;font-weight:600;line-height:24px;display:inline-flex}.hHd-Xa_fallbackBrandName{letter-spacing:0;white-space:nowrap;font-size:17px}.hHd-Xa_localBuildBrand{white-space:nowrap;flex-direction:column;flex:none;justify-content:center;align-items:flex-start;gap:1px;height:24px;display:inline-flex}.hHd-Xa_localBuildTitle{letter-spacing:0;font-size:12px;line-height:13px}.hHd-Xa_iconButton{border-radius:var(--dsw-radius-sm);cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.hHd-Xa_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_iconButton.hHd-Xa_toggle:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.hHd-Xa_collapsed .hHd-Xa_iconButton{border-radius:var(--dsw-radius-md);width:36px;height:36px}.hHd-Xa_collapsed .hHd-Xa_toggle .hHd-Xa_panelIcon{display:none}.hHd-Xa_collapsed .hHd-Xa_toggle:hover .hHd-Xa_panelIcon{display:inline}.hHd-Xa_collapsed .hHd-Xa_toggle:hover .hHd-Xa_railMark{display:none}.hHd-Xa_railMark{justify-content:center;align-items:center;display:inline-flex}.hHd-Xa_collapsed .hHd-Xa_iconButton{color:var(--dsw-alias-label-primary)}.hHd-Xa_buildVersion{height:10px;color:var(--dsw-alias-label-primary-inverted);background:var(--dsw-alias-label-primary);font-family:var(--ds-font-family-code);white-space:nowrap;border-radius:2px;flex:none;align-items:center;padding:0 3px;font-size:6px;font-weight:500;line-height:10px;display:inline-flex}.hHd-Xa_newSession{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-button-elevated-fill);height:38px;color:var(--dsw-alias-label-primary);cursor:pointer;flex:none;justify-content:center;align-items:center;gap:0;margin:0 2px 12px;padding:8px 12px;font-size:14px;font-weight:500;line-height:22px;display:flex;position:relative;overflow:hidden;container-type:inline-size}.hHd-Xa_newSession:hover{background:var(--dsw-alias-button-floating-hover)}[data-platform=darwin] .hHd-Xa_newSession{background:#ffffff8c}[data-platform=darwin] .hHd-Xa_newSession:hover{background:#ffffff4d}[data-platform=darwin] [data-ds-dark-theme] .hHd-Xa_newSession{background:#ffffff26}[data-platform=darwin] [data-ds-dark-theme] .hHd-Xa_newSession:hover{background:#fff3}.hHd-Xa_collapsed .hHd-Xa_newSession{background:0 0;border-color:#0000;align-self:flex-start;gap:0;width:36px;height:36px;margin:0 0 12px;padding:0}.hHd-Xa_collapsed .hHd-Xa_newSession:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_newSessionLabel{white-space:nowrap;max-width:200px;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_newSessionLabel{max-width:0}.hHd-Xa_newSessionLabelMask{flex:1;min-width:0}.hHd-Xa_newSession:is(:hover,:focus-visible) .hHd-Xa_newSessionLabelMask:has(+.hHd-Xa_newSessionShortcut){overflow:hidden;mask-image:linear-gradient(90deg,#000 calc(100% - 16px),#0000)}.hHd-Xa_newSessionContent{justify-content:center;align-items:center;gap:6px;width:100cqw;display:flex}.hHd-Xa_newSessionContent>svg{flex:none}.hHd-Xa_newSessionShortcut{opacity:0;pointer-events:none;flex:none;font-weight:400;display:inline-flex}.hHd-Xa_newSession:is(:hover,:focus-visible) .hHd-Xa_newSessionShortcut{opacity:1}.hHd-Xa_panelList{flex-direction:column;flex:none;gap:4px;margin-bottom:8px;display:flex}.hHd-Xa_panelRow{box-sizing:border-box;border-radius:var(--dsw-radius-md);min-height:36px;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;margin:0 2px;padding:7px 8px;line-height:22px;display:flex}.hHd-Xa_panelRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_panelRow.hHd-Xa_panelActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.hHd-Xa_panelRow:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.hHd-Xa_panelGlyph{flex:none;justify-content:center;align-items:center;display:inline-flex}.hHd-Xa_panelTitle{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_panelList{gap:12px;margin-bottom:12px}.hHd-Xa_collapsed .hHd-Xa_panelRow{width:36px;height:36px;color:var(--dsw-alias-label-primary);justify-content:center;margin:0;padding:0}.hHd-Xa_regionArea{min-height:0;margin-left:-4px;margin-right:calc(-1 * var(--dsh-sidebar-inline-padding));flex-direction:column;flex:1;padding-left:4px;display:flex;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_regionArea{margin-left:0;margin-right:0;padding-left:0}.hHd-Xa_footArea{flex-direction:column;flex:none;display:flex}.hHd-Xa_settingsArea,.hHd-Xa_footerActions{flex:none;width:100%;min-width:0}.hHd-Xa_footerActions{display:flex}.hHd-Xa_collapsed .hHd-Xa_footArea{align-items:center}.hHd-Xa_collapsed .hHd-Xa_settingsArea,.hHd-Xa_collapsed .hHd-Xa_footerActions{justify-content:center;width:auto;display:flex}@media (prefers-reduced-motion:reduce){.hHd-Xa_wide,.hHd-Xa_fading>*,.hHd-Xa_railIn .hHd-Xa_iconButton,.hHd-Xa_railIn .hHd-Xa_newSession,.hHd-Xa_railIn .hHd-Xa_panelList,.hHd-Xa_railIn .hHd-Xa_footArea,.hHd-Xa_railIn .hHd-Xa_regionArea{transition:none;animation:none}}";
|
|
86
92
|
const tagId = "@deepseek-ai/dsh-client-ui-sidebar/SidebarRoot.module.css";
|
|
87
93
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
88
94
|
const tag = document.createElement("style");
|
|
@@ -107,7 +113,10 @@ window.__ModuleLoader__.load({
|
|
|
107
113
|
"localBuildTitle": "hHd-Xa_localBuildTitle",
|
|
108
114
|
"logoRow": "hHd-Xa_logoRow",
|
|
109
115
|
"newSession": "hHd-Xa_newSession",
|
|
116
|
+
"newSessionContent": "hHd-Xa_newSessionContent",
|
|
110
117
|
"newSessionLabel": "hHd-Xa_newSessionLabel",
|
|
118
|
+
"newSessionLabelMask": "hHd-Xa_newSessionLabelMask",
|
|
119
|
+
"newSessionShortcut": "hHd-Xa_newSessionShortcut",
|
|
111
120
|
"panelActive": "hHd-Xa_panelActive",
|
|
112
121
|
"panelGlyph": "hHd-Xa_panelGlyph",
|
|
113
122
|
"panelIcon": "hHd-Xa_panelIcon",
|
|
@@ -158,7 +167,7 @@ window.__ModuleLoader__.load({
|
|
|
158
167
|
const SCROLLBAR_LINGER_MS = 2e3;
|
|
159
168
|
/** Format complete-build metadata for the local brand badge. */
|
|
160
169
|
function localBuildVersion() {
|
|
161
|
-
return `0.1.7-rc.
|
|
170
|
+
return `0.1.7-rc.2-c127551` + ({}.DSH_CLIENT_GIT_DIRTY === "true" ? "-dirty" : "");
|
|
162
171
|
}
|
|
163
172
|
/** Each panel row subscribes only to its own selection state. */
|
|
164
173
|
function PanelRow({ id, label, wide, usePanelInfo, selectPanel, renderSlot }) {
|
|
@@ -194,8 +203,11 @@ window.__ModuleLoader__.load({
|
|
|
194
203
|
* @param props - composed slot props (runtime share + injected callbacks, contract/slots.ts).
|
|
195
204
|
* @returns the sidebar element tree.
|
|
196
205
|
*/
|
|
197
|
-
function SidebarRoot({ collapsed, width, startSession, toggleSidebar, selectPanel, usePanels, usePanelInfo, t, renderSlot }) {
|
|
206
|
+
function SidebarRoot({ collapsed, width, startSession, toggleSidebar, selectPanel, usePanels, useShortcuts, usePanelInfo, t, renderSlot }) {
|
|
198
207
|
const panels = usePanels((snapshot) => snapshot);
|
|
208
|
+
const shortcut = useShortcuts((rows) => rows.find((row) => row.id === "sidebar.left.toggle"));
|
|
209
|
+
const newShortcut = useShortcuts((rows) => rows.find((row) => row.id === "session.new"));
|
|
210
|
+
const toggleLabel = collapsed ? t("toggle.open") : t("toggle.collapse");
|
|
199
211
|
const [settled, setSettled] = (0, react.useState)(collapsed);
|
|
200
212
|
(0, react.useEffect)(() => {
|
|
201
213
|
if (!collapsed) {
|
|
@@ -248,13 +260,15 @@ window.__ModuleLoader__.load({
|
|
|
248
260
|
const buildVersion = localBuildVersion();
|
|
249
261
|
const darwinDesktop = (0, _deepseek_ai_dsh_client_ui_primitives.isDarwinDesktop)();
|
|
250
262
|
const toggle = (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
251
|
-
label:
|
|
263
|
+
label: toggleLabel,
|
|
264
|
+
shortcutKeys: shortcut?.keys,
|
|
252
265
|
delayMs: 500,
|
|
253
266
|
side: captionTooltipSide,
|
|
254
267
|
children: (0, react_jsx_runtime.jsxs)("button", {
|
|
255
268
|
type: "button",
|
|
256
269
|
className: clsx(SidebarRoot_module_css_default.iconButton, SidebarRoot_module_css_default.toggle),
|
|
257
|
-
"aria-label":
|
|
270
|
+
"aria-label": toggleLabel,
|
|
271
|
+
"aria-keyshortcuts": shortcut?.aria,
|
|
258
272
|
onClick: () => {
|
|
259
273
|
toggleSidebar();
|
|
260
274
|
},
|
|
@@ -286,10 +300,12 @@ window.__ModuleLoader__.load({
|
|
|
286
300
|
children: [
|
|
287
301
|
darwinDesktop && (0, react_jsx_runtime.jsx)("div", {
|
|
288
302
|
className: SidebarRoot_module_css_default.topStrip,
|
|
303
|
+
"data-window-drag": true,
|
|
289
304
|
children: toggle
|
|
290
305
|
}),
|
|
291
306
|
(0, react_jsx_runtime.jsxs)("div", {
|
|
292
307
|
className: SidebarRoot_module_css_default.logoRow,
|
|
308
|
+
"data-window-drag": true,
|
|
293
309
|
children: [wide && (() => {
|
|
294
310
|
const identity = (0, react_jsx_runtime.jsxs)("span", {
|
|
295
311
|
className: SidebarRoot_module_css_default.brandIdentity,
|
|
@@ -317,32 +333,50 @@ window.__ModuleLoader__.load({
|
|
|
317
333
|
return darwinDesktop ? (0, react_jsx_runtime.jsx)("span", {
|
|
318
334
|
className: clsx(SidebarRoot_module_css_default.brand, SidebarRoot_module_css_default.wide),
|
|
319
335
|
children: identity
|
|
320
|
-
}) : (0, react_jsx_runtime.jsx)(
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
336
|
+
}) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
337
|
+
label: t("session.new.label"),
|
|
338
|
+
shortcutKeys: newShortcut?.keys,
|
|
339
|
+
delayMs: 500,
|
|
340
|
+
children: (0, react_jsx_runtime.jsx)("button", {
|
|
341
|
+
type: "button",
|
|
342
|
+
className: clsx(SidebarRoot_module_css_default.brand, SidebarRoot_module_css_default.wide),
|
|
343
|
+
"aria-label": t("session.new.label"),
|
|
344
|
+
"aria-keyshortcuts": newShortcut?.aria,
|
|
345
|
+
onClick: () => {
|
|
346
|
+
startSession();
|
|
347
|
+
},
|
|
348
|
+
children: identity
|
|
349
|
+
})
|
|
328
350
|
});
|
|
329
351
|
})(), !darwinDesktop && toggle]
|
|
330
352
|
}),
|
|
331
353
|
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
332
354
|
label: t("session.new.label"),
|
|
355
|
+
shortcutKeys: newShortcut?.keys,
|
|
333
356
|
delayMs: 500,
|
|
334
|
-
disabled: wide,
|
|
335
357
|
side: captionTooltipSide,
|
|
358
|
+
disabled: wide,
|
|
336
359
|
children: (0, react_jsx_runtime.jsxs)("button", {
|
|
337
360
|
type: "button",
|
|
338
361
|
className: SidebarRoot_module_css_default.newSession,
|
|
339
362
|
"aria-label": t("session.new.label"),
|
|
363
|
+
"aria-keyshortcuts": newShortcut?.aria,
|
|
340
364
|
onClick: () => {
|
|
341
365
|
startSession();
|
|
342
366
|
},
|
|
343
|
-
children: [
|
|
344
|
-
className:
|
|
345
|
-
children:
|
|
367
|
+
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
368
|
+
className: SidebarRoot_module_css_default.newSessionLabelMask,
|
|
369
|
+
children: (0, react_jsx_runtime.jsxs)("span", {
|
|
370
|
+
className: SidebarRoot_module_css_default.newSessionContent,
|
|
371
|
+
children: [wide ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconNewChatOutlineMedium, { size: 14 }) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconNewChatOutlineRegular, { size: windowsTitlebar ? 16 : 18 }), wide && (0, react_jsx_runtime.jsx)("span", {
|
|
372
|
+
className: clsx(SidebarRoot_module_css_default.newSessionLabel, SidebarRoot_module_css_default.wide),
|
|
373
|
+
children: t("session.new")
|
|
374
|
+
})]
|
|
375
|
+
})
|
|
376
|
+
}), wide && newShortcut !== void 0 && newShortcut.keys.length > 0 && (0, react_jsx_runtime.jsx)("span", {
|
|
377
|
+
className: SidebarRoot_module_css_default.newSessionShortcut,
|
|
378
|
+
"aria-hidden": "true",
|
|
379
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.ShortcutKeys, { keys: newShortcut.keys })
|
|
346
380
|
})]
|
|
347
381
|
})
|
|
348
382
|
}),
|
|
@@ -408,7 +442,8 @@ window.__ModuleLoader__.load({
|
|
|
408
442
|
"slots",
|
|
409
443
|
"layout",
|
|
410
444
|
"uiWorkspace",
|
|
411
|
-
"locale"
|
|
445
|
+
"locale",
|
|
446
|
+
"shortcuts"
|
|
412
447
|
];
|
|
413
448
|
/** Registers the sidebar shell and its service callbacks.
|
|
414
449
|
* @param ctx - Client root context.
|
|
@@ -448,7 +483,10 @@ window.__ModuleLoader__.load({
|
|
|
448
483
|
selectPanel: (id) => {
|
|
449
484
|
ctx.layout.selectPanel(id);
|
|
450
485
|
},
|
|
451
|
-
hooks: {
|
|
486
|
+
hooks: {
|
|
487
|
+
panels,
|
|
488
|
+
shortcuts: ctx.shortcuts.catalog
|
|
489
|
+
}
|
|
452
490
|
});
|
|
453
491
|
ctx.slots.inject("sidebar", () => ctx.slots.register({
|
|
454
492
|
name: "sidebar",
|
|
@@ -11,5 +11,5 @@ export type HeaderLeadingControlsProps = PropsRuntime<'shell.leading'> & InjectF
|
|
|
11
11
|
* @param props - Injected sidebar actions plus the sidebar locale seat.
|
|
12
12
|
* @returns the two window-chrome controls.
|
|
13
13
|
*/
|
|
14
|
-
export declare function HeaderLeadingControls({ toggleSidebar, startSession, t }: HeaderLeadingControlsProps): import("react").JSX.Element;
|
|
14
|
+
export declare function HeaderLeadingControls({ toggleSidebar, startSession, useShortcuts, t }: HeaderLeadingControlsProps): import("react").JSX.Element;
|
|
15
15
|
//# sourceMappingURL=HeaderLeadingControls.d.ts.map
|
|
@@ -4,5 +4,5 @@ import type { SidebarRootComponentProps } from './contract/slots.ts';
|
|
|
4
4
|
* @param props - composed slot props (runtime share + injected callbacks, contract/slots.ts).
|
|
5
5
|
* @returns the sidebar element tree.
|
|
6
6
|
*/
|
|
7
|
-
export declare function SidebarRoot({ collapsed, width, startSession, toggleSidebar, selectPanel, usePanels, usePanelInfo, t, renderSlot, }: SidebarRootComponentProps): import("react").JSX.Element;
|
|
7
|
+
export declare function SidebarRoot({ collapsed, width, startSession, toggleSidebar, selectPanel, usePanels, useShortcuts, usePanelInfo, t, renderSlot, }: SidebarRootComponentProps): import("react").JSX.Element;
|
|
8
8
|
//# sourceMappingURL=SidebarRoot.d.ts.map
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import type { InjectFace, PropsLocale, PropsRenderSlots, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
11
11
|
import type { ObservableSnapshot } from '@deepseek-ai/dsh-client-store';
|
|
12
12
|
import type { WorkspaceId } from '@deepseek-ai/dsh-api-workspace-controller/client';
|
|
13
|
+
import type { ShortcutCatalogEntry } from '@deepseek-ai/dsh-client-shortcuts/client';
|
|
13
14
|
import type { MainPanelId } from '@deepseek-ai/dsh-client-ui-layout/client';
|
|
14
15
|
declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|
15
16
|
interface SlotMap {
|
|
@@ -146,6 +147,7 @@ export type SidebarRootInjected = {
|
|
|
146
147
|
/** Private reactive sources bound to framework selector hooks. */
|
|
147
148
|
hooks: {
|
|
148
149
|
panels: ObservableSnapshot<readonly SidebarPanelMetadata[]>;
|
|
150
|
+
shortcuts: ObservableSnapshot<readonly ShortcutCatalogEntry[]>;
|
|
149
151
|
};
|
|
150
152
|
};
|
|
151
153
|
/**
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-client-ui-sidebar",
|
|
3
3
|
"description": "Sidebar plugin: session multi-level tree, search, grouping, state dots",
|
|
4
|
-
"version": "0.1.7-rc.
|
|
4
|
+
"version": "0.1.7-rc.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
"@deepseek-ai/dsh-client-ui-layout",
|
|
34
34
|
"@deepseek-ai/dsh-client-ui-session",
|
|
35
35
|
"@deepseek-ai/dsh-client-ui-workspace",
|
|
36
|
-
"@deepseek-ai/dsh-client-locale"
|
|
36
|
+
"@deepseek-ai/dsh-client-locale",
|
|
37
|
+
"@deepseek-ai/dsh-client-shortcuts"
|
|
37
38
|
],
|
|
38
39
|
"platform": "web"
|
|
39
40
|
}
|
|
@@ -46,17 +47,18 @@
|
|
|
46
47
|
"@types/react": "~18.3.1",
|
|
47
48
|
"react": "^18.2.0",
|
|
48
49
|
"clsx": "^2.0.0",
|
|
49
|
-
"@deepseek-ai/dsh-
|
|
50
|
-
"@deepseek-ai/dsh-client-
|
|
51
|
-
"@deepseek-ai/dsh-
|
|
52
|
-
"@deepseek-ai/dsh-client-test-runtime": "0.1.7-rc.
|
|
53
|
-
"@deepseek-ai/dsh-client-ui-layout": "0.1.7-rc.
|
|
54
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.
|
|
55
|
-
"@deepseek-ai/dsh-client-ui-
|
|
56
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.
|
|
57
|
-
"@deepseek-ai/dsh-client-ui-
|
|
58
|
-
"@deepseek-ai/dsh-client-ui-workspace": "0.1.7-rc.
|
|
59
|
-
"@deepseek-ai/cordis": "~4.0.4"
|
|
50
|
+
"@deepseek-ai/dsh-api-workspace-controller": "0.1.7-rc.2",
|
|
51
|
+
"@deepseek-ai/dsh-client-locale": "0.1.7-rc.2",
|
|
52
|
+
"@deepseek-ai/dsh-client-store": "0.1.7-rc.2",
|
|
53
|
+
"@deepseek-ai/dsh-client-test-runtime": "0.1.7-rc.2",
|
|
54
|
+
"@deepseek-ai/dsh-client-ui-layout": "0.1.7-rc.2",
|
|
55
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.2",
|
|
56
|
+
"@deepseek-ai/dsh-client-ui-session": "0.1.7-rc.2",
|
|
57
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.2",
|
|
58
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2",
|
|
59
|
+
"@deepseek-ai/dsh-client-ui-workspace": "0.1.7-rc.2",
|
|
60
|
+
"@deepseek-ai/cordis": "~4.0.4",
|
|
61
|
+
"@deepseek-ai/dsh-client-shortcuts": "0.1.7-rc.2"
|
|
60
62
|
},
|
|
61
63
|
"files": [
|
|
62
64
|
"lib/index.js",
|