fanlusky
f05507ade8
fix(config): 升级时保住用户已填的 API token 等凭证
用户反映更新后 API token 被清空、需要重填。根因不在安装器(它早已用
onlyifdoesntexist 且清理时保留 config.toml / config.base.toml,从不覆盖用户
配置),而在 Server 启动时的合并路径 SyncConfigWithInstalledTemplate:当
config.toml 存在、非空但解析不过(上次写入被打断留下半截文件,或 token 里混入
破坏 TOML 的字符)时,旧逻辑直接拿出厂模板覆盖,等于把用户全部配置——尤其是
凭证——清零。
配置升级本质上已经是「逐条把用户值重放到新模板」(MergeTomlIntoTemplate),因此
不另建配置操作日志,而是把「逐条重放」精准用在最难重填的凭证上,并堵掉硬重置:
- ReapplyRealCredentials:合并结束时把用户填过真值的凭证逐条重放回去,有键改值、
无键则在其分节插入。覆盖 token / api_key / apikey / secret_id / secret_key /
app_id / asr_app_key 及所有 per-provider 槽位(token_* / asr_token[_*] /
polish_token[_*]),真值判定复用 VoiceInput::IsPlaceholderToken。这样模板漂移
漏掉某个 token 键也不会静默丢失;占位符不粘住,新默认值照常生效。
- SyncConfigWithInstalledTemplate 的 unparseable 分支:先把坏文件备份成
config.toml.corrupt-<时间戳> 留证,再逐行抢救可识别赋值重放到新模板;即便整体
抢救结果仍解析不过,也只回退到「模板 + 重放凭证」,而非纯模板。
新增回归测试:模板漏键时真 token 被写回、未填的占位符跟随新默认、损坏配置能捞回
真 token,以及读安装器真正分发的 config.default.toml 逐分节确认所有凭证键挺过升级。
2026-09-14 03:15:16 +08:00
..
2026-06-20 22:11:00 +08:00
2026-09-06 12:13:47 +09:00
2026-09-06 13:24:03 +09:00
2026-09-02 15:30:03 +08:00
2026-09-09 04:35:34 +08:00
2026-09-06 12:13:47 +09:00
2026-07-16 21:41:09 +08:00
2026-07-16 21:41:09 +08:00
2026-09-13 00:16:18 +08:00
2026-09-06 00:26:38 +09:00
2026-09-13 00:16:18 +08:00
2026-09-06 12:13:47 +09:00
2026-09-13 09:43:22 +08:00
2026-09-14 03:15:16 +08:00
2026-08-30 15:39:02 +08:00
2026-09-12 03:40:48 +08:00
2026-09-12 00:55:57 +08:00
2026-09-12 03:40:48 +08:00
2026-09-11 20:06:16 +08:00
2026-09-12 03:40:48 +08:00
2026-09-13 09:33:14 +08:00
2026-09-12 03:40:48 +08:00
2026-08-08 12:37:24 +08:00
2026-09-08 22:47:26 +08:00
2026-09-08 14:07:48 +08:00
2026-09-12 00:55:57 +08:00
2026-09-12 03:40:48 +08:00
2026-09-12 03:40:48 +08:00
2026-09-12 03:40:48 +08:00
2026-09-06 12:13:47 +09:00
2026-09-13 20:54:45 +08:00
2026-09-12 03:40:48 +08:00
2026-07-16 21:41:09 +08:00
2026-07-16 21:41:09 +08:00
2026-09-13 15:56:29 +08:00
2026-09-06 12:13:47 +09:00
2026-09-12 03:40:48 +08:00
2026-09-12 03:40:48 +08:00
2026-09-07 13:37:22 +09:00
2026-09-12 00:55:57 +08:00
2026-09-06 12:13:47 +09:00
2026-08-25 20:01:48 +08:00
2026-09-12 03:40:48 +08:00
2026-09-12 00:55:57 +08:00
2026-09-12 00:55:57 +08:00
2026-09-13 18:58:39 +08:00
2026-09-12 03:40:48 +08:00