# v2.14 迭代说明（MD-2026-09-04-01）

## V2.14.0 → V2.14.3 主要更新

1. 跟进角色卡 V4.3.3，补充事件扩展变量与快照读取的兼容处理，未产生日历数据时也能正常读取其它变量。
2. 新增修改结果反馈，应用修改或重新处理正文指令后，可查看哪些修改已生效、被角色卡调整或未生效，以及需要进一步核对的结果。
3. 修复修改其它字段时，主角已有身份可能因角色卡校验而被意外删除的问题；未被角色卡接受的身份修改会明确提示，不影响同批其它有效修改。
4. 暂时隐藏主角身份的常规编辑入口，避免修改后无法保存；已有身份数据保留，NPC 身份仍可正常编辑。
5. 改进旧版本备份恢复时的提示，方便核对不同版本的角色数据。
6. 更新酒馆支持范围，后续仅适配 SillyTavern 1.18.0；同步脚本、导入文件与链接版世界书。

## 2026-09-12 / 主角身份入口调整（2.14.2 发行修订）

- 经用户确认，暂时隐藏主角基础资料中的身份编辑框，NPC 身份编辑保持正常。
- 不删除已有身份，不迁移至职业，不修改原始 JSON、快照、应用结果反馈及 MVU 写入流程；高级入口提交的身份修改若未被角色卡接受，仍报告未生效。
- 待角色卡统一身份校验模型、验证能可靠保存后再恢复入口。用户已授权本次修订以 2.14.2 发布；界面、包版本、导入文件名及链接版世界书均同步到 2.14.2。旧的固定版本链接仍加载旧版，需要替换安装语句才能升级。

> 2026-09-12 更新：2.14.1 已发布 npm，并完成 registry 与 CDN 内容核对；开始适配角色卡 V4.3.3。

## 2026-09-12 / V4.3.3 适配

- 适配 V4.3.3 新增的事件扩展数据，并继续保留角色卡或 DLC 已经写入的未知字段；聊天中尚未产生 `calendar_float_store` 时，也可以正常读取其他变量。
- 修复 V4.3.3 主校验输出会省略主角“身份”的兼容问题：修改其他字段时保留已有身份，不把省略结果当作删除写回；明确修改主角身份但角色卡未接受时，保留原值并报告“未生效”。NPC 身份仍正常读写。
- 应用和重新处理正文指令后，按项目显示“已生效、被角色卡调整、未生效、结果不确定”。该说明直接复用本次角色卡处理结果，不增加第二次 MVU 解析，也不增加新的写入阻断。
- 玩家说明补充 V4.3.3 的通用货币单位 Z，以及攻击技和动作技在攻击机会、动作机会和威力字段上的区别。
- 旧版本恢复点会提示可能存在字段结构差异；修改器无法从宿主可靠取得角色卡文件哈希时明确标为未知，不再把开发用角色卡哈希写成实际聊天版本。
- 保持零新增运行时依赖、零额外网络请求和零常驻轮询。本节虽已发布 npm，但不代表真实 SillyTavern 人工验收完成。

> 2026-09-06 更新：项目所有者授权当前版本通过 npm 发行，包版本 2.14.0，界面版本 v2.14。下方各轮“未发布”等表述是当时的历史记录；自动测试数字和发布授权不代表所有宿主环境均已验证。

## 2026-09-06 发行调整

- “关于”页移除主要更新卡片，在第一张产品信息卡片加入“作者：@gunkoishi_50181”；更新说明继续保留在本文档中。
- 链接版世界书沿用旧版安装方式，`content` 与 `originalContent` 同步保存 `import 'https://cdn.jsdelivr.net/npm/mingding-snap-modifier@2.14.0/dist/mingding-modifier.js';`，条目仍保持禁用，供玩家在酒馆助手新建脚本时使用。
- 本轮不改动变量读取、写入、生成检测、备份、回滚和性能缓存；不新增修改器运行时第三方依赖。链接安装只在加载时从 CDN 取得本版本脚本。

## V2.13.2 → V2.14 主要更新

