# 更新日志 本插件与 dsh 宿主版本一一绑定(peerDependency 锁定精确版本),升级 dsh 前请先确认有适配的插件版本。 ## 0.3.1(2026-09-20) 本次集中修复角色卡前端显示、第三方卡面兼容与长聊天加载性能。继续要求 **dsh `0.1.5-rc.2`、Node.js ≥ 24**;升级后请完整重启 dsh 并刷新页面。 - 扩展 HTML 卡面识别:显式 `html` / `xml` 围栏中的按钮、段落和自定义元素可以正常进入沙箱;`template`、`noscript`、代码示例和脚本字符串仍保持惰性,不会误识别成可执行卡面。 - 修复完整页面卡的文档语义与布局:保留原有 `html` / `body` 属性及加载事件,支持省略 `` 的合法页面;整页卡不再被压成状态栏高度,混排的内联组件仍保持紧凑展示。 - 重做卡面重绘发布流程:新卡先在隐藏区域完成加载和生命周期事件,再一次性替换旧卡;相同 HTML 也会重建沙箱。加载失败、超时或候选卡尝试写入剧情时均保留旧卡并明确报错。 - 修复角色气泡中的宿主内容兼容:文件链接继续使用宿主核验结果,尾部图片由宿主原生渲染;图片夹在多段正文之间或遇到未知消息块时回退原生显示,避免重排或丢失内容。 - 角色卡保存后,当前页面中的历史气泡、开场预览、角色入口和后台脚本会主动刷新;切换剧情、人设、预设、世界书或 MVU 设置时,也会重建对应的显示与脚本上下文。 - 完善 CCv3 兼容:`nickname` 用作 `{{char}}` 和提示词身份,但列表、头像及气泡标题继续显示稳定的角色卡名称;V3 未建模字段往返时保留原来的 `data` 层级,不再错误搬入 `extensions`。 - 修复内嵌世界书清理:导入时选择跳过会同时清除运行字段、原始 JSON 与 PNG 元数据中的已识别世界书;后续保存或删除会收敛旧别名,避免导出时旧书重新出现或同时存在多份。 - 角色编辑删减备用开场白后,旧会话中已经越界的开场下标统一回退到第一条;预览、翻页、脚本 API 和实际正文不再显示不同页码或内容。 - 优化超长聊天首次加载:同一会话的历史投影、历史哈希及消息索引改为有界缓存,并在追加消息、换卡、换剧情、换人设或改名后可靠失效;纯文本气泡只传输紧凑的只读显示上下文,不再为每条历史消息重复回传完整聊天和变量表。 - 静态卡不再复制、初始化约 600 KiB 的脚本兼容库;动态脚本卡和 MVU 卡仍保留完整运行时。卡面高度更新合并到动画帧,并补充 DOM、图片和折叠状态变化监听,减少重复布局计算与残留空白。 - 改善前端故障恢复与无障碍体验:目录或详情读取失败时保留正文并提供重试;加载未完成时禁用空选择器;保存期间阻止重复编辑、删除及关闭确认框;补齐表单标签、状态播报和按钮语义。 - 卡面安全边界保持不变:iframe 继续只使用 `sandbox="allow-scripts"`,不授予同源权限,网络连接默认禁止;隐藏候选投影在发布前只能执行只读初始化,不能留下变量、消息、世界书或脚本写入。 - 已在隔离的 Windows / Node 24.18.0 / dsh `0.1.5-rc.2` 安装环境完成 boot/UI 冒烟,覆盖角色创建、编辑、绑定、开场显示、变量持久化、成功及失败重绘、角色改名刷新、明暗主题与沙箱策略。自动验证共 **156 个测试文件、2245 项通过、1 项按预期跳过**;构建、439 文件打包白名单及差异检查通过。 ## 0.3.0(2026-09-19) 本次集中更新 SillyTavern 预设兼容、真实请求布局、交互卡恢复与分支输入队列。DeepSeek 官方通道新增按模型能力处理的结构化预设;宏、角色覆盖、格式和采样统一保存并逐轮冻结。继续要求 **dsh `0.1.5-rc.2`、Node.js ≥ 24**。 升级后完整重启 dsh 并刷新页面。旧版已导入预设需要重新导入原 JSON 才能补回此前未保存的采样与格式字段;in-chat 深度须为非负安全整数,非法值会在导入、保存或读取时明确拒绝。纯空白格式和角色覆盖现在按 ST 语义清空对应内容。已有异常分支不自动改写,应从原会话重新回退。其它供应商仍采用两段提示词映射,供应商专用助手预填协议尚未实现;模型生成效果不能由结构兼容测试保证。 - 修复正文中未配对反引号或行内波浪号让后续 HTML 卡面永久漏识别的问题;真实代码示例和未闭合代码围栏继续保持不可执行。角色绑定或展示请求失败时保留已有内容并提供重试,关闭再开启交互卡会重新加载;展示正则失败现在显示规则名称与原因,成功规则继续生效,重绘不改写剧情。 - 修复回退后续聊重新出现已丢弃内容:子会话发布前持久化清空从历史继承的待处理输入,避免截断入队/消费日志后重放旧消息;重新生成和编辑用户输入也不再重复执行。原会话保留,已有旧分支需更新后重新回退。 - 修复官方 MVU `@beta/artifact/bundle.js` 纯导入漏识别而加载原版框架、出现 `Vue is not defined` 的问题;与无版本入口一样交给原生 MVU。脚本跨窗口访问失败显示「需要适配」及处理说明,保留原始错误和就绪阻断,不放宽沙箱权限。 - 补齐 PTC 程序返回值的无损 JSON 约定:可选字段缺省时应省略或用 null,避免工具成功后重组返回值含 undefined 而报 invalid-output;明确外层返回失败不会撤销成功写入,收到落盘确认后不得重复执行。真实宿主回归覆盖错误返回、成功/拒绝结果与楼层回滚。 - 修复 ST `system_prompt` 内建标记与消息角色混淆,自定义 system 规则导回 ST 不再被误标内建;相同 relative 顺序沿用原栈,同深度注入按 order 和角色分组顺序排列。 - 设置新增「提示词」页,可分别控制是否采用角色卡主提示与历史后指令;默认开启,修改下一轮生效,不会改变同轮已冻结请求。 - 补齐 `lastmessage`、`charPrompt`、`charInstruction` 宏语义,以及预设 `wi_format`、`scenario_format`、`personality_format` 的导入、保存、组装与导出;格式字段有界校验,空模板恢复原文。旧预设需重导入原 JSON 才能恢复此前丢弃的格式字段。 - DeepSeek 官方普通聊天新增结构化预设投影:按角色、顺序、深度与模板位置插入,布局随会话保存并逐轮冻结;继续使用原宿主聊天、工具、凭证与流式回复。模型能力与连接同代冻结;in-history 的 system 采用完整快照,防止尾条覆盖工具说明,只读首条 system 的模型合并系统指令并报告差异。最近请求展示处理后的消息,原历史正文、图片及工具结果不被替换。其它供应商暂沿用两段映射,供应商专用助手预填协议尚未实现。 - 修复静态后置指令和 depth=0 注入被合并到系统前缀:两段映射每轮置于新输入后的上下文快照,同轮多步仍复用冻结计划。 - 卡级 main/jailbreak 覆盖改为替换启用槽位,保留顺序与位置;不再叠加原提示词或执行未引用原文的宏副作用。 - 缺少 prompt_order 的导入按 prompts 原数组排列,避免标识字典序把主提示词挪到历史之后。 - 修复动态 setvar 后的 getvar 及传递变量读取丢值;静态变量仍保留稳定前缀缓存。 - 导入、保存和导出预设采样参数,按字段覆盖插件设置,普通聊天与代答使用相同冻结结果;面板展示覆盖字段和仅记录参数。旧预设需要重新导入原 JSON 以补回此前未保存的采样值。 - 发布审查进一步统一模板与实际请求的聊天深度:工具通知不计入深度,纯图片消息保留定位身份;纯空白格式和角色覆盖按 ST 语义清空内容。官方别名路由在模型元数据暂不可用时仍保留关闭思考的设置。 - 优化大量深度/相对条目的定位与同槽位追加,合并相邻 Tavern 系统条目后生成完整快照;诊断不再复制历史中的私有布局元数据,提供处理前后的文本估算及窗口说明。列表与引用中的 Tab 围栏按实际列位置识别,避免代码示例被误提取为卡面。 ## 0.2.6(2026-09-19) 新增关于页、角色导入兼容报告与可校验备份恢复,修复依赖告警、剧情回滚和界面状态问题。继续要求 **dsh `0.1.5-rc.2`、Node.js ≥ 24**。 发布前本地构建、140 个测试文件 / 1986 项测试、诊断及备份命令冒烟、425 文件发布白名单检查通过;Windows 跳过 1 项 POSIX 专属用例。发布附件使用最终提交两平台 CI 通过后生成的安装包。 - Tavern 设置新增「关于」页,展示插件/宿主版本和 GitHub 项目;按需检查正式发布与宿主兼容性,提供发布说明和固定标签更新命令。当前宿主通过终端安装,检查按钮不自动安装;源码开发版提示更新并重新构建。网页已更新而后台未重启时,准确提示完整重启 dsh。 - 角色卡导入前展示有界静态兼容报告,区分支持、已知不支持与需确认的脚本、模板、接口和外部资源;取消不落盘,保存失败保留重试,内嵌世界书仍可选择是否导入。报告不保证所有第三方卡可运行。 - 增加 `dsh-tavern-backup` 创建、校验和恢复命令,包含版本、SHA-256 清单与引用预检;离线备份,向新目录原子恢复,保留宿主历史与配置,排除可重装依赖并拒绝其它链接和损坏数据。 - 角色管理、收纳箱和新会话选择器支持按名称、标签、作者和内嵌书名搜索;补全多行编辑框标签。切换会话或读取目标时立即隔离旧结果,避免上一会话角色卡残留。 - 改善自动记忆入模的中文检索与候选覆盖:先取有界候选,再去重并按预算选取;同来源摘要延后补位,归档原文仍可命中,关闭检索不读索引。保留每轮冻结计划和分支隔离。 - 修复较早楼层删除、后继楼层重建同一文件时的回滚依赖,要求逆序撤销;中断恢复期间拒绝重新开层、追加日志和提交,避免破坏后续恢复。 - 角色正文编辑核对内容修订号,拒绝旧编辑器覆盖新正文并保留草稿;角色导入先完成私有目录再发布,失败不留下半成品。正则 trim 路径保护宏值中的美元替换语法。 - 移除有已知漏洞且无公开补丁的 Showdown,改用固定版 markdown-it 15.0.2 / markdown-it-emoji 3.1.0;继续仅在 worker 的 QuickJS 中运行。依赖审计为 0 项已知漏洞;宿主依赖链的 node-domexception 弃用提示仍待上游处理。 - 保留常用下划线、图片尺寸、emoji、表格、换行、删除线和列表格式;标题空格、重复引用与部分旧远程 emoji 等边缘行为遵循新引擎,详见[模板说明](https://github.com/Amakurai/dsh-liketavern/blob/v0.2.6/docs/PROMPT_TEMPLATES.md)。 - 新模板重放使用 `formatterVersion: 2`;旧未完成生成或跨轮回调闭包日志在执行和推进 WAL 前明确拒绝,保留数据。**升级前备份,并先在旧版本完成生成和相关回调。** 已完成且无活动重放的剧情继续可用,保存回复不重算。 - 修复默认卡面在深色主题下文字难读;关闭交互卡时保留不可执行的源码回退,收起机读块,避免丢失混合内容或泄漏隐藏内容。沙箱权限不变。 - 已用独立测试数据完成 Windows / rc.2 真实宿主的角色导入、默认模型回复、记忆工具写入、停机备份恢复后继续对话、明暗主题和关于页更新检查。验证范围及限制见[宿主兼容记录](https://github.com/Amakurai/dsh-liketavern/blob/v0.2.6/docs/HOST_COMPATIBILITY.md)。 ## 0.2.5(2026-09-16) 修复剧情回滚、提示词缓存、脚本生命周期与资产编辑问题。继续要求 **dsh `0.1.5-rc.2`、Node.js ≥ 24**;已在独立临时数据环境完成真实宿主 UI 冒烟。 - 修复角色卡局部保存时未提交字段被 `undefined` 覆盖、落盘后丢失的问题;只更新显式传入的字段,空串、空数组与深度提示的 `null` 仍可清空。 - 世界书主、次关键词输入保留正则量词和字符类中的逗号,例如 `/\d{1,3}/, 港口` 保存为两个关键词;仅作有界词法扫描,不编译或执行输入正则,普通标签分隔不变。 - 修复 WAL 混用文本、二进制及旧版编码时漏判后继依赖的问题,阻止回滚后复活已撤销事实;日志替换落盘后报错会清除内存序号缓存,重试仍能保持整层可回滚。 - 修复角色字段和 `{{original}}` 间接引用本轮宏、以及纯 `stat_data` 宏被长期提示词缓存钉死的问题;沿实际引用分流到本轮上下文,并更新 standing 缓存版本。 - 关闭全局或当前会话的交互卡后,拒绝旧卡面继续提交变量和发起剧情写入。 - 后台脚本重载时按运行实例隔离就绪、错误和 MVU 状态,防止同版本重载沿用旧状态或被迟到回调干扰;世界变化保存期间冻结类型、引用和触发键,失败时保留完整草稿。 - 修复中文、空格和点号记忆文件名压缩后原文漏检、回滚后摘要残留的问题;检索与回滚使用一致的来源校验,并支持旧格式中无歧义的普通文件名。特殊文件名采用带独立标记的 JSON 来源数组,避免逗号拆分歧义;人工修订仍会解除来源关联,损坏或越界来源在读取及回滚写入前明确失败。 - 本版本累计新增 41 项回归测试;全量 129 个测试文件、1702 项测试、构建、诊断命令冒烟及 npm 打包白名单检查通过。已在独立临时数据目录完成真实宿主 UI 冒烟与修复前后复查,范围见[宿主兼容记录](https://github.com/Amakurai/dsh-liketavern/blob/v0.2.5/docs/HOST_COMPATIBILITY.md)。 ## 0.2.4(2026-09-14) 角色收纳与删除保护、只读诊断和发布流程的小版本更新。继续要求 **dsh `0.1.5-rc.2`、Node.js ≥ 24**。全量 128 个测试文件、1661 项测试通过,已验证编译后的诊断入口及打包白名单;本次没有新增实际宿主 UI 冒烟。 - 收纳、恢复和永久删除在请求失败后刷新真实状态;删除断连时关闭确认框并展示错误,操作期间阻止打开角色编辑器,避免丢失回执或并发点击造成界面状态误导。 - 角色管理新增可恢复的收纳箱:收纳只写角色根标记,不移动剧情、记忆或 WAL,既有会话继续使用原绑定。永久删除只能从收纳箱发起,并在同一锁内复核收纳标记、会话绑定与剧情引用;任何引用或无法安全归属的损坏绑定都会阻断删除,不再静默解绑。Windows 按文件系统大小写语义检查旧绑定并清除缓存,避免漏引用误删和删除后重建孤儿剧情。 - 新增只读 `dsh-tavern-doctor` 诊断入口,以固定问题码和聚合计数检查 Node / dsh / 插件版本、数据目录、角色、剧情与 WAL;不输出私人路径、名称、ID、正文或令牌,也不提供自动修复。结构检查与文件遍历共用目录项预算,拒绝中间目录链接,并支持安装链接下的命令启动。 - CI 增加 Windows + Node 24 构建测试,官方 Action 固定到完整提交 SHA;发布包使用严格白名单校验,并生成一次可审核的 tarball 与 SHA-256 artifact,避免审核后重新打包;两平台均验证编译后的诊断命令直接入口、安装链接和只读 JSON 输出。 ## 0.2.3(2026-09-14) 修复回复停止、互动卡显示、弹窗布局及编辑草稿问题。宿主基线升级为 **dsh `0.1.5-rc.2`**,要求 **Node.js 24 或更新版本**;旧版 dsh `0.1.2-rc.1` 请继续使用插件 `0.2.2`。全量 127 个测试文件、1621 项测试通过,包含真实文件系统与模拟宿主/服务适配器回归;构建产物与浏览器验证已完成。 - 修复角色卡保存后的详情重读挂起或失败时,新草稿被误判为已保存、无法继续保存且关闭不确认的问题;保护状态沿用已知保存版本。自动暂存保留尚未加载的子编辑器恢复字段,父编辑保存后也不清除待恢复内容,全部编辑保存后正常清理。世界书新建失败在弹窗内显示错误并保留名称供重试,书目不足五本时仍显示生效中的搜索条件。 - 修复切换会话后绑定弹窗沿用旧草稿的问题,弹窗及子面板状态按会话隔离。分支创建、开场白和兄弟导航在 RPC、列表刷新及重试后复核当前会话,保留已创建分支但不抢走新页面。脚本选项只替换同一消息中上次自动填入且未编辑的完整草稿,手写改动及不同会话、剧情、历史修订和消息中的输入均保留。 - 修复 HTML 识别的三类边界错误:代码示例/注释不再误变卡面,脚本字符串中的 `` 不再截断文档,独立 `details` 折叠卡保留内容与样式。HTML 围栏按实际边界解析,支持长围栏、波浪线及大写语言标记,普通代码块不会挡住后续卡片;内部滚动区的隐藏后代不再把 iframe 撑出额外空白。 - 修复折叠日志展开后空白:HTML 组件与相邻 CSS/脚本作为同一片段交付沙箱,保留正文、围栏及独立文档边界;卡面测量忽略收起内容的旧矩形,并在展开/收起时同步高度,消除残留空白占位。 - 修复绑定弹窗的恢复按钮占据首个表单格、造成大片空白与分组错位:恢复操作移至表单底部,弹窗收窄,分组按内容高度排布,窄屏恢复按钮与底部按钮组允许换行,避免保存按钮被裁切;列表加载期间仍可恢复 MVU。 - 修复正文结束后一直显示“深度求索中”:正常 stop 持久登记 MVU 任务后即结束生成,变量更新在后台继续,下一轮仍等待任务与 WAL 完成。适配 rc.2 的 `settle-assistant` 事件,忽略临时流序号,消除 `change.entries is not iterable` 并恢复完成消息通知;用真实 AgentLoop、流适配器、事件源和剧情文件回归。 - 升级宿主依赖至 dsh `0.1.5-rc.2`:适配消息内嵌流、异步 AgentLoop 创建、只读历史句柄与 inbox 投影通知时序;正文编辑清空旧回复流,取消或拒绝后保留原输入。React / React DOM 显式作为测试开发依赖固定版本。 - Tavern 工具调用对齐 dsh 原生 PTC:在一次 `run_code` 中组合必要的查询和写入,四个只读工具允许并行,三个写工具保持独占与楼层 WAL;返回结构用于 SDK 生成与宿主验证。已知目标直接读取,减少无意义的目录查询与中间结果回传。 - 修正提示词段顺序:按宿主 `TOOLS_SDK + 10` 放置角色 standing,避免旧 order 210 把角色文本放到 PTC SDK 前破坏工具前缀缓存;增加原生注册表、worker、Session 和真实剧情文件的 PTC 回归。 - 改善用户消息与回复的楼层编辑弹窗:扩大正文区域,显示未保存状态与分支影响说明;取消、关闭和浏览器刷新保护未保存草稿,恢复原文后可以直接关闭。 - 无修改或正文为空时禁止保存;提交期间冻结正文并同步拦截重复点击,避免重复创建分支或丢弃保存等待期间的输入。失败保留草稿并允许重试。 - 新增 9 项回归,覆盖两类编辑器、关闭保护、重复提交、传输异常,以及真实剧情文件和模拟宿主下的分支创建失败、重试与来源隔离。 ## 0.2.2(2026-09-11) 适配 dsh `0.1.2-rc.1`,要求 Node 24。本次为编辑交互、提示词导入导出与剧情状态可靠性的补丁更新。全量 124 个测试文件、1554 项测试通过;构建产物已同步。 - 修复预设编辑条目 order 后导出再导入改变提示词顺序:relative 栈按与组装相同的顺序导出,深度条目的相对位置、注入优先级与开关保持不变,不修改原始预设。 - 修复含特殊字符或同名冲突后缀的预设删除后仍保留编辑器、可误保存重建的问题:打开、保存与自动草稿同时记录磁盘身份;只关闭被删除预设的编辑器,删除其它预设保留当前草稿。 - 修复含内嵌世界书的角色卡导入失败时关闭确认框并丢失已选文件:失败保留原文件与预览,在弹窗内显示错误,可直接重试或取消;导入进行中阻止关闭确认框。 - 修复角色卡、人设与预设列表删除或刷新到不足五项后,搜索框隐藏但筛选仍生效的问题:有搜索内容时始终保留搜索入口,清除后恢复完整列表。 - 新增 10 项回归,覆盖导出往返后的提示词组装结果、同序号深度注入、真实文件系统下的预设删除与自动草稿恢复、导入失败重试和世界书选择、列表缩短后的搜索清除。浏览器验证使用真实组件与宿主控件、临时模拟数据。 - 修复世界书连续点选时迟到请求切回旧书、丢失新编辑器草稿的问题:库文件与内嵌书共用点选顺序,只接收最后一次请求的结果与错误;显示正在打开的书名,支持取消加载,取消或卸载后拒绝迟到结果。 - 修复正则页刷新后仍以旧保存版本判断未保存状态的问题;保存期间禁用并拦截刷新,保留期间继续输入的草稿。规则和预设读取失败提供就地重试,预设详情失败不再误报没有附带正则。 - 改善数字输入:清空或未完成的数字不再写成 0;最小值限制不打断多位数输入,失焦时显示有效值,外部重置仍及时同步。 - 新增 12 项编辑交互回归,覆盖请求乱序、取消与重试、真实文件系统下保存目标隔离、正则保存基线和数字输入。以真实 React 组件及宿主控件配模拟数据完成浏览器交互验证。 - 修复满载下合法模板/展示任务被依赖装载挤占计算预算:worker 启动及受信库初始化共用累计 10s 装载预算,第三方输入解析、预加载、重放和正文计算共用累计计算预算(默认 1000ms)。切换阶段只暂停计时,不刷新额度;QuickJS 在第三方执行前收紧至 750ms,死循环与灾难回溯仍明确终止。 - 修复世界书编辑器保存等待期间继续编辑被丢弃:回包后复核当前内容与已保存快照,不一致时保留未保存提示及草稿,并保持编辑器打开。 - 修复 WAL 重复开层覆盖原始日志:已有楼层无论是否已提交都拒绝再次 begin,元数据缺失也不清空记录。受控追加使用 reopenFloor;重新生成先回滚再开层。避免 records 与 meta 分别替换仍可能留下已提交空日志的故障窗口。 - 修复世界书扩深后的递归层级漂移:扩深直接扫描从 level 0 开始,后续递归门槛与首轮一致;空内容不消耗递归扫描次数。总扫描轮数独立累计初始、扩深和递归,不能随 level 归零突破 maxRecursionSteps。两项设置同时启用时遵守插件的总扫描上限,不将这一组合声称为 SillyTavern 的互斥设置语义。 - 修复启用脚本超过 32 项时不挂载却谎报 running:显式发布脚本预算错误;会话禁用时仍显示 disabled。 - 修复解绑确认框在传输层 reject 时卡死:收起确认框并显示错误。 - 修复 deleteCharacter 后卡级和剧情级工作区句柄、正则缓存滞留。缓存逐出不撤销在途调用已经持有的句柄。 - 修复聊天世界书写入收尾的绑定竞态:按实际写入的绑定失效缓存,避免并发解绑或换卡后空指针掩盖原错误、跳过失效或失效错误角色。 - Tabs 的 ResizeObserver 按页签 id 及文案稳定订阅,避免内联数组导致每次键入重复创建观察器。 - 补充计算预算、保存期间继续编辑、重复开层保护、扫描上限、脚本预算状态、剧情句柄清理及写入期间解绑的回归覆盖。 - 修复自动 MVU 停止门控的口径不一致:干净 stop 但正文为空的消息不登记任务时,未初始化剧情不再被锁进无限等待(`stopForHelperMvu` 补 `helperMvuHasAssistant` 守卫,与同文件其余调用点对齐);turn-stopping 不会被空补全永久阻塞。 - 修复开场白与首条输入的轮次撞号:`syncIdleAgentLastTurn` 现同时接受 maintenance 相位。此前开场白会话任务恰逢维护窗口时,`lastTurn` 校正被吞掉,锁存唤醒再开 turn 1 会清空已提交开场白楼层的 WAL 记录,导致该楼层不可回滚。 - 修复角色卡编辑器保存后的数据丢失竞态:reload 往返窗口期内的新键入不再被 `setDraft(loaded)` 整体覆盖,「未保存」提示保持可见(以最近应用/保存基线判定窗口期编辑)。 - 修复 `transformPrompt` 重映射历史后按对象身份追踪的深度/历史标记全部落空的问题:重映射后重建 `originalHistory`/`historyDepth` 索引,模板序列的 `historyContent` 回填与 `asTurn` 判定恢复正确(该钩子当前无调用方,属潜伏缺陷修复)。 - EM 世界书条目的丢弃告警按 position 判定:唯一的 dialogueExamples marker 处于 in-chat 位置时不再抑制 `dropped-marker-content` 日志,条目去向可从触发日志追溯。 - 聊天世界书文件在 `JSON.parse` 前增加体量闸(2.5 倍值预算上限,覆盖 2 空格美化膨胀),被外部篡改的超大文件不再造成无界读取与解析期内存尖峰,与 helper/template 状态文件的前置检查对齐。 - cardId 校验拒绝 Windows 保留设备名(CON/NUL/COM1 等,含带扩展段的形态),RPC 直传保留名不再解析为设备路径。 - `useToast` 的 React key 改为单调计数器,同毫秒两次 `show()` 不再共用 Toast 实例导致第二条沿用第一条的停留计时器。 - 新增 10 个回归用例(MVU 空正文停止、maintenance 相位开场白、编辑器 reload 竞态、transformPrompt 身份追踪、EM 告警口径、体量闸、保留设备名、Toast key),全部先在未修复代码上验证失败后落盘。 - 更新并固定开发测试框架 Vitest 4.1.11,通过根级覆盖和锁文件将开发宿主依赖链的 js-yaml 更新到 4.3.2,消除已知文件读取与 YAML 解析工作量限制告警;宿主包版本保持 0.1.2-rc.1。 - Showdown 格式化显式关闭完整 HTML 文档输出,避免继承模板修改的全局默认项;新增标题/表格注入形状、恶意链接超时和恢复渲染的安全回归测试。暂无已发布修复版的 Showdown 告警及现有隔离措施见[依赖安全记录](https://github.com/Amakurai/dsh-liketavern/blob/main/docs/DEPENDENCY_SECURITY.md)。 ## 0.2.1(2026-09-09) 适配 dsh `0.1.2-rc.1`,要求 Node 24。本次为回滚可靠性、资产校验和预设导出的小版本修复。 - WAL 回滚前严格检查二进制快照编码与整批恢复游标,拒绝损坏或截断数据;旧楼层日志异常时,不再先撤销较新楼层。正常二进制、空文件、旧版快照与崩溃续跑保持兼容。 - 预设保存改为直接验证内部格式,服务与存储边界一致;非法字段不覆盖旧文件,条目顺序、markerId 和脚本私有数据保持原样。 - 预设与人设读取增加结构校验,合法 JSON 中的错型字段不再进入缓存或拖垮列表;人设存储入口同样拒绝非法覆盖。 - 前后端共用完整预设导出,修复面板导出丢失 forbid_overrides、extension 与 injection_trigger 的问题,保留正则及脚本数据导出策略。 - 核对全部 82 个 remote 接口与客户端调用,校正 MVU 状态栏和 AI 代答的功能说明。 - 新增 41 个回归用例;全量 117 个测试文件、1482 个用例通过。重建并同步全部发布产物。 ## 0.2.0(2026-09-09) 适配 dsh `0.1.2-rc.1`,要求 Node 24。本次为 0.x 阶段的大功能更新,集中完善脚本管理、原生 MVU 与前端卡兼容。 - 脚本管理统一移至「设置 → 脚本」,提供全局、预设和角色脚本编辑及运行诊断;统一设置样式与交互,聊天中仅保留脚本发布的有界选项。 - 纯官方 MVU 导入入口接入原生执行器,修复 Zod 模块命名空间兼容;自定义框架保留原代码,不伪造父窗口宿主对象。 - 原生 MVU 可补出卡片原有的状态栏占位正则,提供只读聊天快照和旧版高度通知;修复纯文本回复选项缺失、相同快照重复刷新及卡片折叠后高度不回落。 - 修复设置保存栏的异常黑底与吸底遮挡,补足相邻设置分区间距;窄屏导航自动显示当前页签,表单字段关联可访问标签,下拉选项不再与空值占位符碰撞且禁用后拒绝迟到选择。 - 修复语言保存遇到通信异常时未回退、分区保存产生无关脏字段、旧变量备份的 current 消息作用域未映射,以及未复核服务器状态就提示无变化恢复成功的问题。 - 变量备份为版本封装保留独立预算,接近 1 MiB 上限的合法剧情变量也能导出后再导入,变量表本身仍保持原有预算。 - 旧世界书计时文件损坏时明确阻止读取和分支复制,保留原文件;模板状态统一按 UTF-8 字节执行 4 MiB 限制,超限写入不改变正文或楼层日志。 - 将变量备份、恢复与刷新移至「设置 → 卡片与数据」,移除卡面内部保存状态及备份面板,避免挤坏横向布局;恢复沿用剧情锁、历史修订和原值校验,失败保留设置草稿。 - 新增可选原生 MVU 自动更新:初值 JSON/YAML、脚本就绪门控、正常 stop 的持久任务/幂等回执、同轮 WAL 与原生输入保留;通信失败重试补交结果。下一轮 EJS/宏读取同剧情消息 stat_data 的只读快照,不复制为第二份可变存储。 - 内置 Mvu 手动解析与显式保存接口,支持有界普通 JSON 命令、JSONPatch、跨卡面可变事件和保存回执;经典 schema 的完整兼容仍有限,正文状态栏占位已提供受限适配。新增本地变量 schema 编辑器,支持异步校验/转换、冲突草稿、保存回执和重绘保护,schema 不约束程序变量 API。 - 接通沙箱脚本库同步/异步更新、动态按钮与说明持久化:固定会话选库、绑定和修订校验、串行保存、回执确认后重载;冲突保留草稿,重写/迟到回复不误操作新文档。 - 接入全局和当前预设脚本库:共享资产编辑、预设导入导出保留脚本、三类脚本共同加载及沙箱内快照读取;跨库 ID 冲突与加载时换绑会阻止旧代码启动,普通预设编辑保留最新脚本。 - 新增角色脚本管理:源码/变量/按钮编辑、文件夹移动与排序、JSON 导入导出和持久启停;保存带修订冲突保护,失败保留草稿,运行变量保持剧情隔离。 - 补齐旧 lorebook 目录/当前绑定读取及条目 API,支持字段转换、UID 局部更新、批量增删和异步 updater,保留现代额外字段并复用剧情 WAL。条目级组计分开关进入真实引擎,同分候选按权重选择。 - 真实会话卡面/后台脚本接入现代 worldbook 读写与条目更新接口,保留原生 UID、额外字段及修订冲突检测;聊天世界书按剧情隔离并走楼层 WAL。支持当前会话全局/角色主附加绑定及旧绑定别名;聊天书切换、解绑和保留副本共用单文件 WAL,分支隔离与同轮计划冻结已验证。旧全局设置适配为会话覆盖,支持同步快照、串行保存、失败草稿与面板恢复默认;补齐最少激活历史扩展与深度上限,同次求值不重复计时或概率。向量触发仍待适配。 - 接入 setChatMessages 批量正文编辑:核对固定剧情/历史修订,在独立分支保留后续正文并回滚最早修改层起的派生事实,移除过时压缩和旧流式片段;真实 Session 校验后发布,沙箱确认回执后跳转,失败保留手动打开入口。消息 data/extra 支持当前剧情的单文件原子批量保存、逐表冲突保护及变量保存队列同步;与正文混编时,显式数据在草稿回滚后绑定新消息身份,并写入子会话 WAL。支持完整消息对象往返及当前 swipe 页正文/data/extra,校验只读属性和矛盾别名,当前页返回实际数据与独立副本。完整 swipe 支持增删改页、每页变量和元数据、切页分支、完整旧值冲突保护与重启/WAL 恢复。旧 setChatMessage、/swipe 和上下文保存复用现代事务;支持原生页数据别名,只保存变化行,刷新/冲突/保存期间继续编辑均保留草稿。deleteChatMessages 支持单批 4096 条删除:在独立分支成组移除正文、流式与配套工具记录,清除过时压缩及消息状态,保留后续聊天并回滚派生事实;通过真实 Session 关系不变量检查,清空后可继续新回合。refreshOneMessage 与 setChatMessages 的 none/affected/all 接入真实插件气泡重绘,支持仅 id 触发、保存后准备/确认替换、相同 HTML 重启、超时及草稿/恢复表单保护;渲染仍为隔离只读管线。插件气泡就绪后发送一次 CHARACTER_MESSAGE_RENDERED,all 的全部目标显示及监听完成后发送 CHAT_CHANGED(storyId);旧运行时回执拒绝,宿主监听开始前同步剧情快照,快照准备失败保留 once 监听。接入当前 Tavern 会话的公开 append 消息窗口,按真实可见编号发送新用户消息和正常回复,生成事件区分正常结束与停止;收口回执加 WAL 验证阻止模板/提交失败后误报完成。首次加载、分页和重连不回放,旧来源取消;等待首条消息的后台脚本自动启动。宿主事件增加准备/执行握手,修复准备超时丢失 once 及旧来源迟到执行;旧气泡和 clean 沙箱按权威快照准备刷新,仍保护期间新增草稿。其它消息属性、消息插入、旋转及编辑/删除专用事件仍待适配。 - 内置酒馆助手卡面兼容子集:本地 jQuery/Lodash/Zod/YAML/jsonrepair、同步真实聊天快照、剧情变量持久化/删除/合并和卡内事件。聊天与预览共用 opaque-origin 沙箱,预览不执行开场白操作。 - 修复旧消息接口总是返回开场白及异步数组不兼容的问题;现代/旧开场白接口与受限 Slash 统一校验,未知或宿主写入操作明确报错。卡面重写重新安装依赖、撤销旧监听,变量冲突或重装后拒绝过期异步提交。 - 接通同页面同剧情的跨卡面/后台脚本事件,按监听顺序传回 JSON 修改并等待完成;支持一次性监听、重入调用及卸载/超时错误。同步入口的远端通知为异步,函数及原型对象不跨窗口传输。 - 接入新旧角色卡脚本树:会话头部加载启用的后台模块脚本,独立沙箱和按钮事件,支持暂停/启动及仅首次填充的剧情脚本变量。全局/预设脚本库及有界写入 API 同版本接通。 - 新增卡面剧情快照刷新、同页面变量保存通知与自动同步;更新消息下标并保护未保存数据,重写后保留最新修订。刷新和保存回执在卡面关闭后不能覆盖新文档。 - 真实会话变量绑定 storyId 与稳定消息身份,经过历史修订校验、逐表冲突检测、剧情锁与 WAL;重启、分支和回滚保持一致。保存回执支持 flushHelperVariables,失败保留本地备份。预览仍为临时数据。兼容范围与剩余工作见 `docs/TAVERN_HELPER.md`、`docs/TAVERN_HELPER_INTEGRATION.md`。 ## 0.1.10(2026-09-06) 适配 dsh `0.1.2-rc.1`,Node 24。 - 修复 WAL 文本快照丢失 UTF-8 BOM:改写或删除后恢复原始字节,同层连续撤销不再误把中间稿当作人工修订;补充真实文件系统与重启回滚测试。 - 补齐按消息变量与 findVariables:使用稳定 Message.id 保存独立快照,支持 withMsg 的索引、角色与当前 swipe;普通回复也继承快照,历史修改记入当前层 WAL,重启、分支与回滚保持隔离。 - 支持命名提示词与 generate/message 正则的 sticky 跨轮生命周期,共享回调闭包经生成及回复操作日志恢复;预加载重建不续期,到期释放日志,预览、多步与失败重试不重复推进。 - 生成正则支持合并消息的跨来源匹配、捕获替换及生成/删除 EJS;来源区间缓存避免主动激活重组重复副作用。提供冻结的 charAvatar/userAvatar,剥离 PNG 元数据并限制头像大小和路径。 - GENERATE 上下文按模拟消息顺序执行,提供完整原始 generateData 与递进 generateBuffer,装饰器支持下标/正则参数;展开后按实际正文检查预算。修复宿主重启后冷会话 EJS 开场白被误判的问题,展示只读持久日志。 - 使用真实 EJS 6.0.1 编译参数,补齐嵌套 include、上下文与空白语义;生成闭包、schema 和回复正则通过确定性重放与剧情持久恢复记录跨阶段保留,重启不重复写变量。 - 支持延迟命名注入出口与逐条回复上下文;回复以有序片段保存和展示,接入 @@iframe、@@message_formatting 及 Showdown,保留沙箱权限。修复卡面初始加载与 document.write 重写时的 CSP 插入位置。 - 内置真实 Faker 10.6.0,提供完整 namespace 与 77 种语言;在 QuickJS 中按需加载,默认种子和参考日期随轮次冻结。补齐完整角色定义、角色数据结构与读取别名,修正默认世界书选择及嵌套读取来源。 - 修正命名注入默认去重、define 属性路径/合并/函数上下文,以及临时正则 basic 默认规则;支持 system 过滤和回复 EJS 后的 after 替换。 - 生成变量与 WI 定时器改为同文件原子提交;提交失败重试沿用冻结计划,避免重复自增和推进冷却。旧定时文件保留迁移读取,分支与祖先回滚覆盖真实文件故障测试。 - 补齐 @INJECT 的位置、角色与正则定位,以及 GENERATE 的消息下标/正则正文追加;模拟序列保留位置和角色,真实正文映射到 tavern:turn 并在诊断中注明。未命中不执行,正则受 worker 超时限制,变量写入覆盖同轮冻结、剧情隔离和 WAL 回滚测试。 - 内置真实 Zod schema、完整 Lodash 和 jsonrepair:支持变量类型/默认值/转换、原子删除和补丁校验,校验器副作用与失败不会污染状态。模板库在 QuickJS 中加载并随包携带许可证,Lodash 时钟与随机源遵守同轮冻结。 - 模板与 WI 合并到同一隔离计划,支持 activewi 同轮嵌套激活、关键词查询与预处理递归;来源缓存避免重组时重复写变量。补充 activateRegex 的同步回调、作用域/深度过滤与本轮回复字符串规则冻结,纯文本回复也保存渲染快照。 - 扩展 ST 模板兼容:JSON Patch、数组/字符串插入删除、命名提示词、按角色过滤的历史数量/区间查询与匹配;支持常用生成/渲染/初始变量装饰器、扫描前只读条件与预加载函数。补丁失败不留部分状态,预加载不直接写剧情,条件与回复处理纳入冻结/回滚集成测试。 - 内置 EJS 提示词模板:支持条件/循环/异步表达式、剧情持久变量、JSON/YAML 初始变量与当前资产读取;模板在 QuickJS/WASM worker 中隔离执行。正常 stop 回复在楼层结束时提交变量和展示快照,刷新不重复写入,分支/回退继承 WAL 语义。详见 `docs/PROMPT_TEMPLATES.md` 的兼容范围。 - 清理空类型占位文件、无调用方的宏/角色卡/HTML 辅助入口及 15 组旧界面双语文案;原有解析与渲染测试改为直接覆盖在用入口。开发命令复用正式插件补丁,移除重复配置。 ## 0.1.9(2026-09-05) 适配 dsh `0.1.2-rc.1`,Node 24。 - 修复正则页保存栏出现黑色横条、空状态和列表间距过大的问题;自定义规则独立分组,按钮继承宿主字体,适配窄屏。 - 补齐交互卡 `getVariables` / `replaceVariables` / `insertOrAssignVariables` / `insertVariables` 兼容,修复卡内预设读写报错。变量只在当前 iframe 内存中保留;提供文本备份和由用户粘贴、校验后重建卡面的恢复入口,不增加主窗口存储桥。 - 卡内切换开场白失败显示错误,连续点击去重;切换会话后隔离旧气泡请求。文档重写时复用原生入口并清理旧高度观察器,避免包装和监听堆积。 - 补齐未保存编辑的浏览器刷新/关闭保护、页签与内容区的无障碍关联、空白会话绑定加载失败的重试入口。 - 修复 Vue 模板交互卡白屏:仅在无同源权限的 iframe 内允许动态编译,保留网络白名单与窄桥校验。 - 开场白写入后同步宿主会话列表,重复进入按实际日志识别成功;已开始会话不再因 blank 滞后清除绑定。会话切换隔离选择器的异步状态。 - 新会话角色选择增加头像、搜索、最近使用与导入/创建入口;最近使用仅保留在本次应用运行期间。 - 插件管理页切换、角色/预设/人设编辑器关闭增加未保存确认,保存失败保留草稿;角色编辑使用固定底部保存区,多行备选开场白独立编辑。编辑草稿自动存入数据目录,同标签页刷新与重开编辑器恢复正文及角色/剧情上下文,成功保存或明确放弃后清除。 - 对话角色面板可直接打开当前剧情的记忆管理;区分剧情状态与新会话初始状态,记忆删除增加确认。 - 按插件容器宽度适配表单、导航和卡片,增加触屏点击区域及页签键盘导航。手机上的 Tavern 设置外壳使用横向顶部导航,弹窗正文滚动并保留底部操作,聊天正文扩展到可用宽度。 - 修复自动清理空会话与开场白写入的竞态,已开始的会话不会误解绑;请求缓存挂起后重试可重新发起请求,过期响应不会覆盖新结果。 - 增加真实 React 配模拟 remote 的交互回归测试;运行依赖不变。 ## 0.1.8(2026-09-05) 适配 dsh `0.1.2-rc.1`,Node 24。 - 剧情状态按会话隔离;分支先复制后回滚,保留原会话。旧共享数据幂等迁移并保留原目录,已混合的旧事实需人工核对。 - 编辑 AI 正文撤销该层旧派生事实;WAL 整批预检与持久化恢复游标,拒绝越过后继依赖回滚。 - 自动摘要要求完整成功终止,失败按轮去重重试;检索覆盖活跃摘要的归档来源。 - standing 与模拟历史预算分离,同轮冻结完整计划;尊重常驻 WI 的概率、分组与定时条件。 - 第三方正则/WI/组装放入有时间、内存和队列上限的 worker;失败明确报告。 - 提示词预览区分实际宿主请求与 ST 模拟;新正则默认使用 live 有效的 output/render。 - 卡片完整读改写加锁;RPC 方法集合与请求/结果双向编译检查;客户端使用真实 React 与 primitives 类型。 - 增加分支、故障恢复、worker、流完整性测试,重整 AGENTS 与架构/宿主兼容说明。 ## 0.1.7(2026-09-05) 适配 dsh `0.1.2-rc.1`。 - 修复楼层回退:每次修改先原子保存 WAL 前后镜像,再原子替换正文;保留中途手动编辑,避免后补快照失败导致无法撤销。 - 修复世界状态并发:不同实例的读改写与回退共用工作区锁,回退按条目撤销,保留其他会话及面板新增条目。 - 修复记忆压缩与回退:提交摘要前复核原文;回退时递归展开受影响摘要,再撤销源记忆并重建索引,防止已撤销事实通过摘要残留。 ## 0.1.6(2026-09-04) 适配 dsh `0.1.2-rc.1`。 - 修复(楼层 WAL):同一角色卡多会话并发不再互相污染楼层归属——楼层改为按会话开立(`openFloors` 记 `sessionId → { cardId, floor }`),turn 流程写入走 `WorkspaceFs.withFloor(floor)` 派生实例,共享句柄 floor 恒为 null;生成中途换绑角色卡后写工具按 binding-changed 拒写,不再绕过 WAL。 - 修复(面板写入):设置面板的记忆/世界状态编辑(saveMemory/deleteMemory/compressMemories/addWorldDelta/revokeWorldDelta)全部改走 `plainWorkspace`(floor 恒 null),生成期间的面板修改不再被楼层回退静默撤销;手动压缩记忆改为「先写合并条目、后归档原批次」,合并写失败不再整批丢失。 - 修复(资产 id):世界书/预设/人设文件名净化增加冲突检测——不同显示名净化到同一 id 时自动追加序号后缀,不再静默覆盖;服务层统一使用存储层返回的实际落盘 id。 - 安全(第三方资产):PNG 卡 zTXt/iTXt 解压加输出上限防压缩炸弹,卡文件字节数硬上限;正则规则编译期拒绝超长 pattern 与嵌套量词/交叠分支等灾难性回溯构造;世界书/预设导入加条目数、正文长度、键长度硬限制,字段缺失的畸形数据归一化时即抛错。 - 修复(世界书):inclusion group 落选条目不再参与后续轮次的递归触发。 - 修复(校验):绑定文件读写全量严格校验(`parseSessionBinding`),坏数据不再落盘;remote 入参 schema 在可精确刻画处收紧;setSessionBinding/savePreset/saveRegexRules 改为整体校验,非法载荷拒绝落盘。 - 性能:listCharacters 与 tavern_asset_list 不再无界递归遍历 memory/archive/state/wal;客户端绑定/角色详情/头像 RPC 加会话级去重缓存(in-flight 去重 + 短 TTL),getAvatar 服务端加 stat 指纹缓存。 - 界面:记忆面板及其余子面板的写操作统一走 runAsync 安全外壳——失败 toast 提示、操作中 busy 防连击,不再产生未处理 rejection;交互卡渲染开关优先读会话绑定的 interactiveCards,缺省回落全局设置。 ## 0.1.5(2026-09-03) 适配 dsh `0.1.2-rc.1`。 - 界面:语言设置新增「跟随宿主」档并设为默认——auto 档按宿主界面语言自动切换中/英文(0.1.2 的 LocaleRuntime 快照 + 订阅),仍可在 Tavern 设置页手动锁定中/英。 - 宿主 API 迁移:`Session.events` 数组属性被按需读取 API 取代,楼层定位/前缀切片/开场白判定全量改走 `snapshotEvents()`;fork 元数据从 `header.seedLength` 改为 `meta.isSeeded` + 顶层 `inheritedEventCount`(与官方 `SessionStore.fork` 同形);`resolveSessionPreset` 帮手移除,会话预设判定改走官方 `agentPreset` 会话投影(`sessionPresetId`,投影缺席时手动折叠 header + `agent-preset/selected` 兜底);`settingsNamespace()` 帮手移除(`settings.register` 直接吃字面量);`JsonValue` 改从 `@deepseek-ai/dsh-util-values` 导入。 - 界面修复(0.1.2 破坏点):宿主 `MarkdownText` 的 `labels` 变为必填 prop,缺了渲染代码围栏即崩;对话正文与角色发言条统一经 `useMarkdownLabels()` 传本插件字典(复制/已复制/脚注)。 - 界面修复:「新对话」动作从 `ctx.workspaces.startSession` 迁到 `ctx.uiWorkspace.startSession`;seatWatch 补偿器双路径兜底,无会话 hero 选「Tavern 模式」自动开会话在新宿主上恢复可用。 - 界面修复(0.1.2 破坏点,此前导致选卡英雄区/会话芯片/楼层操作条/assistant 排版全部不显示):会话列表摘要 `SessionSummary` 顶层不再有 `agentPreset` 字段,Tavern 模式判定改读 `projectionValues.agentPreset`(此前恒判为非 Tavern,全部会话面 UI 沉默);`SessionSnapshot.composerPhase` 移除,英雄区「未动过输入框」判定改用 `blank && !promptAttempted`(原相位机的 blank→engaging 边粘性标记)。 - 仓库:`dsh.client.inject` 移除(`dsh-client-runtime` 包已删,client bundle 只 require 宿主 seed 词);client external 清理掉 0.1.2 已不再提供或未引用的三个包。 - 仓库(dev 环境):0.1.2 起 dsh 把大量运行时依赖改写成 peer(`legacy-peer-deps` 不会自动安装),devDependencies 补齐七个宿主内部基础包(`dsh-jobs` / `dsh-session-persistence` / `dsh-session-query` / `dsh-util-time` / `dsh-util-workspace-path` / `dsh-hook-protocol` / `dsh-sdk-protocol`),cordis / cordis-plugin-* / schemastery 跟随宿主升到 4.0.2 / 1.0.2·1.0.7·1.0.3 / 3.18.2(peerDependencies 同步);不补会在宿主 boot 时 `Cannot find package` 失败。 ## 0.1.4(2026-09-03) 适配 dsh `0.1.1-rc.2`。 - 界面:被中断(停止生成)的楼层现在也有操作条——宿主 slot 只对 finalized 消息挂载,中断楼层由 chat.node 侧补挂「兄弟导航 / 重新生成 / 回退」最小组,定位改传 `turn` 而非 messageId(`resolveFloorTurn`;`regenerate` / `rollbackToFloor` / `getFloorSiblings` remote schema 增加可选 `turn`)。 - 界面:设置面板骨架屏加 20s 加载超时,超时转错误态可用「刷新」重试,不再永远停在骨架;会话头芯片与英雄区在绑定加载期间显示骨架占位,不再闪现「选择角色卡」。 - 界面:英雄区选卡下拉条目标注内嵌世界书条数;提示词预览弹窗页签改用分段控件 Tabs;会话绑定弹窗保存栏固定到弹窗 footer(弹窗内容区让出 footer 高度,不再被视口裁切)。 ## 0.1.3(2026-09-02) 适配 dsh `0.1.1-rc.2`。 - 界面:插件前端中英双语。新增设置项 `locale`(默认英文),Tavern 设置页新增「界面 / Interface」子组可切换语言,选择即生效并自动保存,只影响本插件 UI(面板、对话芯片、英雄区、楼层操作条、弹窗与 toast)。全部界面文案迁入按模块分片的字典(`client/locales/`,zh 为键全集源、en 同键齐全),组件经 `useT()` 取文案;新增 `test/i18n.test.ts` 校验 zh/en 键集 parity、片段碰撞与源码键引用。 - 仓库:LICENSE 版权人改为 Amakurai;AGENTS.md 压缩到 32 KB 以内并同步 i18n 约定。 ## 0.1.2(2026-08-30) 适配 dsh `0.1.1-rc.2`。 - 界面:设置面板内分五个子组(默认配置 / 采样与思考 / 世界书引擎 / 记忆 / 卡片与数据),页内第二级 pill 导航 + 分组刻度,每组表单独立 SaveBar 保存;Tavern 品牌层统一 `--tavern-accent-*` 青碧变量(开关开启态、选中底色、图标座)。 - 修复(世界书):sticky 延续条目被 token 预算裁掉后定时器漏清,下一轮免概率回归并无条件占住 inclusion group、饿死同组兄弟;延续期落选现在同样清 stickyLeft(cooldown 保留)。 - 修复(宏):`{{getvar ::x}}`(宏名与 `::` 间带空格)解析失败、原文带双花括号漏进 prompt;命令名判定与 isGetVar 口径对齐。 - 修复(绑定回收):库中有多张同名卡时按名接回可能接错卡(工作区/记忆/WAL 静默串卡);现在仅唯一命中时接回,否则视为未绑定。 - 修复(交互卡):`cardNetworkWhitelist` 条目未校验直接拼进 CSP meta,含引号可截断属性注入;非法条目现在直接丢弃。 - 修复(WAL):生成进行中经面板编辑 journal/卡/世界书会被误记进当前楼层 WAL,回退楼层时把用户编辑静默改回旧值;面板/服务层写路径改走 floor 恒 null 的文件面(`plainFs`)。 - 修复(楼层 fork):祖先 walLineage 的 throughTurn 未按新 seed 截断,跨多代 fork 会把错误的定时器状态复制给子会话;现在 clamp 到实际继承边界,空 seed 丢弃祖先世系。swipeGreeting 补 saveBinding 失败的子会话清理。editUserMessage 拒绝空文本(schema + 代码双重,对齐 editAssistantMessage)。 - 修复(记忆):压缩先归档后落盘,落盘失败丢整批事实且清标记永不重试;改为先落盘后归档,失败可重试、最坏新旧并存不丢事实。记忆 id 同毫秒碰撞会静默覆盖,随机段加长到 6 位 hex。 - 修复(导出):截断 PNG(无 IEND)导出时静默产出废图,现在抛 `CardParseError` 提示。 - 修复(WAL 回放):records.jsonl 单行损坏中断整个多楼层回滚,改为坏行跳过(与 readMeta 容忍标准一致)。 - 修复(工具):`tavern_asset_list` 对损坏的 index.json 无容错、每次必抛;坏文件按 `index: null` 返回。 - 修复(管线):同轮第 2 步起已入日志的用户消息在触发日志/预览里重复;turn/start 时无绑定、中途才绑定的会话每步重评世界书定时器(违反每 turn 只评估一次),现在无绑定也记 turn 号。 - 修复(界面):封面 HTML 内 swipe 按钮的分支跳转漏传标题(分支会话标题不进会话列表);角色选择面板加载与英雄区多处异步操作缺 catch,RPC 失败停在骨架屏/无任何提示。 - CI:lib/ 产物一致性校验拦不住未跟踪的新产物(补 `git status --porcelain`);`npm pack --dry-run` 改为解析 `--json` files 列表断言白名单(裸 dry-run 只打印不失败,无校验效力)。 - 思考:「深度思考」新增「最高」档(DeepSeek 适配器的 `max` effort,模型公布该档时显式指定);设置面板说明补充——「自动」档会落在模型默认档,思考可能很短,要更充分的思考选高/最高。turn playbook 强化「按条查证再动笔」:回复涉及人物关系、地点、规则、既有事件等设定而快照未覆盖时,先用工具查证,不要凭印象编造。 - 测试:新增缓存字节稳定性守卫(`test/pipelineCache.test.ts`,对应 Reasonix 的 cache-guard 思路)——连续两轮 standing 必须逐字节一致、同轮多步快照必须逐字节一致、standing-safe 常驻条目端到端恒定注入、钉位复用/失效行为,防止后续改动把前缀缓存打退化。 - 缓存:standing-safe 常驻世界书条目(constant 且无本轮宏)不再掷概率、恒定注入——钉死机制本就把掷骰冻结成「每会话一次」,而 swipe/重新生成 fork 出的子会话换种子重掷会与父会话 standing 字节漂移、打穿整个 system 前缀缓存;改后 standing 只取决于资产内容,跨会话/跨分支字节确定(`STANDING_PIN_VERSION` 7 → 8,因下方分段标签改变 standing 布局)。同轮宏输入冻结:`{{lastcharmessage}}` 与 journal 文本随 `wiCache` 按 turn 缓存,第 1 步之后 history 增长或 journal 中途编辑不再改变同轮快照字节(宿主去重 100% 生效,附带省掉每步一次 journal 读盘)。触发日志新增 `[standing:pin]` 行观测 standing 钉位命中/重算。 - 提示词:世界书固定 `tokenBudget` 默认 3000 → 8192(仍是绝对上限、优先于百分比),多命中条目不再轻易被裁进 uid 清单等模型补读;世界书与检索记忆段落在 standing/快照里加来源标签(`【世界书·常驻】` / `【世界书·本轮触发】` / `【检索记忆】`),裸文本拼接不再让模型把设定事实当普通叙述滑过(作者注释保持无标签原文)。 - 缓存:提示词组装分流修正——静态深度注入(无本轮宏的预设 in-chat 条目、卡 depth_prompt)不再无条件并入 turn 快照每轮全价重付,改并入 standing 随会话钉死(`STANDING_PIN_VERSION` 6 → 7);触发型 @D 世界书与含本轮宏的注入保持 turn 侧不变。standing/turn 分流改为按消息对象身份追踪,两条展开后同字节的内容不再互相误踢。 - 缓存:多步 turn 的 runtime context 快照零重付——turn playbook 从按步变化的 `formatTurnPlaybook(step)` 改为固定文本 `TURN_PLAYBOOK`,宿主对快照按字节去重,同轮后续步骤不再重复追加(此前每步打飞去重、整份快照逐步全价重付)。「第几步该收口」的压力改由工具执行时注入的 `【Tavern 步骤】` 通知承载(按 `turn:nextStep` 去重,2 步软收口、3 步起强收口)。standing 指纹的设置标记收窄到真正决定 standing 字节的三个键(characterStrategy / useGroupScoring / maxTokens):调 tokenBudget、scanDepth 等 turn 层设置不再白白打穿整段 standing 前缀缓存。组装失败兜底优先穿同卡已钉死的 standing(`peekStanding`),瞬时故障不再回退未绑定文案把 system 前缀打穿成 0%。 - 缓存:turn 层预算收紧,直击 DeepSeek 前缀缓存命中率——runtime context 快照对新请求永远是未缓存前缀,大体量世界书/变化层搭快照通道即每轮全价重付(实测单轮快照可达 ~37k 字符)。世界书固定 `tokenBudget` 默认 0 → 3000 且改为**绝对上限**(不再随历史长度扣减归零),但只计搭快照通道的条目:落 standing 的常驻(constant 且无本轮宏)豁免计费;百分比预算折算基数 clamp 到 128K(1M 窗口模型不再把 25% 放大成 25 万 token);被裁世界书条目不再静默丢弃——快照尾部附 uid 清单(封顶 8 条),模型可经 `tavern_lore_read` 按条补读。变化层按 1500 token 从最新往旧装载(预算只计实际进快照的常驻/已命中条目,未命中的带键变化不占额度),更旧的经 `tavern_lore_read(source=delta)` 补读;触发日志新增 `[turn:tail]` 行可观测每轮尾巴体积。 - 界面:会话绑定弹窗与角色编辑弹窗整体重排——新增 880px 宽弹窗档,字段按「绑定 / 世界书 / 本轮注入」「人设与场景 / 开场白与示例 / 高级注入 / 元数据」装入分区面板卡,主操作行改为「危险操作靠左、主操作靠右」的大号按钮布局,上下文用量改为弱底色信息条;弹窗加载骨架同步为表单形状。 - 界面重构:角色卡列表改为 SillyTavern 式海报卡网格(封面图 / 首字符封面 + 底部渐变名条,悬停放大与抬升、删除钮悬停浮现,整卡可点进编辑);世界书 / 预设 / 人设改为「图标 + 名称 + 实际元信息 + 操作」的瓦片行,去掉每张卡重复的填充说明文案。 - 界面:新会话英雄区开场白改为引用式排版(左竖线、保留换行),角色名旁展示作者 / 版本 / 标签元信息,「开始对话」与开场白切换合并为单行操作区;详情加载期间显示骨架卡(不再误报「该角色没有开场白」),并补上 ← → 切换提示。 - 界面:角色卡详情弹窗按「人设与场景 / 开场白与示例 / 高级注入 / 元数据」分组;会话绑定弹窗按「绑定 / 世界书 / 本轮注入 / 开场白与调试」分组,上下文占用增加细进度条(≥90% 转警示色)。 - 界面:角色卡 / 世界书 / 预设 / 人设列表新增关键词搜索(条目 ≥5 时出现,角色面板可按内嵌书名命中),无结果给出清空入口;设置面板页签在重挂后停留在上次浏览的分区;空态改为圆底图标徽章样式;楼层操作条三组按钮之间加细分隔线。 - 界面:记忆 / 世界状态条目头部改徽标化排版(id、类型、标签、撤销态一目了然,作废与已撤销用警示色徽标、撤销条目整体压暗),新增表单改虚线卡片;正则规则的作用域 / 时机由复选框改为带对勾的多选 chip,来源改徽标;设置页与会话绑定里的「全局世界书」勾选列表改为多选 chip 组;提示词预览弹窗新增「复制当前视图」按钮;世界书编辑器「未保存」改为徽标提示。 - 性能:热路径读盘治理——库资产(预设/世界书/角色卡)解析结果按修订号缓存,`loadBinding` 在卡仍存在时不再全库扫描角色目录,`rulesFor` 对确认无正则的卡直接短路,记忆库目录读取并行化。 - 性能:世界书触发键与正则规则改为按批预编译一次,不再逐条消息 / 逐轮递归重复编译。 - 修复:损坏的预设文件不再打崩组装(回退默认预设);世界状态变化层并发写入经互斥队列串行化且 id 不再依赖行数(回滚后不会复用旧 id 误撤);siblings.json 的登记与剪枝互斥,防并发覆盖。 - 健壮性:楼层 beginFloor 失败后写工具(记忆/世界状态)显式报错可重试,不再静默产生不可回滚的写入;standing 钉位 / 触发日志 / 模型元数据缓存加上限与 TTL,长驻进程不再无界增长。 ## 0.1.1(2026-08-22) 首个记录版本,适配 dsh `0.1.1-rc.2`。 - 角色卡(SillyTavern V1/V2/V3,PNG/JSON)导入导出;多开场白 swipe、卡内嵌世界书、`regex_scripts` 正则脚本、沙箱 iframe 交互卡封面。 - 提示词预设按 Prompt Manager 语义组装,经 dsh system-prompt 瀑布下发:常驻段进 standing(按会话 × 生成场景钉死),每轮变化进 runtime context。 - 世界书全局 / 角色 / 会话三级 + 变化层;常驻条目进 standing,关键词条目按轮检索,模型可经工具按条补读。 - BM25 长期记忆:时间衰减检索、超容量 idle 期异步压缩,配 7 个模型工具供多步 agent 循环按需调用。 - 楼层事务:写入走 WAL 可回滚;重新生成 / 回退 / 编辑 = fork 分支会话续跑,同层分支 ‹ n/m › 导航;另有不改历史的续写与 AI 代答。 - 人设(`{{user}}`)、分组条目、分组拦截顺序等 ST 语义对齐。