@michengai/dsh-codex-ui 1.1.14 → 1.1.16

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/CHANGELOG.md CHANGED
@@ -4,6 +4,69 @@
4
4
 
5
5
  This changelog records recent releases of DSH Codex UI and its one-click installer. Earlier changes remain available in the [Git history](https://github.com/MichengAI/dsh-codex-ui/commits/main).
6
6
 
7
+ ## 1.1.16 - 2026-09-22
8
+
9
+ - Follow the host `--dsw-font-family` in the sidebar, settings page, workspace tree, and composer filter instead of a hardcoded Inter stack.
10
+
11
+ ## suite-installer-v1.0.19 - 2026-09-22
12
+
13
+ Install or maintain 11 first-party plugins in one step. Included plugins and versions:
14
+
15
+ - `@michengai/dsh-archive-manager@1.0.2`
16
+ - `@michengai/dsh-codex-ui@1.1.14`
17
+ - `@michengai/dsh-skills-manager@1.0.1`
18
+ - `@michengai/dsh-agency-agents@1.0.1`
19
+ - `@michengai/dsh-im-connect@0.1.51`
20
+ - `@michengai/dsh-automation@0.1.45`
21
+ - `@michengai/dsh-btw@0.1.10`
22
+ - `@michengai/dsh-simplify@0.1.7`
23
+ - `@michengai/dsh-pua@0.3.16`
24
+ - `@michengai/dsh-code-review@0.1.4`
25
+ - `@michengai/dsh-codex-pet@0.1.7`
26
+
27
+ The installer uses these exact versions for reproducible installation.
28
+
29
+ ## 1.1.15 - 2026-09-22
30
+
31
+ - Cap project session lists at 5 items like Codex Desktop. Show more reveals 10 more at a time, and collapsing the folder restores the 5-item window.
32
+ - Paint only the hovered session's after-line when the next insert anchor is folded.
33
+
34
+ ## suite-installer-v1.0.18 - 2026-09-19
35
+
36
+ Install or maintain 11 first-party plugins in one step. Included plugins and versions:
37
+
38
+ - `@michengai/dsh-archive-manager@0.1.44`
39
+ - `@michengai/dsh-codex-ui@1.1.14`
40
+ - `@michengai/dsh-skills-manager@0.1.53`
41
+ - `@michengai/dsh-agency-agents@0.1.44`
42
+ - `@michengai/dsh-im-connect@0.1.51`
43
+ - `@michengai/dsh-automation@0.1.45`
44
+ - `@michengai/dsh-btw@0.1.10`
45
+ - `@michengai/dsh-simplify@0.1.7`
46
+ - `@michengai/dsh-pua@0.3.16`
47
+ - `@michengai/dsh-code-review@0.1.4`
48
+ - `@michengai/dsh-codex-pet@0.1.7`
49
+
50
+ The installer uses these exact versions for reproducible installation.
51
+
52
+ ## suite-installer-v1.0.17 - 2026-09-19
53
+
54
+ Install or maintain 11 first-party plugins in one step. Included plugins and versions:
55
+
56
+ - `@michengai/dsh-archive-manager@0.1.44`
57
+ - `@michengai/dsh-codex-ui@1.1.13`
58
+ - `@michengai/dsh-skills-manager@0.1.53`
59
+ - `@michengai/dsh-agency-agents@0.1.44`
60
+ - `@michengai/dsh-im-connect@0.1.51`
61
+ - `@michengai/dsh-automation@0.1.45`
62
+ - `@michengai/dsh-btw@0.1.10`
63
+ - `@michengai/dsh-simplify@0.1.7`
64
+ - `@michengai/dsh-pua@0.3.16`
65
+ - `@michengai/dsh-code-review@0.1.4`
66
+ - `@michengai/dsh-codex-pet@0.1.7`
67
+
68
+ The installer uses these exact versions for reproducible installation.
69
+
7
70
  ## 1.1.14 - 2026-09-19
8
71
 
9
72
  - Keep official header actions beside the session title and conversation tabs on the right. Long titles stay on one 34px row instead of wrapping the corner slot down.
@@ -4,6 +4,69 @@
4
4
 
5
5
  本日志记录 DSH Codex UI 及其一键安装器的最近发布;更早的变更可查看 [Git 提交历史](https://github.com/MichengAI/dsh-codex-ui/commits/main)。
6
6
 
7
+ ## 1.1.16 - 2026-09-22
8
+
9
+ - 侧栏、设置页、工作区树和输入框筛选改为跟随宿主 `--dsw-font-family`,不再写死 Inter。
10
+
11
+ ## suite-installer-v1.0.19 - 2026-09-22
12
+
13
+ 一键维护安装 11 个自研插件。包含以下插件及版本:
14
+
15
+ - `@michengai/dsh-archive-manager@1.0.2`
16
+ - `@michengai/dsh-codex-ui@1.1.14`
17
+ - `@michengai/dsh-skills-manager@1.0.1`
18
+ - `@michengai/dsh-agency-agents@1.0.1`
19
+ - `@michengai/dsh-im-connect@0.1.51`
20
+ - `@michengai/dsh-automation@0.1.45`
21
+ - `@michengai/dsh-btw@0.1.10`
22
+ - `@michengai/dsh-simplify@0.1.7`
23
+ - `@michengai/dsh-pua@0.3.16`
24
+ - `@michengai/dsh-code-review@0.1.4`
25
+ - `@michengai/dsh-codex-pet@0.1.7`
26
+
27
+ 安装器使用这些精确版本执行安装,确保可复现。
28
+
29
+ ## 1.1.15 - 2026-09-22
30
+
31
+ - 项目会话列表对齐 Codex:默认显示 5 条,「展开显示」每次再加 10 条;折叠文件夹后回到前 5 条。
32
+ - 下一会话被折起时,拖放蓝线只画在悬停行下方。
33
+
34
+ ## suite-installer-v1.0.18 - 2026-09-19
35
+
36
+ 一键维护安装 11 个自研插件。包含以下插件及版本:
37
+
38
+ - `@michengai/dsh-archive-manager@0.1.44`
39
+ - `@michengai/dsh-codex-ui@1.1.14`
40
+ - `@michengai/dsh-skills-manager@0.1.53`
41
+ - `@michengai/dsh-agency-agents@0.1.44`
42
+ - `@michengai/dsh-im-connect@0.1.51`
43
+ - `@michengai/dsh-automation@0.1.45`
44
+ - `@michengai/dsh-btw@0.1.10`
45
+ - `@michengai/dsh-simplify@0.1.7`
46
+ - `@michengai/dsh-pua@0.3.16`
47
+ - `@michengai/dsh-code-review@0.1.4`
48
+ - `@michengai/dsh-codex-pet@0.1.7`
49
+
50
+ 安装器使用这些精确版本执行安装,确保可复现。
51
+
52
+ ## suite-installer-v1.0.17 - 2026-09-19
53
+
54
+ 一键维护安装 11 个自研插件。包含以下插件及版本:
55
+
56
+ - `@michengai/dsh-archive-manager@0.1.44`
57
+ - `@michengai/dsh-codex-ui@1.1.13`
58
+ - `@michengai/dsh-skills-manager@0.1.53`
59
+ - `@michengai/dsh-agency-agents@0.1.44`
60
+ - `@michengai/dsh-im-connect@0.1.51`
61
+ - `@michengai/dsh-automation@0.1.45`
62
+ - `@michengai/dsh-btw@0.1.10`
63
+ - `@michengai/dsh-simplify@0.1.7`
64
+ - `@michengai/dsh-pua@0.3.16`
65
+ - `@michengai/dsh-code-review@0.1.4`
66
+ - `@michengai/dsh-codex-pet@0.1.7`
67
+
68
+ 安装器使用这些精确版本执行安装,确保可复现。
69
+
7
70
  ## 1.1.14 - 2026-09-19
8
71
 
9
72
  - 紧凑顶栏:标准模式 / Agent Team 贴在标题旁,对话 / 轨迹靠右。长标题单行截断,不再把右栏掉到第二行。
package/lib/client.js CHANGED
@@ -2709,6 +2709,57 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
2709
2709
  if (isChannelSession(session.id)) return false;
2710
2710
  return !isScheduleSession(session.id, session.displayTitle ?? session.title ?? "");
2711
2711
  }
2712
+ /**
2713
+ * 对齐本机 Codex 26.915.4065.0 的项目会话列表。
2714
+ * 未展开时显示 5 条;展开后每次再加 10 条。按钮文案保持「展开显示」,全部露出后消失。
2715
+ * 当前会话落在窗口外时追加到末尾。
2716
+ */
2717
+ function projectSessionWindow(ids, state, forcedId) {
2718
+ const page = state.page < 1 ? 1 : state.page;
2719
+ const limit = state.expanded ? 5 + 10 * page : 5;
2720
+ const head = ids.slice(0, limit);
2721
+ const visible = forcedId !== void 0 && ids.includes(forcedId) && !head.includes(forcedId) ? [...head, forcedId] : head;
2722
+ return {
2723
+ ids: visible,
2724
+ showMore: visible.length < ids.length
2725
+ };
2726
+ }
2727
+ /**
2728
+ * 折叠项目文件夹时清掉「展开显示」。
2729
+ * 安装包 i$n:文件夹从展开变为折叠时,对 `project:${id}` 调用 sE(..., false)。
2730
+ */
2731
+ function collapseProjectSessionWindow() {
2732
+ return {
2733
+ expanded: false,
2734
+ page: 1
2735
+ };
2736
+ }
2737
+ /** 第一次展开把页码设为 1(可见 15 条),之后每点一次页码加 1。 */
2738
+ function nextProjectSessionWindow(state) {
2739
+ const current = state ?? {
2740
+ expanded: false,
2741
+ page: 1
2742
+ };
2743
+ if (!current.expanded) return {
2744
+ expanded: true,
2745
+ page: 1
2746
+ };
2747
+ return {
2748
+ expanded: true,
2749
+ page: current.page + 1
2750
+ };
2751
+ }
2752
+ /**
2753
+ * 会话行蓝线的落点:只在被悬停的那一行下方,且仅当它后面那条会话被折起或不存在。
2754
+ * 下一行仍可见时交给它自己的 before 线,避免两条平行蓝线。
2755
+ */
2756
+ function sessionDropAfterRowId(drop, renderedIds) {
2757
+ const hoveredId = drop?.hoveredId;
2758
+ if (hoveredId === void 0 || !renderedIds.includes(hoveredId)) return void 0;
2759
+ const beforeId = drop?.beforeId;
2760
+ if (beforeId !== void 0 && renderedIds.includes(beforeId)) return void 0;
2761
+ return hoveredId;
2762
+ }
2712
2763
  /** 过滤不应出现在工作区树中的会话。 */
2713
2764
  function visibleSessionIds(ids, byId, archivedIds) {
2714
2765
  const archived = new Set(archivedIds);
@@ -3318,14 +3369,14 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
3318
3369
  .dcu-wb-tree{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;padding-bottom:16px;scrollbar-gutter:auto;scrollbar-width:none;user-select:none;-webkit-user-select:none}
3319
3370
  .dcu-wb-tree::-webkit-scrollbar{display:none}
3320
3371
  .dcu-wb-section+.dcu-wb-section{margin-top:12px}
3321
- .dcu-wb-section-head{position:relative;display:flex;align-items:center;min-height:24px;padding:0;border-radius:6px}.dcu-wb-section-head:hover .dcu-wb-actions{display:flex}.dcu-wb-section-label{position:relative;display:flex;align-items:center;gap:4px;flex:1;min-width:0;min-height:24px;border:0;padding:2px 4px 2px 12px;background:transparent;color:var(--dcu-sidebar-tertiary);font:13px/20px var(--dcu-font,inherit);font-weight:400;letter-spacing:0;text-align:left;cursor:pointer}.dcu-wb-section-caret{display:grid;place-items:center;flex:none;width:12px;height:12px;color:currentColor;opacity:0;transform:rotate(0deg);transform-origin:50% 50%;transition:opacity 120ms ease,transform 160ms ease}.dcu-wb-section-head .dcu-wb-section-caret{position:absolute;left:0;top:6px}.dcu-wb-section-caret svg{display:block}.dcu-wb-section-head:hover .dcu-wb-section-caret,.dcu-wb-section-label:focus-visible .dcu-wb-section-caret{opacity:.78}.dcu-wb-section-label[aria-expanded=true] .dcu-wb-section-caret{transform:rotate(90deg)}.dcu-wb-section-body{display:block}.dcu-wb-section-body[data-open=false]{display:none}.dcu-wb-section-body>div{min-height:0}.dcu-wb-section-body[data-open=true]>div{animation:dcu-wb-section-in 140ms cubic-bezier(.16,1,.3,1)}@keyframes dcu-wb-section-in{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.dcu-wb-section-caret{transition:none}.dcu-wb-section-body[data-open=true]>div{animation:none}}
3372
+ .dcu-wb-section-head{position:relative;display:flex;align-items:center;min-height:24px;padding:0;border-radius:6px}.dcu-wb-section-head:hover .dcu-wb-actions{display:flex}.dcu-wb-section-label{position:relative;display:flex;align-items:center;gap:4px;flex:1;min-width:0;min-height:24px;border:0;padding:2px 4px 2px 12px;background:transparent;color:var(--dcu-sidebar-tertiary);font:13px/20px var(--dsw-font-family);font-weight:400;letter-spacing:0;text-align:left;cursor:pointer}.dcu-wb-section-caret{display:grid;place-items:center;flex:none;width:12px;height:12px;color:currentColor;opacity:0;transform:rotate(0deg);transform-origin:50% 50%;transition:opacity 120ms ease,transform 160ms ease}.dcu-wb-section-head .dcu-wb-section-caret{position:absolute;left:0;top:6px}.dcu-wb-section-caret svg{display:block}.dcu-wb-section-head:hover .dcu-wb-section-caret,.dcu-wb-section-label:focus-visible .dcu-wb-section-caret{opacity:.78}.dcu-wb-section-label[aria-expanded=true] .dcu-wb-section-caret{transform:rotate(90deg)}.dcu-wb-section-body{display:block}.dcu-wb-section-body[data-open=false]{display:none}.dcu-wb-section-body>div{min-height:0}.dcu-wb-section-body[data-open=true]>div{animation:dcu-wb-section-in 140ms cubic-bezier(.16,1,.3,1)}@keyframes dcu-wb-section-in{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.dcu-wb-section-caret{transition:none}.dcu-wb-section-body[data-open=true]>div{animation:none}}
3322
3373
  .dcu-wb-project{position:relative;min-width:0}
3323
3374
  .dcu-wb-collection-head .dcu-wb-more{opacity:0;pointer-events:none}
3324
3375
  .dcu-wb-collection-head:hover .dcu-wb-more,.dcu-wb-collection-head:focus-within .dcu-wb-more,.dcu-wb-collection-head .dcu-wb-more[aria-expanded=true]{opacity:1;pointer-events:auto}
3325
3376
  @media (pointer:coarse){.dcu-wb-collection-head .dcu-wb-more{opacity:1;pointer-events:auto}}
3326
3377
  .dcu-wb-collection-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
3327
3378
  .dcu-wb-collection-actions{flex-shrink:0;width:20px}
3328
- .dcu-wb-collections{display:grid;min-width:0;gap:4px}.dcu-wb-collection,.dcu-wb-ungrouped{position:relative;min-width:0;overflow:visible}.dcu-wb-collection-head{display:flex;align-items:center;min-height:28px;padding:0 4px;border-radius:6px;transition:background 120ms ease}.dcu-wb-collection-head:hover,.dcu-wb-collection-head:focus-within,.dcu-wb-collection-head.dcu-wb-group-drop{background:var(--dcu-sidebar-hover)}.dcu-wb-collection-head.dcu-wb-group-drop{outline:1px solid var(--dsw-alias-state-business-primary)}.dcu-wb-collection-head[draggable=true],.dcu-wb-collection-head[draggable=true] .dcu-wb-collection-label{cursor:grab}.dcu-wb-collection-head[draggable=true]:active,.dcu-wb-collection-head[draggable=true]:active .dcu-wb-collection-label{cursor:grabbing}.dcu-wb-collection-label{display:flex;align-items:center;gap:5px;min-width:0;flex:1;border:0;padding:4px;background:transparent;color:var(--dcu-sidebar-primary);font:13px/20px var(--dcu-font,inherit);text-align:left;cursor:pointer}.dcu-wb-collection-label .dcu-wb-section-caret{position:static;order:-1;opacity:.78}.dcu-wb-collection-label[aria-expanded=true] .dcu-wb-section-caret{transform:rotate(90deg)}.dcu-wb-collection-count{margin-left:auto;color:var(--dcu-sidebar-secondary);font-variant-numeric:tabular-nums}.dcu-wb-collection-body{position:relative;min-width:0;padding-left:12px}.dcu-wb-collection-body::before{content:"";position:absolute;left:31px;top:0;bottom:8px;width:1px;background:var(--dcu-sidebar-border)}.dcu-wb-group-member{position:relative}.dcu-wb-group-member.dcu-wb-drop::before,.dcu-wb-collection.dcu-wb-group-order-drop::before,.dcu-wb-ungrouped.dcu-wb-group-order-drop::before{content:"";position:absolute;z-index:2;left:7px;right:8px;top:-8px;height:8px;pointer-events:none;background:radial-gradient(circle at 4px 50%,transparent 1.75px,var(--dsw-alias-state-business-primary) 2px 3.75px,transparent 4px),linear-gradient(var(--dsw-alias-state-business-primary),var(--dsw-alias-state-business-primary)) 10px 50%/calc(100% - 10px) 2px no-repeat}.dcu-wb-group-member.dcu-wb-drop-after::before{top:auto;bottom:-8px}.dcu-wb-collection-body .dcu-wb-project-head{padding-left:12px}
3379
+ .dcu-wb-collections{display:grid;min-width:0;gap:4px}.dcu-wb-collection,.dcu-wb-ungrouped{position:relative;min-width:0;overflow:visible}.dcu-wb-collection-head{display:flex;align-items:center;min-height:28px;padding:0 4px;border-radius:6px;transition:background 120ms ease}.dcu-wb-collection-head:hover,.dcu-wb-collection-head:focus-within,.dcu-wb-collection-head.dcu-wb-group-drop{background:var(--dcu-sidebar-hover)}.dcu-wb-collection-head.dcu-wb-group-drop{outline:1px solid var(--dsw-alias-state-business-primary)}.dcu-wb-collection-head[draggable=true],.dcu-wb-collection-head[draggable=true] .dcu-wb-collection-label{cursor:grab}.dcu-wb-collection-head[draggable=true]:active,.dcu-wb-collection-head[draggable=true]:active .dcu-wb-collection-label{cursor:grabbing}.dcu-wb-collection-label{display:flex;align-items:center;gap:5px;min-width:0;flex:1;border:0;padding:4px;background:transparent;color:var(--dcu-sidebar-primary);font:13px/20px var(--dsw-font-family);text-align:left;cursor:pointer}.dcu-wb-collection-label .dcu-wb-section-caret{position:static;order:-1;opacity:.78}.dcu-wb-collection-label[aria-expanded=true] .dcu-wb-section-caret{transform:rotate(90deg)}.dcu-wb-collection-count{margin-left:auto;color:var(--dcu-sidebar-secondary);font-variant-numeric:tabular-nums}.dcu-wb-collection-body{position:relative;min-width:0;padding-left:12px}.dcu-wb-collection-body::before{content:"";position:absolute;left:31px;top:0;bottom:8px;width:1px;background:var(--dcu-sidebar-border)}.dcu-wb-group-member{position:relative}.dcu-wb-group-member.dcu-wb-drop::before,.dcu-wb-collection.dcu-wb-group-order-drop::before,.dcu-wb-ungrouped.dcu-wb-group-order-drop::before{content:"";position:absolute;z-index:2;left:7px;right:8px;top:-8px;height:8px;pointer-events:none;background:radial-gradient(circle at 4px 50%,transparent 1.75px,var(--dsw-alias-state-business-primary) 2px 3.75px,transparent 4px),linear-gradient(var(--dsw-alias-state-business-primary),var(--dsw-alias-state-business-primary)) 10px 50%/calc(100% - 10px) 2px no-repeat}.dcu-wb-group-member.dcu-wb-drop-after::before{top:auto;bottom:-8px}.dcu-wb-collection-body .dcu-wb-project-head{padding-left:12px}
3329
3380
  .dcu-wb-collection.dcu-wb-workspace-move-drop,.dcu-wb-ungrouped.dcu-wb-workspace-move-drop{border-radius:8px;background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 9%,transparent);outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}
3330
3381
  .dcu-wb-project-head,.dcu-wb-session{position:relative;display:flex;align-items:center;gap:6px;width:100%;min-width:0;border-radius:10px;padding:0 8px;color:var(--dcu-sidebar-primary);cursor:pointer}
3331
3382
  .dcu-wb-collection-body::before{left:calc(4px + 4px + 6px)}
@@ -3333,7 +3384,7 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
3333
3384
  .dcu-wb-project-head:hover,.dcu-wb-project-head.dcu-wb-menu-open,.dcu-wb-session:hover,.dcu-wb-session.dcu-wb-selected,.dcu-wb-session.dcu-wb-menu-open{background:var(--dcu-sidebar-hover)}.dcu-wb-project.dcu-wb-session-drop>.dcu-wb-project-head{border-radius:8px;background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 9%,transparent);outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}.dcu-wb-project.dcu-wb-session-move-drop{border-radius:8px;background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 9%,transparent);outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}.dcu-wb-project.dcu-wb-session-move-drop>.dcu-wb-project-head{background:transparent;outline:0}.dcu-wb-project-body>.dcu-wb-session:first-child,.dcu-wb-project-body>.dcu-wb-nochat:first-child{margin-top:4px}.dcu-wb-session+.dcu-wb-session{margin-top:2px}
