Skip to content

Releases: chen1pengvincent/dsh-model-sync-plugin

v0.9.2 (pre-release)

v0.9.2 (pre-release) Pre-release
Pre-release

Choose a tag to compare

@chen1pengvincent chen1pengvincent released this 21 Oct 16:24

[0.9.2] - 2026-10-22

Pre-release / 预览版:DSH NEXT 2.0.19-next 是社区项目(anywhere-labs/dsh-desktop),不是 DeepSeek 官方发行版。本版本只在 DSH Desktop 2.0.18 的同一 kernel 0.2.1-rc.2 上完成宿主、API 与客户端验证;NEXT 自有 GUI、客户端壳和插件管理界面尚未完整验证。请先在独立测试环境(建议设置独立 DSH_DESKTOP_NEXT_HOME)验证,不要直接用于生产。稳定版仍为 v0.9.1。

Added

  • package.json#engines.dsh:>=0.1.2-rc.1 <0.3.0-0;DSH 0.2.1+ 在安装和启动时执行兼容检查。
  • dshWorkshop.compatibility.dshVersions 增加 0.2.1-rc.2。
  • README / docs/ecosystem.md 补充 DSH NEXT 风险、验证边界、稳定版与回退方式。

Fixed

  • 0.2.1 credentials:已保存凭据优先于启动环境变量;env 兜底为可写。只有来源确实只读(writable: false)才告警,不再把所有环境变量误报为“遮蔽”。
  • 0.2.1 入口式 settings 没有 get() 时,自定义 pi-ai baseURL 的主机现在通过 describe() 读取,OpenCode 会话头不会因自定义 host 漏加。
  • pi-ai 版本措辞与发现请求的 user-agent 更新为 dsh-model-sync/0.9.2。

Verified

  • 单元测试:59/59 通过。
  • DSH Desktop 2.0.18 / kernel 0.2.1-rc.2:插件安装、宿主启动、GET /model-sync/api/state 200、无头 Chromium 设置面板渲染正常、console 无 error。
  • 负向验证:临时把 engines.dsh 改为不兼容范围后,dsh plugin add 在进入 pnpm 前拒绝安装。
  • DSH NEXT 2.0.19-next 的 package.json 固定依赖 @deepseek-ai/dsh-app-boot@0.2.1-rc.2;其 GUI 未在本次验证中启动。

Compatibility

  • DSH Desktop 2.0.18 / kernel 0.2.1-rc.2 已实测。
  • 0.2.0-rc.2、0.1.2-rc.1 保留历史兼容路径。
  • DSH NEXT 2.0.19-next:仅内核层面验证,GUI 兼容性为预览状态。

Full Changelog: v0.9.1...v0.9.2

v0.9.1

Choose a tag to compare

@chen1pengvincent chen1pengvincent released this 21 Oct 16:24

[0.9.1] - 2026-10-19

Fixed

  • 删除某个协议分流(sibling)的最后一个模型时,改为 unset 整个 provider,而不是写入空的 models 数组。DSH 的严格写入不接受“解析不到模型”的路由,原实现会导致保存失败。

Verified

  • 单元测试:57/57 通过。

Stability

  • 稳定版:推荐用于 DSH Desktop ≤2.0.17 / kernel 0.2.0。
  • v0.9.2 是 DSH kernel 0.2.1 / DSH NEXT 兼容更新,以 pre-release 发布;如遇兼容问题可继续使用本版本。

Full Changelog: v0.9.0...v0.9.1

v0.4.0

Choose a tag to compare

@chen1pengvincent chen1pengvincent released this 06 Oct 08:17

[0.4.0] - 2026-10-06

Added

  • Attach x-opencode-session per conversation for OpenCode / OpenCode Go
    routes at request time, without writing settings.
    • llm/stream reads options.provider + the durable options.sessionId.
    • AsyncLocalStorage wraps the downstream chunk stream; a globalThis.fetch
      patch injects the header only while that window is active.
    • Scoped to OpenCode provider prefixes (opencode-go / opencode, including
      the -responses / -messages siblings) and to OpenCode hosts.
    • Default value is an opaque random UUID per DSH session — stable within a
      conversation, new on session switch, never the raw internal session id.
    • Never overrides a header the caller already set (safe on pi-ai 0.86+ and
      with static headers).
  • lib/session-header.js and tests/session-header.test.js.
  • Config block sessionHeader ({ enabled, mode, providers }), overridable by
    id in the profile cordis.patch.yml.

Fixed

  • 400 MissingSessionID from OpenCode Go for routes this plugin declares with
    an explicit api: (which pi-ai's built-in wrapper does not cover).

Changed

  • package.json: 0.3.0 -> 0.4.0; discovery user-agent -> dsh-model-sync/0.4.0.
  • lib/index.js: stale v1 docstring aligned with the v2 read-only behavior.
  • npm test script: node --test tests/ -> node --test (works on Node 24).

Verified

  • Unit tests: 32/32 pass.
  • Real credential, POST /zen/go/v1/chat/completions (deepseek-v4.1-flash):
    no header -> 400 MissingSessionID; with x-opencode-session -> 200.
  • Real OpenAI SDK 6.40 end-to-end: patch active -> 200; wrong host scope -> 400.
  • Model reachability: kimi-k3 200; ox-alpha-free unavailable upstream,
    its settings entry repointed to the current omen-alpha (200).

Compatibility

  • DSH kernel 0.1.2-rc.1+; verified on DSH Desktop 2.0.11,
    dsh-llm-pi-ai@0.1.5-rc.2, @earendil-works/pi-ai@0.85.1.
  • No effect on non-OpenCode providers.

Full Changelog: v0.3.0...v0.4.0