yzke/dsh-icon-theme 预览 preview

yzke/dsh-icon-theme

皮肤Skin 原生Native ⭐ 3 MIT Web 界面Web UI

DeepSeek Harness 设置和侧边栏的自动检测、用户可自定义图标

项目介绍Project Overview

dsh-icon-theme 是一款 DSH 视觉皮肤插件。它能自动发现设置与侧边栏的可用图标位,保留可信的原有图标,并用 50 个 Fluent 风格字形补齐缺口,同时允许用户按稳定键逐项覆盖。当 DSH 0.1.x 尚未提供图标字段、第三方页面普遍回退为齿轮图标时即可使用。注意:若侧边栏 DOM 被改动,未知条目会保持原样,且需要 Node.js 22 以上源码构建。

dsh-icon-theme is a DSH visual skin plugin. It automatically discovers live icon slots in Settings and the sidebar, preserves trustworthy original icons, fills gaps with 50 curated Fluent-style glyphs, and lets users override every target by stable key. Use it when DSH 0.1.x pages fall back to the gear icon because no icon field exists. Note that unknown or changed sidebar DOM is left untouched, and source builds require Node.js 22 or newer.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add dsh-icon-theme

yzke/dsh-icon-theme 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-icon-theme

English | 简体中文

Automatic, coherent, and user-customizable icons for DeepSeek Harness Settings and sidebar actions.

Settings overview

Screenshots use the Chinese locale; the plugin ships equivalent English labels.

Why this plugin

DSH 0.1.x settings contributions expose stable IDs and labels, but not an icon field. As a result, many third-party pages fall back to the same gear. dsh-icon-theme discovers the live slot ledger, preserves trustworthy original icons, fills recognizable gaps with a small Fluent-style pack, and lets the user override every supported target.

  • Discovers live winning settings.section and sidebar.footer.action contributions generically. Audited per-plugin records are used only when a sidebar is partially rendered and cannot be correlated by order.
  • Stores choices by stable key, such as settings.section:market, never by translated labels or DOM position.
  • Ships 50 curated Fluent UI 16 Regular glyphs plus the audited monochrome dsh-market glyph.
  • Uses no icon CDN, webfont, Iconify API, GitHub request, or package scanning at runtime.
  • Restores every host SVG and owned DOM marker on unload or hot reload.
  • Reports non-rendered contributions and non-icon cards instead of pretending they were changed.
  • Falls back to the Settings gear when a target has neither a trustworthy match nor an original icon.

Install

dsh plugin --profile web add dsh-icon-theme

Restart dsh web, then open Settings → Icons.

To install from a source checkout instead:

git clone https://github.com/yzke/dsh-icon-theme.git
cd dsh-icon-theme
npm ci
npm run build
dsh plugin --profile web add link:"$PWD"

Supported DSH range: >=0.1.0-rc.6 <0.2.0. Node.js 22 or newer is required for source builds.

Uninstall

dsh plugin --profile web remove dsh-icon-theme

Restart dsh web. The plugin restores every host SVG and removes all owned DOM markers and styles on unload.

Use

The page lists every discovered target, its stable key, its compatibility state, and the source of the current icon. Search by feature name, ID, or icon; filter Settings/sidebar/unrecognized/customized entries; choose a glyph; or restore one/all targets to automatic behavior.

Icon picker

Resolution is deterministic:

  1. User override.
  2. Audited, bundled plugin glyph.
  3. Trustworthy DSH/plugin original.
  4. Exact stable-ID preset.
  5. Unambiguous stable-ID inference.
  6. Existing host fallback, or Settings gear when no original exists.

Localized labels are display and search text only. They never decide a persisted mapping.

Sidebar behavior

State Behavior
Rendered icon action Changeable; the original is preserved by default.
Registered but not rendered Listed as “can preset”; the override applies when it appears.
Non-icon card Reported but deliberately left unchanged.
Unknown or changed DOM Left untouched unless a unique audited compatibility record exists.

The compatibility layer is intentionally narrow and reversible because DSH 0.1.x does not yet expose a public icon resolver. See the design note for the contract and upstream direction.

When dsh-better-sidebar is installed, its own Settings row icon is treated as a trusted original and preserved by default. It is replaced only when the user chooses replace-generic (or a manual override).

Ecosystem checks

Compatibility fixtures are pinned to real open-source registration excerpts, including dsh-full-remote, dsh-context, dsh-openpencil, dsh-approve-for-me, and dsh-composer-polish. They prove that an unknown Settings section is discovered generically, while contributions to unrelated surfaces are not misidentified. Details and pinned commits are in ecosystem compatibility. The sidebar fallback fingerprints are also pinned to upstream revisions and may need periodic updates if those plugins change their DOM.

Development and release gate

npm ci
npm run qa
npm run test:web
npm pack --dry-run

For the optional live-host smoke test:

DSH_E2E_URL=http://127.0.0.1:3080 npm run test:web -- -t @real-dsh

The full testing contract is documented in TESTING.md. Icon sources and licenses are recorded in THIRD_PARTY_NOTICES.md.

Privacy and security

Detection reads only DSH slot metadata and the two rendered UI surfaces. The plugin does not inspect user files or other plugins' bundles. Settings use a fixed-namespace, same-origin Host endpoint that accepts only overrides and originalPolicy; it cannot read or mutate another plugin's namespace.

MIT licensed.

上一个 Prev dsh-profile-lab 下一个 Next dsh-git-rescue