dsh-themes
v0.2.1
Published
DSH 外观与主题插件:内置调色板、Open VSX 搜索导入、颜色参数编辑器、明暗独立归属
Maintainers
Readme
dsh-themes
English | 中文
DSH(DeepSeek Harness)运行时的外观与主题插件:内置调色板、明 / 暗 / 跟随系统外观模式、Open VSX 搜索安装、VS Code 主题导入,主题库持久化。
安装
dsh plugin --profile web add dsh-themes重启 dsh web 后在 设置 → 主题 中使用。本地开发也可以用 bash scripts/install.sh 一键构建并安装。
兼容性
- 需要 DSH
^0.1.5-rc.1 || ^0.2.0-rc.1(通过peerDependencies声明,DSH 的插件兼容性门禁据此判定) - 已在 0.2.0-rc.2(当前最新)、0.1.7-rc.2、0.1.5-rc.2 上验证
- 对 DSH 0.2.0 界面实际消费的 86 个语义 token 全覆盖(含
--dsw-alias-state-idle-primary),不再露出 DSH 原生色 - 客户端 Toast 使用 DSH 平台 seed word 模块
@deepseek-ai/dsh-client-ui-primitives(无需额外安装) - Host 半区用
connection.fetch.register注册精确 Fetch 路由/api/dsh-themes,由 DSH 自有的/api前置路由转发并附带 trusted-host 检查与浏览器会话鉴权 - 不需要 再在 profile 的
cordis.patch.yml里给connection行补inject: [webRuntime, webServer](0.1.5 时代的临时绕行补丁,0.1.9 起可删除) - 构建期守卫
scripts/check-dsh-compat.mjs(已接入pnpm check)校验核心 token 集合、UI 语义 token 覆盖率与peerDependencies区间,防止再次漂移
开发
源码:https://github.com/MangMax/dsh-themes
bash scripts/install.sh # 构建 + 组装 + 安装功能
- 主题卡片模型:每个主题含明色/暗色两个变体槽,槽内聚合全部明色/暗色变体可选;导入的扩展聚合为一个主题卡片
- 默认主题卡片:DSH 原生外观也是可选主题;删除使用中的导入主题或点击「恢复默认主题」均回退到它
- 变体选择器:多色融合球列表(参照 t3code ThemePreviewCircle),选中放大(固定槽位不跳动)、溢出左右箭头导航、悬停显示变体名
- 外观模式:跟随系统 / 浅色 / 深色,明暗变体随模式自动切换
- 搜索安装(Open VSX):单请求搜索(60 秒 TTL 缓存、10 秒超时),展示图标/作者/许可证/评分/更新时间;作者等详情一次批量补齐;输入去抖 + 内联 spinner + 结果渐入的搜索动画;「导入」一步完成下载、按需解压、解析(JSONC + include 合并)与聚合导入,版本化缓存重复导入秒开
- VS Code 导入:本地扩展扫描、URL 获取、粘贴 JSON,四条路径统一支持 JSONC(注释 / 尾随逗号 / BOM);清单
uiTheme覆盖文件type,浅色变体不再被误判;OKLCH 感知引擎派生表面,workbench 指定值对比度门控,操作色独立于 accent - 提示用 Toast:成功 / 失败反馈走 DSH 原生
Toast(顶部居中、自带动画、位于所有面板之上),不再内联在页面底部 - 状态动画色:运行状态点阵(
--dsh-state-ongoing→--dsw-static-deepseek-450)跟随主题 - 完整 token 覆盖:DSH 设计平台 95 个颜色 token(表面层级 bg-layer-1~3 / 浮层 / 遮罩、文字层级 primary~caption、交互反馈、按钮、Markdown、状态补充、滚动条、Toast/Tooltip、侧栏与菜单等专用 token)全部随主题覆盖;「修改」编辑器按语义分组可调
- 设置页导航图标:设置面板「主题」菜单图标替换为调色板图标(取自 reicon 图标集,https://github.com/dqev/reicon)
- 中英文界面:设置页文案与提示跟随 DSH 语言设置(设置 → 通用 → Language),切换即时生效;主题库持久化数据保持语言中立,展示时自动本地化
- 持久化:主题库保存到
~/.dsh/dsh-themes.json,重启后恢复 - 跨平台(Windows / macOS / Linux):网络与本地文件全部在宿主进程内完成(全局
fetch+ node 内置模块 +fflate内存解压),不依赖 shell 的 curl/mkdir/unzip 等 Unix 命令,Windows(pwsh)下同样可用