3334
3385
  .dcu-wb-project-head[draggable=true],.dcu-wb-session[draggable=true]{cursor:grab}
3335
3386
  .dcu-wb-project-head[draggable=true]:active,.dcu-wb-session[draggable=true]:active{cursor:grabbing}
3336
- .dcu-wb-section,.dcu-wb-section:focus,.dcu-wb-section:focus-visible,.dcu-wb-project-head:focus,.dcu-wb-session:focus{outline:0}.dcu-wb-pinned-list{position:relative}.dcu-wb-pin-end,.dcu-wb-pin-start{position:absolute;left:0;right:0;height:8px;z-index:2;pointer-events:none}.dcu-wb-pin-end.dcu-wb-drop,.dcu-wb-pin-start.dcu-wb-drop{pointer-events:auto}.dcu-wb-pin-start{top:0}.dcu-wb-pin-end{bottom:-8px}.dcu-wb-project.dcu-wb-drop::before,.dcu-wb-session.dcu-wb-drop::before,.dcu-wb-pin-end.dcu-wb-drop::before,.dcu-wb-pin-start.dcu-wb-drop::before{content:"";position:absolute;z-index:2;left:7px;right:8px;top:-8px;height:8px;pointer-events:none;background:radial-gradient(circle at 4px 50%,transparent 1.75px,var(--dsw-alias-state-business-primary) 2px 3.75px,transparent 4px),linear-gradient(var(--dsw-alias-state-business-primary),var(--dsw-alias-state-business-primary)) 10px 50%/calc(100% - 10px) 2px no-repeat}.dcu-wb-pin-start.dcu-wb-drop::before{top:0}.dcu-wb-pinned-list>.dcu-wb-project:first-child.dcu-wb-drop::before{top:-4px}.dcu-wb-project.dcu-wb-drop-after::before,.dcu-wb-session.dcu-wb-drop-after::before{top:auto;bottom:-8px}.dcu-wb-dragging{opacity:.28}.dcu-wb-drag-ghost{position:fixed;top:8px;left:-9999px;z-index:10040;display:flex;align-items:center;gap:8px;max-width:220px;height:30px;padding:0 10px;border:1px solid var(--dcu-sidebar-border);border-radius:8px;background:var(--dcu-sidebar-hover);box-shadow:0 4px 12px rgba(0,0,0,.24);color:var(--dcu-sidebar-primary);font:14px/20px var(--dcu-font,inherit);white-space:nowrap;pointer-events:none}.dcu-wb-drag-ghost-icon{display:grid;place-items:center;flex:none;width:16px;height:16px;color:var(--dcu-sidebar-icon)}.dcu-wb-drag-ghost-icon svg{display:block;width:16px;height:16px}.dcu-wb-drag-ghost-title{min-width:0;overflow:hidden;text-overflow:ellipsis}
3387
+ .dcu-wb-section,.dcu-wb-section:focus,.dcu-wb-section:focus-visible,.dcu-wb-project-head:focus,.dcu-wb-session:focus{outline:0}.dcu-wb-pinned-list{position:relative}.dcu-wb-pin-end,.dcu-wb-pin-start{position:absolute;left:0;right:0;height:8px;z-index:2;pointer-events:none}.dcu-wb-pin-end.dcu-wb-drop,.dcu-wb-pin-start.dcu-wb-drop{pointer-events:auto}.dcu-wb-pin-start{top:0}.dcu-wb-pin-end{bottom:-8px}.dcu-wb-project.dcu-wb-drop::before,.dcu-wb-session.dcu-wb-drop::before,.dcu-wb-pin-end.dcu-wb-drop::before,.dcu-wb-pin-start.dcu-wb-drop::before{content:"";position:absolute;z-index:2;left:7px;right:8px;top:-8px;height:8px;pointer-events:none;background:radial-gradient(circle at 4px 50%,transparent 1.75px,var(--dsw-alias-state-business-primary) 2px 3.75px,transparent 4px),linear-gradient(var(--dsw-alias-state-business-primary),var(--dsw-alias-state-business-primary)) 10px 50%/calc(100% - 10px) 2px no-repeat}.dcu-wb-pin-start.dcu-wb-drop::before{top:0}.dcu-wb-pinned-list>.dcu-wb-project:first-child.dcu-wb-drop::before{top:-4px}.dcu-wb-project.dcu-wb-drop-after::before,.dcu-wb-session.dcu-wb-drop-after::before{top:auto;bottom:-8px}.dcu-wb-dragging{opacity:.28}.dcu-wb-drag-ghost{position:fixed;top:8px;left:-9999px;z-index:10040;display:flex;align-items:center;gap:8px;max-width:220px;height:30px;padding:0 10px;border:1px solid var(--dcu-sidebar-border);border-radius:8px;background:var(--dcu-sidebar-hover);box-shadow:0 4px 12px rgba(0,0,0,.24);color:var(--dcu-sidebar-primary);font:14px/20px var(--dsw-font-family);white-space:nowrap;pointer-events:none}.dcu-wb-drag-ghost-icon{display:grid;place-items:center;flex:none;width:16px;height:16px;color:var(--dcu-sidebar-icon)}.dcu-wb-drag-ghost-icon svg{display:block;width:16px;height:16px}.dcu-wb-drag-ghost-title{min-width:0;overflow:hidden;text-overflow:ellipsis}
3337
3388
  .dcu-wb-folder{display:grid;place-items:center;flex:none;width:16px;height:20px;color:var(--dcu-sidebar-icon)}.dcu-wb-folder.dcu-wb-folder-current{color:var(--dsw-alias-state-business-primary)}.dcu-wb-brand{display:block;width:16px;height:16px}
