model-selector-plus
An enhanced model selector for the DeepSeek Harness (DSH) Web UI: pinned, drag-reorderable models and brand icons.
Features
- Replaces the composer model seat (slot
conversation.input.model). - Pin favourite models to the top and reorder them with drag and drop; pins persist in
localStorageand sync across tabs. - Brand icons (Anthropic, OpenAI, Gemini, DeepSeek, Qwen, Mistral, Grok, Meta, …) matched by model id/name first, then by provider; serving platforms (OpenRouter, Bedrock, Azure, Together, …) only when the model name says nothing.
- Friendlier effort labels: the
xhighlevel is shown as Extra (the stored key staysxhigh). - Shortcut to open Settings → Models.
- English and Chinese strings.
Layout
| File | Role |
|---|---|
client.src.js |
Source of the client module — edit this. |
icons/*.svg |
Brand icons, inlined at build time. |
build.mjs |
Generates client.js from client.src.js + icons/. |
client.js |
Generated, committed bundle loaded by DSH. |
index.js |
Empty Host half. |
cordis.patch.yml |
Bundle patch inserting the plugin row. |
Installation
Requirements: a working DeepSeek Harness (dsh) install with the web profile (or any profile that includes the Web UI).
Option A — install from git (recommended)
dsh plugin --profile web add git+https://git.rizzy.dev/DSH-Plugins/model-selector-plus.git
You can also paste git+https://git.rizzy.dev/DSH-Plugins/model-selector-plus.git into Settings → Plugins → Install in the Web UI, or ask the agent to install it with its plugin_manager tool (install_bundle).
The plugin manager adds @local/model-selector-plus to dependencies and to dsh.profile.bundles in ~/.dsh/profiles/web/package.json.
Option B — local checkout (for development)
git clone https://git.rizzy.dev/DSH-Plugins/model-selector-plus.git ~/dsh-plugins/model-selector-plus
dsh plugin --profile web add link:$HOME/dsh-plugins/model-selector-plus
With a link: install, edits in the checkout are picked up directly (client changes reload on page refresh, Host changes after a DSH restart or HMR reload).
Enable / verify
- Make sure
@local/model-selector-plusis listed indsh.profile.bundlesof~/.dsh/profiles/web/package.json(the installer does this; add it by hand if you editedpackage.jsonmanually). - Restart DSH (
dsh web) or reload the page. - Check Settings → Plugins: the
@local/model-selector-plusbundle should be enabled.
Uninstall
dsh plugin --profile web remove @local/model-selector-plus
Updating
Re-run the add command from Option A (or git pull in your Option B checkout).
Development
# edit client.src.js or add icons/<brand>.svg, then:
node build.mjs
Reload the Web UI page to pick up the new client.js. To add a brand, drop an SVG into icons/ and add a [icon, regexp] rule to BRAND_RULES in client.src.js.