Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 0 additions & 7 deletions changelog/unreleased/qoder-empty-stream-guard.md

This file was deleted.

7 changes: 0 additions & 7 deletions changelog/unreleased/qoder-quota-refresh-status.md

This file was deleted.

Loading