3338
3389
  .dcu-wb-project-title,.dcu-wb-session-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:20px}
3339
3390
  .dcu-wb-project-title{flex:1;font-weight:400;color:var(--dcu-sidebar-primary)}
@@ -3346,7 +3397,7 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
3346
3397
  .dcu-wb-more{display:grid;place-items:center;width:20px;height:20px;border:0;border-radius:4px;padding:0;background:transparent;color:var(--dcu-sidebar-tertiary);cursor:pointer}
3347
3398
  .dcu-wb-more:hover{color:var(--dcu-sidebar-primary)}
3348
3399
  .dcu-wb-context-anchor{opacity:0;pointer-events:none}
3349
- .dcu-wb-tip{position:fixed;z-index:10050;min-width:220px;max-width:280px;padding:10px 12px;border:1px solid var(--dcu-sidebar-border);border-radius:12px;background:var(--dcu-tip-bg,#fff);box-shadow:var(--dcu-tip-shadow,0 8px 28px rgba(31,39,36,.16));color:var(--dcu-sidebar-primary);animation:dcu-tip-in 180ms cubic-bezier(.16,1,.3,1)}.dcu-wb-tip-workspace{width:316px;min-width:0;max-width:calc(100vw - 16px);padding:10px 8px 8px}@keyframes dcu-tip-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.dcu-wb-tip{animation:none}}.dcu-wb-tip-title{display:flex;align-items:center;gap:6px;min-width:0;min-height:20px;font-size:14px;line-height:20px;font-weight:500}.dcu-wb-tip-title-main{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dcu-wb-tip-time{flex:none;margin-left:auto;color:var(--dcu-sidebar-tertiary);font-size:12px;line-height:18px;font-weight:400}.dcu-wb-tip-pin{display:grid;place-items:center;flex:none;width:20px;height:20px;border:0;border-radius:4px;padding:0;background:transparent;color:var(--dcu-sidebar-tertiary);cursor:pointer}.dcu-wb-tip-pin:hover{background:var(--dcu-sidebar-hover);color:var(--dcu-sidebar-primary)}.dcu-wb-tip-meta,.dcu-wb-tip-row{display:flex;align-items:center;gap:6px;min-width:0;margin-top:4px;color:var(--dcu-sidebar-secondary);font-size:14px;line-height:20px}.dcu-wb-tip-meta svg,.dcu-wb-tip-row svg{flex:none}.dcu-wb-tip-row>span:not(.dcu-wb-folder){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dcu-wb-tip-path{align-items:flex-start;margin-top:8px}.dcu-wb-tip-path-copy{min-width:0;overflow-wrap:anywhere;white-space:normal}.dcu-wb-tip-sep{height:1px;margin:8px 0 4px;background:var(--dcu-sidebar-border)}.dcu-wb-tip-edit{display:flex;align-items:center;gap:6px;width:100%;min-height:24px;border:0;padding:2px 0;background:transparent;color:var(--dcu-sidebar-primary);font:14px/20px var(--dcu-font,inherit);text-align:left;cursor:pointer}.dcu-wb-tip-edit svg{flex:none;color:var(--dcu-sidebar-secondary)}
3400
+ .dcu-wb-tip{position:fixed;z-index:10050;min-width:220px;max-width:280px;padding:10px 12px;border:1px solid var(--dcu-sidebar-border);border-radius:12px;background:var(--dcu-tip-bg,#fff);box-shadow:var(--dcu-tip-shadow,0 8px 28px rgba(31,39,36,.16));color:var(--dcu-sidebar-primary);animation:dcu-tip-in 180ms cubic-bezier(.16,1,.3,1)}.dcu-wb-tip-workspace{width:316px;min-width:0;max-width:calc(100vw - 16px);padding:10px 8px 8px}@keyframes dcu-tip-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.dcu-wb-tip{animation:none}}.dcu-wb-tip-title{display:flex;align-items:center;gap:6px;min-width:0;min-height:20px;font-size:14px;line-height:20px;font-weight:500}.dcu-wb-tip-title-main{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dcu-wb-tip-time{flex:none;margin-left:auto;color:var(--dcu-sidebar-tertiary);font-size:12px;line-height:18px;font-weight:400}.dcu-wb-tip-pin{display:grid;place-items:center;flex:none;width:20px;height:20px;border:0;border-radius:4px;padding:0;background:transparent;color:var(--dcu-sidebar-tertiary);cursor:pointer}.dcu-wb-tip-pin:hover{background:var(--dcu-sidebar-hover);color:var(--dcu-sidebar-primary)}.dcu-wb-tip-meta,.dcu-wb-tip-row{display:flex;align-items:center;gap:6px;min-width:0;margin-top:4px;color:var(--dcu-sidebar-secondary);font-size:14px;line-height:20px}.dcu-wb-tip-meta svg,.dcu-wb-tip-row svg{flex:none}.dcu-wb-tip-row>span:not(.dcu-wb-folder){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dcu-wb-tip-path{align-items:flex-start;margin-top:8px}.dcu-wb-tip-path-copy{min-width:0;overflow-wrap:anywhere;white-space:normal}.dcu-wb-tip-sep{height:1px;margin:8px 0 4px;background:var(--dcu-sidebar-border)}.dcu-wb-tip-edit{display:flex;align-items:center;gap:6px;width:100%;min-height:24px;border:0;padding:2px 0;background:transparent;color:var(--dcu-sidebar-primary);font:14px/20px var(--dsw-font-family);text-align:left;cursor:pointer}.dcu-wb-tip-edit svg{flex:none;color:var(--dcu-sidebar-secondary)}
3350
3401
  .dcu-wb-session:has(.dcu-wb-pending){padding-right:112px}.dcu-wb-unread{position:absolute;right:13px;top:50%;width:7px;height:7px;margin:-3.5px 0 0;border-radius:50%;background:var(--dsw-alias-state-business-primary)}
3351
3402
  .dcu-wb-pending{position:absolute;right:10px;top:50%;display:flex;align-items:center;gap:4px;max-width:88px;margin:0;transform:translateY(-50%);color:var(--dsw-alias-state-warn-label,#b45309);font-size:11px;line-height:16px;white-space:nowrap}.dcu-wb-pending-dot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--dsw-alias-state-warn-primary,#f59e0b)}.dcu-wb-pending-label{min-width:0;overflow:hidden;text-overflow:ellipsis}
3352
3403
  .dcu-wb-empty{padding:14px 8px;color:var(--dcu-sidebar-tertiary);font-size:13px}
@@ -3355,13 +3406,13 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
3355
3406
  .dcu-wb-rename-actions{display:flex;justify-content:flex-end;gap:8px}
3356
3407
  .dcu-wb-delete-button{color:var(--dsw-alias-state-error-primary)!important}
3357
3408
  .dcu-wb-delete-copy{margin:0;color:var(--dcu-sidebar-secondary);font-size:13px;line-height:20px}
3358
- .dcu-wb-move-target{display:flex;min-width:0;align-items:center;gap:8px;margin-top:4px;color:var(--dcu-sidebar-primary);font:14px/20px var(--dcu-font,inherit)}.dcu-wb-move-target svg{flex:none;color:var(--dcu-sidebar-secondary)}.dcu-wb-move-target-copy{min-width:0}.dcu-wb-move-project,.dcu-wb-move-path{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dcu-wb-move-path{color:var(--dcu-sidebar-tertiary);font-size:12px}
3359
- .dcu-wb-rename-input{box-sizing:border-box;width:100%;height:36px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:7px 10px;outline:0;background:var(--dsw-alias-background-secondary);color:var(--dsw-alias-label-primary);font:14px/20px var(--dsw-font-family,inherit);caret-color:var(--dsw-alias-state-business-primary);transition:border-color 120ms ease,box-shadow 120ms ease}
3409
+ .dcu-wb-move-target{display:flex;min-width:0;align-items:center;gap:8px;margin-top:4px;color:var(--dcu-sidebar-primary);font:14px/20px var(--dsw-font-family)}.dcu-wb-move-target svg{flex:none;color:var(--dcu-sidebar-secondary)}.dcu-wb-move-target-copy{min-width:0}.dcu-wb-move-project,.dcu-wb-move-path{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dcu-wb-move-path{color:var(--dcu-sidebar-tertiary);font-size:12px}
3410
+ .dcu-wb-rename-input{box-sizing:border-box;width:100%;height:36px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:7px 10px;outline:0;background:var(--dsw-alias-background-secondary);color:var(--dsw-alias-label-primary);font:14px/20px var(--dsw-font-family);caret-color:var(--dsw-alias-state-business-primary);transition:border-color 120ms ease,box-shadow 120ms ease}
3360
3411
  .dcu-wb-rename-input:hover{border-color:color-mix(in srgb,var(--dsw-alias-label-primary) 32%,var(--dsw-alias-border-l2))}
3361
3412
  .dcu-wb-rename-input:focus{border-color:var(--dsw-alias-state-business-primary);box-shadow:0 0 0 1px color-mix(in srgb,var(--dsw-alias-state-business-primary) 28%,transparent)}
3362
3413
  `;
3363
3414
  const runningStyles = `.dcu-wb-running{position:absolute;left:8px;top:50%;display:grid;place-items:center;flex:none;width:16px;height:20px;margin-top:-10px;border:0;background:transparent}.dcu-wb-running::after{content:"";box-sizing:border-box;width:12px;height:12px;border:2px solid color-mix(in srgb,var(--dcu-sidebar-secondary) 25%,transparent);border-top-color:var(--dcu-sidebar-secondary);border-radius:50%;animation:dcu-wb-spin .8s linear infinite}@keyframes dcu-wb-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.dcu-wb-running::after{animation:none}}`;
3364
- const typographyStyles = `.dcu-wb{--dcu-wb-disclosure-duration:180ms;--dcu-wb-disclosure-ease:cubic-bezier(.16,1,.3,1);font:14px/20px var(--dcu-font,var(--dsw-font-family))}.dcu-wb-section-label{color:var(--dcu-sidebar-secondary);font:13px/20px var(--dcu-font,var(--dsw-font-family));font-weight:400;letter-spacing:0;padding-left:0}.dcu-wb-section-caret{transition:opacity var(--dcu-wb-disclosure-duration) var(--dcu-wb-disclosure-ease),transform var(--dcu-wb-disclosure-duration) var(--dcu-wb-disclosure-ease)}.dcu-wb-section-head .dcu-wb-section-caret{position:static;left:auto;top:auto;opacity:.78}.dcu-wb-section-body,.dcu-wb-project-body,.dcu-wb-collection-body{display:block;min-height:0;height:auto;overflow:clip;opacity:1;transform:none;visibility:visible}.dcu-wb-section-body[data-open=false],.dcu-wb-project-body[data-open=false],.dcu-wb-collection-body[data-open=false]{display:block;height:0;opacity:0;transform:translateY(-2px);pointer-events:none}.dcu-wb-section-body[data-open=true]:has(.dcu-wb-drop),.dcu-wb-project-body[data-open=true]:has(.dcu-wb-drop),.dcu-wb-collection-body[data-open=true]:has(.dcu-wb-drop){overflow:visible}.dcu-wb-section-body[data-open=true]>div{animation:none}@media (prefers-reduced-motion:reduce){.dcu-wb-section-caret{transition:none}}.dcu-wb-project-title{font-size:14px;line-height:20px;font-weight:400;color:var(--dcu-sidebar-primary)}.dcu-wb-session-title{font-size:14px;line-height:20px;font-weight:400;color:var(--dcu-sidebar-secondary)}.dcu-wb-session.dcu-wb-selected .dcu-wb-session-title,.dcu-wb-session:hover .dcu-wb-session-title{color:var(--dcu-sidebar-primary)}.dcu-wb-empty{color:var(--dcu-sidebar-tertiary);font-size:13px;line-height:18px}`;
3415
+ const typographyStyles = `.dcu-wb{--dcu-wb-disclosure-duration:180ms;--dcu-wb-disclosure-ease:cubic-bezier(.16,1,.3,1);font:14px/20px var(--dsw-font-family)}.dcu-wb-section-label{color:var(--dcu-sidebar-secondary);font:13px/20px var(--dsw-font-family);font-weight:400;letter-spacing:0;padding-left:0}.dcu-wb-section-caret{transition:opacity var(--dcu-wb-disclosure-duration) var(--dcu-wb-disclosure-ease),transform var(--dcu-wb-disclosure-duration) var(--dcu-wb-disclosure-ease)}.dcu-wb-section-head .dcu-wb-section-caret{position:static;left:auto;top:auto;opacity:.78}.dcu-wb-section-body,.dcu-wb-project-body,.dcu-wb-collection-body{display:block;min-height:0;height:auto;overflow:clip;opacity:1;transform:none;visibility:visible}.dcu-wb-section-body[data-open=false],.dcu-wb-project-body[data-open=false],.dcu-wb-collection-body[data-open=false]{display:block;height:0;opacity:0;transform:translateY(-2px);pointer-events:none}.dcu-wb-section-body[data-open=true]:has(.dcu-wb-drop),.dcu-wb-project-body[data-open=true]:has(.dcu-wb-drop),.dcu-wb-collection-body[data-open=true]:has(.dcu-wb-drop){overflow:visible}.dcu-wb-section-body[data-open=true]>div{animation:none}@media (prefers-reduced-motion:reduce){.dcu-wb-section-caret{transition:none}}.dcu-wb-project-title{font-size:14px;line-height:20px;font-weight:400;color:var(--dcu-sidebar-primary)}.dcu-wb-session-title{font-size:14px;line-height:20px;font-weight:400;color:var(--dcu-sidebar-secondary)}.dcu-wb-session.dcu-wb-selected .dcu-wb-session-title,.dcu-wb-session:hover .dcu-wb-session-title{color:var(--dcu-sidebar-primary)}.dcu-wb-empty{color:var(--dcu-sidebar-tertiary);font-size:13px;line-height:18px}`;
3365
3416
  const collectionLayoutStyles = `
3366
3417
  .dcu-wb-tree{position:relative}
3367
3418
  .dcu-wb-tree[data-drop-indicator=measured] .dcu-wb-drop::before,.dcu-wb-tree[data-drop-indicator=measured] .dcu-wb-group-order-drop::before{display:none}
@@ -3376,6 +3427,9 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
3376
3427
  .dcu-wb-collection-body>.dcu-wb-empty{padding:8px 8px 8px 26px}
3377
3428
  .dcu-wb-collection-body>.dcu-wb-empty,.dcu-wb-nochat{font-size:13px;line-height:18px;color:var(--dcu-sidebar-tertiary)}
3378
3429
  .dcu-wb-nochat{padding:1px 8px 5px 30px}
3430
+ .dcu-wb-session-more{display:flex;gap:4px;padding:2px 8px 2px 30px}
3431
+ .dcu-wb-session-more button{height:28px;border:0;border-radius:8px;padding:0 8px;background:transparent;color:var(--dcu-sidebar-tertiary);font:13px/20px var(--dsw-font-family);cursor:pointer}
3432
+ .dcu-wb-session-more button:hover{color:var(--dcu-sidebar-secondary)}
3379
3433
  .dcu-wb-collection:has(+.dcu-wb-collection)>.dcu-wb-collection-body>.dcu-wb-empty,.dcu-wb-collection:has(+.dcu-wb-ungrouped)>.dcu-wb-collection-body>.dcu-wb-empty{padding-top:14px;padding-bottom:2px}
3380
3434
  .dcu-wb-collection-body::before,.dcu-wb-group-member::after{display:none}
3381
3435
  .dcu-wb-collections{gap:12px}
@@ -3420,6 +3474,13 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
3420
3474
  const workspaces = useWorkspaces((state) => state);
3421
3475
  const baselinesReady = workspaceBaselinesReady(workspaces, sessions);
3422
3476
  const [expanded, setExpanded] = (0, react.useState)(() => readTreeExpansionState(storage$1(), WORKSPACE_EXPANSION_STORAGE_KEY));
3477
+ const [sessionWindows, setSessionWindows] = (0, react.useState)({});
3478
+ const revealMoreSessions = (workspaceId) => {
3479
+ setSessionWindows((current) => ({
3480
+ ...current,
3481
+ [workspaceId]: nextProjectSessionWindow(current[workspaceId])
3482
+ }));
3483
+ };
3423
3484
  const [pinnedWorkspaceIds, setPinnedWorkspaceIdsState] = (0, react.useState)(() => readPinnedWorkspaceIds(storage$1()));
3424
3485
  const initialWorkspaceGroups = (0, react.useMemo)(() => readWorkspaceGroupsCache(storage$1()), []);
3425
3486
  const [workspaceGroups, setWorkspaceGroupsState] = (0, react.useState)(() => initialWorkspaceGroups.workspaceGroups);
@@ -3777,6 +3838,13 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
3777
3838
  [key]: !(current[key] ?? defaultOpen)
3778
3839
  }));
3779
3840
  };
3841
+ const toggleProject = (expandKey, id) => {
3842
+ if (expanded[expandKey] ?? true) setSessionWindows((current) => ({
3843
+ ...current,
3844
+ [id]: collapseProjectSessionWindow()
3845
+ }));
3846
+ toggleGroup(expandKey, true);
3847
+ };
3780
3848
  const submitCreateGroup = () => {
3781
3849
  if (groupTitleDraft.trim() === "") return;
3782
3850
  try {
@@ -3981,6 +4049,12 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
3981
4049
  } : void 0;
3982
4050
  const isPinnedHeaderDrop = zone === "pinned" && pinnedHeaderDrop?.kind === "workspace" && pinnedHeaderDrop.workspaceId === String(workspace.workspaceId);
3983
4051
  const workspaceId = String(workspace.workspaceId);
4052
+ const sessionWindow = projectSessionWindow(shownIds, sessionWindows[workspaceId] ?? {
4053
+ expanded: false,
4054
+ page: 1
4055
+ }, currentSessionId !== void 0 && shownIds.includes(currentSessionId) ? currentSessionId : void 0);
4056
+ const renderedIds = sessionWindow.ids;
4057
+ const dropAfterSessionId = sessionDropTarget?.workspaceId === workspaceId && sessionDropTarget.ontoProject !== true ? sessionDropAfterRowId(sessionDropTarget, renderedIds) : void 0;
3984
4058
  const zoneIds = zone === "pinned" ? pinnedGroupIds : regularGroupIds;
3985
4059
  const dropsBefore = workspaceDropTarget?.zone === zone && workspaceDropTarget.beforeId === workspaceId;
3986
4060
  const dropsAfterLast = zone === "projects" && workspaceDropTarget?.zone === zone && workspaceDropTarget.beforeId === void 0 && zoneIds[zoneIds.length - 1] === workspaceId;
@@ -4078,7 +4152,7 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
4078
4152
  setWorkspaceGroupDropTarget(void 0);
4079
4153
  },
4080
4154
  onClick: () => {
4081
- toggleGroup(expandKey, true);
4155
+ toggleProject(expandKey, workspaceId);
4082
4156
  },
4083
4157
  onContextMenu: (event) => {
4084
4158
  event.preventDefault();
@@ -4109,7 +4183,7 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
4109
4183
  onKeyDown: (event) => {
4110
4184
  if (event.key === "Enter" || event.key === " ") {
4111
4185
  event.preventDefault();
4112
- toggleGroup(expandKey, true);
4186
+ toggleProject(expandKey, workspaceId);
4113
4187
  }
4114
4188
  },
4115
4189
  children: [
@@ -4188,180 +4262,194 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
4188
4262
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(DisclosureBody, {
4189
4263
  className: "dcu-wb-project-body",
4190
4264
  open: isExpanded,
4191
- children: [shownIds.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
4192
- className: "dcu-wb-nochat",
4193
- children: t("workspace.noChat")
4194
- }), shownIds.map((id) => {
4195
- const session = sessions.byId[id];
4196
- if (session === void 0) return null;
4197
- const pendingInteraction = pendingInteractionForSession(id, pendingInteractions, legacyPendingInteraction(session));
4198
- const path = session.cwd ?? workspace.path;
4199
- const selected = selectedId === id;
4200
- const sessionMenuOpen = menu?.type === "session" && menu.id === id;
4201
- const sessionMenuAt = sessionMenuOpen && menu.x !== void 0 && menu.y !== void 0 ? {
4202
- x: menu.x,
4203
- y: menu.y
4204
- } : void 0;
4205
- const dropsBeforeSession = sessionDropTarget?.workspaceId === workspaceId && sessionDropTarget.ontoProject !== true && sessionDropTarget.beforeId === id;
4206
- const dropsAfterLastSession = sessionDropTarget?.workspaceId === workspaceId && sessionDropTarget.ontoProject !== true && sessionDropTarget.beforeId === void 0 && shownIds[shownIds.length - 1] === id;
4207
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4208
- "data-dcu-session": id,
4209
- className: `dcu-wb-session${selected ? " dcu-wb-selected" : ""}${sessionMenuOpen ? " dcu-wb-menu-open" : ""}${dropsBeforeSession ? " dcu-wb-drop" : ""}${dropsAfterLastSession ? " dcu-wb-drop dcu-wb-drop-after" : ""}`,
4210
- role: "treeitem",
4211
- "aria-selected": selected,
4212
- draggable: true,
4213
- onDragStart: (event) => {
4214
- event.stopPropagation();
4215
- setWorkspaceDragId(void 0);
4216
- setWorkspaceDropTarget(void 0);
4217
- setWorkspaceGroupDragId(void 0);
4218
- setWorkspaceGroupDropTarget(void 0);
4219
- writeSessionDrag(event.dataTransfer, id, session.displayTitle);
4220
- setDragPreview(event.dataTransfer, session.displayTitle);
4221
- setSessionDrag({
4222
- sessionId: id,
4223
- workspaceId
4224
- });
4225
- },
4226
- onDragEnd: () => {
4227
- setSessionDrag(void 0);
4228
- setSessionDropTarget(void 0);
4229
- setWorkspaceGroupDropTarget(void 0);
4230
- },
4231
- onDragOver: (event) => {
4232
- const drag = sessionDrag;
4233
- if (drag === void 0 || drag.workspaceId !== workspaceId) return;
4234
- event.preventDefault();
4235
- event.stopPropagation();
4236
- event.dataTransfer.dropEffect = "move";
4237
- const rect = event.currentTarget.getBoundingClientRect();
4238
- const beforeId = reorderDropBeforeId(shownIds, drag.sessionId, id, event.clientY > rect.top + rect.height / 2);
4239
- setSessionDropTarget(beforeId === null ? void 0 : {
4240
- workspaceId,
4241
- beforeId
4242
- });
4243
- },
4244
- onDragLeave: (event) => {
4245
- if (event.currentTarget.contains(event.relatedTarget)) return;
4246
- setSessionDropTarget(void 0);
4247
- },
4248
- onDrop: (event) => {
4249
- const drag = sessionDrag;
4250
- if (drag === void 0 || drag.workspaceId !== workspaceId) return;
4251
- event.preventDefault();
4252
- event.stopPropagation();
4253
- const rect = event.currentTarget.getBoundingClientRect();
4254
- setSessionDrag(void 0);
4255
- setSessionDropTarget(void 0);
4256
- const beforeId = reorderDropBeforeId(shownIds, drag.sessionId, id, event.clientY > rect.top + rect.height / 2);
4257
- if (beforeId !== null) run("session-order", () => insertSessionBefore(workspace.workspaceId, drag.sessionId, beforeId));
4258
- },
4259
- onClick: () => {
4260
- setUnreadSessionIds((ids) => ids.filter((item) => item !== id));
4261
- openSession(id);
4262
- },
4263
- onContextMenu: (event) => {
4264
- event.preventDefault();
4265
- event.stopPropagation();
4266
- dismissTip();
4267
- setMenu({
4268
- id,
4269
- type: "session",
4270
- x: event.clientX,
4271
- y: event.clientY
4272
- });
4273
- },
4274
- onMouseEnter: (event) => {
4275
- const box = hoverCardAnchor(event.currentTarget.getBoundingClientRect());
4276
- const branch = optionalText(session, "branch");
4277
- showTip({
4278
- kind: "session",
4279
- id,
4280
- title: session.displayTitle,
4281
- project: workspace.title,
4282
- path,
4283
- branch,
4284
- time: formatHoverTime(session.updatedAt, t, now),
4285
- left: box.left,
4286
- top: box.top
4287
- });
4288
- },
4289
- onMouseLeave: hideTip,
4290
- children: [
4291
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SessionRowTitle, { title: session.displayTitle }),
4292
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SessionState, {
4293
- pendingInteraction,
4294
- unread: rowUnread(id),
4295
- running: rowRunning(id, session),
4296
- t
4297
- }),
4298
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SessionTime, { time: formatCompactTime(session.updatedAt, t, now) }),
4299
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4300
- className: "dcu-wb-quick-actions",
4301
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4302
- type: "button",
4303
- className: "dcu-wb-more",
4304
- "aria-label": t("sessions.archive"),
4305
- onClick: (event) => {
4306
- event.stopPropagation();
4307
- run("archive", () => archiveSession(id));
4308
- },
4309
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(QuickArchiveIcon, {})
4310
- })
4311
- }),
4312
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4313
- className: "dcu-wb-actions",
4314
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
4315
- open: sessionMenuOpen,
4316
- onClose: () => {
4317
- setMenu(void 0);
4318
- },
4319
- items: sessionMenu(id, path),
4320
- onSelect: (action) => {
4321
- if (busy !== void 0 || runSessionMoveAction(action, id)) return;
4322
- if (action === "rename") beginRename("session", id, session.displayTitle);
4323
- if (action === "unread") {
4324
- setUnreadSessionIds((ids) => toggleSessionId(ids, id));
4325
- setMenu(void 0);
4326
- }
4327
- if (action === "archive") run("archive", () => archiveSession(id));
4328
- if (action === "delete") {
4329
- setDeleteTarget({
4330
- id,
4331
- kind: "session",
4332
- title: session.displayTitle
4333
- });
4334
- setError(void 0);
4335
- setMenu(void 0);
4336
- }
4337
- if (action === "fork") run("fork", () => forkSession(id));
4338
- if (action === "openPath" && path !== void 0) openPathImmediately(path);
4339
- if (action === "copyPath") copy(path);
4340
- if (action === "copyTitle") copy(session.displayTitle);
4341
- if (action === "copyId") copy(id);
4342
- },
4343
- portal: true,
4344
- dense: true,
4345
- compact: true,
4346
- getAnchorRect: sessionMenuAt === void 0 ? void 0 : () => pointerMenuRect(sessionMenuAt.x, sessionMenuAt.y),
4347
- anchor: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4265
+ children: [
4266
+ shownIds.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
4267
+ className: "dcu-wb-nochat",
4268
+ children: t("workspace.noChat")
4269
+ }),
4270
+ renderedIds.map((id) => {
4271
+ const session = sessions.byId[id];
4272
+ if (session === void 0) return null;
4273
+ const pendingInteraction = pendingInteractionForSession(id, pendingInteractions, legacyPendingInteraction(session));
4274
+ const path = session.cwd ?? workspace.path;
4275
+ const selected = selectedId === id;
4276
+ const sessionMenuOpen = menu?.type === "session" && menu.id === id;
4277
+ const sessionMenuAt = sessionMenuOpen && menu.x !== void 0 && menu.y !== void 0 ? {
4278
+ x: menu.x,
4279
+ y: menu.y
4280
+ } : void 0;
4281
+ const dropsBeforeSession = sessionDropTarget?.workspaceId === workspaceId && sessionDropTarget.ontoProject !== true && sessionDropTarget.beforeId === id;
4282
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4283
+ "data-dcu-session": id,
4284
+ className: `dcu-wb-session${selected ? " dcu-wb-selected" : ""}${sessionMenuOpen ? " dcu-wb-menu-open" : ""}${dropsBeforeSession ? " dcu-wb-drop" : ""}${dropAfterSessionId !== void 0 && id === dropAfterSessionId ? " dcu-wb-drop dcu-wb-drop-after" : ""}`,
4285
+ role: "treeitem",
4286
+ "aria-selected": selected,
4287
+ draggable: true,
4288
+ onDragStart: (event) => {
4289
+ event.stopPropagation();
4290
+ setWorkspaceDragId(void 0);
4291
+ setWorkspaceDropTarget(void 0);
4292
+ setWorkspaceGroupDragId(void 0);
4293
+ setWorkspaceGroupDropTarget(void 0);
4294
+ writeSessionDrag(event.dataTransfer, id, session.displayTitle);
4295
+ setDragPreview(event.dataTransfer, session.displayTitle);
4296
+ setSessionDrag({
4297
+ sessionId: id,
4298
+ workspaceId
4299
+ });
4300
+ },
4301
+ onDragEnd: () => {
4302
+ setSessionDrag(void 0);
4303
+ setSessionDropTarget(void 0);
4304
+ setWorkspaceGroupDropTarget(void 0);
4305
+ },
4306
+ onDragOver: (event) => {
4307
+ const drag = sessionDrag;
4308
+ if (drag === void 0 || drag.workspaceId !== workspaceId) return;
4309
+ event.preventDefault();
4310
+ event.stopPropagation();
4311
+ event.dataTransfer.dropEffect = "move";
4312
+ const rect = event.currentTarget.getBoundingClientRect();
4313
+ const beforeId = reorderDropBeforeId(shownIds, drag.sessionId, id, event.clientY > rect.top + rect.height / 2);
4314
+ setSessionDropTarget(beforeId === null ? void 0 : {
4315
+ workspaceId,
4316
+ beforeId,
4317
+ hoveredId: id
4318
+ });
4319
+ },
4320
+ onDragLeave: (event) => {
4321
+ if (event.currentTarget.contains(event.relatedTarget)) return;
4322
+ setSessionDropTarget(void 0);
4323
+ },
4324
+ onDrop: (event) => {
4325
+ const drag = sessionDrag;
4326
+ if (drag === void 0 || drag.workspaceId !== workspaceId) return;
4327
+ event.preventDefault();
4328
+ event.stopPropagation();
4329
+ const rect = event.currentTarget.getBoundingClientRect();
4330
+ setSessionDrag(void 0);
4331
+ setSessionDropTarget(void 0);
4332
+ const beforeId = reorderDropBeforeId(shownIds, drag.sessionId, id, event.clientY > rect.top + rect.height / 2);
4333
+ if (beforeId !== null) run("session-order", () => insertSessionBefore(workspace.workspaceId, drag.sessionId, beforeId));
4334
+ },
4335
+ onClick: () => {
4336
+ setUnreadSessionIds((ids) => ids.filter((item) => item !== id));
4337
+ openSession(id);
4338
+ },
4339
+ onContextMenu: (event) => {
4340
+ event.preventDefault();
4341
+ event.stopPropagation();
4342
+ dismissTip();
4343
+ setMenu({
4344
+ id,
4345
+ type: "session",
4346
+ x: event.clientX,
4347
+ y: event.clientY
4348
+ });
4349
+ },
4350
+ onMouseEnter: (event) => {
4351
+ const box = hoverCardAnchor(event.currentTarget.getBoundingClientRect());
4352
+ const branch = optionalText(session, "branch");
4353
+ showTip({
4354
+ kind: "session",
4355
+ id,
4356
+ title: session.displayTitle,
4357
+ project: workspace.title,
4358
+ path,
4359
+ branch,
4360
+ time: formatHoverTime(session.updatedAt, t, now),
4361
+ left: box.left,
4362
+ top: box.top
4363
+ });
4364
+ },
4365
+ onMouseLeave: hideTip,
4366
+ children: [
4367
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SessionRowTitle, { title: session.displayTitle }),
4368
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SessionState, {
4369
+ pendingInteraction,
4370
+ unread: rowUnread(id),
4371
+ running: rowRunning(id, session),
4372
+ t
4373
+ }),
4374
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SessionTime, { time: formatCompactTime(session.updatedAt, t, now) }),
4375
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4376
+ className: "dcu-wb-quick-actions",
4377
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4348
4378
  type: "button",
4349
- className: "dcu-wb-more dcu-wb-context-anchor",
4350
- "aria-label": t("sessions.actions", { name: session.displayTitle }),
4379
+ className: "dcu-wb-more",
4380
+ "aria-label": t("sessions.archive"),
4351
4381
  onClick: (event) => {
4352
4382
  event.stopPropagation();
4353
- setMenu((current) => current?.id === id && current?.type === "session" ? void 0 : {
4354
- id,
4355
- type: "session"
4356
- });
4383
+ run("archive", () => archiveSession(id));
4357
4384
  },
4358
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconEllipsisOutline16, { size: 16 })
4385
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(QuickArchiveIcon, {})
4386
+ })
4387
+ }),
4388
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4389
+ className: "dcu-wb-actions",
4390
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
4391
+ open: sessionMenuOpen,
4392
+ onClose: () => {
4393
+ setMenu(void 0);
4394
+ },
4395
+ items: sessionMenu(id, path),
4396
+ onSelect: (action) => {
4397
+ if (busy !== void 0 || runSessionMoveAction(action, id)) return;
4398
+ if (action === "rename") beginRename("session", id, session.displayTitle);
4399
+ if (action === "unread") {
4400
+ setUnreadSessionIds((ids) => toggleSessionId(ids, id));
4401
+ setMenu(void 0);
4402
+ }
4403
+ if (action === "archive") run("archive", () => archiveSession(id));
4404
+ if (action === "delete") {
4405
+ setDeleteTarget({
4406
+ id,
4407
+ kind: "session",
4408
+ title: session.displayTitle
4409
+ });
4410
+ setError(void 0);
4411
+ setMenu(void 0);
4412
+ }
4413
+ if (action === "fork") run("fork", () => forkSession(id));
4414
+ if (action === "openPath" && path !== void 0) openPathImmediately(path);
4415
+ if (action === "copyPath") copy(path);
4416
+ if (action === "copyTitle") copy(session.displayTitle);
4417
+ if (action === "copyId") copy(id);
4418
+ },
4419
+ portal: true,
4420
+ dense: true,
4421
+ compact: true,
4422
+ getAnchorRect: sessionMenuAt === void 0 ? void 0 : () => pointerMenuRect(sessionMenuAt.x, sessionMenuAt.y),
4423
+ anchor: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4424
+ type: "button",
4425
+ className: "dcu-wb-more dcu-wb-context-anchor",
4426
+ "aria-label": t("sessions.actions", { name: session.displayTitle }),
4427
+ onClick: (event) => {
4428
+ event.stopPropagation();
4429
+ setMenu((current) => current?.id === id && current?.type === "session" ? void 0 : {
4430
+ id,
4431
+ type: "session"
4432
+ });
4433
+ },
4434
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconEllipsisOutline16, { size: 16 })
4435
+ })
4359
4436
  })
