@deepseek-ai/dsh-client-ui-sidebar 0.1.0-rc.6 → 0.1.0-rc.8

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 CHANGED
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
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
- README.md: 7cc4fe0a722fe5f8cf0e983a0e3fdb30cd31bb64
6
- README.zh.md: 96b6f60f871758c126e6c387c6ce3f0993039af0
5
+ README.md: b924c2e6d18217d9689b7c21137321856e14da2e
6
+ README.zh.md: 10416e598e8d40c2771d6046e93f60acee097968
package/README.md CHANGED
@@ -2,11 +2,13 @@
2
2
 
3
3
  English | [中文](README.zh.md)
4
4
 
5
- Sidebar shell plugin: the wordmark, New Session action, layout-owned collapse control, scroll-aware region seat, and bottom-pinned Settings seat. [ui-workspace](../ui-workspace/README.md) owns the Workspace and Session browser rendered into `sidebar.workspaces`; this package neither derives its rows nor owns its view preferences. Collapse into the layout-owned 56px rail remains presentation-local. Contract: the [slot system standard](../../../.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.md).
5
+ Sidebar shell plugin: the brand row, New Session action, layout-owned collapse control, scroll-aware region seat, and bottom-pinned Settings seat. [ui-workspace](../ui-workspace/README.md) owns the Workspace and Session browser rendered into `sidebar.workspaces`; this package neither derives its rows nor owns its view preferences. Collapse into the layout-owned 56px rail remains presentation-local. Contract: the [slot system standard](../../../.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.md).
6
+
7
+ The expanded brand row renders `sidebar.brand.mark` and `sidebar.brand.name` as independent single slots, while the collapsed rail renders the same mark slot. Without occupants, the shell uses the fish mark and a `DSH Local Build` label carrying the build's 7-character `DSH_CLIENT_COMMIT_HASH` badge. A deployment package can replace either value without replacing the New Session control or rail geometry; declaration-aware `slots.inject()` lets such a package activate before or after the sidebar.
6
8
 
7
9
  New Session starts the runtime's page-local frontend Session Intent. The runtime 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. Workspace-specific controls and the shared picker belong to ui-workspace.
8
10
 
9
- `SidebarRootComponentProps` composes the layout owner share, the global `useSessions` and `useWorkspaces` hooks, the declared `sidebar.workspaces` and `sidebar.settings` child slots, and injected `startSession` plus sidebar-toggle callbacks. There is no plugin store.
11
+ `SidebarRootComponentProps` composes the layout owner share, the global `useSessions` and `useWorkspaces` hooks, the declared brand, `sidebar.workspaces`, and `sidebar.settings` child slots, and injected `startSession` plus sidebar-toggle callbacks. There is no plugin store.
10
12
 
11
13
  During a live collapse, the shell holds the expanded content at its current width while it fades out for 150ms. The four upper controls—the shell toggle and New Session plus add and search rendered through `sidebar.workspaces`—then share one 150ms fade and 49px leftward translation into the 56px rail, ending with the layout's 300ms column slide; every 36px control box follows the same path to the rail's 10px left inset. The bottom-pinned `sidebar.settings` control shares the fade timing but has no horizontal translation. A page that starts collapsed renders the rail statically, and reduced-motion mode disables both transitions.
12
14
 
package/README.zh.md CHANGED
@@ -2,11 +2,13 @@
2
2
 
3
3
  [English](README.md) | 中文
4
4
 