1. 适配了角色卡 V4.3.2 的事件字段。
2. 重构了主角、NPC、世界、日历和模板变量的编辑页面，增加“结构化编辑”与“原始 JSON 编辑”的按钮。
3. 简化了变量修改的应用流程，现在在底栏能直接选择方式并确认应用，不用来回切换页面提交。
4. 改进直接写入的规则检查与目标保护，减少无效修改和写错回复的问题。
5. 改进日历与模板变量的提交方式，模板变量不再输入后立即保存。
6. 整理历史、操作记录和设置页面，改进悬浮窗及页面输入状态的保留。
7. 重构了UI界面。
8. 修复了一些BUG。

## 本次修复与使用边界

- 背包、装备等集合使用搜索与普通下拉框选择，只显示当前详情；内部用分隔标题和字段行组织，标签逐行增删，下拉、搜索与标签框沿用统一输入样式。脚本重载时会更新已存在的样式节点。
- 历史、日志、正文注入记录使用浏览器原生 IndexedDB 分条保存，不再挤占 localStorage 的历史配额。正常保留变量快照和相关指令，条数上限自动 FIFO；空间不足需要额外淘汰、只存变量或无持久备份时先询问一次。取消不写入、不删旧备份，接受后才按需降级；无持久回滚明确提示。权限、数据库损坏或不可用等非容量错误仍停止。
- 自动复制已识别的旧 v2.14 三类记录，保留原 localStorage 键；旧记录缺少目标或超出容量时明确提示，不假称全部迁移。历史维持 1 MiB、默认 20 条、可设置 1 至 100 条的限制。
- 日志失败只提示记录未保存，不把已经成功的变量修改变成失败或触发补偿。历史页按需读取数据库，不做常驻检查。
- 正文方式的变更预览分别展示数值更新与正文指令记录；“关于”不再显示开发状态，玩家说明不使用“基线”等开发用语。
- 效果可以逐项添加名称与说明、改名和删除；无需手写 JSON。结构化与原始 JSON 相互同步，错误输入必须修正后再应用。
- 历史按操作保存变量快照和修改前后的指令块；附近文字只保存长度与指纹，不保存剧情或 Analysis 明文，也不会回滚剧情。
- 默认“撤销本次操作”只恢复该次实际改过的字段和指令，保留后来无关值；同字段新变化由用户选择覆盖或保留。另有“完整快照恢复”，覆盖记录内完整变量范围，旧历史没有逐项信息只能使用该入口。声明编辑/删除只恢复指令，重新处理只恢复其变量变化；两者均不恢复剧情。
- 相关指令块仍存在且唯一时，附近剧情及无关块变化不阻断回滚。相关块被改过、删除块的插入位置无法唯一定位时停止；旧版未保存的数据无法重建。重新处理会执行正文中的指令，增减可能重复生效；冲突中选择保留的项不再重新处理。
- 默认经典固定深色；简洁主题使用平面标题与细线分区。已保存的其他配色不强制覆盖；恢复默认同时同步窗口、控件和实际配置。
- 备份后读取最新数据、正式解析一次，按实际改动合并，不要求完整数据静止。真实字段分歧展示“原值 / 现在的值 / 你的修改”，可覆盖、保留或取消；数组整项选择，移动两端联动。保留的项不再作为新指令注入正文。弹窗后复核选定字段，不重演解析；真正目标或校验规则变化仍停止。辅助变量按路径合并，纯声明编辑不检查无关变量。
- 写后只核对本次涉及的业务字段，无关更新不再伪报失败；失败补偿也只撤回仍属于本次操作的值。历史记录区分已应用、未应用、结果待确认与需要检查；旧记录不推断成功。未实际应用的记录禁用回滚，结果标记失败只给警告，不把已成功的写入改报为失败。
- 正文显示使用宿主公开渲染接口，只通知 `MESSAGE_UPDATED`；不伪造编辑前处理、新回复、聊天切换或生成结束。
- 预览只读取并展示准备提交的修改，不调用 MVU 解析；确认后正式处理一次，避免角色卡自动化在预览或取消时累计 FP。自动化已经保存的同结果值直接接受，包括 FP 与日历统计混合提交；不会再次执行 delta/move。
- 有草稿时保留输入及原目标，普通数据更新通知不再单独阻止应用；没有草稿时随消息/MVU 完成事件自动同步，隐藏时推迟到打开，迟到请求不能覆盖新输入。真正目标改变仍停止，不将旧编辑转移到新回复。
- 正式解析后的失败可能已有角色卡自动化副作用，保留历史恢复入口并提示，不宣称完全未写入；自动补偿不保证撤销监听器额外写入。
- 数字与原始 JSON 格式错误在输入时提示，无快照禁用编辑与应用；无效或未失焦草稿仍受保护。前端只检查改过的字段，不以未动过的旧异常值挡住其他编辑。MVU 不可用时仍停止，不增加绕过规则的写入方式。
- 自动同步是读取当前快照，不是自动提交编辑。若已执行保存但写后结果或补偿不明确，先提示重新读取检查，不自动重复写入，也不把它显示为“AI 正在回复”。

