Repository navigation
Releases: FeatherHunter/dsh-im-companion
Release list
v0.2.25 dsh-im-companion
[0.2.25] - 2026-10-24
主题:条带/气泡助理头像归位 + 更新包跟进 0.18.39——家列表下每条 item 底部的助理小圆点与悬停气泡头像,之前还停留在"首字+底色"老画法(行/详情已图标化);本版收拢到共用 paintAvatarFace,与行/详情同一规则(有照片铺图、有 kind 归属图标+归属色板);更新包 pin 跟进官方最新 0.18.39。
Fixed
- 条带/气泡助理头像还是文字版:
home-row-strip.ts芯片(.hu-cav)与home-row-tip.ts气泡(.hu-tav)改调共用paintAvatarFace(..., 'assistant', ...)——规则实现只活home-avatar-view.ts一处;avatarEl内部改走同一函数(签名不变);T13 #135 样式单表门禁仍严(paintAvatarFace不装表,装表只走avatarEl入口)。
Changed
- 更新包 pin:
dsh-plugin-update0.18.38 → 0.18.39(官方源最新,check:update-pkg全绿)。 package.json/package-lock.json版本号 0.2.24 → 0.2.25;README.md/docs/README.en.md安装示例同步到 0.2.25。
说明
v0.2.24 dsh-im-companion
[0.2.24] - 2026-10-24
主题:头像图标化 + 机器人行真头像(owner 2026-10-23 原型认可)——家/助理换头像弹层不再是首字九宫格:家=房子图标+沉稳 9 档,助理=小机器人图标+暖亮 9 档;助理详情机器人行删旧副标、第二行加渠道 LOGO、有渠道真头像直接用真的。
Added
- 两套头像图标+双色板:新增
AvatarKind('home' | 'assistant')/ASST_PRESETS(助理暖亮 9 档,与家PRESETS沉稳系岔开)/presetFor/avatarStyleFor/avatarIconFor(src/client/components/home-identity.ts,既有导出一字不动);渲染与样式收拢进新模块src/client/components/home-avatar-view.ts(avatarEl从 home-rows 原样搬入签名不变、avatarOptButton、AVATAR_CSS独立样式表home-avatar)——home-rows(311→287)/ home-ui-styles(304→299)双双退回 300 行红线内。 - 机器人行真头像优先:
botBlock先读BotSnap.avatarUrl(有就铺满圆显示),没有回落小机器人图标,永不空着;avatarUrl缺键(老宿主/旧固件不下发)用?? ''兜底再 trim。
Changed
- 机器人行第二行:删旧副标废话句,只剩「渠道 LOGO+渠道名」(LOGO 走
icons.ts的channelGlyphSvg唯一源,13px 就地渲染)。 - 助理色板终版调优:对抗式审查发现初版 7 对底色距离 <60(本仓家色板同标准:字底对比 ≥4.3、两两底色 RGB 距离 ≥60),迭代 5 版后全项达标;原型
prototype-avatar-refresh.html已同步终版色值。 - T11 #128 接线钉子跟随搬家:单点(
avatarSrc调用)现住home-avatar-view.ts,行/弹层/详情仍只调avatarEl/avatarOptButton、仍禁自建取图(home-avatar.ts钉子已同步)。 package.json/package-lock.json版本号 0.2.23 → 0.2.24;README.md/docs/README.en.md安装示例同步到 0.2.24。
Fixed
- 机器人行空指针:
bot.avatarUrl.trim()在无该键数据(旧宿主/测试固件)上崩溃,改为缺键兜底(T6b/绿框/面包屑/T6c 四处回归已复绿)。
说明
v0.2.23:master 收敛 + #154/#158 修复首发
[0.2.23] - 2026-10-23
主题:master 分支收敛 + #154 修复首发——0.2.22 发版线(T8 #168 全量 + 0.2.20/0.2.21/0.2.22 热修)已整体合入 master;本版把此前只在开发态生效、从未进入 npm 包的两条修复首次交付:#154(左栏「有助理」漏掉默认工作区行)与 #158(绑定前挡下非绝对工作区路径)。
Fixed
- 左栏「有助理」漏默认工作区行(#154):DSH 先把工作区标题本地化再渲染左栏组行(默认区显示名「默认工作区」),而机器人绑定记的是绝对路径 ⇒ 按显示名字面匹配必失配、失配又原样返回显示名,被下游当工作区标识。改为按行身份解析:行
data-row-key="workspace:<id>"经注册表换规范路径、注册表标题兜底、老口径字面匹配最后兜;解析不出返回空哨兵,绝不把显示名当路径传下去。新增src/client/data/workspace-index.ts与共享单点src/workspace-default.ts,left-filter/left-badges/presence/home-model/home-store同步改口,验证器补「默认工作区按行身份解析」用例。 - 绑定前挡下非绝对工作区路径(#158):宿主管家端点补语义日志行;客户端绑定动作先校验路径为绝对路径,避免把显示名/相对路径写进绑定表。
Changed
- master 收敛:
hotfix/0.2.22-persona(T8 #168 全量 + 0.2.20/0.2.21/0.2.22 热修)与 PR #180(#154)已合入master;#154与 T8 同位置的三处冲突按「两边都保留」解决。本版从master构建,产物与后续发布基线一致。 package.json/package-lock.json版本号 0.2.22 → 0.2.23;README.md/docs/README.en.md安装示例同步到 0.2.23。
说明
- 兼容声明不变:dsh-im 5.1.0(范围
>=5.1.0 <6);#175 升级回归钉子照旧有效(6.0 之前重跑 T1/T2 两份取证、bots/与accounts/双路径,#170 persona verify 同轮复跑)。 - 功能上与 0.2.22 的差别只有上述两条修复 + 文档;家表数据形状/字段不变,无需迁移。
安装/升级:应用内更新中心升级到 0.2.23,或 dsh plugin --profile desktop add --save-exact dsh-im-companion@0.2.23;装完完全退出 DSH 再打开。
v0.2.22 — 人设首条消息漏注入根治(#178)
0.2.22 — 人设首条消息漏注入根治(#178)
修了什么
刚绑定 / 刚改完助理资料的会话,第一条消息可能读不到「人物设定」(复现:QQ 工作区设人设后首问「你是谁」,回答的是通用助手身份;第二条起正常)。
根因:section.text 是同步的,只能读 250ms 节流的内存快照;归属索引(dsh-im 写的 state.json)与人设目录(家表)的懒刷新都是异步的 ⇒ 装配发生时快照还是旧的。
怎么修的(两层)
- 宿主装配期补救:在
system-prompt/assemblewaterfall 上挂 prepend 监听(sections 求值之后、唯一可 await 的位置)。本段为空时 await 重扫两索引后重算;只补自己这段、其余 section 原样返回;刷新失败/任何异常退回原 assembly;同会话 2 秒节流。 - 写侧刷新:
home.*/assistant.*写成功后主动刷新人设目录,关掉「保存资料后 250ms 内到达的消息」的旧人设残影窗口。
验证
persona-injectverify 扩三例:装配前一刻才落盘也命中;补刷失败软退且留常驻日志;TTL 节流与 dispose 摘监听。npm run check全绿(177 files guard PASS)。
兼容
- 兼容声明不变:dsh-im 5.1.0(范围
>=5.1.0 <6)。 - #175 升级回归钉子照旧:6.0 之前必须重跑 T1/T2 两份取证(
bots/+accounts/双路径),#170 的 persona 注入 verify 亦须同轮复跑。 - 0.2.21 的家页卡「正在加载」与骨架过窄热修不受影响。
安装
应用内更新中心升级到 0.2.22 后完全退出重开 DSH;或 dsh plugin --profile desktop add --save-exact dsh-im-companion@0.2.22。
v0.2.21 热修:家页卡正在加载 + 首屏骨架过窄
v0.2.21 热修
[0.2.21] - 2026-10-23
主题:0.2.20 线上故障热修——修复会话头「自定义名表」读取紧循环打爆 RPC 桥、导致设置-家页一直卡在「正在加载」,以及家页首屏骨架缺少两段式家行样式被挤成左侧窄条。
Fixed
- 会话头元数据紧循环(线上故障):
session-header槽包装原先把SessionHeaderAction当普通函数直接调用,hooks 挂在包装组件上;其内部setNames触发包装重渲染,每次渲染生成新的subscribe/loadCustomNames回调身份 ⇒useEffect([sessionId, subscribe])每渲染重订阅、订阅时同步回放快照又发meta.get、返回新对象继续触发渲染,形成每秒数百次的 RPC 紧循环(单页面累计 170 万+ 次host.rpc.call,面板加载被拖到 9~20 秒)。改为React.createElement渲成子组件 + 依赖回调只建一次 + 名表浅比较后才 setState。 - 家页首屏骨架被挤成左窄条:两段式家行样式(
.hu-row.hrow/.hu-btop/.hu-sstrip)原本只由真行渲染时装配;家表未就绪的首帧骨架先出现 ⇒ 落进基表三列 grid,占位全挤在左侧。骨架渲染前先装配该样式表。 - 新增回归钉子:
session-header-render断言渲染期间meta.get调用有界(≤12 次,防订阅身份不稳复发);home-steel首屏骨架用例先摘样式标签再断言骨架自行装回两段式家行样式表。
说明
- 兼容声明不变:仍为 dsh-im 5.1.0(范围
>=5.1.0 <6);#175 的升级回归钉子照旧有效——6.0 之前必须重跑 T1/T2 两份取证(bots/+accounts/双路径),#170 的 persona 注入 verify 亦须同轮复跑;口径与 [0.2.20] 节同源。
Changed
package.json/package-lock.json版本号 0.2.20 → 0.2.21;README.md/docs/README.en.md安装示例同步到 0.2.21。
已发布 npm:dsh-im-companion@0.2.21。安装后需完全退出并重开 DSH。
0.2.20 — T8 助理简介与人物设定
dsh-im-companion 0.2.20 — T8:助理简介与人物设定
助理不再只有名字和头像:新增简介(列表展示)与人物设定(宿主按会话归属注入系统提示词的助理身份),改完下一条消息生效;旧「性格/语气」区块退役、用词统一「详情面板」;dsh-im 兼容声明收口到实际验证过的 5.1.0(>=5.1.0 <6)。
安装 / 升级
dsh plugin --profile desktop add --save-exact dsh-im-companion@0.2.20安装后需重启 DSH(host/loader 装配路径变化)。旧账本无需迁移:两栏为空即「未填写」,首次保存人设资料才写入新键。
长历史会话说明
存量长上下文会话由第三方层中途改写未定位,本版承诺新会话生效(首条消息允许 miss、之后必须命中),不声称所有存量会话立即改写。
[0.2.20] - 2026-10-23
主题:T8 助理简介与人物设定(spec #168,实施票 #169–#176)——助理不再只有名字和头像:新增「简介」(列表展示)与「人物设定」(注入系统提示词的助理身份),人设由宿主按会话归属注入、改完下一条消息生效;旧「性格/语气」区块整体退役、用词统一「详情面板」;dsh-im 兼容声明收口到实际验证过的 5.1.0。
Added
- 助理简介与人物设定(数据面 · #169):家表助理行新增两个可选字符串字段
description(简介,≤200 码点,只展示)与persona(人物设定,≤8000 码点,进系统提示词);唯一真源仍是家表,随助理编号跨迁移/换绑保留、删除随删。空串与缺失等价(读归一空串、落盘剔除空键);不 bumphomes.yamlversion、不做迁移,旧账本读后写回逐字节不变(仅空值剔除差异),超长历史值读取不截断。新增共享字段模块src/assistant-fields.ts(上限、Unicode 码点计数、CRLF 归一、trim、错误文案单点);创建助理、创建未绑定助理、更新助理三个既有 RPC 各追加两个可选字段(旧载荷行为不变);更新助理必填闸放宽为「名字/头像/简介/人物设定至少一个」。 - 宿主注入(#170):以 DSH 系统提示词 section 通道注入(
name: dsh-im-companion:persona、order: 650、interpolate: false,与上游 dsh-im 的 115/125 共存);渲染## 助理身份:<名字>\n\n<人物设定>\n\n始终以该身份回应,名字去换行/截 64 码点/空则「未命名助理」;空、无归属、无助理、超 8000 码点或任何异常一律空串(超长不截半);只缓存会话归属不缓存渲染文本;注册项 disposer 挂ctx.effect,热重载不残留,注册失败只记常驻日志、不打断apply;模块级inject仍只有connection。 - 会话归属索引(#170):唯一数据源是各渠道
<DSH_HOME>/integrations/dsh-<channel>/{bots|accounts}/<botId>/state.json的sessions[conversationKey] = sessionId(飞书bots/、微信accounts/双路);缓存戳(路径/mtime/大小)懒刷新、负结果 TTL ≤2s、1:N 取文件 mtime 最新且仅结果变化时记歧义、删除清绑定、读失败保留上次、全程 fail-soft;禁文件监听与常驻轮询,首条消息允许 miss。 - 日志(#170):新增五条
persona.*事件(解析/刷新 debug+按需、刷新失败与归属歧义 warn+常驻、换绑同步 info+常驻);「更新助理」语义扩展为人设资料变更、只记变更键名;人设/简介正文永不进日志(只记长度、sha8、定位字段)。 - 创建弹窗两栏(#171):新建助理弹窗名字后内嵌两栏——简介单行、人物设定多行(实时码点计数);可留空跳过,超限当场禁用主按钮并给字段定位提示,随创建一次写入。
- 编辑入口与家页第三行(#172):助理列表行第 4 个图标「编辑简介与人物设定」打开只含两栏的小弹窗;保存中双按钮禁用并显示「保存中…」且不能中途关闭,成功先关窗再提示「已保存助理资料」,失败不关窗、保留输入并显示宿主错误原文,8 秒超时按失败;trim 后无改动直接关窗、不发写请求;家页助理卡第三行有简介才显示(单行省略、悬停全文、空不占位,行高 +21px)。
- 详情面板「助理人设」块(#173/#174):详情面板新增只读块(名字/简介/人物设定;人物设定 3 行折叠可展开、可复制、空态文案);「编辑」按助理 id 派发跨功能事件
OPEN_ASSIST_EDIT_EVENT后关闭面板(契约已在docs/features-contract.md按「已知债务」登记);找不到助理时只提示并隐藏编辑/复制;超长历史值完整显示并提示去编辑修正。 - 兼容收口与门禁(#175):dsh-im 兼容声明由
verified: 4.39.0/range: >=4.17.1 || <=4.17.0收口为verified: 5.1.0/range: >=5.1.0 <6;面板胶囊与悬停文案(中英)同步;新增tools/verify/features/compat-claim.ts版本门禁(声明字段、构建注入、产物含值、范围语义、词面基线);与上游dsh-imorder 115/125 的共存、section注册契约、bots/+accounts/双路径由 persona 注入 verify 钉住。 - 新增验证:
assistant-fields/persona-inject/home-asst-profile/compat-claim四个功能验证器(已接进npm run verify),tools/verify/fixtures/fake-ctx.ts抽出假宿主上下文;home-store/home-create-flow/home-steel/detail-drawer等既有钉子同步扩展。
Changed
- 旧「性格/语气」区块整体退役:写路径(宿主 RPC/客户端动作/预填)、读展示、旧文案、死样式与两段旧验证全部删除;
src/与tools/verify/中「性格」为 0,产品用词统一「详情面板」(原「详情抽屉/详情页」全部改口)。 - 4.x 回退代码(≤4.17.0 旧路由直调、
/api传输方向记忆)保留在运行期,但不再对外声明兼容 4.x——未验证过的范围不再宣称;运行期仍不做版本分支(诚实性落在声明与门禁上)。dsh-im 6.0 之前必须重跑 T1/T2 两份取证(系统提示词注入面 + 会话归属落盘映射)再决定是否扩大范围。 package.json/package-lock.json版本号 0.2.19 → 0.2.20;README.md/docs/README.en.md安装示例同步到 0.2.20。
Fixed
- 发布前独立只读评审发现的边界问题(已修复并补断言):
state.json解析失败不再把输入片段带进常驻日志(只记固定文案);同一文件内重复 sessionId 不再误报归属歧义;助理目录读失败不再永久冻结(按缓存戳自愈重试);保存进行中不能被遮罩/Esc 关闭(避免误以为已保存);两栏计数改按 Unicode 码点(不再被 UTF-16maxlength提前截停);家页第三行行高补足设计值 21px。
说明
v0.2.19
更新包跟随到官方源最新 0.18.37:0.18.34~0.18.37 是「更新链路真机缺陷」集中修复线——#236 管理器路移除失败后不再把在册状态弄丢(已恢复在册 / 恢复未成功 / 无法确认三档如实补偿并复探,装前未在册不二次改拓扑)、#237 CLI 路改认官方桌面运行时布局(dsh web 首次安装不再 spawn-failed)、#241 recovery-required 死锁(集成方占位运行版 0.0.0 归一为未知,中断任务允许一次恢复重试)、#238 未装目标不再先渲染旧失败账本、#239 队列整写瞬时 EPERM 小步重试、#240 批量面板高度契约、#242 批量入口按钮跑完后自己刷回、#243 批量自动续跑加 10 分钟新鲜度门限。另含上游开发工具加法(release.mjs / panel-layout-probe.mjs),只在上游包内。公开面(快照字段、verify 事件字段、码值、手工命令安全政策)不变,本仓产品代码零改(宿主五电话与快照透传原样全绿)。安装示例同步到 0.2.19。完整说明见包内 CHANGELOG。
v0.2.18
更新包跟随到官方源最新 0.18.33:上游「发布线并入 master」后的首个合体版——0.18.26~0.18.32 的修复线一次带走(#215 缺席目标不再被旧失败任务拦成 recovery-required、#216 批量面板三处显示缺陷、#208 批次日志对齐、#217 批次停下时自家排队占位不再造成全局 update-busy、#218 批量续跑换号重提不再假成功、#219 在装按钮只留一枚转圈且本体可排批量面板第一行、#231 批量面板先渲染旧批次账本的误导帧、#232 忙时未轮到的行改说「已在队列 · 会自动依次安装」),另含一次内部目录拆分重构(src/ 拆进 core/ host/ panel/ shared/,旧路径留兼容壳)。
公开面零变:11 个导出子路径、导出名、事件契约、日志行字段、诊断键一字未动;运行时行为与 0.18.32 相同,按包名/子路径解析的代码不受影响。本仓产品代码零改(宿主五电话与快照透传原样全绿)。安装示例同步到 0.2.18。完整说明见包内 CHANGELOG。
v0.2.17
更新包跟随到官方源最新 0.18.32:0.18.26~0.18.32 一线修复一次带走——#215 缺席目标不再被旧失败任务判成 recovery-required、#216 批量面板三处显示缺陷、#217 批次停下时的排队占位不再造成全局 update-busy、#218 假成功、#219 批量在装按钮只留一枚转圈且本体可排第一行、#231 批量面板先渲染旧批次账本的误导帧、#232 批量进行中未轮到的行改说「已排队 · 前方还有 N 项」;日志侧新增 update.batch.run.start / update.install.retry,总账改活跃时长,check.done 增 pendingRestart / jobState。0.18.32 与 0.18.31 代码相同,只是把这条已验收的修复线钉成可依赖的版本号。快照字段 / verify 事件字段 / 码值不变,本仓接线代码零改(仅更新宿主校验用例跟随 0.18.31 起的 logContract / logHealth 与 CHANGELOG cached 语义)。安装示例同步到 0.2.17。完整说明见包内 CHANGELOG。