Skip to content

Releases: gosutry/dsh-persona-select

v0.4.0

Choose a tag to compare

@gosutry gosutry released this 26 Oct 18:47

dsh-persona-select 0.4.0

0.4.0 正式版:内置人设重做为 7 个可用角色,并让内置人设也能带「人设历史对话」。

✨ 内置人设(本版重点)

设置页「人设管理」里,内置项现在是「不注入」+ 7 条:

人设 段序权重 人设正文 人设历史对话
蓝色大肥鱼(鲸鱼娘) -1 8981 字(英文工作准则) 1285 字节(【角色扮演】外形设定)
Claude娘 -1 1471 字 —
白龙女(ChatGPT娘) -1 1072 字 —
千问大小姐(Qwen娘) -1 1078 字 —
黑白阔耳狐(GLM娘) -1 1134 字 —
Kimi娘 -1 978 字 —
插件指导 / Plugin guide -1 - 2803 字节(插件用法问答)
  • 七条段序权重统一为 -1,与默认值一致:排在预设那句 "You are a coding agent…" 之前。
  • 除鲸鱼娘与插件指导外,正文结尾统一为:允许_动作标签 允许_情感张力 / 【/角色扮演】 / 空行 / 角色扮演开始。
  • 旧的 builtin:mentor / builtin:companion / builtin:blunt(三条都是测试占位)已移除;鲸鱼娘沿用 builtin:engineer。

🩹 修复

  • 内置人设的「人设历史对话」原本读不到:mergeView() 没有把 history 带进内置条目,因此 personaHistoryOf() 只可能在用户人设里找到历史。本版把 history 透传给内置条目,选中内置人设开新对话时,第一步会正常注入这段历史。

📦 版本与兼容

  • 三包版本号统一为 0.4.0(dsh-persona-select、-picker、-settings),主包的 peer 依赖与界面显示的 PLUGIN_VERSION 同步。
  • 数据文件不变:<DSH_HOME>/persona-select/personas.json 沿用,无需迁移。
  • 内置历史内联在代码里,不占 history/ 目录,也不会被清理逻辑回收;history/ 仍然只存用户人设的历史。
  • 若某个旧会话当初选的是 builtin:mentor / companion / blunt,升级后该会话会提示"选定人设已删除",重新选一条即可。

📥 安装 / 升级

  • 0.4.0 是「一张卡 + 两个组件」:主包 dsh-persona-select 出插件卡,-picker / -settings 是两个可独立启停的组件,三个包要一起装。
  • 仓库内附 packages/dsh-persona-select/install.sh,把三个包一次装进指定 profile:bash install.sh [profile](默认 web;脚本所在包需与 picker / settings 目录同级)。
  • 装好后重启 DSH 才会加载新的组件行。

✅ 校验点

  • 设置 → 人设管理:列表为「不注入」+ 7 条内置,每条带「内置」标记,段序权重显示 -1。
  • 选中「蓝色大肥鱼(鲸鱼娘)」或「插件指导」并新开一个对话:第一步应注入各自的「人设历史对话」;已经聊起来的旧对话不会补注入,这是设计如此。
  • 对任一内置人设点「复制为新人设」:副本应同时带走正文、段序权重和历史对话。
  • 内置人设只读:直接保存会被拒绝,需先复制副本再改。

完整改动:v0.4.0-rc4 → v0.4.0

v0.4.0-rc4

v0.4.0-rc4 Pre-release
Pre-release

Choose a tag to compare

@gosutry gosutry released this 23 Oct 18:17

dsh-persona-select 0.4.0-rc4

本版是 0.4.0 的预发布版(rc4):把插件拆成一张插件卡 + 两个可独立启停的组件。

✨ 主要变更

一张卡 + 两个组件

  • 三个包:主包 dsh-persona-select 只出插件卡,组件包 dsh-persona-select-picker / dsh-persona-select-settings 作为普通依赖安装、各自带浏览器半。
  • 插件列表里仍是一张卡片,点开「包含的组件」能看到两行,各自带图标、标题和开关。

