{"_id":"@cxxl/dsh-ui-restyle","_rev":"7-8685e20030798d99cbcee6838e6ec6fc","name":"@cxxl/dsh-ui-restyle","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@cxxl/dsh-ui-restyle","version":"0.1.0","keywords":["dsh-plugin","ui","chat","collapse","timeline","deepseek-harness"],"license":"MIT","_id":"@cxxl/dsh-ui-restyle@0.1.0","maintainers":[{"name":"cxxl","email":"cl152556563887@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":[],"platform":"web"}},"dist":{"shasum":"32812267c508bbc77c5da36aa964c1adbc044d99","tarball":"https://registry.npmjs.org/@cxxl/dsh-ui-restyle/-/dsh-ui-restyle-0.1.0.tgz","fileCount":6,"integrity":"sha512-89EnrWQvl3EFwz2II5QFX0ppCqw6SIUMUQqL9z528r7yoKNHMGTqA3On3+e872lhsKDK7KKghUn+tE78wbxm/A==","signatures":[{"sig":"MEYCIQCAuSq+cK3ObWKu8MspHcZNK/28aEf2iJG8T2AJK5VEFAIhAKCEF9MfPQFtuEsXYeFsWb6V5oPtKLSmSwwHt+7yXWe8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20220},"main":"lib/index.js","type":"module","engines":{"node":">=22.5"},"exports":{".":"./lib/index.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"6a596df92ba9225dfaf7b6fe70c1bbccd0f44252","_npmUser":{"name":"cxxl","email":"cl152556563887@gmail.com"},"_npmVersion":"11.12.1","description":"DSH Web 执行过程优雅化插件：正文为阅读主线，正文之间的思考/工具/命令工作行折叠为单条时序摘要（内容全部保留、可搜索定位），并收紧执行区排版。","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-ui-restyle_0.1.0_1788932381980_0.4744138710870893","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cxxl/dsh-ui-restyle","version":"0.1.1","keywords":["dsh-plugin","ui","chat","collapse","timeline","deepseek-harness"],"license":"MIT","_id":"@cxxl/dsh-ui-restyle@0.1.1","maintainers":[{"name":"cxxl","email":"cl152556563887@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":[],"platform":"web"}},"dist":{"shasum":"bc9c0cc32861e3650a8e9a5b88965a066b21953c","tarball":"https://registry.npmjs.org/@cxxl/dsh-ui-restyle/-/dsh-ui-restyle-0.1.1.tgz","fileCount":6,"integrity":"sha512-5D3LKniyhcjOTPpskoxDT4DGbgExztlKs8CJWfsWPjMaSeV1mfDDpHxDY9s25PPnhde/5UzCzr3jZBj9mXpxiw==","signatures":[{"sig":"MEQCIAJJ7cuxuDgXvXCnNmgs6S12SsiH/icUql9XvRztVhPHAiAHVcBUV08tepyfooyEA5hgmJe1tuWH4gTpaFy4nYVWLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20874},"main":"lib/index.js","type":"module","engines":{"node":">=22.5"},"exports":{".":"./lib/index.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"a7786ce949bdbb8805cf0f8ad46f1823ed0f0c97","scripts":{"prepublishOnly":"node ../../scripts/check-publish-files.mjs"},"_npmUser":{"name":"cxxl","email":"cl152556563887@gmail.com"},"_npmVersion":"11.17.0","description":"DSH Web 执行过程优雅化插件：正文为阅读主线，正文之间的思考/工具/命令工作行折叠为单条时序摘要（内容全部保留、可搜索定位），并收紧执行区排版。","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-ui-restyle_0.1.1_1789057603637_0.06671271827488634","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cxxl/dsh-ui-restyle","version":"0.2.0","keywords":["dsh-plugin","ui","chat","collapse","timeline","deepseek-harness"],"license":"MIT","_id":"@cxxl/dsh-ui-restyle@0.2.0","maintainers":[{"name":"cxxl","email":"cl152556563887@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":[],"platform":"web"}},"dist":{"shasum":"27a86a6d63b89e48d9557ab6b07004ec68dd45a7","tarball":"https://registry.npmjs.org/@cxxl/dsh-ui-restyle/-/dsh-ui-restyle-0.2.0.tgz","fileCount":6,"integrity":"sha512-Qwjy3068QS6afiaxX1S1d5VxaGMQkizCSZdRZIib5Z+Wcd7PShmL5Si6BsTQlcdAhXd7kxeXqWGb/Ronp9Se3A==","signatures":[{"sig":"MEQCIB0rrZRMnpLdPJBl5/5Xb6r5oe3GiVK2+TO828g3vypzAiAbgEbuLK4OfvbthbYRTMavb5CHJpzUO7tNu/2e73Yqaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24271},"main":"lib/index.js","type":"module","engines":{"node":">=22.5"},"exports":{".":"./lib/index.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"a5b8e253508a542737ee73cc37af5525f297e811","scripts":{"prepublishOnly":"node ../../scripts/check-publish-files.mjs"},"_npmUser":{"name":"cxxl","email":"cl152556563887@gmail.com"},"_npmVersion":"11.17.0","description":"DSH Web 执行过程优雅化插件：正文为阅读主线，正文之间的思考/工具/命令工作行折叠为单条时序摘要（内容全部保留、可搜索定位），并收紧执行区排版。","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-ui-restyle_0.2.0_1789136660865_0.1453204188828141","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@cxxl/dsh-ui-restyle","version":"0.3.0","keywords":["dsh-plugin","ui","chat","collapse","timeline","deepseek-harness"],"license":"MIT","_id":"@cxxl/dsh-ui-restyle@0.3.0","maintainers":[{"name":"cxxl","email":"cl152556563887@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":[],"platform":"web"}},"dist":{"shasum":"5637eb8a9b0ae4cd57e7d6e4c9d148443dd8540f","tarball":"https://registry.npmjs.org/@cxxl/dsh-ui-restyle/-/dsh-ui-restyle-0.3.0.tgz","fileCount":8,"integrity":"sha512-bur5oESSyr68+mGbVDhkaxh43pjJIyvVbsD/L7brQGT/XRMWqEctqhTE3A+vrZFu6cvDqN8acGvOwctdEsWchQ==","signatures":[{"sig":"MEYCIQCmKT/+tqof+6PLigyfnKd0utlzF9G5jJCNhPQMytUviQIhAIHlb7sVVDyVckLGBGjW8ritymVytVf+nkhDgYRH9Gyl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGtjN387quuq0xn1r8YQfcq6Upo7Ma9zkQka1kT6rQ8RAiEA941or0RisCmvLa7C70Enu8ojrpQubUhIyUrU/9T+ISI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140315},"main":"lib/index.js","type":"module","engines":{"node":">=22.5"},"exports":{".":"./lib/index.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"4e040392791b3363cd0df00d77deaa4626e81f81","scripts":{"prepublishOnly":"node ../../scripts/check-publish-files.mjs"},"_npmUser":{"name":"cxxl","email":"cl152556563887@gmail.com"},"_npmVersion":"11.17.0","description":"DSH Web 精致化插件：自带 Inter Variable + JetBrains Mono 字体统一全站排版；聊天列按「步骤模型」把工作行收成一行组头（点开可见逐步状态）；并统一审批提示与提问卡片的交互样式。","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-ui-restyle_0.3.0_1789570887776_0.8646596364971246","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@cxxl/dsh-ui-restyle","version":"0.3.1","keywords":["dsh-plugin","ui","chat","collapse","timeline","deepseek-harness"],"license":"MIT","_id":"@cxxl/dsh-ui-restyle@0.3.1","maintainers":[{"name":"cxxl","email":"cl152556563887@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":[],"platform":"web"}},"dist":{"shasum":"2539c4183196ac38f401f436c927915069e5f88e","tarball":"https://registry.npmjs.org/@cxxl/dsh-ui-restyle/-/dsh-ui-restyle-0.3.1.tgz","fileCount":8,"integrity":"sha512-ADrFSJCs5f31TH4KwnvJ6ya/Y2F21tWnNLAiPhAGEl9Gv2/4RPzdutayJVA/ZpKBQpe9JM1xuvVQ1Fn1I+fAvw==","signatures":[{"sig":"MEUCIDPcfLJow0FXz5hp5pwNWrmA+azwcdav9/SPPo38NtT5AiEA9ORw/Oy4mQ0wyjYgj1McKIZc0c7rFPmF3NbrU46hWbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDOUZHhXXC1JFaQYjyx7ukyNZMaj1Lsi6EdK66zLuS3aQIhAPucB4xw2nZL/SN/Y3LsgZbxXCPnTFM/Fo0P4+jFG3EN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140707},"main":"lib/index.js","type":"module","engines":{"node":">=22.5"},"exports":{".":"./lib/index.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3b8aad35c885c88765facbcde895f02627661b23","scripts":{"prepublishOnly":"node ../../scripts/check-publish-files.mjs"},"_npmUser":{"name":"cxxl","email":"cl152556563887@gmail.com"},"_npmVersion":"11.17.0","description":"DSH Web 精致化插件：自带 Inter Variable + JetBrains Mono 字体统一全站排版；聊天列按「步骤模型」把工作行收成一行组头（点开可见逐步状态）；并统一审批提示与提问卡片的交互样式。","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-ui-restyle_0.3.1_1789574481874_0.7740341078981074","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@cxxl/dsh-ui-restyle","version":"0.3.2","keywords":["dsh-plugin","ui","chat","collapse","timeline","deepseek-harness"],"license":"MIT","_id":"@cxxl/dsh-ui-restyle@0.3.2","maintainers":[{"name":"cxxl","email":"cl152556563887@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":[],"platform":"web"}},"dist":{"shasum":"39c30483775a1b57baada3d50099eb26d4182b2b","tarball":"https://registry.npmjs.org/@cxxl/dsh-ui-restyle/-/dsh-ui-restyle-0.3.2.tgz","fileCount":8,"integrity":"sha512-rI1CEgBjhypML8r5WZGYzo0VUy5VnRvqRirYNJfEjeUCdqB2xPSq6OKXJZyzV/OMShOdPM2pyQ2mY6cCkQ49iA==","signatures":[{"sig":"MEUCIQD2v5FdjM2UIohkRftoOlVlcb18MKx2+N2SOKeL4HBXhAIgEf1OpMs+JeIdfxWNQn6dOlzcHlj6ZYKvRd2RN/CObHo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIA+HazJ7zsKK8PFc21fd32vlzWBagT4+t08RTfjKXOWdAiEAirMX3/vuGLADQcLgmCN1TABjvJ0AvRlTqsvEtvKHk6Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140707},"main":"lib/index.js","type":"module","engines":{"node":">=22.5"},"exports":{".":"./lib/index.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3b8aad35c885c88765facbcde895f02627661b23","scripts":{"prepublishOnly":"node ../../scripts/check-publish-files.mjs"},"_npmUser":{"name":"cxxl","email":"cl152556563887@gmail.com"},"_npmVersion":"11.17.0","description":"DSH Web 精致化插件：自带 Inter Variable + JetBrains Mono 字体统一全站排版；聊天列按「步骤模型」把工作行收成一行组头（点开可见逐步状态）；并统一审批提示与提问卡片的交互样式。","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-ui-restyle_0.3.2_1789574583971_0.06514000444572488","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@cxxl/dsh-ui-restyle@0.4.0","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":[],"platform":"web"}},"bugs":{"url":"https://github.com/happyCxxl/dsh-plugins/issues"},"dist":{"shasum":"e18864814154acac1ba978aa833638a70d973597","tarball":"https://registry.npmjs.org/@cxxl/dsh-ui-restyle/-/dsh-ui-restyle-0.4.0.tgz","fileCount":8,"integrity":"sha512-+xXaBNPPUvj20rQGZ0YGyi25L/qc43e2RV9y1HCO3w1CaALkX74grKylXbEmiP4AjiD2yGydQxzYQlJEfa1SIg==","signatures":[{"sig":"MEUCIQCikV3hpilTE0mPxz/afOuduh8xT0+SRgdb+CaU7glMUQIgOKLTuS/+8tV3q7kY0ITmaSQP95UxRY0kI41iGk6GWNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBkh1yavEtSpwInXJl0xfWx2awU90ALbIAkb4qOJZ1XaAiAqs979i+IdpFxXFm28csMEKd30tEmp8h/4dzPWtZkKig=="}],"unpackedSize":143606},"main":"lib/index.js","name":"@cxxl/dsh-ui-restyle","type":"module","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":"./lib/index.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"fbfef0904f92b16df8e9d07cb50041cf1c0de75a","license":"MIT","scripts":{"prepublishOnly":"node ../../scripts/check-publish-files.mjs"},"version":"0.4.0","_npmUser":{"name":"cxxl","email":"cl152556563887@gmail.com"},"homepage":"https://github.com/happyCxxl/dsh-plugins#readme","keywords":["dsh-plugin","ui","chat","collapse","timeline","deepseek-harness"],"repository":{"url":"git+https://github.com/happyCxxl/dsh-plugins.git","type":"git","directory":"plugins/dsh-ui-restyle"},"_npmVersion":"11.17.0","description":"DSH Web 精致化插件：自带 Inter Variable + JetBrains Mono 字体统一全站排版；聊天列按「步骤模型」把工作行收成一行组头（点开可见逐步状态）；并统一审批提示与提问卡片的交互样式。","directories":{},"maintainers":[{"name":"cxxl","email":"cl152556563887@gmail.com"}],"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-ui-restyle_0.4.0_1789912120566_0.47608098084117545"}}},"time":{"created":"2026-09-09T05:39:41.872Z","modified":"2026-09-20T13:48:40.818Z","0.1.0":"2026-09-09T05:39:42.121Z","0.1.1":"2026-09-10T16:26:43.812Z","0.2.0":"2026-09-11T14:24:21.001Z","0.3.0":"2026-09-16T15:01:27.858Z","0.3.1":"2026-09-16T16:01:21.974Z","0.3.2":"2026-09-16T16:03:04.082Z","0.4.0":"2026-09-20T13:48:40.650Z"},"license":"MIT","keywords":["dsh-plugin","ui","chat","collapse","timeline","deepseek-harness"],"description":"DSH Web 精致化插件：自带 Inter Variable + JetBrains Mono 字体统一全站排版；聊天列按「步骤模型」把工作行收成一行组头（点开可见逐步状态）；并统一审批提示与提问卡片的交互样式。","maintainers":[{"name":"cxxl","email":"cl152556563887@gmail.com"}],"readme":"# dsh-ui-restyle\n\nDSH Web 精致化插件。三件事，一套语言：\n\n1. **字体** —— 自带 Inter Variable + JetBrains Mono，覆盖宿主字体变量，**全站排版一次性统一**；\n2. **聊天列** —— 按「步骤模型 A」把工作行收成**一行组头**，点开才看**逐步状态列表**；\n3. **交互面板** —— 审批提示与提问卡片按同一套半径 / 边框 / 字重纪律重排。\n\n## 一、为什么自带字体（这是「好不好看」的关键）\n\nDSH 的字体栈在 Windows 上落到 **Segoe UI + Consolas**：\n\n```\n--dsw-font-family:      -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', …\n--ds-font-family-code:  'SF Mono', 'JetBrains Mono', 'Fira Code', Consolas, …\n```\n\n而成熟产品设计系统的质感恰恰建立在**可变字体**上：\n\n- **Linear** 全站使用 Inter Variable 的 **字重 510**（介于 400 与 500 之间的中间档，\"比粗体更响亮的排版低语\"），并全局开启 `cv01` / `ss03` OpenType 特性；\n- **Raycast** 用 Inter + **正字距**（+0.2px，深色底上\"透气\"）与 **500 字重基线**。\n\nSegoe UI 是静态字体——**根本没有 510 这一档**，也不支持 `cv01/ss03`。所以不换字体，排版上限就被锁死了。\n\n本插件把两款字体打进包里（**合计 88KB**，均为 OFL 许可可自由分发），由宿主注册 HTTP 路由喂给页面，`@font-face` 在插件样式表里声明，字体变量覆盖走官方主题通道 `ctx.theme.overrideTokens`（light/dark 双值）。中文仍回落系统 Microsoft YaHei（打包 CJK 字体需数 MB，业界通行做法是不打包）。\n\n```\nGET /dsh-ui-restyle/fonts/inter-var-latin.woff2\nGET /dsh-ui-restyle/fonts/jetbrains-mono-var-latin.woff2\n```\n\n## 二、步骤模型 A（聊天列）\n\n### 默认只有一行组头\n\n```\n正文 A（永远可见）\n▸ ✓  4 步  think · read×2 · edit                      1.4s\n正文 B\n```\n\n组头自身承载全部状态信号（**不破格、不自动展开**）：\n\n| 状态 | 组头表现 |\n|---|---|\n| 成功 | 细勾 · 三级文字色（刻意安静） |\n| **运行中** | 呼吸**盲文转轮** + 计数/耗时转强调色 + **当前步骤在组成串里点亮** + 计时每秒跳 |\n| **有失败** | **红叉** + `N 失败` 红字 + 整行从三级提亮到二级 |\n| 已中止 | 琥珀短横 + 「已中止」 |\n\n### 点开才是步骤列表\n\n```\n▾ ✕  4 步 · 1 失败  think · read×2 · edit · glob       3.2s\n   ✓  think   分析报错来源                          1.2s\n   ✓  read    lib/index.js                          12ms\n   ✕  edit    lib/index.js                          34ms\n      EPERM: operation not permitted — 被另一个进程占用\n   –  pwsh    npm publish                          已中止\n   ⟳  pwsh    pnpm dsh web                          0.4s\n      └ ⟳ subcall  tsc --noEmit                     0.2s\n   ○  glob    **/*.ts                                 —\n```\n\n六种状态各有独立语言：`○` 排队 / `⟳` 运行中 / `✓` 成功（**故意用三级色，不抢眼**）/ `✕` 失败（**错误摘要写在行内第二行**）/ `–` 中止 / `└` 嵌套（缩进 + 发丝折线归位父步骤）。点某一步会露出该步的**原生行**看完整详情。\n\n三条原则：**成功故意变暗**、**列对齐**（工具/目标/耗时等宽 `tabular-nums`）、**信息就地**。\n\n## 三、交互面板\n\n以稳定钩子为锚给兄弟/父节点打标记，再用 CSS 精确命中，**不改结构**：\n\n- **审批**：语义只用**一处**表达——左侧 **2px 琥珀杠**（而不是旧实现的「琥珀描边 + 整条色带 + 圆点」三重强调）；半径从 `20px` 收到 `8px`；命令进 mono 代码面；**幽灵「拒绝」+ 实心「允许一次」**（危险的默认不该醒目）。\n- **提问**：序号用 mono（与步骤行同族）；**方形复选框**表示多选（用形状而非颜色区分单选/多选）；推荐项只给低调的边框小字；分隔线用发丝边。\n\n## 安装\n\n```powershell\ndsh plugin --profile web add @cxxl/dsh-ui-restyle\n# 装完重启一次 dsh web（bundle 层只在启动时读取）\n```\n\n卸载：`dsh plugin --profile web add` 换成 `remove`，重启后恢复原生界面。\n\n> **改宿主侧代码（`lib/index.js`）必须重启**；只改 `lib/client.js` 时浏览器端 HMR 会热重载，刷新即可。\n\n## 依赖策略\n\n零 harness import 形态（见 `docs/PLUGIN_SPEC.md` §3.1）：只用 Node 内置模块 + 宿主服务 `webServer`，不 import 任何 harness 包——避免进程内第二份 cordis 造成 Symbol 分裂。\n\n## 与原生「回合过程折叠」的关系（重要）\n\nDSH 自带 Turn-process 折叠（设置 → **对话视图**）：\n\n- **紧凑（compact，默认）**：原生把回合内的思考/工具行打上 `data-turn-process-member` 并折叠，这些行**归原生管**，本插件主动让位；\n- **常规（normal）**：原生不介入，本插件接管折叠。\n\n**想看到本插件的步骤模型，请把「对话视图」设为「常规」。**\n\n## 选择器策略：只依赖稳定 `data-*` 钩子\n\nv0.1 曾硬编码 CSS Module 构建哈希类名（`.Md3f7G_column` / `.o3BgMG_root` / `.QWLzlG_root` 等）。这些哈希随前端重建而变（`dsh-web-app` 从 `0.1.1-rc.2` 到 `0.1.2-alpha.5` 就全部失配），插件 `querySelectorAll` 匹配不到任何元素，**静默失效且不报错**。v0.2 起改用稳定钩子：\n\n| 用途 | 稳定选择器 |\n|---|---|\n| 聊天流节点 | `[data-chat-flow-kind]` / `[data-chat-flow-key]` |\n| 思考行 | `[data-variant=\"think\"]` |\n| 工具行 | `[data-tool]` + `[data-state]`（`running` / `ok` / `error` / `stopped`） |\n| 上下文行 | `[data-context-source]` |\n| 流式标记 | `[data-streaming]`（**正在流式输出的步骤永远算正文，绝不收起**） |\n| 原生折叠成员 | `[data-turn-process-member]`（跳过，归原生管） |\n| 审批 / 提问 | `[data-approval-key]` `[data-approval-scroll]` / `[data-question-key]` `[data-question-scroll]` |\n\n聊天列本身没有稳定类名，改为「对所有 `[data-chat-flow-kind]` 元素按父节点分组」反推。\n\n## 约定偏差与脆弱面清单\n\n步骤折叠与部分交互样式依赖 `data-*` 钩子 + DOM 操作，属**文档化约定偏差**——官方 Slot 体系没有行级折叠席位；接管官方渲染器（`conversation.chat.node` 的 `tool-call` 键）经 2026-09 调研评估为**高风险**（20 个发布版 / 22 天、渲染器契约层窗口内 6 次 breaking，且需继承 `tool.call.toolview` 整棵 17 键子树），故放弃。\n\n**稳定性证据**：`data-chat-flow-*`（2026-08-09 起源）、`data-tool` / `data-state`（2026-07-27 起源）跨全部 20 个发布版本**零破坏性变更**（git blame 全史核查）。\n\n**已知注意点**：\n\n- 官方 2026-08-27 起用 `hidden=\"until-found\"` 挂隐藏行——未来若改选择器需过滤 `[hidden]`（官方示范 `:not([hidden])`）；\n- 该层无官方文档承诺，属实现细节：每次 harness 发版后应实测本插件回归（v0.2 的哈希类名教训已规避，但风险仍在）。\n\n## 不丢内容的工程保障\n\n- **纯视图层**：不接管原生 renderer、不修改消息数据、不移动原生节点；\n- 被收起的内容**仍在 DOM 里**（`display:none`），点步骤可见、插件卸载即全部恢复；\n- **兜底自愈**：每 1.5s 检查一次\"被收起但已不该收起\"的行并立刻放出——从机制上消灭「必须手动刷新才显示」这类监听漏报问题（v0.3.0 修过一个：流式增量走 `characterData`，漏监听会让最终输出一直不可见）。\n\n## 作用的边界与副作用\n\n- 字体变量是**全站级**覆盖（这是\"统一风格\"的前提）；步骤模型只作用于聊天列，其余界面只受字体与交互面板样式影响；\n- 注入一个 `<style>` 标签、若干步骤行 DOM 与若干 `data-dur-*` 标注（全部随插件卸载回收）；\n- 不持久化任何数据；不发起除自身字体以外的任何网络请求；\n- 颜色全部取自 DSH 主题 token，兼容浅色/深色主题。\n\n## 已知边界\n\n- 分组粒度是**聊天节点**（同一个 `assistant-step` 内\"思考—正文—思考\"不切开）；\n- **步骤的\"目标\"列是启发式提取**：宿主没有独立的 target 钩子，实现方式是把该行文本去掉工具名后的剩余部分，个别工具可能显示不够干净；\n- **历史消息的耗时留空**（不编造，只测本次会话内实测到的耗时）；\n- 依赖 `display:none` 收起，因此被收起内容**不参与浏览器 Ctrl+F**（点开步骤或用轨迹视图查看）；\n- 「对话视图 = 紧凑」时本插件让位于原生折叠，不生效（设计如此）。\n\n## 字体许可\n\n| 字体 | 许可 | 归属 |\n|---|---|---|\n| Inter Variable（latin 子集） | SIL Open Font License 1.1 | © Rasmus Andersson |\n| JetBrains Mono Variable（latin 子集） | SIL Open Font License 1.1 | © JetBrains s.r.o. |\n\n两file 均为上游官方发行的 latin 子集，未做字形修改，随包分发符合 OFL 要求。\n\n## 开发迭代\n\n```powershell\n# 只改 lib/client.js：刷新浏览器即可（HMR 热重载），无需重启\n# 改 lib/index.js 或 package.json：需要重启 dsh web\n```\n\n设计过程与四个方向样张留档在 [`design/`](design/)：\n\n- `font-proof.html` —— 字体对照（Segoe UI vs Inter，同一设计只换字体）\n- `step-model.html` / `step-model-c.html` —— 步骤模型 A（点开才看）/ C（破界露出）\n- `interaction.html` —— 审批与提问的现状 vs 重做\n- `research/` —— Linear 与 Raycast 的设计系统规格（抓取的原始资料）\n\n## 许可\n\nMIT（插件代码）。内置字体见上文「字体许可」。\n","readmeFilename":"README.md","homepage":"https://github.com/happyCxxl/dsh-plugins#readme","repository":{"url":"git+https://github.com/happyCxxl/dsh-plugins.git","type":"git","directory":"plugins/dsh-ui-restyle"},"bugs":{"url":"https://github.com/happyCxxl/dsh-plugins/issues"}}