dsh-composer-ux 0.28.1 → 0.29.1

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,6 +2,58 @@
2
2
 
3
3
  本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
4
4
 
5
+ ## [0.29.1] — 2026-10-29(「账号与其他」+ 收起状态不再记忆:打开就收起)
6
+
7
+ 用户 2026-10-29 两条:
8
+
9
+ 1. 「账号与用量改为账号与其他」;
10
+ 2. 「收起与否改为默认收起」—— 追问后选定**改行为**:每次打开 DSH 都强制收起、**不记住展开**,
11
+ 两处(顶部「全局面板」+ 底部区)一起。
12
+
13
+ **行为变了(这条最容易察觉)**
14
+
15
+ - 以前:点开折叠条 → 状态写进 `composer-ux-nav-fold.json` → 下次打开还是展开的。
16
+ - 现在:点开只在**本次会话**有效;重开 DSH 一律回到收起。
17
+ 文件里只留**形态**(`mode`:收成一条 / 只留图标 / 不折叠);老文件里的 `collapsed: false`
18
+ 会被**忽略**,不会把"上次点开过"带过来。
19
+
20
+ **界面上的连带改动**
21
+
22
+ - 底部细条文字:`账号与用量` → **`账号与其他`**(连带 title「展开/收起账号与其他」)。
23
+ - 设置页「侧边栏」组:两个"现在收起"开关删掉(一个不落盘的开关是骗人的),
24
+ 换成一行状态说明「打开时:总是收起(不记住展开):点折叠条可临时展开」+ 当前是收起/临时展开。
25
+
26
+ **为什么拆了个新文件**:把纯状态(`NavFoldState` / `sanitizeNavFold` / `persistableNavFold`)从
27
+ `nav-fold-store.ts` 挪到 `nav-fold-state.ts` —— store 里带 React hook,测试要 bundle 它就得拉 react;
28
+ 拆开之后"强制收起"和"只有形态落盘"这两条能像其它纯函数一样逐条钉住。
29
+
30
+ **测试**:`test/sidebar-nav.mjs` 新增第 7 节(6 条);变异新增 TC / TD(又记住展开 / 收起状态被写盘)。
31
+
32
+ ## [0.29.0] — 2026-10-29(侧边栏**底部区**也能收:整块收成一行「账号与用量」)
33
+
34
+ 用户 2026-10-29(截图圈住左下角「今日消耗金额」卡片 + 下面那行账号):
35
+ 「这个位置的这些按钮也让它能收缩起来,兼容所有在这个部位的按钮」。
36
+ 追问两轮定下:**整个底部区一起收**(插件卡片 + 官方账号/设置行),形态是**一行细条**、点一下展开。
37
+
38
+ **为什么"整块藏"才是最兼容的做法**
39
+
40
+ 这个位置是**插槽拼出来的**:宿主在 `sidebar.footer.action` 与 `sidebar.settings` 两个槽里渲染内容,
41
+ 任何插件都能往里加东西(`@kenz1117/dsh-ui-usage-billing` 的用量卡片就走前一个槽)。这些内容的
42
+ 结构、类名、数量都不可预知,所以:
43
+
44
+ - 我们**不碰任何一个子节点**(不标属性、不改样式、不改文字);
45
+ - 只在外层容器上挂 `data-ux-footer-fold="folded"`,由一条 CSS 收起整块 —— 展开时一切原样,
46
+ 插件自己的按钮、卡片、弹层、事件监听全都没被动过。
47
+
48
+ **怎么找到那个容器**(不认哈希类名):宿主结构是 `aside > [nav, regionArea, footArea]`,
49
+ 所以 **nav 的父节点就是侧边栏根,根的最后一个元素子节点就是 `footArea`**。找不到 nav 时退一步:
50
+ 从账号菜单按钮往上退两层(`footArea > settingsArea > 账号按钮`),只求不崩、不误收整只侧边栏。
51
+
52
+ **设置位置**:输入体验 →「设置面板」卡 →「侧边栏」组 →「底部区」开关(默认**收起**)。
53
+
54
+ **测试**:新增 `test/sidebar-footer.mjs`(18 条:结构定位、整块藏/显、**不碰第三方节点**、幂等、找不到时不介入);
55
+ 变异新增 SZ / TA / TB(认错容器 / 样式丢了 / 细条重复插)。
56
+
5
57
  ## [0.28.1] — 2026-10-29(兼容「往这一组里放按钮」的其它插件)