组件开关是真实卸载

  • 每个组件是独立包(包根行),停用它 = 整个浏览器半卸载,不是隐藏 UI。
  • 内核(路由 / 注入 / 存储)由两个组件通过 ctx.root 共同持有,最后一个停用才真正释放——停用任一个不连累另一个。

图标

  • 插件卡图标改为从角色原图截脸生成;
  • 两个组件行图标为蓝底鲸鱼图标;
  • 三张图标统一 256×256、圆角透明。

📦 安装 / 升级

  • 功能、配置项、数据文件与 0.3.x 兼容:<DSH_HOME>/persona-select/personas.json 沿用,无需迁移;
  • 首次打开旧数据会生成 personas.json.v2-backup 备份,可删;
  • 安装后需重启 DSH 才会加载新组件行。

✅ 校验点

  • 插件列表里是一张卡(dsh-persona-select),点开是两个组件,开关可独立启停;
  • 停用任一组件后,另一个组件与插件卡仍正常,重新启用能恢复;
  • 三个图标正常显示:主包是角色脸,组件是蓝底鲸鱼图标;
  • 设置 → 人设管理、对话输入区人设选择,功能正常。

完整改动:v0.4.0-rc3 → bd776a5

0.4.0-rc3

Choose a tag to compare

@gosutry gosutry released this 19 Oct 11:06

dsh-persona-select 0.4.0-rc3 发布说明

0.4.0-rc2 → 0.4.0-rc3:只修一个 bug,但它让深色主题下所有确认框变成「有框无字」。
改动合计两行(client.js 1 行、package.json 1 行)。
数据格式、接口、其它文件一个字没动,不需要迁移。


这一版你会感觉到什么

删人设时的确认框,终于能看清字了。

深色主题下点「删除」,弹出来的白框里是一片空白——只有「取消」活着(它自带灰底),
正文和「确定」全都隐形了。你截图给我之前,这毛病已经安静地害人很久了。

而且不止删除:导入覆盖历史、有未保存改动时切人设、未保存就点导出,
这几个走的是同一个确认组件,一起中招。这一版一处修完,四处一起好。

修完的样子:深色主题深底白字、浅色主题白底深字,两种主题都读得清。

升级方式

  1. 版本号 0.4.0-rc2 → 0.4.0-rc3。这一步骤不能省——不报版本,已经装了的人收不到更新提示,也就永远拿不到这个修复。
  2. 拿到新包后刷新一次页面。客户端 bundle 的版本戳会变,旧缓存不会自己换(没开 dev 服务时 HMR 不会推)。
  3. 不需要迁移,人设数据一个字不动。

真正的判据只有一条:深色主题下点「删除」,能看见「确定删除这个人设?此操作不可撤销。」


0.4.0-rc2 及更早的更新请见历史 tag。

v0.4.0-rc2

Choose a tag to compare

@gosutry gosutry released this 16 Oct 05:44

v0.4.0-rc2

第二个候选版,只做一件小事:把「人设历史对话」的撤回修对。

修了什么 bug

「清除历史」之后点「撤回」,回填的是已保存的那一份(historyBaseline),而不是你刚才被清掉的内容。

所以只要清除前输入框里有尚未保存的东西 —— 手动敲进去的、或者刚从 /export 的 session 日志导入进来的 —— 摁下「撤回」,它们就再也找不回来了。只有当输入框内容恰好等于已保存内容时,撤回才碰巧是对的。

现在的行为

清除前输入框 修复前点「撤回」 现在点「撤回」
未保存的手动编辑 回填已保存的旧内容 ❌ 回填你清除的那段 ✅
未保存的「导入会话日志」结果 回填空字符串 ❌ 回填导入结果 ✅
与已保存内容相同 正确 正确
空且本来无存档 正确 正确

顺带把快照的生命周期收干净了:切换人设 / 新建人设 / 丢弃草稿 / 导入日志 / 手动编辑 / 保存成功后都会清掉这份快照,不会跨人设残留。

