Bundle
dsh-icon-theme
Auto-detected, user-customizable icons for DeepSeek Harness settings and sidebar surfaces.
- Source
- yzke
- stars
- 2 stars
- License
- MIT
- Updated
- Updated 4 days ago
Readme
# dsh-icon-theme English | [简体中文](README.zh.md) Automatic, coherent, and user-customizable icons for DeepSeek Harness Settings and sidebar actions.  _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, 70 official DSH UI glyphs, and the audited monochrome dsh-market glyph (121 total). - 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 ```bash dsh plugin --profile web add dsh-icon-theme ``` Restart `dsh web`, then open **Settings → Icons**. To install from a source checkout instead: ```bash 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 peer range: `>=0.1.0-rc.6 <0.2.0-0 || >=0.1.1-rc.0 <0.2.0-0 || >=0.1.2-alpha.1 <0.2.0-0`. This includes the source-only `dsh-v0.1.2-alpha.1` GitHub preview. Node.js 22 or newer is required for source builds. ## Uninstall ```bash 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.  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](docs/design.md) 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](docs/ecosystem-compatibility.md). 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 ```bash npm ci npm run qa npm run test:web npm pack --dry-run ``` For the optional live-host smoke test: ```bash 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](TESTING.md). Icon sources and licenses are recorded in [THIRD_PARTY_NOTICES.md](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.
Install
dsh plugin --profile web add github:yzke/dsh-icon-theme
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-icon-theme from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.