dsh-brand-custom
Verified@joyapple/dsh-brand-custom · v1.0.2 · MIT · Web UI
DSH 品牌定制插件:可配置的英雄区标语(hero.headline / hero.preview)与品牌 logo 替换。Brand customization plugin: configurable hero slogan and logo.
Install
dsh plugin add @joyapple/dsh-brand-custom Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Creators
Readme
dsh-brand-custom
DSH 品牌定制插件:可配置的英雄区标语(大标题 / 副标题)与品牌 logo(上传或替换)。 Brand customization plugin: configurable hero slogan and logo.
功能
- Logo 替换:把 DSH 界面里的 FishLogo(鱼图标)和 BrandWordmark(品牌字标)
全部替换为你的 logo(优先设置页上传的图片,未上传时用插件自带
assets/logo.png)。 - Logo 在线设置:在 DSH 设置页「品牌定制」区块直接上传 PNG / JPEG / WebP 图片(≤ 2MB),保存即生效,无需改文件;也可一键「恢复默认」。
- 英雄区大标题:替换「您的AI工作伙伴」/「Into the Unknown」。
- 英雄区副标题:替换「叮当莱斯 AI」/「DDLS AI」。
- favicon:浏览器标签页图标跟随当前 logo(
/brand/logo.png)。
工作原理
双面插件(host + client):
- host 半区(
lib/index.js)注册三条 HTTP 路由:GET /brand/config→ 返回当前品牌文案配置 JSON(headline / preview, 不含 logo —— logo 走下面的独立路由,避免每次页面加载都传几 MB base64)GET /brand/logo.png→ 返回当前 logo(设置里上传的优先,否则assets/logo.png)POST /brand/api→ 设置 RPC(settings.get / settings.update,请求体上限 4MB)
- client 半区(
client/client.js)在浏览器里做 CSS 覆盖: 找到viewBox="0 0 23.16 17.04"(FishLogo)和viewBox="0 0 182 24"(BrandWordmark)的 svg 后,不删除 svg 节点(删除 React 管理的节点会让 React 下次重渲染抛 NotFoundError、整个界面白屏),而是隐藏 svg 内部绘制、 把 logo 作为背景图画在 svg 元素自身上;React 重渲染只会重建这些 svg, 观察器会重新覆盖,界面保持稳定。文案替换同理,并加了防死循环与 请求帧合并(rAF)节流,避免每次 DOM 变化都全文档扫描。 - 文案与 logo(base64 data URL)都存进 DSH 用户设置(
dsh-settings), 重启不丢,并可在设置页编辑。
安装
把本目录放进 profile 的 node_modules 并加入 bundle 栈:
# 在 profile 目录里(例如 ~/.dsh/profiles/web)
cd ~/.dsh/profiles/web
npm install --install-links /Users/joyapple/Desktop/ddagent/dsh-brand-custom
注意:请使用
--install-links(安装为真实拷贝而不是符号链接), 否则插件内部依赖(@deepseek-ai/schemastery等)无法解析,DSH 启动会失败。
故障排查:如果重启 DSH 时启动直接崩溃,报
Cannot find package '@deepseek-ai/schemastery' imported from <插件目录>/lib/index.js,说明插件被装成了符号链接(常见于直接npm install <文件夹路径>而未加--install-links,或 npm 把本地路径 解析成链接)。解决:从 profile 的node_modules删除dsh-brand-custom条目,再重新npm install --install-links /Users/joyapple/Desktop/ddagent/dsh-brand-custom。 验证方法:ls -la <profile>/node_modules/ | grep brand,应显示为普通目录 而不是->符号链接。
然后在 profile 的 package.json 里把 dsh-brand-custom 加进
dsh.profile.bundles(或在 cordis.patch.yml 里手动 insert):
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-brand-custom"
]
}
}
}
重启 DSH 后生效。
在设置页配置(推荐)
重启后在 DSH 设置页找到「品牌定制」区块:
- 英雄区大标题 / 副标题:留空 = 保持 DSH 默认文案
- Logo 图片:点击「上传图片」选择 PNG / JPEG / WebP(≤ 2MB), 保存后界面 logo 与浏览器标签页图标都会切换;「恢复默认」回到插件自带 logo
- 点「保存」后稍等片刻生效(页面刷新更稳妥)
配置文案(可选,作为默认值)
在 profile 的 cordis.yml / cordis.patch.yml 里给插件写配置:
- id: dsh-brand-custom
config:
headline: "你的品牌大标题"
preview: "你的品牌副标题"
用户未在设置页覆盖时使用这些默认值。
更换自带 logo(兜底方案)
直接替换 assets/logo.png(保持同名),重新安装(npm install --install-links ...)
并重启 DSH 即可;未在设置页上传图片时使用它。
开发说明
- client 包格式与官方 client 插件一致:
window.__ModuleLoader__.load({ id, factory })。 - 如需重新构建 client,参考 dshmarket 的 tsdown 构建方式;本插件 client 为手写零依赖。