@michengai/dsh-codex-ui 0.2.84 → 0.2.86

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
@@ -2,7 +2,40 @@
2
2
 
3
3
  [简体中文](CHANGELOG.zh-CN.md)
4
4
 
5
- This changelog records the five most recent published releases of DSH Codex UI and its one-click Suite. Earlier changes remain available in the [Git history](https://github.com/MichengAI/dsh-codex-ui/commits/main).
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
+
7
+ ## 0.2.86 — 2026-08-25
8
+
9
+ Companion release: `@michengai/dsh-codex-suite-installer@0.1.3`.
10
+
11
+ ### Changed
12
+
13
+ - Reworked **Conversation / Trajectory / Context** into a compact three-part segmented control while preserving the Host-managed tab DOM and behavior.
14
+ - Replaced the wide **Session log** capsule with an accessible 28 px download icon that retains its original text for assistive technology.
15
+ - Removed the conversation-header divider and placed all controls in a compact 34 px band with symmetric 3 px spacing.
16
+
17
+ ### Compatibility
18
+
19
+ - Aligned the 28 px mode and utility controls with `DSH-better-sidebar` in both expanded and collapsed layouts without moving the external plugin's persistent buttons.
20
+ - Added regression coverage for stable DOM ownership, exact border-box sizing, accessible labels, and header spacing.
21
+ - Updated the lightweight installer to pin Codex UI `0.2.86`; the legacy aggregate Suite remains private and is not released.
22
+
23
+ Published packages: [`@michengai/dsh-codex-ui@0.2.86`](https://www.npmjs.com/package/@michengai/dsh-codex-ui/v/0.2.86) and [`@michengai/dsh-codex-suite-installer@0.1.3`](https://www.npmjs.com/package/@michengai/dsh-codex-suite-installer/v/0.1.3).
24
+
25
+ ## 0.2.85 — 2026-08-25
26
+
27
+ Companion release: `@michengai/dsh-codex-suite-installer@0.1.2`.
28
+
29
+ ### Changed
30
+
31
+ - Removed the poorly performing `dsh-find-plugin` integration from **Settings → About → Companion management plugins**, including its status, install, and update entry points.
32
+ - Removed the related bilingual copy, README guidance, and regression assertions.
33
+
34
+ ### Release process
35
+
36
+ - Made `@michengai/dsh-codex-suite-installer` the only supported one-click installation path. The legacy `@michengai/dsh-codex-suite` workspace package is now private and retained only as migration source; it will no longer be packed or released.
37
+
38
+ Published packages: [`@michengai/dsh-codex-ui@0.2.85`](https://www.npmjs.com/package/@michengai/dsh-codex-ui/v/0.2.85) and [`@michengai/dsh-codex-suite-installer@0.1.2`](https://www.npmjs.com/package/@michengai/dsh-codex-suite-installer/v/0.1.2).
6
39
 
7
40
  ## 0.2.84 — 2026-08-25
8
41
 
@@ -2,7 +2,40 @@
2
2
 
3
3
  [English](CHANGELOG.md)
4
4
 
5
- 本日志记录 DSH Codex UI 及其一键 Suite 最近发布的五个版本;更早的变更可查看 [Git 提交历史](https://github.com/MichengAI/dsh-codex-ui/commits/main)。
5
+ 本日志记录 DSH Codex UI 及其一键安装器的最近发布;更早的变更可查看 [Git 提交历史](https://github.com/MichengAI/dsh-codex-ui/commits/main)。
6
+
7
+ ## 0.2.86 — 2026-08-25
8
+
9
+ 配套版本:`@michengai/dsh-codex-suite-installer@0.1.3`。
10
+
11
+ ### 调整
12
+
13
+ - 将“对话 / 轨迹 / 上下文”改为紧凑的三段式控件,同时保持宿主管理的页签 DOM 和原有交互不变。
14
+ - 将宽版 **Session log** 胶囊改为 28px 下载图标,并保留原始文本供辅助技术读取。
15
+ - 移除会话顶栏分割线,将全部控件放入上下各留 3px 的紧凑 34px 控件带。
16
+
17
+ ### 兼容性
18
+
19
+ - 在展开与收缩布局中与 `DSH-better-sidebar` 的 28px 控件保持同一中心线,不移动外部插件的常驻按钮。
20
+ - 增加宿主 DOM 归属、精确盒模型尺寸、无障碍名称和顶栏间距的回归测试。
21
+ - 轻量安装器同步固定 Codex UI `0.2.86`;旧聚合 Suite 继续保持私有,不参与发布。
22
+
23
+ 发布包:[`@michengai/dsh-codex-ui@0.2.86`](https://www.npmjs.com/package/@michengai/dsh-codex-ui/v/0.2.86) 与 [`@michengai/dsh-codex-suite-installer@0.1.3`](https://www.npmjs.com/package/@michengai/dsh-codex-suite-installer/v/0.1.3)。
24
+
25
+ ## 0.2.85 — 2026-08-25
26
+
27
+ 配套版本:`@michengai/dsh-codex-suite-installer@0.1.2`。
28
+
29
+ ### 调整
30
+
31
+ - 从“设置 → 关于 → 配套管理插件”移除体验不佳的 `dsh-find-plugin`,不再提供检测、安装或更新入口。
32
+ - 同步移除中英文案、README 说明和相关回归断言。
33
+
34
+ ### 发布流程
35
+
36
+ - `@michengai/dsh-codex-suite-installer` 作为唯一一键安装方式;旧 `@michengai/dsh-codex-suite` 标记为私有工作区包,仅保留源码支持存量迁移,不再打包或发布新版本。
37
+
38
+ 发布包:[`@michengai/dsh-codex-ui@0.2.85`](https://www.npmjs.com/package/@michengai/dsh-codex-ui/v/0.2.85) 与 [`@michengai/dsh-codex-suite-installer@0.1.2`](https://www.npmjs.com/package/@michengai/dsh-codex-suite-installer/v/0.1.2)。
6
39
 
7
40
  ## 0.2.84 — 2026-08-25
8
41
 
package/README.md CHANGED
@@ -66,7 +66,7 @@ Conversation menu: rename, pin, unread, archive, fork, copy, and delete.
66
66
  | IM Assistant | `@michengai/dsh-im-connect` | IM settings and the **Channels** tab |
67
67
  | Scheduled tasks | `@michengai/dsh-automation` | Scheduled-task settings and the **Schedule** tab |
68
68
 
69
- `dshmarket` and `dsh-find-plugin` remain optional and can be installed or updated separately from **Settings → About**. When `dshmarket` is installed, **Plugins** opens the market first.
69
+ `dshmarket` stays optional. When it is installed, **Plugins** opens the market first.
70
70
 
71
71
  Direct dependencies let **Settings → About** detect and update every plugin independently. The lightweight installer carries only the version manifest, and it migrates the legacy aggregate Suite without leaving duplicate patches behind.
72
72
 
package/README.zh-CN.md CHANGED
@@ -66,7 +66,7 @@
66
66
  | IM 助理 | `@michengai/dsh-im-connect` | IM 设置页和「频道」页签 |
67
67
  | 定时任务 | `@michengai/dsh-automation` | 定时任务设置页和「定时」页签 |
68
68
 
69
- `dshmarket` 和 `dsh-find-plugin` 仍是可选项,可在「设置 → 关于」中分别安装和更新。已安装 `dshmarket` 时,「插件」入口会优先进入市场。
69
+ `dshmarket` 仍是可选项。已安装时,「插件」入口会优先进入市场。
70
70
 
71
71
  直接依赖让「设置 → 关于」能够分别检测和升级每个插件。轻量安装器只携带版本清单,也会自动迁移旧版聚合 Suite,避免聚合 patch 与独立 patch 冲突。
72
72
 
package/dist/client.js CHANGED
@@ -788,16 +788,26 @@ window.__ModuleLoader__.load({
788
788
  const HEADER_PROJECT_TIP_EVENT = "dcu-header-project-tip";
789
789
  const HEADER_SESSION_MENU_EVENT = "dcu-header-session-menu";
790
790
  const CONVERSATION_HEADER_STYLE = `
791
- header:has([data-dcu-inline-tabs]){display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding-bottom:12px}
791
+ header:has([data-dcu-inline-tabs]){box-sizing:border-box;display:flex;flex-wrap:wrap;align-items:center;gap:10px;min-height:34px;padding-top:3px;padding-bottom:3px;border-bottom:0}
792
+ header:has([data-dcu-inline-tabs]):after{display:none;content:none}
792
793
  header:has([data-dcu-inline-tabs]) [class*="titleRow"],header:has([data-dcu-inline-tabs]) [class*="titleCluster"]{display:contents}
793
794
  header:has([data-dcu-inline-tabs]) [class*="crumbs"]{order:1;flex:1;min-width:0}
794
795
  header:has([data-dcu-inline-tabs]) [class*="headerActions"]{order:2;flex:none}
795
- header [data-dcu-inline-tabs]{order:3;flex:none;display:flex;align-items:center;gap:4px;margin:0;padding:0;position:relative;z-index:1}
796
+ header [data-dcu-inline-tabs]{box-sizing:border-box;order:3;flex:none;display:flex;align-items:center;gap:0;margin:0;padding:0;height:28px;position:relative;z-index:1;overflow:hidden;border:1px solid var(--dsw-alias-border-subtle,rgba(255,255,255,.12));border-radius:8px;background:var(--dsw-alias-background-secondary,rgba(255,255,255,.025))}
796
797
  header:has([data-dcu-inline-tabs]) [class*="headerUtilities"]{order:4;flex:none}
797
- header [data-dcu-tab-slider]{position:absolute;left:0;top:50%;height:28px;margin-top:-14px;border-radius:8px;background:color-mix(in srgb,var(--dsw-alias-button-info-fill,#4c8dff) 18%,transparent);pointer-events:none;z-index:0;opacity:0;transform:translateX(0);width:0;transition:transform 280ms cubic-bezier(.16,1,.3,1),width 280ms cubic-bezier(.16,1,.3,1),opacity 160ms ease}
798
- header [data-dcu-inline-tabs] [role=tab]{position:relative;z-index:1;padding:8px 10px 10px;margin:0;line-height:20px;color:var(--dsw-alias-label-tertiary);border:0;box-shadow:none;background:transparent}
798
+ header [data-dcu-tab-slider]{position:absolute;left:0;top:0;height:26px;border-radius:7px;background:color-mix(in srgb,var(--dsw-alias-button-info-fill,#4c8dff) 18%,transparent);pointer-events:none;z-index:0;opacity:0;transform:translateX(0);width:0;transition:transform 240ms cubic-bezier(.16,1,.3,1),width 240ms cubic-bezier(.16,1,.3,1),opacity 160ms ease}
799
+ /* 顶栏统一使用 34px 控件带:与宿主扩展常用的 top:3px + 28px 图标按钮同心,
800
+ 外部插件按钮无需在展开/收起时改变位置。 */
801
+ header [data-dcu-inline-tabs] [role=tab]{box-sizing:border-box;position:relative;z-index:1;height:26px;padding:3px 10px;margin:0;line-height:20px;color:var(--dsw-alias-label-tertiary);border:0;box-shadow:none;background:transparent;font-size:13px;white-space:nowrap}
799
802
  header [data-dcu-inline-tabs] [role=tab][aria-selected=true],header [data-dcu-inline-tabs] [role=tab][data-state=active]{color:var(--dsw-alias-button-info-fill,#4c8dff);font-weight:500}
803
+ header [data-dcu-inline-tabs] [role=tab]+[role=tab]{border-left:1px solid var(--dsw-alias-border-subtle,rgba(255,255,255,.08))}
800
804
  header [data-dcu-inline-tabs] [role=tab]:after,header [data-dcu-inline-tabs] [role=tab]:before{display:none!important;content:none!important;background:transparent!important;height:0!important}
805
+ header [data-dcu-inline-tabs] [role=tab]:focus-visible,header [data-dcu-session-log-download]:focus-visible{outline:2px solid var(--dsw-alias-button-info-fill,#4c8dff);outline-offset:-2px}
806
+ header [data-dcu-session-log-download]{appearance:none;min-width:28px;width:28px;height:28px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--dsw-alias-label-secondary,currentColor);display:inline-grid;place-items:center;cursor:pointer}
807
+ header [data-dcu-session-log-download]:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,rgba(255,255,255,.08));color:var(--dsw-alias-label-primary,currentColor)}
808
+ header [data-dcu-session-log-download]:disabled{color:var(--dsw-alias-label-dimmed,currentColor);cursor:wait}
809
+ header [data-dcu-session-log-download] > span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
810
+ header [data-dcu-session-log-download] svg{width:16px;height:16px;flex:none}
801
811
  header [data-dcu-title-folder],header [data-dcu-title-more]{appearance:none;border:0;background:transparent;color:var(--dsw-alias-label-tertiary,currentColor);display:inline-grid;place-items:center;padding:0;cursor:pointer;border-radius:4px}
802
812
  header [data-dcu-title-folder]{width:16px;height:20px}
803
813
  header [data-dcu-title-more]{width:20px;height:20px}
@@ -816,6 +826,18 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
816
826
  tabs.dataset.dcuInlineTabs = "";
817
827
  return true;
818
828
  }
829
+ /** 把宿主的 Session log 胶囊标记成紧凑下载按钮;保留文本供无障碍名称使用。 */
830
+ function decorateSessionLogDownload(root) {
831
+ const button = root.querySelector("header [class*=\"headerUtilities\"] button[class*=\"sessionLogButton\"]");
832
+ if (button === null || button.dataset.dcuSessionLogDownload === "") return false;
833
+ button.dataset.dcuSessionLogDownload = "";
834
+ const label = button.querySelector("span")?.textContent?.trim();
835
+ if (label !== void 0 && label !== "") {
836
+ if (!button.hasAttribute("aria-label")) button.setAttribute("aria-label", label);
837
+ if (!button.hasAttribute("title")) button.setAttribute("title", label);
838
+ }
839
+ return true;
840
+ }
819
841
  function emit(name, target, extra = {}) {
820
842
  const box = target.getBoundingClientRect();
821
843
  target.dispatchEvent(new CustomEvent(name, {
@@ -932,6 +954,7 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
932
954
  }
933
955
  syncTabSlider(doc);
934
956
  decorateConversationTitle(doc);
957
+ decorateSessionLogDownload(doc);
935
958
  decorateUserBubbles(doc);
936
959
  } finally {
937
960
  applying = false;
@@ -3926,10 +3949,6 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
3926
3949
  {
3927
3950
  id: "market",
3928
3951
  packageName: "dshmarket"
3929
- },
3930
- {
3931
- id: "finder",
3932
- packageName: "dsh-find-plugin"
3933
3952
  }
3934
3953
  ];
3935
3954
  //#endregion
@@ -4337,7 +4356,7 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
4337
4356
  "about.feature.conversation": "保留原生消息、工具调用、输入、权限和模型选择,仅调整容器视觉",
4338
4357
  "about.feature.navigator": "当前会话提供轮次缩略导航,可快速跳转至每一次用户提问",
4339
4358
  "about.dependencies": "配套管理插件",
4340
- "about.dependenciesDescription": "每个配套插件都可单独安装和更新,也可一键更新所有可更新项。可分别检查 Codex UI、专家、技能、归档、IM、定时任务、第三方插件市场和插件发现。",
4359
+ "about.dependenciesDescription": "每个配套插件都可单独安装和更新,也可一键更新所有可更新项。可分别检查 Codex UI、专家、技能、归档、IM、定时任务和第三方插件市场。",
4341
4360
  "about.loading": "正在读取依赖安装状态…",
4342
4361
  "about.statusFailed": "暂时无法读取依赖安装状态。",
4343
4362
  "about.installed": "已安装",
@@ -4360,7 +4379,6 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
4360
4379
  "about.dependency.im": "IM助理",
4361
4380
  "about.dependency.schedule": "定时任务",
4362
4381
  "about.dependency.market": "插件市场",
4363
- "about.dependency.finder": "插件发现",
4364
4382
  "turns.label": "当前会话轮次导航",
4365
4383
  "turns.untitled": "未命名提问",
4366
4384
  "turns.jump": "跳转到第 {index} 轮:{summary}"
@@ -4460,7 +4478,7 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
4460
4478
  "about.feature.conversation": "Keeps native messages, tool calls, composer, permissions, and model selection while refining the container visuals",
4461
4479
  "about.feature.navigator": "Navigate directly to each user prompt with the current conversation turn navigator",
4462
4480
  "about.dependencies": "Companion management plugins",
4463
- "about.dependenciesDescription": "Install or update each companion plugin separately, or update every available plugin at once. Check Codex UI, expert, skill, archive, IM, scheduled-task, marketplace, and plugin-discovery plugins on their own.",
4481
+ "about.dependenciesDescription": "Install or update each companion plugin separately, or update every available plugin at once. Check Codex UI, expert, skill, archive, IM, scheduled-task, and marketplace plugins on their own.",
4464
4482
  "about.loading": "Loading dependency status…",
4465
4483
  "about.statusFailed": "Dependency status is temporarily unavailable.",
4466
4484
  "about.installed": "Installed",
@@ -4483,7 +4501,6 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
4483
4501
  "about.dependency.im": "IM Assistant",
4484
4502
  "about.dependency.schedule": "Scheduled tasks",
4485
4503
  "about.dependency.market": "Plugin Market",
4486
- "about.dependency.finder": "Plugin Discovery",
4487
4504
  "turns.label": "Conversation turn navigation",
4488
4505
  "turns.untitled": "Untitled prompt",
4489
4506
  "turns.jump": "Jump to turn {index}: {summary}"
package/dist/index.mjs CHANGED
@@ -46,10 +46,6 @@ const MANAGED_DEPENDENCIES = [
46
46
  {
47
47
  id: "market",
48
48
  packageName: "dshmarket"
49
- },
50
- {
51
- id: "finder",
52
- packageName: "dsh-find-plugin"
53
49
  }
54
50
  ];
55
51
  function managedDependency(id) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@michengai/dsh-codex-ui",
3
- "version": "0.2.84",
3
+ "version": "0.2.86",
4
4
  "description": "以 Codex 风格重构 DSH Web 侧栏的独立客户端插件",
5
5
  "license": "Apache-2.0",
6
6
  "publishConfig": {