• v0.8.6 97422440e1

    v0.8.6
    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
    Stable

    admin released this 2026-10-16 17:25:13 +08:00 | 1 commits to main since this release

    KimiSwitch v0.8.6

    供应商名称唯一性防护版:修复同一厂商配置第二把 Key 时,因供应商名称撞车导致第一个供应商条目被静默覆盖、API Key 随之丢失的问题。

    同名覆盖丢失(事故修复)

    • 事故复现路径:Kimi Switch 里供应商以「名称」为唯一存储键,新建第二个供应商时若名称与已有厂商相同(例如两把 Key 都叫 TokenHub),应用会在内存里无提示地用新条目顶掉旧条目,随后任意一次保存(包括 Ctrl+S 快捷键与切换供应商)都会把丢失状态写进 config.toml——第一把 Key 就此消失,全程没有任何警告
    • 根因:四个写入点(编辑改名、JSON 应用、新建占位名、保存校验)全部没有名称查重;且 Ctrl+S 是窗口级快捷键,会绕过任何被禁用的按钮,单纯「灰掉保存按钮」拦不住
    • 本次修复后:名称撞车在每一层都会被拦下,被顶掉的条目还能自动找回(见下),同类丢失不再可能发生

    防护机制

    • 编辑页即时提示:名称为空或与其他供应商重名时,名称输入框立即红框 + 错误说明(「供应商名称不能为空」/「名称与其他供应商重复」),顶部保存按钮同时禁用
    • 保存硬阻止:三条保存入口(Ctrl+S、底部保存按钮、切换供应商)统一过检——撞名未解除或存在空名条目时弹窗阻止,绝不落盘
    • 被顶掉的供应商自动找回:撞名瞬间被覆盖的原厂商会被暂存保护,改名离开撞名状态时自动还原回列表(例如把 TokenHub-copy 错改成 TokenHub 后再改成 TokenHub-3,原来的 TokenHub 连同它的 Key 和模型映射都会回来)
    • 新建占位名防撞:+ 自定义配置 生成的 provider-N 占位名改为循环取号,删除过条目后不再回退撞名
    • 「配置 JSON」源头拒绝:粘贴的 JSON 里 name 与其他供应商重名时直接拒绝应用,不产生任何变更
    • 复制提示修正:复制供应商的提示文案显示真实新名(-copy / -copy-2),不再固定显示 -copy

    其他

    • 名称比较为大小写敏感全等(TokenHub 与 tokenhub 视为两个不同供应商,与 config.toml 键语义一致);首尾空白自动忽略
    • models.dev 快照同步至 2026-10-16(8,894 模型 / 230 供应商)
    • 本次零 Rust 改动,存储层与 config.toml 格式完全不变,升级 / 回退无迁移成本

    测试

    • 前端 157 项(新增 7 项名称校验:空名 / 纯空白 / 撞名 / 大小写不判撞 / 双侧空白归一 / 唯一名 / 空名优先级)
    • 置换暂存与自动还原算法经 27 条独立断言推演验证(含连续两次撞名、撞名后重载、撞名后返回丢弃等边界)
    • Rust 212 项(本次无改动,全量回归通过)
    Downloads