muen-collective/muen-plugins--plugins-dsh-brand-mitsumeru ↗★ 0
@muen/dsh-brand-mitsumeru
Mitsumeru default brand — hardcoded Mitsumeru wordmark + cyan-blue dot filling the DSH brand slots (sidebar.brand.mark / sidebar.brand.name / conversation.hero.brand.mark). The self-branded replacement for @deepseek-ai/dsh-client-ui-brand-official in a mitsumeru profile.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:muen-collective/muen-plugins#0b6fb6cc3f7036ddf1198558f4b8cfbff8c77d08&path:plugins/dsh-brand-mitsumeru说明文档
阅读完整 README ↗muen-plugins
Muen-authored plugins for the DeepSeek Harness (DSH) market. This is the source-of-truth repo for
@muen/* plugin packages. They are published as GitHub Release tarballs (and installed by the
standard market mechanism dsh plugin add), so they are versioned, updatable, and survive upstream
DSH upgrades.
This is a monorepo: one subdirectory per plugin, so we can keep adding plugins (and forks of community plugins) without restructuring.
Naming schema (keep consistent — every plugin follows this)
| Thing | Convention | Example |
|---|---|---|
| GitHub repo | muen-collective/muen-plugins | — |
| Source dir | plugins// | plugins/dsh-brand-swap/ |
Package (package.json name) | @muen/ | @muen/dsh-brand-swap |
| Version | 0.x.y semver | 0.1.0 |
| Installability | dsh.bundle.patch + a cordis.patch.yml (NOT just dsh.client) | required |
Market entry url | .../tree/main/plugins/ (subdir of this monorepo) | …/plugins/dsh-brand-swap |
Market entry name | muen-collective/muen-plugins# | muen-collective/muen-plugins#dsh-brand-swap |
Market category | from the market's valid set (theme, ui, docs, tools, …) | theme |
Market description | accurate one-liner (checked against source) | — |
`` is the plugin name after the @muen/ scope, so the package name, source dir, and
market-entry short name all agree.
Layout
plugins/
/ @muen/ (one subdir per plugin)
package.json name: @muen/, dsh.bundle.patch: ./cordis.patch.yml, files
cordis.patch.yml inserts the plugin row (id + name)
lib/ the built host + client bundles (raw JS, no build step)
README.md accurate description of what the plugin does
Adding a new plugin
plugins//withpackage.json(declaredsh.bundle.patch+dsh.clientif it has UI),cordis.patch.yml(rowid/name=@muen/),lib/,README.md.- Bump
version. Addscripts to the rootpackage.json(pack:). - To publish: tag a
v*Release (therelease.ymlpacks every plugin and attaches the.tgz), then open a PR toawesome-dsh-plugin/awesome-dsh-pluginaddingdata/plugins/muen-collective__muen-plugins--plugins-.yml.
Forking a community plugin (to improve the UI)
Put it in its own subdir plugins//, name it @muen/, and:
- Credit the original author — keep their LICENSE/copyright in your package (MIT etc.), and note
the fork provenance in the plugin's
README.md(aFORK.mdlike the product repo'splugins/dsh-file-explorer/FORK.md). The market's fork rule: real code that does something, and dependencies must point at the original author's repo/package — don't re-upload upstream copies under your account and depend on those. - Keep the plugin generic/configurable (no Muen secrets or a specific client baked in).
Publish (register with the DSH market)
The market (dshmarket) shows the curated catalog at awesome-dsh-plugin.com/plugins.json, which is
generated from github.com/awesome-dsh-plugin/awesome-dsh-plugin's data/plugins/*.yml. To
register a plugin:
- Push this repo to GitHub and make it public; add the
dsh-plugintopic. The repo must be ≥1 day old and ≥10 commits (CI checks this). - Optionally tag a Release (
v*):release.ymlrunsnode scripts/pack-all.mjsand attaches each.tgzto the GitHub Release (the market prefers a published npm package or a Release tarball over build-from-source). - Open a PR to
awesome-dsh-plugin/awesome-dsh-pluginadding ONE filedata/plugins/muen-collective__muen-plugins--plugins-.yml. Example:url: https://github.com/muen-collective/muen-plugins/tree/main/plugins/dsh-brand-swap name: muen-collective/muen-plugins#dsh-brand-swap category: theme description: en: White-label brand swap for DeepSeek Harness. Replaces the DeepSeek mark in the sidebar and conversation-hero brand slots with a per-profile wordmark, colors and font (each Brand OS configures its own identity on the plugin row). Ships neutral defaults. - Verify from a fresh profile:
dsh plugin --profile demo add.
Update an entry the same way — edit only your data/plugins/*.yml and regenerate
(node scripts/generate-readme.mjs).
Value separation
Published plugins are neutral/generic — no client (or Muen) brand is baked into the package.
Per-profile config: on a plugin's cordis.patch.yml row supplies the specific values (e.g. a
client's wordmark via the brand-swap row's wordmark/fontFamily/dotColor). The market card
can show a branded screenshot as an illustration; the shipped package stays neutral.
History note
This repo previously held the old @muen/mitsu-* surface plugins (assets, docs, write, krea,
runninghub, modes, rail, settings, sidebar-tree, task-switcher, starter-pack, updater,
open-in-sidebar, browser). Those were failed experiments and are permanently deleted. The brand
plugin was generalized on 2026-09-04 to the white-label @muen/dsh-brand-swap (row
brand-swap, service brand) — one generic plugin every Brand OS (mitsu, yammaman, vent)
configures with its own identity; the Mitsumeru app's internal copy keeps the legacy
@muen/mitsu-brand identity (row mitsu-brand, service mitsu.brand) until the next app release.
Everything else is sourced from the community DSH market. Do not recreate, publish, or reference
deleted @muen/mitsu-* names as live plugins.
Optional: npm
If you later prefer the @muen npm scope, npm publish each package (needs @muen scope ownership
- auth) and point the catalog
urlat the npm package instead.