4360
4437
  })
4361
- })
4362
- ]
4363
- }, id);
4364
- })]
4438
+ ]
4439
+ }, id);
4440
+ }),
4441
+ sessionWindow.showMore && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
4442
+ className: "dcu-wb-session-more",
4443
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4444
+ type: "button",
4445
+ onClick: (event) => {
4446
+ event.stopPropagation();
4447
+ revealMoreSessions(workspaceId);
4448
+ },
4449
+ children: t("workspace.showMore")
4450
+ })
4451
+ })
4452
+ ]
4365
4453
  })]
4366
4454
  }, workspace.workspaceId);
4367
4455
  };
@@ -6493,7 +6581,7 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
6493
6581
  [data-phase=hero] [class*="_composerHero"] [class$="_fishHitbox"]>svg{width:46px;height:auto}
6494
6582
  [data-phase=hero] [class*="_heroWorkspaceRow"]{box-sizing:border-box;flex:none;width:min(calc(var(--dsh-composer-card-max-width) + 2 * var(--dsh-composer-side-clearance) - 56px),calc(100% - 56px));align-self:center;justify-content:flex-start;flex-wrap:wrap;gap:8px;min-height:48px;margin:0 28px -10px;padding:6px 12px 16px;border-radius:18px 18px 0 0;background:color-mix(in srgb,var(--dsw-alias-label-primary) 4%,var(--dsw-alias-bg-base))}
