diff --git a/CHANGELOG.md b/CHANGELOG.md index ebc75615..4ce92ee3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,18 @@ Published user-facing notes for GitHub Releases and the console update page. Write upcoming notes as bilingual files in `changelog/unreleased/`. +## 0.6.20 - 2026-10-09 + +### English + +- Fix Qoder chat silently returning an empty, spec-invalid completion when the upstream gateway answers 200 with heartbeat frames only. The in-process client now rejects the empty stream before relaying (so the executor can cool the account down and fail over), salvages streams that were cut before the terminal `finish_reason` with a synthesized `stop` / `tool_calls` terminal chunk, and rejects empty non-stream responses instead of fabricating `stop`. Strict OpenAI-compatible clients no longer fail with `Stream ended without finish_reason`. +- Make Qoder quota refresh failures visible to the account refresh endpoint while keeping account readiness intact, and run quota and model catalog refreshes independently. + +### 中文 + +- 修复 Qoder 上游网关偶发 200 + 仅心跳帧时,网关静默返回"空且不合规"的补全。进程内直连客户端现在会在转发前拒绝空流(执行层可冷却该账号并切换到其他账号重试);对已输出内容但在终态 `finish_reason` 前被切断的流,合成 `stop` / `tool_calls` 终态帧进行挽救;非流式空响应不再凭空合成 `stop` 而是报错。严格的 OpenAI 兼容客户端(如 pi coding agent)不再出现 `Stream ended without finish_reason`。 +- 让 Qoder 额度刷新失败在账号刷新接口中可见,同时保持账号就绪状态不受影响,并让额度与模型目录刷新相互独立执行。 + ## 0.6.19 - 2026-10-07 ### English diff --git a/changelog/unreleased/qoder-empty-stream-guard.md b/changelog/unreleased/qoder-empty-stream-guard.md deleted file mode 100644 index e39bdbff..00000000 --- a/changelog/unreleased/qoder-empty-stream-guard.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- Fix Qoder chat silently returning an empty, spec-invalid completion when the upstream gateway answers 200 with heartbeat frames only. The in-process client now rejects the empty stream before relaying (so the executor can cool the account down and fail over), salvages streams that were cut before the terminal `finish_reason` with a synthesized `stop` / `tool_calls` terminal chunk, and rejects empty non-stream responses instead of fabricating `stop`. Strict OpenAI-compatible clients no longer fail with `Stream ended without finish_reason`. - -### 中文 - -- 修复 Qoder 上游网关偶发 200 + 仅心跳帧时,网关静默返回"空且不合规"的补全。进程内直连客户端现在会在转发前拒绝空流(执行层可冷却该账号并切换到其他账号重试);对已输出内容但在终态 `finish_reason` 前被切断的流,合成 `stop` / `tool_calls` 终态帧进行挽救;非流式空响应不再凭空合成 `stop` 而是报错。严格的 OpenAI 兼容客户端(如 pi coding agent)不再出现 `Stream ended without finish_reason`。 diff --git a/changelog/unreleased/qoder-quota-refresh-status.md b/changelog/unreleased/qoder-quota-refresh-status.md deleted file mode 100644 index 1f7f525b..00000000 --- a/changelog/unreleased/qoder-quota-refresh-status.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- Make Qoder quota refresh failures visible to the account refresh endpoint while keeping account readiness intact, and run quota and model catalog refreshes independently. - -### 中文 - -- 让 Qoder 额度刷新失败在账号刷新接口中可见,同时保持账号就绪状态不受影响,并让额度与模型目录刷新相互独立执行。