5
- 侧边栏外壳插件:负责字标、New Session 操作、布局持有的折叠控件、可感知滚动的区域 seat,以及固定在底部的 Settings seat。[ui-workspace](../ui-workspace/README.md) 持有渲染到 `sidebar.workspaces` 的 Workspace 与 Session 浏览器;本包既不派生其中的行,也不持有其视图偏好。折叠到布局拥有的 56px 轨道仍属于本地呈现行为。约定:[slot 系统标准](../../../.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.md)。
5
+ 侧边栏外壳插件:负责品牌行、New Session 操作、布局持有的折叠控件、可感知滚动的区域 seat,以及固定在底部的 Settings seat。[ui-workspace](../ui-workspace/README.md) 持有渲染到 `sidebar.workspaces` 的 Workspace 与 Session 浏览器;本包既不派生其中的行,也不持有其视图偏好。折叠到布局拥有的 56px 轨道仍属于本地呈现行为。约定:[slot 系统标准](../../../.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.md)。
6
+
7
+ 展开的品牌行把 `sidebar.brand.mark` 与 `sidebar.brand.name` 渲染为两个独立的 single slot,收起轨道则渲染同一个 mark slot。没有占位者时,外壳使用鱼形标记,以及带有构建期 7 位 `DSH_CLIENT_COMMIT_HASH` 徽标的 `DSH Local Build` 标签。部署包可以单独替换任一值,而无须替换 New Session 控件或轨道几何;声明感知的 `slots.inject()` 让这种包无论先于还是后于侧边栏激活都能生效。
6
8
 
7
9
  New Session 会启动运行时的页面局部前端 Session Intent。运行时优先使用作用域操作明确指定的 Workspace,否则使用当前 Session 所属 Workspace,再否则使用最近活跃 Workspace;一个 Workspace 都没有时则清空选择,进入空白 New Session 页面。Workspace 专属控件与共享选择器由 ui-workspace 持有。
8
10
 
9
- `SidebarRootComponentProps` 组合布局 owner share、全局 `useSessions` 和 `useWorkspaces` 钩子、已声明的 `sidebar.workspaces` 与 `sidebar.settings` 子 slot,以及注入的 `startSession` 与侧边栏切换回调。这里没有插件 store。
11
+ `SidebarRootComponentProps` 组合布局 owner share、全局 `useSessions` 和 `useWorkspaces` 钩子、已声明的品牌、`sidebar.workspaces` 与 `sidebar.settings` 子 slot,以及注入的 `startSession` 与侧边栏切换回调。这里没有插件 store。
10
12
 
11
13
  实时收起时,外壳会把展开内容固定在当前宽度,并用 150ms 将其淡出。随后,上方四个控件——外壳的侧栏切换与新建会话,以及通过 `sidebar.workspaces` 渲染的添加和搜索——共用一次 150ms 的淡入和 49px 左移,在布局的 300ms 栏滑动结束时一起进入 56px 轨道;每个 36px 控件盒都会沿同一条路径到达轨道左侧 10px 的内边距。固定在底部的 `sidebar.settings` 控件只共用淡入时序,不发生横向位移。页面初始即为收起状态时会静态渲染轨道;减少动态效果模式会禁用两段过渡。
12
14
 
package/lib/client.js CHANGED
@@ -23,7 +23,7 @@ window.__ModuleLoader__.load({
23
23
  }
24
24
  //#endregion
25
25
  //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-sidebar/src/client/SidebarRoot.module.css.mjs
26
- 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}.hHd-Xa_root.hHd-Xa_collapsed{padding:18px 10px 6px}.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_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_logoRow{box-sizing:border-box;flex:none;justify-content:flex-end;align-items:center;gap:8px;height:60px;margin-bottom:8px;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}.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}.hHd-Xa_iconButton{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.hHd-Xa_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_collapsed .hHd-Xa_iconButton{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_railFish{display:none}.hHd-Xa_collapsed .hHd-Xa_iconButton{color:var(--dsw-alias-label-primary)}.hHd-Xa_newSession{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-button-elevated-fill);height:38px;color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:12px;flex:none;justify-content:center;align-items:center;gap:6px;margin:0 2px 8px;padding:8px 16px;font-size:14px;font-weight:500;line-height:22px;display:flex;overflow:hidden}.hHd-Xa_newSession:hover{background:var(--dsw-alias-button-floating-hover)}.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_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_footArea,.hHd-Xa_railIn .hHd-Xa_regionArea{transition:none;animation:none}}";
26
+ 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}.hHd-Xa_root.hHd-Xa_collapsed{padding:18px 10px 6px}.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_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_logoRow{box-sizing:border-box;flex:none;justify-content:flex-end;align-items:center;gap:8px;height:60px;margin-bottom:8px;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}.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}.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_iconButton{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.hHd-Xa_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_collapsed .hHd-Xa_iconButton{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_buildRevision{height:16px;color:var(--dsw-alias-label-primary-inverted);background:var(--dsw-alias-label-primary);font-family:var(--ds-font-family-code);border-radius:3px;align-items:center;padding:0 4px;font-size:8px;font-weight:500;line-height:16px;display:inline-flex}.hHd-Xa_newSession{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-button-elevated-fill);height:38px;color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:12px;flex:none;justify-content:center;align-items:center;gap:6px;margin:0 2px 8px;padding:8px 16px;font-size:14px;font-weight:500;line-height:22px;display:flex;overflow:hidden}.hHd-Xa_newSession:hover{background:var(--dsw-alias-button-floating-hover)}.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_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_footArea,.hHd-Xa_railIn .hHd-Xa_regionArea{transition:none;animation:none}}";
27
27
  const tagId = "@deepseek-ai/dsh-client-ui-sidebar/SidebarRoot.module.css";