6
58
 
7
59
  用户 2026-10-29(截图圈住侧边栏那一行图标):「如果有其他插件在这里放按钮会怎么样,需要兼容所有往这里放按钮的插件」。
package/README.md CHANGED
@@ -132,6 +132,19 @@ dsh plugin --profile web add <你克隆或解压出来的目录>
132
132
  所以跟着一起折叠;而**直接往 DOM 里塞**的按钮/包装层**一个字都不改**——收成一条时它们原地留着、
133
133
  照样能点(这时只藏面板行,不藏整只 `nav`)。这条有 9 条测试盯着(`test/sidebar-nav.mjs` 第 6 节)。
134
134
 
135
+ ### 侧边栏底部区(0.29.0)
136
+
137
+ 左下角那一块(账号行 + 插件塞在这里的卡片,比如「今日消耗金额」)也能收:**整块收成一行
138
+ 「账号与其他 ▾」**,点一下展开。设置 → 输入体验 →「设置面板」卡 →「侧边栏」组可以看到当前状态。
139
+
140
+ **两处都是"打开就收起、不记住展开"**(0.29.1):点折叠条只在本次会话有效,重开 DSH 一律回到收起;
141
+ 文件里只记"形态"这一项偏好。
142
+
143
+ 做法是**整块藏/显**:只在最外层容器挂一个属性,**不碰里面任何一个节点** —— 所以别的插件往这个插槽里
144
+ 放什么都不会被我们改坏(用量卡片就是 `@kenz1117/dsh-ui-usage-billing` 放在 `sidebar.footer.action` 里的)。
145
+ 容器靠结构定位:nav 的父节点是侧边栏根,根的最后一个子节点就是底部区;找不到 nav 时从账号按钮往上退两层。
146
+ 这条有 18 条测试盯着(`test/sidebar-footer.mjs`)。
147
+
135
148
  ## 快捷指令与提示词优化
136
149
 
137
150
  输入框工具行里、「展开」按钮的左侧有一个同款胶囊按钮「快捷指令」(槽位 `conversation.input.right`,order 89 < 官方「展开」的 90)。点开展开面板:
@@ -669,9 +682,9 @@ node build.mjs # 产出 lib/index.js + lib/client.js
669
682
  # ⚠️ 宿主半会**内联** schemastery / cosmokit:
670
683
  # 优先用 DSH 检出里的 vendor 副本,检出不在时退到 node_modules
671
684
  # 里同版本的 npm 包(两者逐字节相同)——CI 上走的就是退路
672
- npm test # 29 个套件;当前 2603 passed, 0 failed(2026-10-28 实测;CI 三平台同样全绿)
685
+ npm test # 30 个套件;当前 2621 passed, 0 failed(2026-10-28 实测;CI 三平台同样全绿)
673
686
  # 走 scripts/run-tests.mjs:顺带把"多少套件/多少条"记进 test/.last-run.json
674
- npm run test:mutations # 手动跑:变异测试,证明那套护栏真的在咬人(200 条,须单独跑)
687
+ npm run test:mutations # 手动跑:变异测试,证明那套护栏真的在咬人(205 条,须单独跑)
675
688
  # 同样记录结果,供下面的文档门禁核对
676
689
  npm run gates # 发版门禁三条一起跑:tag 指向 / 包内容 / 文档数字
677
690
  npm run check:tag # ① tag 名里的版本 == 该 tag 所指提交里的 package.json 版本
package/dsh-plugin.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "manifestVersion": "0.15",
4
4
  "id": "dsh-composer-ux.input-experience",
5
5
  "name": "dsh-composer-ux",
6
- "version": "0.28.1",
6
+ "version": "0.29.1",
7
7
  "license": "MIT",
8
8
  "facets": {
9
9
  "host": {