# CHANGELOG 本文件记录插件版本(`package.json` 的 `version`)与补丁代号(`patch/*` 注入模块)两条线的演进。 ## 0.6.0(当前) > 思考门整体移除(先生定调):v4 忽略 thinking:disabled 是模型能力边界——把 v0.5.5~v0.5.16 为战役搭的机制全部清掉,插件恢复「渲染 + 美学」两个干净职责。 - **精简·思考门移除(先生 · 2026-08-25 · 实测收官)**:lib/index.js 从 ~578 行瘦身至 345 行,移除全部思考门代码——GATE_CREATIVE/GATE_MATH 超长关键词表、gateTextOf/gateStripInjected/gateIsInjected/gateClassify 缓存链、gateLog 日志落盘(~/.dsh/dsh-raw-html-gate.log 已删)、agent/request 瀑布双通道 + agent/created/existing 遍历、schema 的 thinkingGate 开关。lib/index.js 保留一行说明注释(含未来恢复指引)。 - **移除结论(先生十几轮实测换来的认知)**:①`thinking:{type:"disabled"}` 被 DeepSeek v4-flash 忽略(先生实测:删除 effort + maxTokens=4096 → 思考吃满 4096、正文截断——若 disabled 生效思考应为 0);②v4 thinkingLevelMap 只有 high/max 有效(minimal/low/medium→null),API 无低档可设;③`max_tokens` caps all tokens 含思考([DeepSeek-v4-Flash recipe](https://github.com/alexellis/DeepSeek-v4-Flash-DSpark-2x-DGX-Spark))——压缩总量 = 牺牲正文,不可行。**v4 是强制思考模型,DSH 插件层无法关闭/压缩其思考**。 - **保留的遗产**:协议层【心流纪律·思考最小化】【初稿即定稿】对输出质量有实际价值(先生测试中思考链从 8K 降到 2K 的进步主要来自协议引导)——保留在 buildStructuralText 常驻注入;思考门的「删除 effort」动作对支持 effort=off 的其他模型(Gemini/Claude/OpenAI)仍正确,未来换模型时参考 CHANGELOG v0.5.5~v0.5.16 的 git 历史恢复即可(核心 30 行:agent/request 瀑布 + 删 reasoningEffort)。 - **资产·外置字体库扩充(先生 · 2026-08-28 · 下载 10 款入库)**:`I:\字体\新增-2026-08-28\` 新增 Aa 今日花青-春兰茅坤 / Aa 狂派手书 / Aa 狂侠体 / 依山北篆体 / 字魂游龙篆书(商用需授权)/ 我会把你叫做爱情 / 自由浪漫体 / 香蕉修正带灵感体 / 鱼尾书法行书(简·繁)共 10 款 TTF。DESIGN.md §0.1 登记 `Lanxi-` 别名(`Lanxi-鱼尾行书` 为日报/晚报刊头首选),styles/wire-news.md 联动字体建议,fonts-index.txt 同步清单。均为商业字体,授权由先生自行确认(DESIGN.md §0.1 既有免责说明覆盖)。 - **修复·boostTextImportant 误伤 @font-face(先生 · 2026-08-28 · 字库增刊首测即中)**:v6.19 的文字声明优先级提升会给 style 内所有 `font-family:` 追加 `!important`——@font-face 描述符不允许 !important(CSS Fonts 规范),一旦注入整个 @font-face 规则作废、字体加载失败(先生下载的鱼尾行书/狂派手书等全部回落系统字体,且与皮肤覆盖无关——boost 机制本身在正常工作)。修复:boost 前用占位符剥离 @font-face 块、boost 后还原(patch/v6-inject.js 新增 FACE_PLACEHOLDER_RE),普通声明 boost 行为不变。新增 tests/boost-fontface.test.cjs 五用例全绿;update-v6-inject.cjs 已推进运行中 bundle(备份 .bak-v6u-*),Ctrl+F5 生效。 - **机制·字体场景速查表(先生 · 2026-08-28 · 让 236 款字库活起来)**:新建 styles/_FONTS.md——按 9 大场景(报刊头条/文学书信/古风篆刻/数据学术/萌系手账/江湖热血/浪漫婚礼/英文花体/繁体竖排)组织字体推荐,明确「禁止只盯 WenKai/HeiTi 常用款」+ 字体运用三戒(克制/对味/防呆)+ 选择顺序(消灭选择税)。styles/_INDEX.md 挂接指引(agent 必读链),lib/index.js buildAestheticText 注入流程加第 3 步「选字体先 read _FONTS.md」(重启后生效),wabi-sabi/ink-letter/porcelain-data 三风格文档字体行接入新字库(春兰茅坤/爱情手写/鱼尾行书繁/静黑超细/点黑)。 - **机制·自愈层 v6.33e:版面收窄兜底(先生 · 2026-08-25 · 5 张错误百出测试卡实测)**:先生要求随意写几张「错误百出」的卡片测试渲染器牢固度,实测发现**所有缺宽度声明的卡片拉满整条消息宽度**(一整条色板,无「卡片」边界感)——applyRootGuard 此前只兜 `max-width:100%`(防溢出),不兜「版面收窄」。修复:根容器**缺宽度(未写 width 且未写 max-width)时默认补 `max-width:920px`**(报纸版心,参考成品「今日八卦晚报」宽度);AI 显式写了 width / max-width(全宽或自定义宽度意图)→ 尊重不补。与圆角哲学的区分:920px 是结构/版面(先生定调要兜),圆角是装饰(不兜,默认直角)。tests/stable.test.mjs 第 15 组新增 3 断言(缺宽度补 920px / max-width:100% 尊重 / width:100% 尊重),总计 73 断言全绿;patch-frontend.cjs 已推进运行中 bundle(备份 .bak-2026-08-25T15-25-24),Ctrl+F5 生效。 - **机制·自愈层 v6.33f:位置感知花括号修复·三版迭代(先生 · 2026-08-25 · 卡 2 SVG 动画不转)**:先生测试「错误百出」卡片时发现 SVG 动画静止——蓝汐首轮误判为「内容级疏漏(没写 keyframes)」,重发补 keyframes 后**仍不转**,真相落网:**花括号漏 `}` 会把后续规则与 @keyframes 全吞进前一个规则块**(浏览器把 `.dot` 选择器当无效声明、keyframes 根本没定义),且 closeBraces 只覆盖流式 tail 且只在末尾补 }(数量对了、位置错了,救不回被吞的规则)。**三版迭代**:①「前一个非空白是 ;/} 时补 }」——漏 } 后直接跟完整选择器(`#vcp-root .dot{`,{ 前是字母)时不触发;②块类型栈(rule 块内遇 { 补 })——补的 } 落在选择器文本**之后**(`.dot}{`),浏览器仍把选择器当无效声明;③**定案:块类型栈 + 选择器挪位**——普通规则块(选择器{...})只能含声明,遇到 `{` 且栈顶是 rule 块 → 从 out 尾部截出「新 { 前的选择器文本」挪到补的 `}` **之后**,让新规则独立成块(`.code{...;}#vcp-root .dot{...}`);at-rule 块(@media/@supports/@keyframes)允许嵌套不补,正常 CSS 栈不残留 rule 幂等。tests/stable.test.mjs 第 17 组 5 断言(花括号平衡 / @keyframes 保留 / .dot 独立 / 平衡幂等 / @media 不误伤),总计 78 断言全绿;patch-frontend.cjs 已推进运行中 bundle(备份 .bak-2026-08-25T15-36-55),Ctrl+F5 生效。 - **机制·自愈层 v6.34:SVG 类动画中心自愈(先生 · 2026-08-25 · 卡 2 橙点不转)**:v6.33f 救回 @keyframes 后动画转起来了,先生观察「橙色小点没转动、蓝色大圈在转」——CSS 类里的动画(`.dot{animation:spin...}`)不经过 guardChildren 的内联 style 检查(它只认 props.style),SVG `` 的 transform-origin 走浏览器默认(view-box 原点),旋转中心不在元素自身 → 整组绕画面原点转、非对称元素(橙点)的轨道运动不协调。修复:新增 `healSvgAnimation`(DOM 层,挂载后)——`getComputedStyle` 判定「有动画且 transform-origin 是默认值(''/0px 0px/50% 50%)」→ 补 `transform-box:fill-box` + `transform-origin:center`,动画围绕元素自身包围盒中心旋转(整体自转,对称协调);AI 显式写了 origin(内联/类规则,计算值非默认)→ 尊重。接入 ref 回调 + 流式防抖。tests/stable.test.mjs 第 18 组 3 断言(jsdom 动画支持有限走条件断言 / 无动画不碰 / 幂等),总计 81 断言全绿;patch-frontend.cjs 已推进运行中 bundle(备份 .bak-2026-08-25T15-39-57),Ctrl+F5 生效。 - **机制·自愈层 v6.33d:文字属性全锁继承——「小」的真根因落网(先生 · 2026-08-25 · 晚报卡四连问驱动)**:先生指出蓝汐晚报卡两处缺陷——①根容器无圆角、大背景直角贴边像「没设盒子」;②头条「登陆」二字比「海南昌江沿海」明显显小。先生定调:「就算 AI 写出问题代码也不用怕」,兜底交给渲染器。**四版演进(先生逐轮实测驱动)**:v6.33 `:where(*)` 单规则 → 仍小;v6.33b CSS 双保险(根容器链 + 标签 inherit,特异性稳压皮肤)→ 仍小;v6.33c DOM 层内联 !important 锁 font-family → 仍小;**v6.33d 根因落网:「小」不是字面率差异,是 font-size 被皮肤 textRule 压制**——皮肤的 textRule 同时注入 font-size 与 font-family(均 !important),卡片类规则 boost 后 (1,1,0)!important 能保住 .t 自己的 19px,但「没写 font-size 的强调词 span」只有继承值,**继承输给皮肤直接作用的规则** → 强调词被压成皮肤字号。v6.33d 把 font-family / font-size / font-weight / font-style / line-height / letter-spacing 全部按属性锁成 inherit(仅覆盖未显式声明的:内联声明跳过、含该属性的选择器命中跳过;**color/text-align 不锁**——颜色是 AI 设计 .hot 橙色、对齐是布局)。根容器兜底链被皮肤压住时同步锁定系统链。幂等 dataset 标记,非流式 ref 回调 + 流式防抖双接入。**圆角不兜底(先生定调)**:border-radius 是装饰不是结构,AI 没写可能故意要直角——强补圆角误判意图;结构兜底照做、圆角默认直角。tests/stable.test.mjs 第 15/16 组共 20 断言全绿(总计 70 断言);patch-frontend.cjs 已推进运行中 bundle(备份 .bak-2026-08-25T15-13-27),Ctrl+F5 生效。 - **修复·渲染开关三态化 v6.35——「AI 守规矩也掉格式」根治(先生 · 2026-08-29 · 上架申请书卡实测)**:先生发现一条**根容器/配对/结构全对**的 VCP 卡(dsh-market 上架申请书)仍显示源码——推翻「模型违规」假设后逐行翻 bundle 落网真凶:`dsh.rawHtml` 开关**只有读取端(bundle 两分支)与写入端(lib/client.js「」按钮点击时)**,从未被初始化——`isRenderEnabled()` 是 `=== '1'`,**undefined(没点过按钮/清缓存/新环境)= 关闭** → html/code 两分支全拒 → 一切 VCP 卡显示源码/代码块。先生定调「AI 总会出错,用渲染器兜底更好」:①patch/patch-frontend.cjs 锚点 A(case"html")与锚点 E(case"code" 围栏兜底)判定从 `==="1"` 升级为 **`!=="0"` 三态化**——undefined=默认开、"1"=开、"0"=显式关闭(「」按钮语义不变,`"0"` 仍尊重用户关闭);code 分支保留 vcp-root 白名单正则(普通代码块不误伤);两分支回退时 console.warn 打印原因(开关关闭/渲染异常),下次排查不再翻 bundle;②patch/v6-inject.js 注入块启动自检:`dsh.rawHtml` 为 null 时自动落盘 `"1"` 并 console.debug 提示(只补从未设置,绝不覆盖显式选择);③lib/client.js `isRenderEnabled()` 同步三态化,按钮显示与渲染器判定一致(undefined 显示 ON)。patch-frontend.cjs 支持 v6.30/v6.32/旧版 bundle 幂等升级,已推进运行中 bundle(备份 .bak-2026-08-26T05-26-15),node --check 通过,Ctrl+F5 生效。 - **修复·自愈层 v6.36:code 内容实体保护——「code 块露标签」根治(先生 · 2026-08-29 · 交付单 code 块实测)**:v6.35 交付单的 `
` 展示判定逻辑时,先生看到 `case"html":` 等标签文本露出——根因:code 块里写 `<div`(已转义)或裸 `
` 全吞成文本(DOMParser 容错)。修复:render 管线在 mermaid 转换后加 `protectCodeEntities`——对 `
` 内容做实体保护:**白名单内联标签(span/b/em/i/strong,AI 常用高亮)占位保留**,其余裸 `<` / `>` 全部转义 `<` / `>`;已转义实体(`<div`)不含裸 `<`,天然不双重转义;mermaid pre 已先转 div 不受影响。tests/stable.test.mjs 第 19 组 11 断言(裸 `` 等块级标签不能打断段落)**——消息若以「文字前言 + 换行 + `
`」(中间无空行)输出,mdast 把 `
` 开标签当【段落内联 HTML】(htmlText),后续 `
`、`