原理

清除的瞬间把输入框原文存进 historyClearedSnapshot,撤回时回填这一份,替代原来的 historyBaseline。

升级

  • 从 v0.4.0-rc1 升上来只有三个代码文件有改动:client.settings.js、index.js、package.json。
  • ⚠️ client.settings.js 是客户端插件,改动不会热更新。换完文件请重启 DSH(或重开窗口),设置界面的「撤回」才会是新行为。

本次范围

  • 0fdb649 fix(settings): 撤回清除的历史对话时回填被清除的内容
  • 版本号 → 0.4.0-rc2(package.json 与 PLUGIN_VERSION)

完整对比:v0.4.0-rc1...v0.4.0-rc2

v0.4.0-rc1

Choose a tag to compare

@gosutry gosutry released this 14 Oct 14:30

dsh-persona-select 0.4.0-rc1

本版重写内置人设 1「蓝色大肥鱼(鲸鱼娘)」的正文,并把版本号从 0.3.33 提到 0.4.0-rc1。

这是 0.4.0 的预发布版,用于逐步完善占位的人设。

✨ 变更

内置人设 1 正文换新

  • 全文 532 字符,仍是「【角色扮演】 … 【/角色扮演】 / 角色扮演开始」的结构,位置和段序权重都没变(仍是 1000000,即"追加在系统提示词后")。
  • 结构上分成:身份 / 外貌 / 服饰 / 配饰 / 性格 / 动作 / 其它设定,共 25 类条目。

主要变化(和上一版相比)

变化 现在 原来
自称 自我戏称_蓝色大肥鱼_否认懒惰肥胖 自称_虎鲸女孩
触发时机 唱歌_调用工具时 唱歌_执行任务时
动作标签 允许_动作标签 + 允许_情感张力 只有 允许_情感张力
禁止项 未包含任何 禁止_ 条目 含十余名 禁止_ 条目

这一段是可直接编辑的:设置 → 人设管理里选中它,正文随你改,改完就点「保存」新建副本。

📌 说明

  • 版本号只改了两处:package.json 的 version 和 index.js 的 PLUGIN_VERSION,两处已保持一致。
  • 其余内置人设(2 / 3 / 4 号「权重测试(占位)」)与其它功能未改动。
  • 下载源码包时请选 tag v0.4.0-rc1。

校验点

  • 设置 → 人设管理 → 内置人设 1,标题应为「蓝色大肥鱼(鲸鱼娘)」,正文第一行之后应是 身份_女仆 自我戏称_蓝色大肥鱼_否认懒惰肥胖 …。
  • 正文里应能搜到 唱歌_调用工具时,且搜不到 自称_虎鲸女孩。
  • 段序权重框应仍显示「追加在系统提示词后」。

完整改动:1f16b12 → 1439b58

v0.3.33

Choose a tag to compare

@gosutry gosutry released this 14 Oct 12:34

dsh-persona-select 0.3.33

本版修好桌面端弹过确认框后所有输入框点不出光标的问题,并把插件自己的确认框全部换成页面内自绘。

🐛 修复

桌面端确认框吞掉输入焦点(重点)

  • 症状:在桌面端弹过一次确认框之后,所有输入框都点不出光标,只能把窗口最小化再恢复才回来。
  • 根因不在本插件:这是 Electron 原生对话框(window.confirm)的通病 —— 对话框关闭后窗口被重新激活,但渲染进程的焦点没有还回去,document.hasFocus() 一直是 false,渲染侧监听 window 的 focus 事件也等不到。参考 electron#19977,修复 PR electron#50770 / #52188 仍在评审。
  • 试过但无效的两条路(已从代码里删掉):弹框后 requestAnimationFrame 里恢复焦点;弹框后监听 window 的 focus 事件再恢复焦点。
  • 最终修法:不用原生框,改成页面内自绘。插件自己的四个确认框(切换人设 / 删除人设 / 导入历史 / 导出未保存)现在渲染成遮罩 + 消息 + 「确定 / 取消」,支持 Esc 取消,全程不离开渲染进程,因此不会触发上面那个焦点丢失。
  • 插件源码里 window.confirm 的出现次数已归零。

