• v0.8.7 b0ad97deb2

    v0.8.7
    Release / Version consistency (push) Waiting to run
    Stable

    admin released this 2026-10-18 01:26:35 +08:00 | 0 commits to main since this release

    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 全部通过
    Downloads