NOirBRight/dsh-llm-providers-ui ↗★ 0
dsh-llm-providers-ui
统一 LLM 提供商设置页面与卡片排序的共享配置组件 适合集中管理模型入口与展示顺序的用户,需与宿主协同挂载 providers 命名空间。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:NOirBRight/dsh-llm-providers-ui说明文档
阅读完整 README ↗dsh-llm-providers-ui
English | 中文
Mounted owner of the LLM Providers Settings page for DeepSeek Harness.
Compatibility
Host @deepseek-ai/dsh-* packages are not version-locked: peers are * and optional. devDependencies pin the compile target (0.1.5-rc.1). Cordis stays >=4.0.2 {providerUiCss}, and declare header: 'shared' so the shell drops its fallback badge. Cards start their existing cached quota read when account readiness is known, independent of expansion; opening an already-loaded card does not refetch. Missing quota renders no meter, never a zero bar; normalizeQuotaRemaining keeps precision and reports NaN/Infinity/out-of-range as unavailable.
The settings fallback preserves ancestor overflow clipping and the native settings title. Mobile layouts keep ownership of offscreen panels and dialog header spacing.
Provider plugins import directory and slot types from dsh-llm-providers-ui/client with import type {} and must not duplicate the module augmentations locally. After sign-out or account switch, providers call ctx.providerDirectory.invalidateUsage(key) so the sidebar drops the cached quota and refetches; a Settings card reports the same event through useProviderQuotaCache's signedOut verdict, which purges the stored entry. Transient read errors still show the last good windows as stale in the sidebar, while a card keeps its truthful unavailable dash.
dsh-model-switch reuses sortCatalogGroups via the built dsh-llm-providers-ui/order export.
Until this package is published to npm, lab checkouts may use link:../dsh-llm-providers-ui in dev, but workspace package.json must not commit link: specs.
Release installation (Latest)
Shared LLM Providers settings page, navigation, card order, and picker sort owner. The published pack contains built Host/Client files only; it has no sibling-repository source, workstation path, link:, or workspace: dependency. Pack-check fixtures and compile-target devDependencies are 0.1.5-rc.1.
Latest installation (asset name matches the current latest tarball):
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-providers-ui/releases/latest/download/dsh-llm-providers-ui-0.2.8.tgz
Fixed-version installation (v0.2.8):
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-providers-ui/releases/download/v0.2.8/dsh-llm-providers-ui-0.2.8.tgz
Update, uninstall, and verify:
# Update to Latest
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-providers-ui/releases/latest/download/dsh-llm-providers-ui-0.2.8.tgz
# Verify the loaded version
dsh plugin --profile web list
dsh plugin --profile web doctor
# Uninstall only this plugin
dsh plugin --profile web remove dsh-llm-providers-ui
Configuration: use the plugin section in Settings for Web UI plugins, or the profile dsh.profile.bundles entry for Host-only plugins. Start with this README's minimal YAML/JSON example and provide credentials/backend addresses explicitly.
Rollback: reinstall the previously recorded immutable tarball, verify the profile list, then restart the Web service once. Inspect journalctl --user -u dsh-web.service; never put a source checkout in the production profile.
Verify release assets against the SHA-256 manifest attached to the selected release.
Codex quota reads explicitly refresh the backend; the UI store controls caching for both manual refresh and expired-cache polling.
Live lab UI check
With an isolated Chrome exposing CDP on port 9229 and authenticated to the existing 3082 lab, run node scripts/check-lab-settings.mjs. The check covers seven real Provider cards and their brand/role icons at 1280, 390 and 320 pixels in light/dark themes, including expanded Antigravity. It restores the prior theme, does not edit Provider credentials or configuration, and writes screenshots to /tmp/lab-*.png. The script does not start a replacement application server.