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

Releases: yhyfhgs/dsh-model-hub

v0.2.3

Choose a tag to compare

@yhyfhgs yhyfhgs released this 26 Aug 16:42

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

Choose a tag to compare

@yhyfhgs yhyfhgs released this 25 Aug 08:20

Documentation-only release.

Changed

  • Primary documents rewritten in English with Simplified Chinese .zh.md counterparts (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 the smoke:p0 package-content gate acknowledges it.

Tarball SHA-256: 35b82365a475d73f45cc75618eb59e02823d427af436308d130b4f9517d4ea02

v0.2.1

Choose a tag to compare

@yhyfhgs yhyfhgs released this 25 Aug 08:00

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-sol shows xhigh/max, qwen-code gains 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 as QUOTA / 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 codex provider (OpenAI Codex): authorization-code + PKCE loopback sign-in and the seven
    GPT-5.x models, on a route key that is disjoint from llm-pi-ai's openai-codex by 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 (endpoint on folded internals, a closed reason set
    on ATTEMPT_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