校验点(装完可以自检)

  • 设置 → 人设管理,随便触发一次确认框(例如选中内置人设后点另一个人设),确认框应是页面内的深色遮罩样式,而不是系统弹窗。
  • 关掉确认框后,立刻点任意输入框,光标应正常出现,不需要最小化/恢复窗口。
  • 确认框里按 Esc 应等同于点「取消」。

本版包含

0.3.33 是在 0.3.32 之上的修复版:0.3.32 的全部内容(内置人设、人设选框箭头、段序权重「追随」判定)都在本版里,安装 0.3.33 即可,无需先装 0.3.32。

完整改动:d7bbf32 → 185aba7

v0.3.32

Choose a tag to compare

@gosutry gosutry released this 14 Oct 11:51

dsh-persona-select 0.3.32

本版更新内置人设、修好人设选框的小箭头,并把「追随」模式的两套写法彻底统一。

✨ 新增 / 变更

内置人设换新

  • 内置人设 1「简洁工程师」→ 「蓝色大肥鱼(鲸鱼娘)」:内置鲸鱼娘社区人设,段序权重 1000000(即「追加在系统提示词后」)。
  • 内置人设 2 / 3 / 4 → 「权重测试(占位)」:正文为 <该段序权重所在的位置>,段序权重自上而下依次为 0 / -1 / -1001,方便直观核对人设段的插入位置。

「追随」模式判定统一

  • 段序权重栏里,数字 1000000 与点「追随」按钮得到的字符串 'follow' 现在是完全等价的两套写法:
    • 权重框显示「追加在系统提示词后」,点一下可切回数字 1000000 编辑;
    • 设置页状态行显示「追随」;
    • 装配时同样执行"把自己的段搬到所有段最后"那一步,不再只是"数字很大所以排在后面"。
  • 存盘不会被改写:磁盘上是数字 1000000,读回来还是 1000000。

🐛 修复

  • 人设选框展开后小箭头不翻转:箭头原本跟随"面板在上方还是下方"翻转,而输入区贴着窗口底部、上方空间远大于下方,面板永远向上展开,于是箭头永远是 ▲。
    • 现在:面板恒定向上展开(对话区只会向下生长),maxHeight 按上方可用空间收口(最高 320、最低 96,横向夹进窗口,不会越出视口);展开后箭头固定为 ▼,收起为 ▲。
  • 面板高度测量错了,导致方向判断一直不准:原来是在面板已被 maxHeight 夹住之后去量高度,量到的值被当成"被压扁"而丢弃,于是布局里记的高度永远是兜底的 320。改为读取内容固有高度(scrollHeight,退回 getBoundingClientRect),真实高度第一次展开即落地。
  • 段序权重框不显示「追加在系统提示词后」:判定只认字符串 'follow',导致内置鲸鱼娘(数字 1000000)被判成"数值模式",框里直接显示 1000000。

⚠️ 说明(取舍)

1000000 现在是「追随」的等价写法,因此无法再用 1000000 表示"一个很大的普通数值"。如果你确实需要"排在很后面但不要被搬到末尾",请填别的数字(例如 999999)。

校验点(装完可以自检)

  • 设置 → 人设管理,内置人设 1 标题应为「蓝色大肥鱼(鲸鱼娘)」,段序权重框显示「追加在系统提示词后」。
  • 内置人设 2 / 3 / 4 标题为「权重测试(占位)」,权重框自上而下是 0 / -1 / -1001。
  • 对话界面点开人设选框:菜单在按钮上方,箭头为 ▼。

完整改动:2e117e5 → cb9e58a → a2dc39b → 5772946

v0.3.31

Choose a tag to compare

@gosutry gosutry released this 13 Oct 09:38

可用第一版