## 2026-09-05 性能与界面层级修补

本次只调整面板的创建时机、页面缓存、状态保存和字段视觉分组，不改变 MVU、补丁、目标锁定、生成状态、备份、事务、正文注入或回滚语义。

- 模板变量改为“搜索变量名 → 下拉选择 → 查看当前变量详情”。首次进入只创建选中变量的编辑区域；对象、数组和复杂卡片在展开时才创建内部控件，完整值仍保留在工作副本，原始 JSON 仍可随时打开。
- 已创建的模板变量和编辑卡片留在当前页面缓存中。切换 Tab 或收起再展开只隐藏/显示已有 DOM，不重新读取快照；刷新、聊天目标变化、快照替换或脚本卸载时才清除缓存。
- 卡片展开状态、筛选、滚动位置、选中 NPC/变量、未提交输入和错误提示继续沿用原有记忆规则。状态仓库在一组页面状态变化结束后合并写入，避免逐张卡片反复落盘。
- 背包、装备、技能和资产的结构化内容按“基本属性、标签、效果、描述、扩展字段”分组。描述使用与条目同级的标题、间距和分隔线，不再视觉上缩进到上一条效果下面；没有增加嵌套业务卡片。
- 面板隐藏时不启动新的轮询或整树扫描；单字段输入只记录该字段草稿，更新忙碌状态时才重新扫描禁用控件。

本轮不把“记住上次 Tab/卡片/滚动”改成启动重置，也不删除任何字段或旧编辑入口。

## 本轮目标

将 v2.13 单文件重构为模块化 v2.14 主线，修复目标解析、MVU 调用、字段模型、补丁语义与回滚范围的不一致，统一交互闭环。

## 关键修复（相对 v2.13）

1. **精确目标解析**：锁定最新活动 swipe 内含有效 `stat_data` 的消息，记录 chatId/messageId/swipeId/role/fingerprint；目标变化即中止。
2. **MVU 正式链路**：严格 `waitGlobalInitialized → getMvuData → parseMessage(完整旧数据) → replaceMvuData`，所有 `stat_data` 改动来自 parseMessage 返回值，合并时保留无关最新字段；弃用 Current 系列接口、禁止空对象模拟。
3. **字段模型**：修正 `事件.开启/结束`、`阿斯塔利亚快讯`、状态效果 `增益/减益/特殊`、`升级所需经验 number|"MAX"`、`_` 只读。
4. **统一补丁语义**：路径相对 `stat_data`（`/主角/金钱`）；union diff 生成 insert/remove/replace；数组整体替换；delta/move 只在显式选择时生成；事件 `信号` 纯追加；`_` 路径拒绝整次应用。
5. **统一事务**：`stat_data`、`date`、`calendar_float_store`、聊天模板变量统一暂存、预览、确认、备份、写入、复核与补偿回滚。
6. **布局与可访问性**：默认 420px 无横溢、`minmax(0,1fr)` 网格、窄单列宽双列；label[for]、aria-selected、dialog 焦点约束、Escape 关闭。
7. **性能与生命周期**：事件驱动失效、面板关闭零常驻轮询；卸载后监听/DOM/定时器/对象 URL/父窗口标记清理。
8. **可用业务界面**：补齐主角、NPC、世界、日历、开局、模板变量、历史、设置和关于页；复杂集合按需编辑并提供顶层键筛选；面板支持拖动、最小化、全屏和视口钳制。
9. **正文模式防重演**：正文保存合并后的可审计 JSONPatch 块，但 MVU 本次只解析用户确认的 ChangeSet，避免把历史 `delta` / `insert` 再执行一次；正文与直接模式得到相同的新状态。
10. **发行一致性**：运行时、构建名和 npm semver 共用 `src/version.js`；核验脚本逐字节检查中英文 JS、酒馆助手 `content`，以及世界书的 `content` / `originalContent`。

