-
released this
2026-10-18 01:26:35 +08:00 | 0 commits to main since this releaseKimiSwitch v0.8.7
撞名防护加固版:v0.8.6 建立了「同名供应商不再静默丢失」的基本防线,本版是针对该防线的一轮对抗性审查后补齐的六处缺口——审查发现的三个高危路径(连续撞名丢第二个受害者、用量面板绕过守卫落盘、重载失败后守卫自溃)全部关闭。
高危缺口修复
- 连续撞名不再丢第二个受害者:被顶掉条目的暂存保护原来是单槽——先撞
TokenHub、未解除又去编辑别的供应商再撞一次时,第二个被顶掉的条目没有暂存记录、无人能找回。现改为多槽暂存,任意多次撞名的受害者都会被记住并在改名/删除时逐一还原 - 用量面板不再绕过守卫:供应商列表的「用量配置」弹窗保存走的是静默保存通道,此前不经过撞名校验——撞名态下打开它点一次保存,整份丢失状态的配置就直接落盘了。现与 Ctrl+S 共用同一组硬阻止检查(撞名未解除、空名、重名变体),命中即弹窗阻止
- 重载失败不再自溃守卫:Ctrl+R / 重新加载失败时(如配置文件暂时不可读),旧逻辑会把「被顶掉条目」的暂存记录清空而内存里仍是撞名态——守卫形同虚设,随后一次保存即丢数据。现仅在重载成功时清理暂存
其余加固
- 重名变体拦截:
TokenHub与TokenHub(尾随空格)这类 trim 后同名、存储键不同的变体,编辑页会红框但 Ctrl+S 原来拦不住;落盘后两条目在编辑页永久红框。现保存闸门增加 trim 级重名扫描,这类状态不再能落盘 - 撞名态导航拦截:撞名未解决时点击顶栏「供应商 / 仪表盘 / 会话 / 高级设置 / 设置」会弹窗提示先回编辑页解决,防止带着不完整暂存游走触发边角路径;普通未保存修改的导航体验完全不变
- JSON 应用接入还原协议:撞名暂存态下通过「配置 JSON」改名应用后,被顶掉的条目现在同样会自动还原,保存不再被永久阻断
- 原型链误命中修复:存在性判断全部改用
Object.hasOwn,把供应商命名为constructor之类的原型键名不再产生幽灵撞名 - 顺带修复:编辑页红框判定与落盘闸门口径不一致(trim 对全等)、复制供应商循环取号的
in判断同源问题
其他
- models.dev 快照同步至 2026-10-17(8,994 模型,较上版 +102)
- TypeScript 类型库从 ES2020 提升至 ES2022(仅为
Object.hasOwn的类型声明;编译目标不变,运行时 WebView2 原生支持) - 零 Rust 改动,存储层与 config.toml 格式完全不变,升级 / 回退无迁移成本
src/lib/subagent-settings.ts尚有 4 处in判断(不在撞名落盘路径上),留待后续独立修复
测试
- 前端 162 项(新增 5 项 trim 重名扫描:无重复 / 空白变体成对 / 多组重复排序 / 大小写不判重 / 空名不计入)
- 六条修复路径经对抗性审查复核:三路独立审查(算法 / React 状态 / 交付质量)发现的 8 项结论逐一核实,误报 2 项已驳回
- tsc / vite build / check-version 全部通过
Downloads
- 连续撞名不再丢第二个受害者:被顶掉条目的暂存保护原来是单槽——先撞