Files
KimiCodeSwitch/docs/release-notes/v0.8.7.md
T
KimiSwitch Dev b0ad97deb2
Release / Version consistency (push) Canceled after 0s
Release / Build (macos-latest) (push) Canceled after 0s
Release / Build (ubuntu-latest) (push) Canceled after 0s
Release / Build (windows-latest) (push) Canceled after 0s
Release / Attach macOS install script (push) Canceled after 0s
fix(providers): 撞名防护加固(多槽暂存/用量弹窗守卫/重载失败保暂存/trim 重名拦截/导航拦截)— bump to v0.8.7
2026-10-18 01:21:11 +08:00

31 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# KimiSwitch 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 全部通过