Repository navigation
Releases
v0.3.7 — route relay -cc-format models to the Claude SDK transport
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-formatinto 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
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_rsunchanged. gpt-6-astraresolves 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
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
Any-router plugin: model routing across providers.
dsh-anyrouter 0.3.2
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
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.llmnamespaces. - All Host calls and version differences are isolated in one compatibility adapter; the React section holds no Cordis service and sees no Remote envelope.
injectdeclaresremote.credentialsandremote.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
npxinstalls 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.1Release commit: 67b7f1dcc275450fcbcf0726fd3c3ec160e10d75
v0.2.3 — Follow host day/night theme
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 onbody, dark viabody[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
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
Verification reliability patch.
- Fix the live-suite gate to read the documented
ANYROUTER_LIVE_KEYvariable, 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
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