@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 +18 -0
- package/CHANGELOG.zh-CN.md +18 -0
- package/dist/client.js +27 -4
- package/package.json +1 -1
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`.
|
package/CHANGELOG.zh-CN.md
CHANGED
|
@@ -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:
|
|
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:
|
|
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:
|
|
798
|
-
|
|
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;
|