Skip to content

[settings] 凭据字段加载前失焦会清空已有密钥 #34

@Cooper-X-Oak

Description

@Cooper-X-Oak

现象

  • 触发条件:打开设置页“提供商”区域,字段初始值为 ''readCredential() 异步返回前发生 blur,或旧窗口里空字段失焦。
  • 当前表现:CredentialField.onBlur 无条件调用 setCredential(account, value);当 value === '' 时后端会 remove 对应账号,最终 credentials.json 被写回空 provider。
  • 已在 Windows 真机复现:手动写入本机凭据后,打开设置页仍显示空;随后凭据文件又变成 providers.asr={} / providers.llm={}
  • 相关文件:openless -all/app/src/pages/Settings.tsxCredentialField

影响

  • 用户已经配置好的 ASR/LLM 凭据会被设置页静默清空。
  • 真实回归脚本会先显示凭据已配置,但打开应用后又变成未配置,导致录音/润色链路失败。
  • 这会被误判为路径、Keychain 或后端读取问题,实际是前端表单生命周期覆盖。

建议接受标准

  • 凭据字段必须等 readCredential() 完成后才允许保存。
  • 只有用户实际修改过字段才在 blur 时保存。
  • 打开设置页但不修改字段,credentials.json 不发生变化。
  • 读取失败时显示错误状态,不写空值覆盖已有凭据。
  • 不在日志、UI、issue 中打印密钥明文。

TODO / 不确定项

  • TODO:补 WebDriver/E2E 测试,断言打开设置页不会清空凭据。

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions