Skip to content

Releases: FeatherHunter/dsh-im-companion

v0.2.25 dsh-im-companion

Choose a tag to compare

@FeatherHunter FeatherHunter released this 23 Oct 18:26

[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-update 0.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。

说明

  • 兼容声明不变:dsh-im 5.1.0(范围 >=5.1.0 <6);#175 升级回归钉子照旧有效(6.0 之前重跑 T1/T2 两份取证、bots/ 与 accounts/ 双路径,#170 的 persona 注入 verify 同轮复跑)。
  • 功能上与 0.2.24 的差别只有上述条带/气泡两处调用点;家表数据形状/字段不变,无需迁移。

v0.2.24 dsh-im-companion

Choose a tag to compare

@FeatherHunter FeatherHunter released this 23 Oct 16:16

[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 四处回归已复绿)。

说明

  • 兼容声明不变:dsh-im 5.1.0(范围 >=5.1.0 <6);#175 升级回归钉子照旧有效(6.0 之前重跑 T1/T2 两份取证、bots/ 与 accounts/ 双路径,#170 的 persona 注入 verify 同轮复跑)。
  • 功能上与 0.2.23 的差别只有上述头像两套件;家表数据形状/字段不变,无需迁移。

v0.2.23:master 收敛 + #154/#158 修复首发

Choose a tag to compare

@FeatherHunter FeatherHunter released this 23 Oct 11:01
618985d

[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)

Choose a tag to compare

@FeatherHunter FeatherHunter released this 23 Oct 08:07

0.2.22 — 人设首条消息漏注入根治(#178)

修了什么

刚绑定 / 刚改完助理资料的会话,第一条消息可能读不到「人物设定」(复现:QQ 工作区设人设后首问「你是谁」,回答的是通用助手身份;第二条起正常)。

根因:section.text 是同步的,只能读 250ms 节流的内存快照;归属索引(dsh-im 写的 state.json)与人设目录(家表)的懒刷新都是异步的 ⇒ 装配发生时快照还是旧的。

怎么修的(两层)

  1. 宿主装配期补救:在 system-prompt/assemble waterfall 上挂 prepend 监听(sections 求值之后、唯一可 await 的位置)。本段为空时 await 重扫两索引后重算;只补自己这段、其余 section 原样返回;刷新失败/任何异常退回原 assembly;同会话 2 秒节流。
  2. 写侧刷新:home.* / assistant.* 写成功后主动刷新人设目录,关掉「保存资料后 250ms 内到达的消息」的旧人设残影窗口。

验证

  • persona-inject verify 扩三例:装配前一刻才落盘也命中;补刷失败软退且留常驻日志;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 热修:家页卡正在加载 + 首屏骨架过窄

Choose a tag to compare

@FeatherHunter FeatherHunter released this 23 Oct 03:40

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 助理简介与人物设定

Choose a tag to compare

@FeatherHunter FeatherHunter released this 22 Oct 18:20

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 码点,进系统提示词);唯一真源仍是家表,随助理编号跨迁移/换绑保留、删除随删。空串与缺失等价(读归一空串、落盘剔除空键);不 bump homes.yaml version、不做迁移,旧账本读后写回逐字节不变(仅空值剔除差异),超长历史值读取不截断。新增共享字段模块 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-im order 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-16 maxlength 提前截停);家页第三行行高补足设计值 21px。

说明

  • 旧账本无需迁移:旧版读到的两栏为空即等价「未填写」,写回时自动剔除空键、其余字节不变;升级后首次保存任一人设资料才会写入新键。
  • 长历史会话:存量长上下文会话由第三方层中途改写未定位,本版承诺「新会话生效」(首条消息允许 miss,之后必须命中),不声称所有存量会话立即改写。
  • spec #168 的 60 条 User Stories 由实施票 #169–#176 覆盖(矩阵见 #176);真机验收 A/B/C/D 在安装本版后执行,验收通过后由规格详情页「完成」按钮收口。

完整改动与验证证据见仓库 CHANGELOG 与规格 #168 / 实施票 #169–#176。

v0.2.19

Choose a tag to compare

@FeatherHunter FeatherHunter released this 20 Oct 11:11

更新包跟随到官方源最新 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

Choose a tag to compare

@FeatherHunter FeatherHunter released this 19 Oct 17:13

更新包跟随到官方源最新 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

Choose a tag to compare

@FeatherHunter FeatherHunter released this 19 Oct 15:31

更新包跟随到官方源最新 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。

v0.2.16

Choose a tag to compare

@FeatherHunter FeatherHunter released this 18 Oct 10:55

更新包跟随到官方源最新 0.18.25(#174/#177/#204/#92):失败之后「还剩不剩路」四态化(last-resort / salvageable / dead-end / unknown)+ 失败回包沿用的旧手工命令按帧判定、carried-over 一律 fail-closed + 宿主内使用范围解析改走 DSH 权威身份链 + 手工命令为空按五类原因分因。快照字段 / verify 事件字段 / 码值不变,本仓接线代码零改。安装示例同步到 0.2.16。完整说明见包内 CHANGELOG。