Skip to content
This repository was archived by the owner on Nov 9, 2026. It is now read-only.

v0.8.6

Choose a tag to compare

@xia-sc xia-sc released this 08 Sep 10:45
· 9 commits to main since this release

流式链路加固 Stream hardening

  • 提前退出也记账:消费者中途 break(for await … return())不再丢行,账本记 aborted。| Early-exit now recorded: consumer break out of for await no longer drops the row — the ledger records aborted.
  • SSE 连接不泄漏:finally 释放 reader 锁,提前退出不再把 socket 挂到 GC。| No SSE socket leak: the reader lock is released in finally, so early exits no longer hold the socket until GC.
  • chat 面错误直报:网关 error 事件直接抛 PROVIDER_ERROR(带原文),不再吞成“无 finish reason”。| Chat-surface errors surface directly: gateway error events now throw PROVIDER_ERROR with the original message instead of collapsing into “no finish reason”.
  • 坏 SSE 行有分类:非 JSON keepalive / HTML 错误行抛 PROVIDER_PROTOCOL_ERROR,不再漏原生 SyntaxError。| Malformed SSE lines classified: non-JSON keepalives / HTML error lines throw PROVIDER_PROTOCOL_ERROR instead of leaking a raw SyntaxError.
  • 单一路分帧:pumpChunks 复用共享 ssePayloads 泵,三端面不再各写一套切行/看门狗。| Single framing path: pumpChunks reuses the shared ssePayloads pump — one line-splitting/watchdog implementation for all three surfaces.

身份与配置 Identity & config

  • 身份头统一:新增 apiAttributionHeaders(),推理与目录刷新共用 deepseek-harness/<v> dsh-opencode-go/<v>。| Unified identity headers: new apiAttributionHeaders() shared by inference and catalog refresh.
  • apiBase 预检:设置加载时 new URL() 校验,配错直接报字段名,不用到 fetch 里猜。| apiBase validated early: checked with new URL() at settings load, misconfiguration names the field instead of failing cryptically inside fetch.
  • 刷新超时不卡进程:refreshModels 改用可 unref 的 AbortController,与推理面同构。| Refresh timeout no longer holds the process: refreshModels uses an unref'd AbortController, mirroring the inference path.

显示与工程 UX & DX

  • 模型分组改名:选择器显示 zen-go (OpenCode Go),搜 zen-go 直达;路由仍是 zen-go,已有会话不受影响。| Provider renamed in picker: group now shows zen-go (OpenCode Go) so it matches the zen-go route; existing sessions unaffected.
  • 浏览器半构建门:build-client.cjs 加缺件检查 + vm 语法门(先检查后落盘)+ npm run build:client / npm test;README 补构建说明。| Client build gate: build-client.cjs gains missing-part + vm syntax checks (check-before-write), plus npm run build:client / npm test; README documents the client build.

测试 Tests

  • node test/smoke.mjs:45 项,44 pass + 1 skip(无 key 活探针);新增提前退出记账、chat error 事件、坏 SSE 行、apiBase 校验、身份一致性回归。| node test/smoke.mjs: 45 tests, 44 pass + 1 skip (live probe needs a key); new regressions for early-exit metering, chat error events, malformed SSE, apiBase validation, and identity consistency.

升级:重启 dsh web 即生效(纯 Host 改动,无需重新 add)。| Upgrade: restart dsh web to apply (host-side changes only, no re-add needed).