Skip to content

Releases

v0.3.7 — route relay -cc-format models to the Claude SDK transport

Choose a tag to compare

@shaomingbo shaomingbo released this 30 Sep 11:37

What changed

Upstream announces -cc-format model ids (e.g. gpt-6-astra-cc-format) that serve Anthropic messages format only (via claude --model); sending them to the Responses endpoint fails inside pi-ai's parser (PI_AI_ERROR: Cannot read properties of undefined). Both protocol classifiers — host-side classifyProtocol and the settings picker's protocolFor — now check the -cc-format suffix before the gpt- prefix rule, so these ids ride the Claude SDK transport.

Migration for entries saved by v0.3.6 or earlier

Persisted protocols are never silently rewritten on re-sync. If you saved a -cc-format model before v0.3.7 (it would carry the wrong codex-responses protocol and fail with PI_AI_ERROR), remove that saved entry in the settings section, save, then re-sync and check it again — the fresh entry persists protocol: claude-code. Plain gpt-* ids keep the Responses transport and need no migration.

Verification (tag v0.3.7, commit ba6beba)

  • Full repo check suite passes (typecheck, build, vitest, node:test, host-lifecycle; new regression tests cover classification, sync→save, and stale-protocol behavior).
  • Live on isolated host 0.2.0-rc.2 / pi-ai 0.87.1 with a real relay key: re-sync classified gpt-6-astra-cc-format into the Claude group; a real stream request succeeded with the model identifying as running on the Anthropic Claude Agent SDK; the request was metered (3 in / 82 out, ok). The same fix applies to 0.1.7-alpha.1 hosts.
  • Post-release npx closed loop from this tag on a fresh isolated DSH_HOME (dsh 0.2.0-rc.2 on PATH): install / status / uninstall all green; the final profile manifest returns to the pristine official bundle set.

Known limitation

The legacy installer runs pnpm install --ignore-scripts directly; under CI=true pnpm defaults to --frozen-lockfile and the install fails with ERR_PNPM_OUTDATED_LOCKFILE after the manifest edit. Regular (non-CI) terminals are unaffected. Migrating the installer to the public dsh plugin adapter (which also lifts this limitation) is tracked as follow-up work.

v0.3.6

Choose a tag to compare

@shaomingbo shaomingbo released this 24 Sep 14:50

Changes

  • Codex user agent upgraded to codex_cli_rs/0.156.0 — the relay's 2026-09-23 announcement requires codex ≥ 0.153.0. originator: codex_cli_rs unchanged.
  • gpt-6-astra resolves and synchronizes with the relay-advertised 1M context capacity. One shared reference feeds both runtime resolution and discovery sync, so a freshly discovered row (endpoint silent about capacities) and a later request agree. Persisted per-model values keep priority, and other relay-only codex ids keep the 400k protocol fallback.

Verified on isolated DSH 0.1.7-alpha.1: install, cold start, settings section, GUI sync→save, and a real request through the installed plugin (captured user-agent: codex_cli_rs/0.156.0 …, session request/context = 1000000). Upstream channel availability is out of this plugin's control.

v0.3.5

Choose a tag to compare

@shaomingbo shaomingbo released this 24 Sep 09:14

Fix: npx install failed with ERESOLVE (peerOptional cordis-plugin-loader 1.0.4 vs the auto-resolved host tree). Host packages are provided by the DSH profile runtime, not npm peers; peerDependencies removed. Installer default source now derives from the package version, guarded by a test.

v0.3.4

Choose a tag to compare

@shaomingbo shaomingbo released this 24 Sep 08:35

Any-router plugin: model routing across providers.

dsh-anyrouter 0.3.2

Choose a tag to compare

@shaomingbo shaomingbo released this 11 Sep 14:51

Compatible with dsh-settings 0.1.2-rc.1 (no static import of removed helpers) and the older 0.1.1-rc.2 helpers. Prefer this over v0.3.1 on mixed CLI 0.1.2-alpha.3 + Web rc.1 hosts.