6495
6583
  [data-phase=hero] [class*="_heroWorkspaceRow"]>[class$="_workspace"]{min-width:0;max-width:100%;font-weight:400}
6496
- .dcu-home-suggestions{width:100%;color:var(--dsw-alias-label-primary);font:13px/20px var(--dsw-font-family,system-ui)}
6584
+ .dcu-home-suggestions{width:100%;color:var(--dsw-alias-label-primary);font:13px/20px var(--dsw-font-family)}
6497
6585
  .dcu-home-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
6498
6586
  .dcu-home-card{appearance:none;display:flex;flex-direction:column;justify-content:space-between;gap:22px;min-width:0;min-height:106px;padding:16px;border:1px solid color-mix(in srgb,var(--dsw-alias-label-primary) 10%,transparent);border-radius:20px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background-color 150ms,border-color 150ms}
6499
6587
  .dcu-home-card:hover,.dcu-home-card[aria-pressed=true]{background:color-mix(in srgb,var(--dsw-alias-label-primary) 5%,transparent);border-color:color-mix(in srgb,var(--dsw-alias-label-primary) 20%,transparent)}
@@ -6533,7 +6621,7 @@ body[data-ds-dark-theme] :is([data-dcu-tool-menu],[class*="_heroWorkspaceRow"] [
6533
6621
  :is([data-dcu-tool-menu],[class*="_heroWorkspaceRow"] [data-gitgraph-popover]) :is([role=menuitem],[role=menuitemradio],[role=option]):hover:not(:disabled),:is([data-dcu-tool-menu],[class*="_heroWorkspaceRow"] [data-gitgraph-popover]) [class*="_selected"],:is([data-dcu-tool-menu],[class*="_heroWorkspaceRow"] [data-gitgraph-popover]) [aria-selected=true],:is([data-dcu-tool-menu],[class*="_heroWorkspaceRow"] [data-gitgraph-popover]) [aria-checked=true]{background:color-mix(in srgb,var(--dsw-alias-label-primary) 10%,transparent)}
6534
6622
  :is([data-dcu-tool-menu],[class*="_heroWorkspaceRow"] [data-gitgraph-popover]) [class*="_itemIcon"] svg{width:16px;height:16px}
6535
6623
  :is([data-dcu-tool-menu],[class*="_heroWorkspaceRow"] [data-gitgraph-popover]) [class*="_footer"]{flex:none;margin-top:5px;padding-top:5px;border-top:1px solid color-mix(in srgb,var(--dsw-alias-label-primary) 10%,transparent)}
6536
- [data-dcu-tool-filter]{box-sizing:border-box;flex:none;width:100%;height:32px;padding:4px 10px;margin:0 0 1px;border:0;border-radius:8px;outline:none;background:transparent;color:inherit;font:13px/20px var(--dsw-font-family,system-ui)}
6624
+ [data-dcu-tool-filter]{box-sizing:border-box;flex:none;width:100%;height:32px;padding:4px 10px;margin:0 0 1px;border:0;border-radius:8px;outline:none;background:transparent;color:inherit;font:13px/20px var(--dsw-font-family)}
6537
6625
  [data-dcu-tool-filter]:focus-visible{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dsw-alias-label-primary) 20%,transparent)}