## 已知限制

- 本机 SillyTavern 1.13.3 集成测试与桌面/移动/键盘/触屏视觉验收需在宿主环境进行。
- 生成状态改为能力探测公开 `builtin.duringGenerating()`，内部保留 `generating / idle / unknown` 三态；不再猜测 `streamingProcessor`、私有布尔字段或 Promise。真实生成、dryRun、quiet 和中途加载仍需在宿主场景复核。
- creator-app（转生点）改为按操作触发的限界 Vue / Pinia 对象搜索，不做常驻轮询；实际组件树与动作仍需在自定义开局界面实测。
- MVU 没有原子比较写入接口；单次解析和按路径合并不能完全消除并发，尤其无法自动推断全部跨字段规则依赖。显示镜像 `display_data`、差分报告 `delta_data` 采用本次解析输出，不用旧报告做业务冲突锁。
- 历史完整快照表示备份时刻，可能早于正式写入。逐项撤销另存实际改动前后值；若成功后的元数据保存失败，该记录只能使用明确标注的完整快照恢复，界面提示，不静默删旧历史来补存。完整恢复可能覆盖之后无关数值；不会恢复剧情。

## 上轮自动验证记录（历史，非人工验收）

- `node --test`：187/187 通过（含第五次人工检验问题回归测试）；
- 全部源码、测试、脚本和 dist JS：`node --check` 全部通过；
- 发行载体逐字节一致性：PASS（中英文 JS、TavernHelper JSON content、世界书 JSON content 逐字节一致）；
- `npm pack --dry-run`：9 个文件；
- 未压缩单文件：287,468 字节、5,729 行，包含生成状态诊断、事务通知令牌、草稿过期保护、加载请求序号和高级设置消费者；相对本轮修复前 275,179 字节增加约 4.47%，相对 v2.13 接管基线增加 46.69%，需在人工验收前确认体积取舍；
- 本轮未发布，等待第五轮本机 SillyTavern 宿主实测。

## 2026-09-05 指令回滚轮验证（历史记录）

- 代码修复与自动验证完成，真实宿主人工检验尚未执行，未对外发布。
- `node --test`：234/234；63 个 JS/CJS 语法检查、3 个载体 JSON 缩进/解析检查通过。
- Edge Chromium 152.0.4191.62 隔离宿主：12 组实际 DOM 操作通过、零页面异常，包括正文应用与回滚、效果增删、无效草稿、主题设置及键盘/触屏。模拟 MVU 不等于真实角色卡 Zod 验证。
- 最终可读单文件：328,931 字节、6,316 行，SHA-256 `7A14122A05AFBFAF561C77904704105892D5C7D9CE1F7E98437B693F019BC653`。
- 相对本轮开始增长 14.42%；用户已确认 318,936 字节阶段的体积取舍，后续核验及指纹定位收尾增加 3.13%。无新增运行时依赖、网络请求或常驻轮询。
- 源码重建与 dist 一致，载体内容逐字节核验通过；npm 试打包仍为 9 个文件，无实际 tgz 或对外发布。

## 2026-09-05 备份存储与集合布局轮（历史记录）

