Repository navigation
Releases: BangBang-03/dsh-client-ui-quote
Release list
v0.14.1
Changed
- 引用高亮在回合结束后收回:引用作为胶囊发出后,回合尾的
data-dshq-turn作为完成信号,paintAnchors把对应 source 标成spent;坐标保留(跳回/卡片/清单照常),高亮与序号不再绘制。keepHighlight: true可保留常亮。新增 1 组断言。
Docs
- DSH 0.2.1-rc.5 兼容性复核:
engines.dsh保持>=0.2.0-rc.2(只有下限、没有上限),DSH 的加载前检查在 0.2.1-rc.5 上判定通过,不会像写了上界的插件那样被禁用。实机复核了宿主半路由(同源围栏返回本插件的 403 JSON)、webServer.register/connection.requestRejection/agents.create的seed与inheritedEventCount、subagent/descriptorv3,以及客户端槽位与 DOM 属性(conversation.chat.turnTail、data-chat-turn、reference-chip)。README「已知限制」与docs/design.md的声明说明同步更新;插件行为与离线断言数不变。
断言
离线断言 728 组(check 12 + capsule 506 + panel 163 + host 47)。
npm: dsh-client-ui-quote@0.14.1 · install: dsh plugin --profile web add dsh-client-ui-quote
v0.14.0
0.14.0 — 2026-10-29
Added
- 界面语言开关(
language):"auto"(默认)跟随宿主语言,"zh"/"en"/"ru"把本插件文案固定为中文 / 英文 / 俄文,不受宿主设置影响。translateFor()在auto之外直接查对应词典,缺失的键回退为键名而不是另一种语言。新增 5 组断言(默认 auto、固定 ru、固定 en、非法值丢弃、恢复 auto)。 - 俄语词典(
ru):合并社区 PR #3(@skyfishalex)——lib/client.js的ru词典(85 键)、locale/ru.json(卡片标题与描述)、test/check.mjs的 locale 目录校验扩到zh/en/ru;README 的语言说明改为「中文/英文/俄文」。此前俄语界面回退到中文。
Changed
- 合并后补齐
ru词典里缺的sideChatEmpty(贡献者分支早于 0.13.4 才有的键),并把locale/README.md与CONTRIBUTING.md里「两份字典成对」的约定扩到三语。
断言
离线断言 727 组(check 12 + capsule 505 + panel 163 + host 47)。
v0.13.4
Fixed
- 隐藏线程第二次发送报
subagent/not-resumable(issue #2):真实原因是会话存储要求第一个 surface 节点是受保护的系统头(system/messageappend),而旧种子把上下文user/message放在最前——首个真实回合的system/message在重载时被判system/message requires a protected first surface head,之后每次发送都以subagent/not-resumable失败(v4 的收口回合缺这个头,v5 的无回合种子更不用说)。现在种子是一个收口回合:turn/start→step/start→ 空内容的system/message(头) → 隐性上下文 →step/end→turn/end→ descriptor(+ 可选model/selection)。2026-10-29 真机验证通过:同一线程连发两条,磁盘日志里 system 头是 kind=system-prompt、content=0,turn 2 与 turn 3 都是 completed,各有 request/header。侧边对话在本插件自己的quote-sidechat页签里进行,发送走标准会话路径,从磁盘打开这份合法的日志;子 agent 创建完、定完标题就dispose(活句柄会让宿主的子代理 resume 失败——真机里 v6 子会话的历史加载就是这样被拒的)。隐藏线程形状版本戳升到v: 6,旧线程下一次点击自动替换。断言:种子形状改写为「受保护 system 头 + 收口回合 + 上下文位置」,另有「自营页签注册后 hidden 线程开自营页」1 组。 - 自营侧聊页的 blank 兜底(v6 种子通常不会走到):宿主
ui-conversation的ConversationContent在hero为真时渲染欢迎页(「探索未至之境」)与 hero 输入条(未选工作区时禁用),引用芯片落不进去。自营页固定hero: false、phase 走settling → active;宿主若仍把子会话判成 blank,空态块兜底。断言补「blank 子会话仍走聊天态」「打开中/父会话可用性未知时先 settling」2 组。 - blank 兜底:视图区没有 DOM 时侧聊页只剩输入卡(宿主
ConversationSession在session.blank时直接return null):输入卡被排到页签栏下方,引用 ×N条盖住页签条。自营页在视图槽里补一个空态块(首条消息后自动隐藏),把输入条放回页底。断言补「视图区空态」1 组。离线断言 715 组(check 12 + capsule 493 + panel 163 + host 47);新增 4 组:自营页签、blank 仍走聊天态、settling、视图区空态。
(下一轮)
npm: dsh-client-ui-quote@0.13.4 · install: dsh plugin --profile web add dsh-client-ui-quote
v0.13.3
Changed
- 删掉 0.13.2 里的临时诊断路由
resume.diag(定位 issue #2 用的脚手架)及其 2 组断言:它是同源围栏内的只读诊断,对用户不可见,但不该随包长期发布。侧聊的模型选择修复本身不变。离线断言 712 → 711(host 48 → 47)。
npm: dsh-client-ui-quote@0.13.3 · install: dsh plugin --profile web add dsh-client-ui-quote
v0.13.2
Fixed
- 隐藏侧聊线程首次发送必失败(issue #2):种子里那个「收口的小回合」从未真正请求过模型,子会话因此没有
modelSelection投影,标准 preset 的 persona 里{{model}}取不到值,任何一轮都会以prompt variable "{{model}}" has no value for this assembly (section "deployment:persona-prefix")结束。现在创建线程时按宿主自己的做法(api-session-controller)补两件事:setup里装system-prompt/assemble钩子注入provider/model,种子里追加一条model/selection让投影有值(重建时也读得到)。父会话的模型路由本来就取到了,只是没落到子会话。 - 离线断言 712 组(check 12 + capsule 489 + panel 163 + host 48):新增「种子带父会话模型路由」「
setup装钩子并 append 一次」。
Added
- 临时诊断路由
POST /ui-quote/api/resume.diag(同源围栏内,只读诊断):在宿主进程里直接调agents.resume,把被subagent/not-resumable吞掉的真实错误原样带回——用于定位 issue #2(隐藏侧聊线程首次发送即失败)。定完位就删。 - 离线断言 710 组(check 12 + capsule 489 + panel 163 + host 46);新增 2 组:诊断路由对「父会话不在线」的答复、以及把
resume的message/code/cause原样回传。
Changed
- 删掉 canary 预发布频道:
main的 push 只跑测试,不再往 npm 发-lab.N(它占了全部 62 个版本里的 45 个)。发版只在打v*标签时发生;labdist-tag 冻结在0.13.1-lab.61,老命令仍可安装但不再更新。要验证打包产物用本机npm pack后装 tarball。
npm: dsh-client-ui-quote@0.13.2 · install: dsh plugin --profile web add dsh-client-ui-quote
v0.13.0
Added
- 引用清单页最底下一行:
★ 在 GitHub 上 Star。它是插件里唯一能回到仓库的入口,是一个普通<a target="_blank" rel="noreferrer noopener">——不点击就不会打开任何页面,插件自身仍然不发任何请求(R11 不变)。 - 离线断言 708 组(check 12 + capsule 489 + panel 163 + host 44);新增 2 组:「底部有一条指向仓库的链接(
a+target=_blank+noreferrer)」「这行链接自身不触发任何动作」。
Docs
- 根 README 从 540 行收到 233 行的落地页:首屏改成三句卖点 + 入口链接,界面截图提到功能表之前。深度内容按主题移出——设计原理与同类对照 →
docs/design.md,四套断言细节 →docs/testing.md,开发与发布/推送通道 →docs/release.md,英文全文 →docs/README.en.md。功能表与「已知限制」仍留在根 README(验收口径与宿主契约出处不变)。 - R17 的同步位置随之变成:
README.md四处 +docs/design.md一处(真机验证)+CHANGELOG.md一处。
npm: dsh-client-ui-quote@0.13.0 · install: dsh plugin --profile web add dsh-client-ui-quote
v0.12.9
Fixed
- 等待晚到的
inputTriggers/shortcuts服务,并在服务提供者卸载时释放旧注册、重载后在新实例注册引用源与四个命令。(来自 @samwei12 的 #1) - 移除无法通过宿主校验的 Web 默认快捷键;保留 Web 命令及用户自定义能力,桌面仍为
Alt+Q/C/B/L。 - 离线断言 706 组(check 12 + capsule 489 + panel 161 + host 44);新增 10 组回归断言,覆盖服务晚到、独立替换为新实例、旧实例释放、新实例恰好注册一次、插件卸载清理,以及 Web 无默认绑定。
npm: dsh-client-ui-quote@0.12.9 · install: dsh plugin --profile web add dsh-client-ui-quote
v0.12.8
Fixed
- 发送引用后,输入框上方的
引用 ×N条有时不消失,只剩一个引用 ×1的空条——宿主发送后会把芯片节点回收成空输入框的 placeholder,我们打在芯片上的data-dshq-chip标记留在了被复用的节点上。旧逻辑按标记数算条数,于是把一个已经解析不出引用的节点也算成一条;它没有条目可点,却一直挂在输入框上方。现在wireChips与syncDraftBars都以chipInfoFor能否解析出引用为准:解析不出的标记会被摘掉、不计入条数;真芯片与残留标记并存时计数也只算真芯片。 - 离线断言 696 组(check 12 + capsule 480 + panel 160 + host 44);新增 4 组断言:「回收节点上的残留标记不再撑起聚合条」「残留标记被摘掉」「真芯片与残留标记并存时计数仍为 1」「移除真芯片后条消失」。
npm: dsh-client-ui-quote@0.12.8 · install: dsh plugin --profile web add dsh-client-ui-quote
v0.12.7
Fixed
- 插件加载/重载后,已经发出的引用消息有时一直显示为线格式原文(
> ❝ … │q1:…),而不是胶囊:消息文本本身就是持久载体(❝/❞/│q1:是设计好的线格式,换客户端、刷新、没装插件时都还在),胶囊是客户端插件画上去的增强层;如果一条消息在插件重载/启动的缝隙里渲染,MutationObserver 可能没报到它,插件就不会再管它。现在每次安装都会全量重扫一遍已渲染的 transcript,另外窗口重新可见或获得焦点时也会rescanCapsules()补扫一次,把漏掉的 run 重新做成胶囊并隐藏原文。没有加载插件的窗口(例如另一个 profile 的浏览器)仍会原样显示这段线格式——这是设计上的兜底,不是消息损坏;看到原文时先确认该窗口是否启用了插件,刷新后应在几十毫秒内变成胶囊。 - 离线断言 692 组(check 12 + capsule 476 + panel 160 + host 44);新增 2 组断言:「晚渲染的引用在重扫前保持原文」「窗口唤醒后的重扫把它变成胶囊并隐藏原文」。
npm: dsh-client-ui-quote@0.12.7 · install: dsh plugin --profile web add dsh-client-ui-quote
v0.12.6
Fixed
- 高亮偶尔失效、第二条引用「没有高亮」:
v0.12.5的收回逻辑有两条时间缝。其一,收回一旦跑在胶囊出现之后,坐标会卡在draft,而转正只发生在胶囊创建那一刻——之后没有任何人再把它改回来,那条引用就一直不落色。现在paintAnchors把「draft + 页面上已经有它的胶囊」当作已发出的证据:下一次重画(滚动、任何 DOM 变化)就把它转正并补画,落库后刷新也不再生变。其二,发送后消息先以纯文本出现、胶囊晚一拍才增强,芯片在这道缝里消失曾被当成「读者反悔」把已发出的那句收回;现在收回前先看 transcript 文本里有没有这句的│q1:坐标,有就让路。用户 19:49 那次「两条引用一起发」留下的draft坐标,升级后回到那个会话、胶囊在页面上时会被自动补回来。 - 离线断言 690 组(check 12 + capsule 474 + panel 160 + host 44);新增 4 组断言:「胶囊已在页面上时 draft 坐标照常落色」「这次迟到的转正会落库」「线上文本里已有坐标时芯片离开不收回」「那句已发出去的引用保持高亮」。
npm: dsh-client-ui-quote@0.12.6 · install: dsh plugin --profile web add dsh-client-ui-quote