28
28
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
29
29
  const tag = document.createElement("style");
@@ -33,27 +33,32 @@ window.__ModuleLoader__.load({
33
33
  document.head.appendChild(tag);
34
34
  }
35
35
  var SidebarRoot_module_css_default = {
36
- "railFish": "hHd-Xa_railFish",
37
- "settingsArea": "hHd-Xa_settingsArea",
38
- "rail-fade-in": "hHd-Xa_rail-fade-in",
39
- "wide": "hHd-Xa_wide",
40
- "footArea": "hHd-Xa_footArea",
41
36
  "brand": "hHd-Xa_brand",
42
- "regionArea": "hHd-Xa_regionArea",
43
- "quietBars": "hHd-Xa_quietBars",
44
- "newSession": "hHd-Xa_newSession",
45
- "toggle": "hHd-Xa_toggle",
46
- "iconButton": "hHd-Xa_iconButton",
47
- "railIn": "hHd-Xa_railIn",
37
+ "brandIdentity": "hHd-Xa_brandIdentity",
38
+ "brandMark": "hHd-Xa_brandMark",
39
+ "brandName": "hHd-Xa_brandName",
40
+ "buildRevision": "hHd-Xa_buildRevision",
41
+ "collapsed": "hHd-Xa_collapsed",
48
42
  "fading": "hHd-Xa_fading",
49
- "root": "hHd-Xa_root",
50
- "panelIcon": "hHd-Xa_panelIcon",
43
+ "fallbackBrandName": "hHd-Xa_fallbackBrandName",
44
+ "footArea": "hHd-Xa_footArea",
51
45
  "footerActions": "hHd-Xa_footerActions",
52
- "collapsed": "hHd-Xa_collapsed",
46
+ "iconButton": "hHd-Xa_iconButton",
53
47
  "logoRow": "hHd-Xa_logoRow",
54
- "wide-in": "hHd-Xa_wide-in",
48
+ "newSession": "hHd-Xa_newSession",
49
+ "newSessionLabel": "hHd-Xa_newSessionLabel",
50
+ "panelIcon": "hHd-Xa_panelIcon",
51
+ "quietBars": "hHd-Xa_quietBars",
52
+ "rail-fade-in": "hHd-Xa_rail-fade-in",
55
53
  "rail-in": "hHd-Xa_rail-in",
56
- "newSessionLabel": "hHd-Xa_newSessionLabel"
54
+ "railIn": "hHd-Xa_railIn",
55
+ "railMark": "hHd-Xa_railMark",
56
+ "regionArea": "hHd-Xa_regionArea",
57
+ "root": "hHd-Xa_root",
58
+ "settingsArea": "hHd-Xa_settingsArea",
59
+ "toggle": "hHd-Xa_toggle",
60
+ "wide": "hHd-Xa_wide",
61
+ "wide-in": "hHd-Xa_wide-in"
57
62
  };
58
63
  //#endregion
59
64
  //#region lib/types/client/SidebarRoot.js
@@ -157,7 +162,23 @@ window.__ModuleLoader__.load({
157
162
  onClick: () => {
158
163
  startSession();
159
164
  },
160
- children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.BrandWordmark, {})
165
+ children: (0, react_jsx_runtime.jsxs)("span", {
166
+ className: SidebarRoot_module_css_default.brandIdentity,
167
+ "aria-hidden": "true",
168
+ children: [(0, react_jsx_runtime.jsx)("span", {
169
+ className: SidebarRoot_module_css_default.brandMark,
170
+ children: renderSlot("sidebar.brand.mark", { size: 24 }, { fallback: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FishLogo, { size: 24 }) })
171
+ }), (0, react_jsx_runtime.jsx)("span", {
172
+ className: SidebarRoot_module_css_default.brandName,
173
+ children: renderSlot("sidebar.brand.name", {}, { fallback: (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)("span", {
174
+ className: SidebarRoot_module_css_default.fallbackBrandName,
175
+ children: "DSH Local Build"
176
+ }), (0, react_jsx_runtime.jsx)("span", {
177
+ className: SidebarRoot_module_css_default.buildRevision,
178
+ children: "fcbad14"
179
+ })] }) })
180
+ })]
181
+ })
161
182
  }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
