@michengai/dsh-codex-ui 0.2.85 → 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
@@ -4,6 +4,24 @@
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
+ ## 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
+
7
25
  ## 0.2.85 — 2026-08-25
8
26
 
9
27
  Companion release: `@michengai/dsh-codex-suite-installer@0.1.2`.
@@ -4,6 +4,24 @@
4
4
 
5
5
  本日志记录 DSH Codex UI 及其一键安装器的最近发布;更早的变更可查看 [Git 提交历史](https://github.com/MichengAI/dsh-codex-ui/commits/main)。
6
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
+
7
25
  ## 0.2.85 — 2026-08-25
8
26
 
9
27
  配套版本:`@michengai/dsh-codex-suite-installer@0.1.2`。
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@michengai/dsh-codex-ui",
3
- "version": "0.2.85",
3
+ "version": "0.2.86",
4
4
  "description": "以 Codex 风格重构 DSH Web 侧栏的独立客户端插件",
5
5
  "license": "Apache-2.0",
6
6
  "publishConfig": {