设置页中所有需要用户自填 API Key 的配置项(AI 助手、候选词翻译、 语音识别、语音润色)旁增加「测试配置」按钮,点击后用当前填写的凭据 向服务发一个最小请求,即时反馈配置是否有效。 - server: 新增 ApiCredentialTest::Run 统一分发(chat 发 1-token 请求、 ASR 传静音 WAV、翻译发单词校验、豆包走 DoubaoAsrClient::TestCredentials), settings 可执行文件补上 curl/zlib/bcrypt/winhttp 及 cloud/voice 源。 - engine/contracts: 新增 apiCredentialTest / apiCredentialTestResult 消息, 已 generate.py 重新生成并 sync-contracts 同步至 ui-html/shared。 - ui-html: credential-test 模块负责发消息与渲染结果;测试按钮改小两号; 外观页补充字体下拉框加宽至 1.5 倍、加号按钮宽度减半。 - docs(agents): 补充格式化会卡 CI 的注意事项——clang-format 须为 18.1.8, 且 format.sh 在 Windows 上因 venv 布局失效,需直接调 clang-format 自查。
WebView messages
messages.json owns the message envelope, payload shape, and allowed sender windows.
Change it here, run python3 generate.py, and re-sync the copy under ui-html/ in the same
commit. The generated TypeScript union and embedded C++ schema must pass generate.py --check.
runtime.js and validator.h implement the documented schema subset and run the same
fixtures.json compatibility cases. The standalone CMake test requires Boost.JSON;
the input engine itself does not acquire that dependency.
New messages carry protocolVersion: 1. A missing version is accepted as legacy v1
for existing skins; an explicit unknown version, unknown message, invalid payload,
or message sent from the wrong window is rejected before dispatch. This is envelope
validation, not a replacement for domain checks such as dictionary key validation,
allowed configuration values, or the host's HTTPS URL policy.
ui-html/scripts/sync-contracts.py materializes these bindings into
ui-html/webview2/shared and checks byte equality; CI runs it with --check, which
now compares against this directory directly rather than against a pinned submodule.
Settings imports the typed serializer and checks incoming messages. Classic candidate,
toolbar and menu pages load the same runtime from the host's https://msime-contracts/
virtual mapping; packaging must include webview2/shared.
Server-to-page candidate rendering currently uses the existing view functions; this contract covers WebMessage actions and settings responses. Candidate view model ownership is documented separately from transport envelopes.