# 更新记录 按版本从新到旧。每段标题就是 tag 名(`## [0.2.4] - 2026-10-10`)——推 tag 时由 `.github/workflows/release.yml` 把这一段抽出来当 Release 报告。 所以发版的规矩只有一条:**先在文件顶上补一段,再打标签**。抽不到那一段(或那一段是空的),Release 就退回 GitHub 自动生成的提交清单。 0.2.1 与 0.2.2 这两个号跳过了:那段时间没有单独发版,改动都并进了 0.2.3。 ## [0.2.7] - 2026-10-11 ### 文件变更行:老版 dsh(0.2.0-rc.2 及更早)的准备态也有读数了 - 0.2.1-alpha.1 之前,准备态的调用块里**一个参数都没有**(参数视图是新版才有的),所以那一段只剩一个 标题——路径、输入大小、行尾那两个数全缺,肉眼看到的是「一直空白,然后直接出终态」。这一版把它补上: 那个座位在旧版上会另外绑定一个订阅口,给出**原始参数 JSON 的前缀**;插件现在就认它,自己扫出 `content` / `old_string` / `new_string` / `file_path` 已经收到的那一段。于是路径、输入大小与 `+n -m`(含数字轮与节拍)在两种 dsh 上都在,新版那条路一字未改。 - 半截的输入要能读:参数随时可能截在半截字符串或半截转义里(反斜杠后面还没到字符、unicode 转义不足四位、 `content` 里面的引号只是文本)。扫的时候按已经收到的部分给,既不抛也不归零——那两个数只往上长。 - 行尾那个输入大小**不再借 dsh 的 `tool.preparing.content`**(中文那句是「正在准备内容 5KB」),自己拼成 `5KB`:准备态那一行本来就只有这一个读数,前面那句把行头撑长一倍。 ### 气泡动效:开局那几帧不再一上来就跳半路,路径仍是「先横后竖」 - 横向那条弹簧改慢、纵向起步再压一段延迟:第一帧(16.7 ms)从 58.8% 降到 21.7%,第二帧从 90.4% 降到 51.9%,而轨迹还是「先横着离开输入卡片、再一路升起来」——开头四十五毫秒纯水平(横向走掉六成八), 之后折向上,135 ms 收成竖直。落地回弹也从 2.84% 收到 1.52%(峰值 223 ms)。 - 顺带给曲线参数加了一个**开发期的口子**:控制台里 `localStorage.setItem('dsh-chat-ux:send-flight', '{"acrossOmega":8}')`,发一条消息就能看到新的那一套,不必重新构建。它不进配置——卡片上没有, schema 里也没有。 ### token 淡入与跟随那一块整块删除 - 删掉 `client/chat/token-motion.ts`——它的档位规则表、页面级那条兜底色、扫描观察者、绘制帧与那套让路 逻辑,以及跟着它一起装/卸的**增强跟随**(`follow-guard.ts`)与**组体跟随**(`process-follow.ts`)。 卡片上的「token 淡入」一行一并撤掉(卡片从八行回到七行),`tokenFade` 从 host 的 schema 与 `Config`、 `ChatUxSection`、卡片里那批字段常量里删干净。 - `follow-tail.ts` 与 `reader-intent.ts` 留着:折叠收尾那一次滚动交还还在用它们。`isAtBottom()` 随跟随 守护一起消失,`isFoldGlideBusy()` 暂时没有查询者,仍照旧维护。 - 与这两块有关的正文移进 `文档/归档/`。 ### 实时改动行数:去掉 beta、改为默认开 - `liveDiff` 的默认值从关改成开(host 与 client 两侧各一处常量),卡片上那一行的 beta 标撤掉, 中英两套文案里「还在收、默认关着」那两句删掉。 - 行为一字未改:直接调用 write / edit 时,行尾那两个 `+n -m` 在准备态就跟着参数长,节拍与落定之后的 实时跟随照旧。 ### 输入框毛玻璃:浅色下更淡一档,并与 rc 版 dsh 的观感对齐 - 浅色那一档整体往浅里推了一档:底里掺的那层冷灰收一成并提亮(`rgb(150 158 176)` → `rgb(172 178 192)`), 两端端色再收四分之一,卡片底部那道内阴影减半。合成之后卡片面比画布暗八级左右(原来十三级),边界照旧 交代得出,但不再显得发灰发浊。 - 深色档一处未动。 - dsh `0.2.0-rc.2` 上那枚发送按钮「不可用就整枚淡掉」收掉了:那一版给它的 `:disabled` 样式是 `opacity: .4`, `0.2.1-alpha.2` 已经不用这条,于是同一块玻璃在输入框为空时会整枚淡掉。现在两种状态、两个版本都是同一块玻璃 (rc.2 实测按钮面 `#b8cbf2` → `#5d8ae7`,alpha.2 一直是 `#5e8ae7`)。代价是空输入框时不再有「还不能发送」 的视觉提示——按钮仍由 dsh 端拒收,与 alpha.2 的行为一致。 ### token 淡入改为默认关;跟随那一块并进同一项 - **默认关着**:`tokenFade` 的默认值从开改成关(host 与 client 两侧各一处常量)。关着时那个模块整块 不装——档位规则表、页面级那条兜底色、扫描观察者与绘制帧一个都不存在,页面上看不出它做过什么; 想看的读者在插件页上打开,装回来的就是同一套。 - **「增强跟随」那一行撤掉了**:卡片从九行变八行,字段 `enhancedFollow` 也从 host 的 schema 与 `Config`、 `ChatUxSection`、卡片里那批字段常量里删了(老设置文档里若还留着这个键,解析时原样保留、不再有人读 它)。跟随这一块(增强跟随 + 组体跟随)从此跟着「token 淡入」一起装、一起卸,卡片上没有单独的跟随行。 - **关闭态不再留常驻痕迹**:那两处原先都是「常驻安装、回调里读开关」——关掉之后仍留着一个 `MutationObserver` 加五个 capture 监听,以及一个 `ResizeObserver` 加**每 500 ms 一次的全文档查询**加 六个 capture 监听;现在关着时一个都不在。淡入用色那两条兜底色也从常驻样式表挪进跟着引擎走的那张表, 规则文本改成装上引擎时才拼。 - 插件页上 token 那一行的说明补了读者看得见的那半:打开后跟随也一起在(回复继续时聊天区自己待在最新 内容上,限高的过程组里思考与工具输出也跟得住),关着就如同直接显示、两件事一起停下。 ## [0.2.6] - 2026-10-11 ### 缓存命中率:老版 dsh 上不再整枚不画 - dsh 0.2.0-rc.2 与更早的版本里,输入框下方那一行整个归 dsh 自己(坞里只有一个 `stats` 座位条目), 插件那一枚按座位 id 遮蔽不了它、只会与内置那一枚并排出现。此前碰上这一版干脆整枚不画——读者 看到的是 dsh 内置的整数读数,没有色阶。 - 现在两版都画:命中率恒一位小数、按 90%~99% 那套无极色阶取色;老版上靠 DOM 把 dsh 内置的那一枚 收起来(收起只是不画,插件卸下时它原样回来),所以那一行里始终只有一枚命中率读数。 - 同一行里的速度与时间读数仍归 dsh 自己:老版里是「速度 + 命中率」两枚并排,alpha 版里是 dsh 的 速度加上插件这一枚。 - alpha 版(0.2.1-alpha.1 起)走原来的座位遮蔽,行为一字未变。 ## [0.2.5] - 2026-10-10 ### 输入框毛玻璃 - 输入框那一块换成一片玻璃:卡片自带一条「两端有色、中间透明」的蓝调渐变,底只让出一成不到, 背后再模糊一层,另加顶边亮边、内侧微光与底部内阴影三笔质感,深浅两套主题各自配比。 - 右下角那枚发送(跑起来时是停止)按钮也换成同一块玻璃上的一片蓝。 - 玻璃画在卡片的伪元素上、不画在卡片自己身上:卡片是 `/` 与 `@` 候选菜单那一票浮层的祖先, 卡片一旦成为 backdrop root,菜单自己那层模糊就采样不到东西、整块透掉。 - 插件管理页上多一行「输入框毛玻璃」,默认开。关掉就回到 dsh 原来的输入框与按钮。 ### 文件变更行:准备态就显示改动行数(beta,默认关) - 直接调用写入或编辑时,行尾那两个 `+n -m` 不再等整段内容写完才出现:内容还在流进来时它就开始长, 派发那一刻不跳,结算后与同一内容的行显示同一个数。 - 写入那一侧 `+n` 就是已收到的行数(`-0` 恒 0);编辑那一侧要等替换的两段都收尾才画——行级匹配 在半截文本上会先高后低,宁可晚一点,也不给一个会上下跳的数字。 - 它读的是参数流本身,所以这一行的重渲染粒度从「每 1 KB」提到「每批」(实测流式批率约每秒四批)。 - **只在直接调用上有意义**:`run_code` 里派发的子调用没有准备态——参数由程序在运行时一次给齐, 行一出现就是终值。 - 插件管理页上多一行「实时改动行数」,**默认关着、标着 beta**。关掉时这一行回到接管之前的样子。 ## [0.2.4] - 2026-10-10 ### 上下文占用那枚饼:推出去的那道缝宽恒定 - 缺口与推出去那一块之间的缝,现在**处处 1.2px**——占 9% 的会话与占 33% 的会话看起来是同一条缝。 在这之前缝宽是拿推开距离挣的(缝宽 = 推开距离 × sin(占用角/2)):9% 时只有 0.73px、细得快看不见, 33% 时却有 2.24px,同一枚饼上像两把不同的刀。 - 做法是让盘上挖掉的洞口比那一块**大一圈**,所以缝环绕那一块的整条边界,与推开多远无关。 代价写在明处:外缘弧与顶点那一头也各留 1.2px,那一块像是整块悬浮在洞口里。 - 那一块端出去 2.6px、盘面 17.4px,两者都钉死:灰盘的大小与位置不再随占用涨缩(整幅图的外接尺寸恒为 20px)。 - 「切块推开」与「只留切口」两种画法都有,插件管理页上那个开关(`piePush`)切换。 - 占用色阶的过渡区改到 20%~40%:20 之前一律绿、40 起一律红,中间每 4 个点一个色标。 - 读数与相邻那枚统计胶囊同字号;那串百分比也会一格格翻动(220ms)。 ### 缓存命中率 - 恒取一位小数,色阶改成 90%~99%(< 90 一律红、≥ 99 一律深绿,中间由红经橙黄、黄、黄绿走到浅绿)。 - 它旁边那串读数也会翻动:变了的那一位把新数字从下面托上来,220ms,低位起手更晚。 ### 聊天气泡动效转正 - 去掉 beta 并默认打开:整条输入卡片原样浮起、边飞边收成气泡,整段 300ms,位移与形状都在合成器上跑。 ### 其它 - 新增「自动开合」开关:一个开关同时管思考行与过程组(默认开)。 - 网页端在读者没选过时,把 dsh 的「工作步骤展示」补成「标准」。 - 插件管理页上的文案改成产品口径(只讲读者看得见什么)。 - 内部:`src/client` 按特性域重组了目录;发送动效的关键帧隔一格取一格,建动画更快。 ## [0.2.3] - 2026-09-29 - 跟上 dsh 把 `TextShimmer` 改名成 `data-shimmer`:运行中的过程组重新会自己展开,组头标签替换也回来了。 在这之前是**静默失效**——插件不报错,只是不动。 - 插入符动效接管输入区里的 textarea(提问作答框与排队消息的编辑框),不再只管主输入框。 - 卷帘门走成一整扇,主线程卡住时不再猛跳;token 淡入的开销收进流式消息,不再叠到页面上的别的插件身上。 - 发送气泡改成「整条卡片原样浮起再收成气泡」,位移与形状同帧写(当时的 beta 形态)。 ## [0.2.0] - 2026-09-26 - 首个带自动发布的版本。功能清单见 [README](README.md) 的「它做了什么」。