Repository navigation
Releases
v0.1.3 — 打开插件就能配置(插件页直接出配置区)
v0.1.3 — 打开插件就能配置,不用再点进「包含的组件」
之前的路径是:插件页 → 点开插件 → 再点「包含的组件」里那一行带 › 的标题 → 才看到两个输入框。多一步。
插件页其实支持包级别的配置区:plugins.bundle.config 槽位,key = 包名,渲染位置就在插件标题下方。
这一版把同一份表单(同一个 SettingsFormModel / 同一个 configForms scope)同时注册到两个槽位:
plugins.bundle.config,key@dsh-external/dsh-turn-status-text→ 插件自己的页面,标题下直接配置;plugins.row.config,key@dsh-external/dsh-turn-status-text#dsh-turn-status-text→ 那一行也保留自己的页面(给需要从组件视角进入的人)。
两处都以 view: 'page' 渲染,仍然由 configForms.whileServed([NS]) 守卫;whileServed 的注册回调现在返回一个把两个槽位一起注销的 disposer。
自检相应加强:断言两个槽位、两个 key、每个槽位每次激活只注入一次、两处共用同一个组件。
实测(headless Chromium,真实 UI):打开 @dsh-external/dsh-turn-status-text 页面后
{"configSection":true,"labels":["自定义文字","文字颜色"],"rowDetailOpen":false,"version":"v0.1.3","fieldsInsideOwnPage":true}
rowDetailOpen:false 说明没有进入「包含的组件」;截图见 docs/plugins-config.png。
MIT © 2026 WONGIII
v0.1.2 — 插件页里真的能配置了(入口挂到 plugins.row.config)
v0.1.2 — 插件页里真的能配置了
v0.1.1 把设置搬到了「插件」页,但入口没挂对:插件页只给注册过 plugins.row.config 的行渲染那个带 › 的「配置」标题
(ui-plugin-manager 的 rowConfigKey() = <包名>#<row id>,configure.has(row) 决定是否可点)。
v0.1.1 注册的是 plugins.item(那是「官方」分组的位置),于是这一行在插件页里是纯文本、没有入口 —— 你们看到的就是这个。
这一版:
- 注册
plugins.row.config,key =@dsh-external/dsh-turn-status-text#dsh-turn-status-text,仍然用configForms.whileServed([NS])守卫; - 组件同时处理平台给的两种 view:列表里的摘要行(
summary)与整页(page); - 设置值仍然就是这一行 Config 上的两个
volatile()字段,改动由 Host 落到当前 profile 的cordis.patch.yml里那一行的config:段。
实测(真实桌面端 0.2.0-rc.2,headless Chromium 走真实 UI):
- 侧栏 插件 → 点开
@dsh-external/dsh-turn-status-text; - 该行标题变成按钮:
aria-label="配置 @dsh-external/dsh-turn-status-text"; - 点开 → 渲染 自定义文字 / 文字颜色 两个字段(
docs/plugins-config.png); - 填
宝宝正在努力思考… {duration}+#ff5500→ 保存; - 回会话读状态行:
{"found":true,"rowClass":"xz4KEq_running","text":"宝宝正在努力思考…宝宝正在努力思考… 6分43秒",
"rowColor":"rgb(255, 85, 0)","deepDivingVar":"#ff5500","shimmerVar":"#ff5500"}
Host 侧同时可见:node tools/verify-live.mjs → OK: dsh-turn-status-text is served -> {"text":"宝宝正在努力思考… {duration}","color":"#ff5500"}。
自检也补上了这一环:断言注册进 plugins.row.config、key 是 <包名>#<row id>、摘要/整页两种 view、以及表单状态与动作的注入。
MIT © 2026 WONGIII
v0.1.1 — 设置改到「插件」页:按 0.2.0-rc 的真实配置契约重写
v0.1.1 — 修好「插件页配置」这条链路
一次对运行中部署(DSH 0.2.0-rc.2)的独立复核发现:v0.1.0 的文字/颜色引擎是有效的(实测通过),但设置卡片指向了一个在新版里已经不存在的位置——
settings.plugin.item 槽位与 settingsScope 服务都没了,settings.register() 也不在设置服务上。于是那次发布里"卡片"永远不可能出现。
这一版按新版真实契约重写设置那一半:
- 设置项就是这一行的 Config:
cordis.patch.yml里- id: dsh-turn-status-text这个 row id 就是设置条目的 key;
两个字段声明为volatile(),所以能在插件页里改、保存后立即生效、不用重启也不用刷新。 - 卡片改用平台自己的设置 UI:
SettingsFormModel+SettingsForm+SettingsValueField+settingsTextField(@deepseek-ai/dsh-client-ui-primitives),
注册进插件页的plugins.item卡片列表,并用configForms.whileServed([NS])守卫:没组合这一行的部署里看不到任何痕迹。
自己写的卡片 CSS、取色盘、预览行、写入管线全部删除。 - 读写走
ctx.configForms.get('dsh-turn-status-text')(与部署自带设置页同一个 ConfigFormController:getSnapshot/subscribe/set/mutate),颜色规则由它的订阅回调重新同步。 - 配置入口:侧栏 插件 页 →(已安装)→ 选中本插件 → 配置 →「状态文案」。(设置页里那套「插件 → 可配置」在 0.2.0-rc 已经没有了。)
- 自检重写:按真实形状 mock(
ConfigForms的get/whileServed、平台表单模型、plugins.item注册),并把"编辑 → 保存 → 落到设置 → 渲染到状态行"整条链路跑通。 - 修正两处不实描述:流光的着色来自
--dsw-alias-label-shimmer(由.X_running从--dsw-alias-label-deep-diving-shimmer映射),
所以规则里两个自定义属性是必需的;卡片也不再声称有取色盘、预览行或平台图标。
实测(真实桌面端、改写后的 bundle):状态行读数 硬邦邦思考中… 10分3秒,rowColor rgb(255, 85, 0),两个着色变量均为 #ff5500。
兼容性:卡片按 0.2.0-rc 契约实现;0.1.7-rc 及更早的部署仍然支持文案覆盖与上色两条路径(那时本来也没有这套设置 API)。
MIT © 2026 WONGIII
v0.1.0 — 「深度求索中,用时 ···」改成你自己的文字和颜色
dsh-turn-status-text v0.1.0
把聊天区那行 「深度求索中,用时 12秒 ···」 换成你自己写的文字和你自己选的颜色,在 设置 → 插件 → 可配置 里改,保存即生效。
能改什么
- 文字:任意文字;写
{duration}占位符可以保留实时用时(宝宝正在努力思考… {duration}→宝宝正在努力思考… 12秒)。 - 颜色:调色盘或
#4d6bfe/#abc。整行统一上色——文字、左侧小鲸鱼、以及文字的流光渐变(TextShimmer用currentColor画,所以流光继续跑)。 - 恢复默认:每个字段一个,清空保存即回到部署原文案 / 主题原色。
只改「进行中」那行;一轮结束后的「已完成,用时 …」保持原样。设置存在 $DSH_HOME/settings.yaml 的 turn-status-text: 段,跨浏览器、重启后仍在;插件不联网。
安装
dsh plugin --profile <你的 profile> add github:WONGIII/dsh-turn-status-text桌面端在侧栏 插件 页里填同一个 GitHub 地址(桌面端 profile 由 Electron 应用独占管理,CLI 会拒绝)。
装完重启一次 DSH。 插件行是 host 侧 Loader 行,浏览器半侧由它对外提供,需要重新组合配置才会挂上;只刷新页面不够。
兼容性
| 部署 | 文案键 | 上色锚点 |
|---|---|---|
| 0.2.0-rc(当前桌面端) | chat.deepDiving / chat.deepDivingFor |
[data-chat-running] |
| 0.1.7-rc | message.turnProcess.deepDivingFor |
[data-turn-process] |
| 0.1.7 之前 | chat.deepDiving |
.<hash>_turnStatus(运行时发现) |
验证
node tools/selfcheck.mjs:假 DOM + 与线上同语义的 LocaleRuntime/SettingsScope 跑真实 bundle,覆盖文案优先级、{duration}填充与占位符收敛、颜色归一化、注入规则的精确 CSS 文本、页面全局覆盖与回退、非法颜色不写盘、两字段原子写、卸载清理。- 真实桌面端实测(
tools/live-probe.mjs,headless Chromium + CDP 读真实 DOM):未设覆盖时text:"深度求索中,用时 6分29秒 ···"、rowColor:"color(srgb 0.20549 0.367451 0.730196)";打开覆盖后text:"硬邦邦思考中…"、rowColor:"rgb(255, 85, 0)",--dsw-alias-label-deep-diving与--dsw-alias-label-shimmer同为#ff5500。截图见docs/before.png/docs/after.png。 - GitHub Actions 每次推送跑
tools/*.mjs语法检查、自检与 host 半侧加载检查。
MIT © 2026 WONGIII