修复「Memory Evolve 设置 → 配置」里勾选「记忆写入看门狗」保存后刷新即失效(issue #44,外部 PR #45 by @firedrakeovo)。
根因
MemoryQueueView.saveConfig() 手工拼了一个固定键列表的 patch 发给宿主。perTurnWriteGuard(看门狗开关)与 writeGuardThreshold(阈值)在面板里有控件、draft 绑定也在(勾选立即变化),却没进这个 patch——于是 POST body 里根本没有这两个键,宿主 updateRuntime() 收不到、plugin-state.json 不落盘,刷新后 GET /api/config 回显默认 false 把复选框打回未勾选。服务端 RUNTIME_KEYS 与 validateRuntimePatch 本身正常,缺的只是客户端发送。
修复
src/client/MemoryQueueView.tsx:保存 payload 补上两个键(+2 行);lib/client.js:同步重建的产物(+2 行);- 新增
tests/client-config-save.test.js:3 条契约断言——面板draft绑定键 ⊆saveConfig发送键、源码与产物键集合一致(防「改了源码没重建」)、RuntimeConfig接口字段 = 发送键。
维护者复核(合入前独立验证)
- 独立提取面板 26 个
draft键比对:漏键正好是这两个,无其它遗漏; - 回归测试有效性:还原修复(源码+产物各删 2 行)后 3/3 失败,恢复后 3/3 通过;
- 全量
node --test 'tests/*.test.js':802/802 通过;PR 分支重跑npm run build产物无 diff; - 服务端实测:两键均在
RUNTIME_KEYS,布尔值通过、阈值0/2.5被正确拒绝。
完整说明见 docs/CHANGELOG.md。