This repository was archived by the owner on Sep 29, 2026. It is now read-only.
Repository navigation
Releases: yhyfhgs/dsh-model-hub
Releases · yhyfhgs/dsh-model-hub
Release list
v0.2.3
Security, correctness, and performance release following the 2026-08-26 audit remediation. Highlights: per-agent selection serialization, OAuth grant-host validation on the read path, cross-provider credential fencing, state-gated loopback callback with dual-stack binding, single-flight catalog with bounded cancellable gates, byte-reproducible builds, and 44px hit areas. Full details: CHANGELOG.md | 安全/正确性/性能整轮修复,详见 CHANGELOG.zh.md。npm: https://www.npmjs.com/package/@fhxgs/dsh-model-hub/v/0.2.3
v0.2.2
Documentation-only release.
Changed
- Primary documents rewritten in English with Simplified Chinese
.zh.mdcounterparts (README, CHANGELOG, release scripts), cross-linked via language switchers. No code changes. - The npm tarball now additionally carries
README.zh.md(README variants are always packed by npm), and thesmoke:p0package-content gate acknowledges it.
Tarball SHA-256: 35b82365a475d73f45cc75618eb59e02823d427af436308d130b4f9517d4ea02
v0.2.1
Fixed
- Unstuck the "activated but signed out" provider state. A live route with a sign-in flow and no
credential now leads with Sign in (Manage moves into the row menu, Deactivate stays there);
built-in routes project their credential axis as their activation axis — sign in to use, sign out
to deactivate — instead of claiming an active route with no way out. The attempt panel no longer
offers an activation that would overwrite an already-active profile. - Effort tiers are derived per model from the adapter's own declaration (
thinkingLevelMap), so
gpt-5.6-solshowsxhigh/max,qwen-codegains its five levels, and a model that does not
reason shows no slider; a level the model does not offer is refused rather than clamped. - A latent state-projection bug: one status check compared against the literal Chinese phrase and
would have broken under any other language. - Two invented CSS tokens that rendered a hard border and a transparent background; dark-theme error
ink and the effort/fast-mode track (contrast 1.09:1 → 9.4:1); control font inheritance, type
scale, focus rings, and spacing rhythm across all surfaces. - On built-in routes, an image nested inside a tool result is now refused (
UNSUPPORTED_CONTENT)
exactly like a top-level one instead of being silently dropped from the request, and quota /
context-window failures classify asQUOTA/CONTEXT_WINDOW_EXCEEDED(matching the harness's
own adapter) — so retry no longer hammers an empty balance and compaction can recover an overflow. - The sign-out confirmation for a built-in provider no longer promises that configuration is kept;
it states what actually happens — the stored credential is deleted and the route drops from the
usable list until the next sign-in.
Added
- Built-in
codexprovider (OpenAI Codex): authorization-code + PKCE loopback sign-in and the seven
GPT-5.x models, on a route key that is disjoint fromllm-pi-ai'sopenai-codexby construction
— no adapter or directory collision, no migration step. A busy loopback port is a loud error, not
a silent fallback. - Fast-mode switch for
gpt-5.6-sol(service_tier: priority), strictly metadata-driven: providers
whose fast lane is a separate model id never render it. - Bilingual UI (Simplified Chinese / English) through the harness locale service — 316 keys, the
language follows the shell's Language setting.
Changed
- Catalog success cache TTL lowered to 90 seconds, shared with the picker's open-time re-read.
- Failure envelopes now carry locating detail (
endpointon folded internals, a closed reason set
onATTEMPT_GONE, the settings namespace on conflicts) without widening the redaction contract. - Every client fold point emits a structured console diagnostic (code plus the envelope's locating
details as an inspectable argument) before folding, so a refusal is debuggable without changing
any visible outcome, toast, or terminal state.
npm: @fhxgs/dsh-model-hub@0.2.1 · tarball SHA-256 94b2c770132c9869bef9ca9a531d569419c1e7ac52a23fe5a154a464de78e820