6538
6626
  [data-dcu-tool-empty]{padding:8px 10px;font-size:13px;color:var(--dsw-alias-label-secondary)}
6539
6627
  [data-dcu-tool-filtered]{display:none!important}
@@ -6850,7 +6938,7 @@ body[data-ds-dark-theme] [data-conversation-scroll] [data-trigger-menu]{backgrou
6850
6938
  const stylesheet$3 = `
6851
6939
  .dcu-global-panel[aria-current=page]{background:var(--dcu-sidebar-hover);font-weight:600}
6852
6940
 
6853
- .dcu-root{--dcu-font:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei UI",sans-serif;--dcu-sidebar-background:#eef7f5;--dcu-sidebar-primary:#393d3e;--dcu-sidebar-secondary:#676b6c;--dcu-sidebar-tertiary:#9a9f9f;--dcu-sidebar-navigation:#4e5253;--dcu-sidebar-icon:#4e5253;--dcu-sidebar-hover:#dfe8e5;--dcu-sidebar-border:rgba(37,46,41,.10);--dcu-tip-bg:#ffffff;--dcu-tip-shadow:0 10px 32px rgba(31,39,36,.22);width:100%;height:100%;min-width:0;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;background:var(--dcu-sidebar-background);color:var(--dcu-sidebar-primary);font:14px/20px var(--dcu-font)}body[data-ds-dark-theme] .dcu-root{--dcu-sidebar-background:#1d2120;--dcu-sidebar-primary:#b9bab9;--dcu-sidebar-secondary:#909191;--dcu-sidebar-tertiary:#666867;--dcu-sidebar-navigation:#b9bab9;--dcu-sidebar-icon:#afafaf;--dcu-sidebar-hover:#303432;--dcu-sidebar-border:rgba(255,255,255,.08);--dcu-tip-bg:#2a2a2a;--dcu-tip-shadow:0 10px 30px rgba(0,0,0,.28)}
6941
+ .dcu-root{--dcu-sidebar-background:#eef7f5;--dcu-sidebar-primary:#393d3e;--dcu-sidebar-secondary:#676b6c;--dcu-sidebar-tertiary:#9a9f9f;--dcu-sidebar-navigation:#4e5253;--dcu-sidebar-icon:#4e5253;--dcu-sidebar-hover:#dfe8e5;--dcu-sidebar-border:rgba(37,46,41,.10);--dcu-tip-bg:#ffffff;--dcu-tip-shadow:0 10px 32px rgba(31,39,36,.22);width:100%;height:100%;min-width:0;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;background:var(--dcu-sidebar-background);color:var(--dcu-sidebar-primary);font:14px/20px var(--dsw-font-family)}body[data-ds-dark-theme] .dcu-root{--dcu-sidebar-background:#1d2120;--dcu-sidebar-primary:#b9bab9;--dcu-sidebar-secondary:#909191;--dcu-sidebar-tertiary:#666867;--dcu-sidebar-navigation:#b9bab9;--dcu-sidebar-icon:#afafaf;--dcu-sidebar-hover:#303432;--dcu-sidebar-border:rgba(255,255,255,.08);--dcu-tip-bg:#2a2a2a;--dcu-tip-shadow:0 10px 30px rgba(0,0,0,.28)}
6854
6942
  /* 滤镜只作用于背景,避免为设置和搜索等 fixed 后代创建侧栏包含块。 */
6855
6943
  body[data-we-sidebar-glass] .dcu-root{position:relative;background:transparent}body[data-we-sidebar-glass] .dcu-root::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background-color:color-mix(in srgb,var(--we-sidebar-color,#fff) calc(var(--we-sidebar-alpha,.15)*.66*100%),transparent);background-image:linear-gradient(180deg,rgba(255,255,255,calc(var(--we-sidebar-sheen,1)*.14)),rgba(255,255,255,calc(var(--we-sidebar-sheen,1)*.04)) 38%,rgba(255,255,255,calc(var(--we-sidebar-sheen,1)*.01)));-webkit-backdrop-filter:blur(var(--we-sidebar-blur,16px)) saturate(var(--we-sidebar-saturate,1.8)) brightness(var(--we-glass-brightness,1.04)) contrast(1.01);backdrop-filter:blur(var(--we-sidebar-blur,16px)) saturate(var(--we-sidebar-saturate,1.8)) brightness(var(--we-glass-brightness,1.04)) contrast(1.01);box-shadow:inset 0 1px 0 rgba(255,255,255,calc(var(--we-sidebar-sheen,1)*.32)),inset 0 -1px 0 rgba(255,255,255,calc(var(--we-sidebar-sheen,1)*.08)),inset 0 0 0 .5px rgba(255,255,255,calc(var(--we-sidebar-sheen,1)*.06))}body[data-ds-dark-theme][data-we-sidebar-glass] .dcu-root::before{background-color:color-mix(in srgb,var(--we-sidebar-color,#fff) calc(var(--we-sidebar-alpha,.15)*.33*100%),transparent)}body[data-we-appwindow][data-we-sidebar-glass] .dcu-root::before{-webkit-backdrop-filter:none;backdrop-filter:none}@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){body[data-we-sidebar-glass] .dcu-root{background:#eef7f5}body[data-ds-dark-theme][data-we-sidebar-glass] .dcu-root{background:#1d2120}body[data-we-sidebar-glass] .dcu-root::before{display:none}}
6856
6944
  body[data-we-sidebar-glass] .dcu-expanded-shell,body[data-we-sidebar-glass] .dcu-compact-shell,body[data-we-sidebar-glass] .dcu-foot{position:relative}
@@ -6861,7 +6949,7 @@ body[data-we-sidebar-glass] .dcu-expanded-shell,body[data-we-sidebar-glass] .dcu
6861
6949
  .dcu-menu{padding:0 6px 8px;display:grid;gap:2px}.dcu-menu button,.dcu-footer-link{display:grid;grid-template-columns:20px minmax(0,1fr);column-gap:8px;align-items:center;width:100%;min-height:36px;padding:0 4px;border-radius:8px;color:var(--dcu-sidebar-navigation);font-size:14px;line-height:20px;text-align:left;font-weight:400}
6862
6950
  .dcu-menu-icon{display:grid;place-items:center start;width:20px;height:20px}.dcu-menu-icon svg,.dcu-footer-link svg{display:block;width:16px;height:16px;color:var(--dcu-sidebar-icon)}.dcu-menu button:disabled{color:var(--dcu-sidebar-secondary);cursor:default;opacity:1}.dcu-menu button:disabled svg{color:var(--dcu-sidebar-secondary)}
6863
6951
  .dcu-extensions-group{display:grid}.dcu-extension-leading{position:relative;display:block;width:16px;height:16px}.dcu-extension-leading svg{position:absolute;inset:0;transition:opacity 140ms ease-out,transform 220ms cubic-bezier(.16,1,.3,1)}.dcu-extension-default-icon{opacity:1}.dcu-extension-state-arrow{opacity:0;transform:rotate(0)}.dcu-extensions-group:hover .dcu-extension-default-icon,.dcu-extensions-toggle:focus-visible .dcu-extension-default-icon{opacity:0}.dcu-extensions-group:hover .dcu-extension-state-arrow,.dcu-extensions-toggle:focus-visible .dcu-extension-state-arrow{opacity:1}.dcu-extensions-toggle[aria-expanded=true] .dcu-extension-state-arrow{transform:rotate(90deg)}.dcu-extension-panel{display:grid;grid-template-rows:1fr;opacity:1;transition:grid-template-rows 220ms cubic-bezier(.16,1,.3,1),opacity 160ms ease-out}.dcu-extension-panel[data-open=false]{grid-template-rows:0fr;opacity:0;pointer-events:none}.dcu-extension-panel-inner{position:relative;min-height:0;overflow:hidden}.dcu-extension-items{position:relative;display:grid;gap:1px;margin:1px 0 4px 28px}.dcu-extension-items::before{content:"";position:absolute;left:-16px;top:0;bottom:4px;width:1px;background:var(--dcu-sidebar-border)}.dcu-extension-items button{grid-template-columns:minmax(0,1fr);min-height:32px;color:var(--dcu-sidebar-secondary);font-size:13px;font-weight:400}.dcu-extension-items .dcu-menu-icon{display:none}
6864
- .dcu-workspaces{display:flex;min-height:0;flex:1;flex-direction:column;margin-top:2px;padding-top:8px;border-top:1px solid var(--dcu-sidebar-border)}.dcu-workspaces.dcu-workspaces-tabs{padding-top:0;border-top:0}.dcu-im-tabs{display:flex;gap:16px;margin:0 8px 12px;padding:0;border-bottom:1px solid var(--dcu-sidebar-border)}.dcu-im-tab{appearance:none;border:0;background:transparent;color:var(--dcu-sidebar-secondary);padding:8px 0 7px;font:14px/22px var(--dcu-font);font-weight:500;cursor:pointer}.dcu-im-tab[data-on=true]{color:var(--dcu-sidebar-primary);font-weight:600;box-shadow:inset 0 -2px 0 currentColor}.dcu-native-workspaces{display:flex;min-height:0;flex:1}.dcu-native-workspaces>*{min-width:0;flex:1}.dcu-native-workspaces .ima-tabs,.dcu-native-workspaces [role=tablist]{display:none!important}.dcu-schedule-browser{display:flex;min-height:0;flex:1;flex-direction:column}.dcu-native-workspaces .dcu-schedule-views{display:flex!important;flex:none;min-height:30px;margin:0 8px 8px;padding:2px;border:1px solid var(--dcu-sidebar-border);border-radius:8px;background:rgba(255,255,255,.025)}.dcu-schedule-views button{appearance:none;flex:1;min-width:0;height:24px;border:0;border-radius:6px;background:transparent;color:var(--dcu-sidebar-secondary);font:600 12px/18px var(--dcu-font);cursor:pointer}.dcu-schedule-views button[aria-selected=true]{background:var(--dcu-sidebar-hover);color:var(--dcu-sidebar-primary);box-shadow:inset 0 0 0 1px var(--dcu-sidebar-border)}.dcu-schedule-pane{display:flex;min-height:0;flex:1}.dcu-schedule-pane>*{min-width:0;flex:1}.dcu-schedule-pane>[data-slot="sidebar.schedule"]{display:flex!important;width:100%;min-width:0;flex:1}.dcu-schedule-pane>[data-slot="sidebar.schedule"]>.dsh-st-rail{width:100%;min-width:0;padding-right:8px;scrollbar-gutter:auto}.dcu-schedule-pane .dsh-st-overview{padding-right:8px}.dcu-foot{display:grid;width:100%;gap:4px;padding:8px 6px 12px;border-top:1px solid var(--dcu-sidebar-border);transition:opacity 500ms cubic-bezier(.16,1,.3,1),transform 500ms cubic-bezier(.16,1,.3,1)}.dcu-root.dcu-collapsing>.dcu-foot{opacity:0;transform:translateX(-4px);pointer-events:none}.dcu-footer-actions:empty,.dcu-settings-seat:empty{display:none}.dcu-settings-seat>button{width:100%;min-height:36px;padding-left:4px!important;color:var(--dcu-sidebar-navigation);font:14px/20px var(--dcu-font);font-weight:400}.dcu-compact{width:100%;align-items:flex-start;overflow:hidden;padding:10px 0 8px}.dcu-compact-nav{display:flex;flex:1;min-height:0;flex-direction:column;align-items:center;gap:2px;overflow:auto;padding:6px 0}.dcu-compact .dcu-icon{width:36px;height:36px;flex:none}.dcu-compact .dcu-foot{width:36px;margin-top:auto;margin-left:10px;padding:8px 0;border-top:0}.dcu-compact .dcu-settings-seat{width:36px;overflow:hidden}.dcu-compact .dcu-settings-seat>button{display:grid;place-items:center;width:36px;min-height:36px;padding:0!important;font-size:0!important;line-height:0}.dcu-compact .dcu-settings-seat>button svg{width:16px;height:16px}.dcu-compact .dcu-footer-link{display:flex;justify-content:center;width:36px;padding:0;font-size:0}.dcu-compact .dcu-footer-link svg{width:16px;height:16px}
6952
+ .dcu-workspaces{display:flex;min-height:0;flex:1;flex-direction:column;margin-top:2px;padding-top:8px;border-top:1px solid var(--dcu-sidebar-border)}.dcu-workspaces.dcu-workspaces-tabs{padding-top:0;border-top:0}.dcu-im-tabs{display:flex;gap:16px;margin:0 8px 12px;padding:0;border-bottom:1px solid var(--dcu-sidebar-border)}.dcu-im-tab{appearance:none;border:0;background:transparent;color:var(--dcu-sidebar-secondary);padding:8px 0 7px;font:14px/22px var(--dsw-font-family);font-weight:500;cursor:pointer}.dcu-im-tab[data-on=true]{color:var(--dcu-sidebar-primary);font-weight:600;box-shadow:inset 0 -2px 0 currentColor}.dcu-native-workspaces{display:flex;min-height:0;flex:1}.dcu-native-workspaces>*{min-width:0;flex:1}.dcu-native-workspaces .ima-tabs,.dcu-native-workspaces [role=tablist]{display:none!important}.dcu-schedule-browser{display:flex;min-height:0;flex:1;flex-direction:column}.dcu-native-workspaces .dcu-schedule-views{display:flex!important;flex:none;min-height:30px;margin:0 8px 8px;padding:2px;border:1px solid var(--dcu-sidebar-border);border-radius:8px;background:rgba(255,255,255,.025)}.dcu-schedule-views button{appearance:none;flex:1;min-width:0;height:24px;border:0;border-radius:6px;background:transparent;color:var(--dcu-sidebar-secondary);font:600 12px/18px var(--dsw-font-family);cursor:pointer}.dcu-schedule-views button[aria-selected=true]{background:var(--dcu-sidebar-hover);color:var(--dcu-sidebar-primary);box-shadow:inset 0 0 0 1px var(--dcu-sidebar-border)}.dcu-schedule-pane{display:flex;min-height:0;flex:1}.dcu-schedule-pane>*{min-width:0;flex:1}.dcu-schedule-pane>[data-slot="sidebar.schedule"]{display:flex!important;width:100%;min-width:0;flex:1}.dcu-schedule-pane>[data-slot="sidebar.schedule"]>.dsh-st-rail{width:100%;min-width:0;padding-right:8px;scrollbar-gutter:auto}.dcu-schedule-pane .dsh-st-overview{padding-right:8px}.dcu-foot{display:grid;width:100%;gap:4px;padding:8px 6px 12px;border-top:1px solid var(--dcu-sidebar-border);transition:opacity 500ms cubic-bezier(.16,1,.3,1),transform 500ms cubic-bezier(.16,1,.3,1)}.dcu-root.dcu-collapsing>.dcu-foot{opacity:0;transform:translateX(-4px);pointer-events:none}.dcu-footer-actions:empty,.dcu-settings-seat:empty{display:none}.dcu-settings-seat>button{width:100%;min-height:36px;padding-left:4px!important;color:var(--dcu-sidebar-navigation);font:14px/20px var(--dsw-font-family);font-weight:400}.dcu-compact{width:100%;align-items:flex-start;overflow:hidden;padding:10px 0 8px}.dcu-compact-nav{display:flex;flex:1;min-height:0;flex-direction:column;align-items:center;gap:2px;overflow:auto;padding:6px 0}.dcu-compact .dcu-icon{width:36px;height:36px;flex:none}.dcu-compact .dcu-foot{width:36px;margin-top:auto;margin-left:10px;padding:8px 0;border-top:0}.dcu-compact .dcu-settings-seat{width:36px;overflow:hidden}.dcu-compact .dcu-settings-seat>button{display:grid;place-items:center;width:36px;min-height:36px;padding:0!important;font-size:0!important;line-height:0}.dcu-compact .dcu-settings-seat>button svg{width:16px;height:16px}.dcu-compact .dcu-footer-link{display:flex;justify-content:center;width:36px;padding:0;font-size:0}.dcu-compact .dcu-footer-link svg{width:16px;height:16px}
6865
6953
  .dcu-settings-seat [data-slot="settings.trigger"]{color:var(--dcu-sidebar-navigation)}
6866
6954
  .dcu-settings-seat [data-slot="settings.trigger"]>svg{color:var(--dcu-sidebar-icon)}
6867
6955
  /* 宿主列负责缩放,宽态内容保持展开宽度,避免中文竖排与工作区逐帧重排。 */
@@ -8505,6 +8593,7 @@ html[data-dcu-official-turn-navigator-supported=true] .dcu-turn-navigator,html:h
8505
8593
  "workspace.recent": "最近",
8506
8594
  "workspace.recentEmpty": "无聊天",
8507
8595
  "workspace.noChat": "暂无聊天",
8596
+ "workspace.showMore": "展开显示",
8508
8597
  "workspace.empty": "暂无项目",
8509
8598
  "workspace.newSession": "新建会话",
8510
8599
  "workspace.rename": "重命名项目",
@@ -8793,6 +8882,7 @@ html[data-dcu-official-turn-navigator-supported=true] .dcu-turn-navigator,html:h
8793
8882
  "workspace.recent": "Recents",
8794
8883
  "workspace.recentEmpty": "No chats",
8795
8884
  "workspace.noChat": "No chats",
8885
+ "workspace.showMore": "Show more",
8796
8886
  "workspace.empty": "No projects",
8797
8887
  "workspace.newSession": "New conversation",
8798
8888
  "workspace.rename": "Rename project",
@@ -9513,7 +9603,7 @@ html[data-dcu-official-turn-navigator-supported=true] .dcu-turn-navigator,html:h
9513
9603
  //#region src/client/settings-page-styles.ts
9514
9604
  /** Codex 设置页的局部 tokens 与布局,不覆盖宿主其他弹窗。 */
9515
9605
  const settingsPageStyles = `
9516
- .dcu-settings-page{--sp-bg:#fff;--sp-nav:var(--dcu-sidebar-background,#eef7f5);--sp-card:#fafafa;--sp-border:#e5e5e5;--sp-text:#303030;--sp-muted:#737373;--sp-hover:#e9e9e9;--sp-active:#e4e4e4;position:fixed;inset:0;z-index:1000;display:grid;grid-template-columns:clamp(240px,var(--dcu-sidebar-expanded-width,275px),min(520px,calc(100vw - 320px))) minmax(0,1fr);background:var(--sp-bg);color:var(--sp-text);font:14px/1.5 var(--dcu-font,system-ui);text-align:left;isolation:isolate}
9606
+ .dcu-settings-page{--sp-bg:#fff;--sp-nav:var(--dcu-sidebar-background,#eef7f5);--sp-card:#fafafa;--sp-border:#e5e5e5;--sp-text:#303030;--sp-muted:#737373;--sp-hover:#e9e9e9;--sp-active:#e4e4e4;position:fixed;inset:0;z-index:1000;display:grid;grid-template-columns:clamp(240px,var(--dcu-sidebar-expanded-width,275px),min(520px,calc(100vw - 320px))) minmax(0,1fr);background:var(--sp-bg);color:var(--sp-text);font:14px/1.5 var(--dsw-font-family);text-align:left;isolation:isolate}
9517
9607
  body[data-ds-dark-theme] .dcu-settings-page{--sp-bg:#181818;--sp-nav:var(--dcu-sidebar-background,#1d2120);--sp-card:#232323;--sp-border:#333;--sp-text:#dedede;--sp-muted:#a1a1a1;--sp-hover:#292c2b;--sp-active:#303332;color-scheme:dark}
9518
9608
  .dcu-settings-page *{box-sizing:border-box}
9519
9609
  .dcu-settings-page button,.dcu-settings-page input{font:inherit}
@@ -9564,7 +9654,7 @@ body[data-ds-dark-theme] .dcu-settings-nav{--sp-text:var(--dcu-sidebar-navigatio
9564
9654
  .dcu-settings-document button:hover:not(:disabled){background:color-mix(in srgb,var(--sp-text) 14%,transparent)}
9565
9655
  .dcu-settings-document button:focus-visible{outline:2px solid var(--sp-muted);outline-offset:3px}
9566
9656
  .dcu-settings-document button:disabled{opacity:.55;cursor:wait}
9567
- .dcu-settings-trigger{appearance:none;box-sizing:border-box;display:flex;align-items:center;border:0;border-radius:8px;background:transparent;color:var(--dcu-sidebar-navigation,inherit);height:36px;min-height:36px;padding:0 4px;width:100%;font:400 14px/20px var(--dcu-font,system-ui);text-align:left;cursor:pointer;transition:background-color 160ms ease,color 160ms ease,transform 120ms ease}
9657
+ .dcu-settings-trigger{appearance:none;box-sizing:border-box;display:flex;align-items:center;border:0;border-radius:8px;background:transparent;color:var(--dcu-sidebar-navigation,inherit);height:36px;min-height:36px;padding:0 4px;width:100%;font:400 14px/20px var(--dsw-font-family);text-align:left;cursor:pointer;transition:background-color 160ms ease,color 160ms ease,transform 120ms ease}
9568
9658
  .dcu-settings-trigger-content{display:grid;grid-template-columns:20px minmax(0,1fr);column-gap:8px;align-items:center;width:100%;min-width:0}
9569
9659
  .dcu-settings-trigger-content svg{display:block;width:16px;height:16px;color:var(--dcu-sidebar-icon,currentColor);transition:transform 220ms cubic-bezier(.16,1,.3,1)}
9570
9660
  .dcu-settings-trigger:hover{background:var(--dcu-sidebar-hover,rgba(127,127,127,.12));color:var(--dcu-sidebar-primary,inherit)}
@@ -120,6 +120,7 @@ const zh = {
120
120
  "workspace.recent": "最近",
121
121
  "workspace.recentEmpty": "无聊天",
122
122
  "workspace.noChat": "暂无聊天",
123
+ "workspace.showMore": "展开显示",
123
124
  "workspace.empty": "暂无项目",
124
125
  "workspace.newSession": "新建会话",
125
126
  "workspace.rename": "重命名项目",
@@ -408,6 +409,7 @@ const en = {
408
409
  "workspace.recent": "Recents",
409
410
  "workspace.recentEmpty": "No chats",
410
411
  "workspace.noChat": "No chats",
412
+ "workspace.showMore": "Show more",
411
413
  "workspace.empty": "No projects",
412
414
  "workspace.newSession": "New conversation",
413
415
  "workspace.rename": "Rename project",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@michengai/dsh-codex-ui",
3
- "version": "1.1.14",
3
+ "version": "1.1.16",
4
4
  "description": "DSH Codex UI — 为 DeepSeek Harness Web 提供 Codex 风格侧栏、工作区会话树、全局搜索和轮次导航 · A Codex-style sidebar, workspace session tree, global search, and turn navigation for DSH Web",
5
5
  "license": "Apache-2.0",
6
6
  "publishConfig": {
@@ -87,19 +87,9 @@
87
87
  "@deepseek-ai/dsh-client-ui-sidebar": ">=0.1.0-rc.5 <0.2.0 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
88
88
  "@deepseek-ai/dsh-client-ui-slots": ">=0.1.0-rc.5 <0.2.0 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
89
89
  "@deepseek-ai/dsh-client-ui-workspace": ">=0.1.0-rc.5 <0.2.0 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
90
- "@michengai/dsh-agency-agents": ">=0.1.3 <0.2.0",
91
- "@michengai/dsh-skills-manager": ">=0.1.7 <0.2.0",
92
90
  "react": "^18.2.0",
93
91
  "react-dom": "^18.2.0"
94
92
  },
95
- "peerDependenciesMeta": {
96
- "@michengai/dsh-agency-agents": {
97
- "optional": true
98
- },
99
- "@michengai/dsh-skills-manager": {
100
- "optional": true
101
- }
102
- },
103
93
  "devDependencies": {
104
94
  "@deepseek-ai/cordis": "4.0.2",
105
95
  "@deepseek-ai/dsh-api-session-controller": "0.1.6-alpha.2",