- 本轮完成原生数据库备份、历史页异步读取、集合选择式详情、玩家文案与正文预览修正。导入后的旧草稿覆盖、变更计数以及被取消的重新加载报告同步修复。
- 用户已确认约 6.6% 的体积增量后继续收尾；最终 JS 为 356,938 字节、6,773 行，相对上轮增加 8.51%，相对专项确认时增加 1.80%。SHA-256：`AF3BDBB6B6F020D0915EECE8B4FDF0F11DDA06D28A5B621FC96A1D65791A81E2`。
- 只执行本轮受影响的定向回归，未重复上一轮完整测试。源码/载体语法、UTF-8、JSON 缩进及内容一致性通过。
- 隔离 Edge 本轮风险 9 组通过；最后修改单独补测导入与取消重载 2 组，对应最终源码哈希。均使用真实数据库和模拟聊天/MVU，不代表实际酒馆或真实角色卡通过。
- 数据库仍受浏览器权限和空间限制；保留旧 localStorage 键不等于释放主题设置空间。真实宿主与大型快照性能的边界见工作区完整开发报告。
- 未修复性能问题：约 90K 字符快照在原生文本插入阶段出现主线程阻塞，尚未执行导入解析。无法判定由本轮引入，不宣称大快照粘贴稳定；大文件导入也未作为替代路径验证。
- 本轮未对外发布，等待用户检查本地导入文件。

## 2026-09-05 写前冲突与容量降级、下拉样式修复（历史记录）

- 修复备份等待后全量比较造成的键序误判；无关更新重新读取、正式解析并合并，最多三次。真正的目标路径、数组、派生字段和正文冲突继续停止。
- 按用户确认增加仅容量不足时的 FIFO、仅快照、无持久回滚警告降级；正常保留正文指令备份。一般存储错误仍停止，旧数据不因失败试写被清空。
- 集合改为普通下拉，统一搜索与标签样式，重载会更新旧 CSS 节点；手机底栏分两行避免截字。
- 当前单文件 368,758 字节、6,956 行，相对上份 356,938 字节增长 3.31%；SHA-256 `B607C463C6E606BE299D26CCB0799CBFD269B93488B5A71D4BF3121407BDB739`。源码、载体一致性、格式与语法通过。
- 只执行受影响的模块与隔离浏览器定向检查，没有把旧完整测试重新跑一遍。各检查的源码哈希和边界见工作区本轮报告，不代表真实 SillyTavern、角色卡 MVU/Zod 或人工验收已通过。
- 本地测试件，无对外发布；上一节的大快照性能遗留问题未在本轮处理。

## 2026-09-05 真实复现后整桶误阻断修复（历史记录）

- 真实酒馆旧脚本已复现“预览正确、确认后因三次数据稳定检查失败而未写入”，但尚未捕获具体变化字段，不将其断言为 AI 回复、空间不足或某个插件问题。
- 普通应用与重新处理取消整桶稳定重试：备份一次后读取最新变量，正式解析一次，按实际改动路径合并与核验。目标、正文、真正修改路径及解析规则冲突仍停止。预览仍独立解析一次。
- 自动失败补偿只撤回仍属于本次写入的值；手动回滚仍恢复备份时刻的所列完整范围。失败备份标记“未应用”并禁用回滚；历史结果标记失败只警告，不推翻业务成功。
- 自动测试 324/324 通过；76 个 JS/CJS 的语法及 UTF-8、3 个载体 JSON 缩进通过，源码构建与五个本地载体一致，敏感信息模式扫描无命中；npm 试打包包含 9 文件，无实际 tgz。
- 隔离 Edge 152.0.4191.62、实际 DOM 和原生 IndexedDB、模拟宿主/MVU：桌面 1280px 与移动 390px 共 6 组通过，8 张截图、零页面异常。覆盖正文应用 → 回滚 → 直接再次应用、真实路径冲突零写入以及历史结果保存失败提示。
- 最终 JS 为 376,088 字节、7,064 行，比本轮起点增加 7,330 字节（1.99%）；SHA-256 `0B9C70B37C7E5A0C59CDDDCB7776B1BC7210B5AF935E8102859C9E87E820C5B0`。无新增运行时依赖、网络请求或轮询。
- 新产物尚未载入真实 SillyTavern；旧脚本的真实失败与新版的隔离测试分开记录，不宣称人工验收通过。MVU 非原子写入及跨字段并发限制仍在；本轮未对外发布。