npx --yes --ignore-scripts github:shaomingbo/dsh-anyrouter#v0.3.2

v0.3.1 — AnyRouter settings panel restored on DSH 0.1.2-alpha.3

Choose a tag to compare

@shaomingbo shaomingbo released this 01 Sep 16:38

Fixed

The AnyRouter settings panel rendered blank on DSH 0.1.2-alpha.3. That release removed ConnectionHandle.api from the Client contract, so the section's api.credentials.describe(...) threw TypeError: Cannot read properties of undefined (reading 'credentials') and the slot entry crashed before painting.

v0.3.0 carried the same fix but could not be installed: its split peer pins made npm's strict peer resolution fail. Use this release.

Changed

  • Credentials and model discovery now go through the typed ctx.remote.credentials / ctx.remote.llm namespaces.
  • All Host calls and version differences are isolated in one compatibility adapter; the React section holds no Cordis service and sees no Remote envelope.
  • inject declares remote.credentials and remote.llm, and activation probes them, failing loudly with the supported range instead of degrading into a blank panel.
  • Host-provided DSH packages are declared optional peers, so npx installs cleanly.

Compatibility

DSH version Status
0.1.2-alpha.3 Verified (build, boot, panel)
0.1.1-rc.2 and earlier Unsupported — use v0.2.3

Install

npx --yes github:shaomingbo/dsh-anyrouter#v0.3.1

Release commit: 67b7f1dcc275450fcbcf0726fd3c3ec160e10d75

v0.2.3 — Follow host day/night theme

Choose a tag to compare

@shaomingbo shaomingbo released this 01 Sep 02:05

Fix

  • Settings section now follows the host day/night theme: replaced invented --dsw-color-* variables with the real --dsw-alias-* tokens from @deepseek-ai/dsh-client-ui-theme (light on body, dark via body[data-ds-dark-theme]).
  • Cards, inputs, buttons and state colors now match the native settings styling in both themes.
  • Installer default source pinned to this tag (#v0.2.3).

Install

npx --yes github:shaomingbo/dsh-anyrouter#v0.2.3

修复

  • 设置区块跟随宿主白天/夜间主题:把不存在的 --dsw-color-* 变量替换为宿主主题真实的 --dsw-alias-* token(亮色定义在 body,暗色经 body[data-ds-dark-theme] 覆盖)。
  • 卡片、输入框、按钮与状态色在两套主题下均与原生设置页一致。
  • 安装器默认 source 固定到本 tag。

dsh-anyrouter v0.2.2

Choose a tag to compare

@shaomingbo shaomingbo released this 31 Aug 23:29

Fixes a startup-order race where DSH could initialize the provider before the credentials service restored a persisted key, leaving Settings enabled while the AnyRouter selector group stayed absent. The provider now re-evaluates route activation across credentials-service mount and unmount events. Adds a deterministic lifecycle regression test for the exact boot order.

v0.2.1

Choose a tag to compare

@shaomingbo shaomingbo released this 31 Aug 16:22

Verification reliability patch.

  • Fix the live-suite gate to read the documented ANYROUTER_LIVE_KEY variable, so discovery / Claude / Responses checks cannot silently skip.
  • Add a regression test for the canonical gate name.
  • Derive the installer's pinned-tag test from package.json.version.
  • Runtime adapter code is unchanged from v0.2.0.

v0.2.0

Choose a tag to compare

@shaomingbo shaomingbo released this 31 Aug 15:54

First published release.

  • No-argument fixed-tag installer: npx --yes github:shaomingbo/dsh-anyrouter#v0.2.0
  • Key-gated provider route: no key, no selector group; live swap on credential updates
  • Synchronized models carry full reasoning profiles (efforts / default effort / adaptive flag), editable in the settings picker
  • Claude Code 2.1.239-compatible transport + Codex /v1/responses transport
  • Env-gated live verification suite over the real relay