162
183
  label: collapsed ? t("toggle.open") : t("toggle.collapse"),
163
184
  delayMs: 500,
@@ -168,9 +189,10 @@ window.__ModuleLoader__.load({
168
189
  onClick: () => {
169
190
  toggleSidebar();
170
191
  },
171
- children: [!wide && (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FishLogo, {
172
- className: SidebarRoot_module_css_default.railFish,
173
- size: 24
192
+ children: [!wide && (0, react_jsx_runtime.jsx)("span", {
193
+ className: SidebarRoot_module_css_default.railMark,
194
+ "aria-hidden": "true",
195
+ children: renderSlot("sidebar.brand.mark", { size: 24 }, { fallback: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FishLogo, { size: 24 }) })
174
196
  }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPanelLeftOutline16, {
175
197
  className: SidebarRoot_module_css_default.panelIcon,
176
198
  size: wide ? 16 : 18
@@ -266,6 +288,14 @@ window.__ModuleLoader__.load({
266
288
  name: "sidebar",
267
289
  locale: NS,
268
290
  children: {
291
+ "sidebar.brand.mark": {
292
+ kind: "single",
293
+ scope: "root"
294
+ },
295
+ "sidebar.brand.name": {
296
+ kind: "single",
297
+ scope: "root"
298
+ },
269
299
  "sidebar.workspaces": {
270
300
  kind: "single",
271
301
  scope: "root"
@@ -11,6 +11,25 @@ import type { PropsLocale, PropsRenderSlots, PropsRuntime } from '@deepseek-ai/d
11
11
  import type { WorkspaceId } from '@deepseek-ai/dsh-client-runtime/client';
12
12
  declare module '@deepseek-ai/dsh-client-ui-slots' {
13
13
  interface SlotMap {
14
+ /**
15
+ * Brand mark rendered in the expanded brand row and collapsed rail.
16
+ * Declared by this package's `sidebar` entry; deployments may replace
17
+ * the shell's fish fallback without replacing the surrounding controls.
18
+ */
19
+ 'sidebar.brand.mark': {
20
+ kind: 'single';
21
+ scope: 'root';
22
+ owner: SidebarBrandMarkOwnerProps;
23
+ };
24
+ /**
25
+ * Brand name rendered beside the expanded mark. Declared by this
26
+ * package's `sidebar` entry; the shell supplies a generic text fallback.
27
+ */
28
+ 'sidebar.brand.name': {
29
+ kind: 'single';
30
+ scope: 'root';
31
+ owner: SidebarBrandNameOwnerProps;
32
+ };
14
33
  /**
15
34
  * The workspace/session browsing region: section header, search, the
16
35
  * grouped/flat session list, and every workspace dialog. Declared by this
@@ -43,6 +62,16 @@ declare module '@deepseek-ai/dsh-client-ui-slots' {
43
62
  };
44
63
  }
45
64
  }
65
+ /** Geometry supplied to the sidebar brand-mark occupant. */
66
+ export interface SidebarBrandMarkOwnerProps {
67
+ /** Requested square edge in pixels. */
68
+ size: number;
69
+ }
70
+ /** Empty owner share for the sidebar brand-name occupant. */
71
+ export interface SidebarBrandNameOwnerProps {
72
+ /** Marker field: the occupant owns its own content and width. */
73
+ children?: never;
74
+ }
46
75
  /**
47
76
  * Owner share of the browser hole — the only facts crossing the shell/region
48
77
  * boundary. Business data and actions arrive through the region's own inject.
@@ -86,5 +115,5 @@ export type SidebarRootInjected = {
86
115
  * render shares, this package's injected callbacks, and the standard locale
87
116
  * seat. No store is registered.
88
117
  */
89
- export type SidebarRootComponentProps = PropsRuntime<'sidebar'> & PropsRenderSlots<'sidebar.workspaces' | 'sidebar.settings' | 'sidebar.footer.action'> & SidebarRootInjected & PropsLocale<'sidebar'>;
118
+ export type SidebarRootComponentProps = PropsRuntime<'sidebar'> & PropsRenderSlots<'sidebar.brand.mark' | 'sidebar.brand.name' | 'sidebar.workspaces' | 'sidebar.settings' | 'sidebar.footer.action'> & SidebarRootInjected & PropsLocale<'sidebar'>;
90
119
  //# sourceMappingURL=slots.d.ts.map
@@ -1,7 +1,7 @@
1
1
  /** Registers the sidebar shell into the layout-owned slot. */
2
2
  import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client';
3
3
  import { type SidebarKey } from './locales.ts';
4
- export type { SidebarFooterActionOwnerProps, SidebarRootComponentProps, SidebarRootInjected, SidebarSectionOwnerProps, SidebarSettingsOwnerProps, } from './contract/slots.ts';
4
+ export type { SidebarBrandMarkOwnerProps, SidebarBrandNameOwnerProps, SidebarFooterActionOwnerProps, SidebarRootComponentProps, SidebarRootInjected, SidebarSectionOwnerProps, SidebarSettingsOwnerProps, } from './contract/slots.ts';
5
5
  export type { SidebarKey } from './locales.ts';
6
6
  declare module '@deepseek-ai/dsh-client-ui-slots' {
7
7
  interface LocaleNamespaceMap {
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.0-rc.6",
4
+ "version": "0.1.0-rc.8",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -44,25 +44,23 @@
44
44
  "clsx": "^2.0.0"
45
45
  },
46
46
  "peerDependencies": {
47
- "react": "^18.2.0",
48
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.6",
49
- "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.6",
50
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6",
51
- "@deepseek-ai/dsh-invariants": "^0.1.0-rc.6",
47
+ "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8",
48
+ "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8",
49
+ "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8",
52
50
  "@deepseek-ai/cordis": "^4.0.1",
53
- "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.6"
51
+ "@deepseek-ai/dsh-client-ui-layout": "^0.1.0-rc.8"
54
52
  },
55
53
  "devDependencies": {
56
54
  "@types/react": "~18.3.1",
57
55
  "react": "^18.2.0",
58
- "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.6",
59
- "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.6",
60
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.6",
61
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6",
62
- "@deepseek-ai/dsh-invariants": "^0.1.0-rc.6",
63
- "@deepseek-ai/cordis": "^4.0.1",
64
- "@deepseek-ai/dsh-client-test-runtime": "^0.1.0-rc.6",
65
- "@deepseek-ai/dsh-client-ui-layout": "^0.1.0-rc.6"
56
+ "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8",
57
+ "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8",
58
+ "@deepseek-ai/dsh-client-test-runtime": "^0.1.0-rc.8",
59
+ "@deepseek-ai/dsh-client-ui-layout": "^0.1.0-rc.8",
60
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.8",
61
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.8",
62
+ "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8",
63
+ "@deepseek-ai/cordis": "^4.0.1"
66
64
  },
67
65
  "files": [
68
66
  "lib/index.js",