## 2026-09-05 FP 自动化同结果误阻断与只读预览修复（历史记录）

- 核实角色卡自动化 3.4.5 会在 MVU 更新结束时累计 `date.log.totalFPGained` 并直接写入宿主。此前“解析副本不影响宿主”的预览假设错误，同结果也被当成并发冲突。
- 修复只读预览、确认单次解析、同结果合并及混合辅助变量提交；保留真实分歧、目标与角色卡规则检查。普通过期事件不再锁死草稿，无草稿时按事件自动同步。
- 自动测试 355/355；最终 JS 380,836 字节、7,147 行，比上份增加 1.26%，SHA-256 `C5D85176EEAF5E05577F495DC2AFBD4279D4D72B980278DD2B5A085ED2D668AC`。源码和五个载体已同步，内容一致性通过，无新增运行时依赖、网络请求或轮询。
- 当前 DOM 专项为 `scripts/qa-preview-automation.cjs`，最终 Edge 隔离检查桌面/390px 共 8 组通过，16 张截图、零页面异常，源码/dist 哈希一致；宿主/MVU 为合成实现，不代表真实酒馆通过。79 个 JS/CJS 语法/UTF-8、3 个载体 JSON 格式及 npm 试打包 9 文件通过。旧脚本预览解析计数预期作为历史保留；详见工作区《2026-09-05_v2.14_FP自动化误阻断修复与写入限制审计》。
- 本轮未改写用户真实聊天及旧 FP 统计，未对外发布，未宣称真实宿主或人工验收通过。完整正文锁、全树字段校验、回滚范围锁等仍有收窄空间；未一并静默取消。

## 2026-09-05 逐项回滚与冲突选择修复

- 用户确认默认局部撤销、完整恢复另列、真实字段差异交由玩家选择，任何容量降级前询问一次；专项允许本轮可读 JS 上限 407,494 字节（相对 380,836 为 +7%）。当前实现替代上节“遇真实字段冲突一律停止”和完整范围默认回滚，不抹去旧记录。
- 新增共享操作前后值记录与冲突选择，正文/直接/重新处理/回滚共用；局部回滚包含实际改动的自动化统计，明确覆盖新值后的撤销恢复该新值，保留无关字段、剧情和指令块。弹窗期间重新核对目标，确认一次不等于永久授权。
- 容量取消不继续写入或删旧备份；正常条数 FIFO 不询问。IndexedDB 确认降级后分别覆盖只存变量和无持久回滚路径，写后逐项信息存储失败只警告。
- 自动测试 383/383，通过内容包括本轮 28 项操作恢复用例；声明编辑/删除的写后核验也只检查相关块，新增无关指令不误报。最终哈希的 Edge 152.0.4191.62 隔离 DOM/IndexedDB 专项桌面 1280px、移动 390px 共 16 组通过，28 张截图、零页面异常；使用合成宿主与 MVU，不代表真实酒馆或真实角色卡通过。
- 恢复默认设置按明确完成反馈后核对控件、运行时、存储和重新加载一致；原始 JSON 错误草稿保留。第一次专项读值过早的失败证据保留，修正测试等待并重验；新增冲突弹窗下拉框补齐主题样式。
- 最终 JS：407,015 字节，比上份增加 26,179 字节（6.87%），不超过批准上限。SHA-256 `245C64257E3AA8260201E1A6346865706C8E2B7235E19250CC4DF77C6A8B07B6`。无新增运行时依赖、网络请求或常驻轮询，版本仍为 2.14 / npm 2.14.0。
- 本轮未操作真实聊天、未调整历史 FP 统计、未对外发布。真实生成、远程 MVU/Zod 和跨脚本并发仍需用户人工验证，旧大快照粘贴性能问题未在本轮处理。详细过程见工作区《2026-09-05_v2.14_逐项回滚与冲突选择修复进度》。
