Files
openless/Sources
baiqing 2517df5d2f feat(settings): LLM Providers tab + rewire DictationCoordinator
新增「LLM Provider」侧边栏 Tab:
- 顶部 picker 切换 active provider(含已配置条目 + 一键添加)
- 下方表单编辑 displayName / API Key / Base URL / Model / Temperature
  - 字段编辑后 0.5s debounce 自动写盘并 post `.openLessCredentialsChanged`
  - Base URL 与预设默认值相同时显示「默认」徽标
  - 预设条目展开「怎么获取 API Key?」disclosure,附 docsURL 跳转
- 「+ 添加」sheet 列出 5 家预设 + 自定义 OpenAI 兼容;自定义需填 slug+displayName
- 删除按钮在 active provider 上禁用,必须先切走再删

DictationCoordinator 不再构造 `DoubaoPolishClient`,改成:

    let active = vault.activeLLMProviderId
    guard let cfg = vault.llmProviderConfig(for: active),
          !cfg.apiKey.isEmpty else { return raw }   // 静默插入原文
    let provider = OpenAICompatibleLLMProvider(config: cfg, ...)
    let polished = try await provider.polish(rawText:..., mode:..., hotwords:...)

`SettingsHubTab` 移除硬编码的 Ark 三字段表单,改为只显示当前 active provider
状态并把详细设置指向新 Tab。
2026-04-29 11:54:24 +08:00
..