dsh-motion:为 DeepSeek Harness 增加克制的界面动效

前言

DSH 的插件生态允许在浏览器端扩展 Harness 的界面行为。菜单、列表框、对话框、标签面板和状态切换已经可用,但过渡动画如果由每个主题或应用各自实现,容易和宿主动画、主题变量、无障碍设置发生冲突。

dsh-motion 面向这个问题:它为具有稳定语义标记的组件增加短促、克制的进入、退场与状态切换动效,同时优先保留 Harness 或主题自带行为。

这是什么

@dsh-external/dsh-motionbilbillm 维护,采用 MIT 许可证。它是面向 DeepSeek Harness 的轻量、零配置浏览器插件,覆盖菜单、列表框、对话框、标签面板、对话页面内容层、Tab、Switch 和工作区分组展开状态等界面。

核心能力

插件行为以保守为原则,下面列出已核实的边界:

  • 优先保留 Harness 或主题自带动画;无法可靠判断的界面会被跳过。
  • 瞬态界面只动画 opacity、独立的 translate/scale 和颜色属性。
  • 菜单、列表框、对话框和遮罩使用成对退场效果。
  • 退场副本会被设置为 aria-hiddeninert、不可点击,并在动画结束后移除。
  • 模型和推理等级卡片换页采用带方向提示的 through-fade。
  • 命令列表筛选不会因选项更新反复触发动效。
  • 对话框挂载时由外层面板统一负责入场,内部 slot 不重复动画。
  • backdrop-filter 的玻璃面板只在短动画期间暂停背景采样,结束后恢复主题原声明。
  • 实时监听 prefers-reduced-motion;启用减少动态效果后,关闭位移和淡入。
  • 不增加设置页面、强度滑杆、轮询或常驻动画帧循环。

安装与启用

package.json 声明 node >=20packageManager pnpm@11.7.0。构建源码后,通过 Harness 的标准插件流程安装到隔离 profile:

pnpm install
pnpm run build
dsh plugin --profile web add C:\path\to\dsh-motion

安装后重启或重新加载对应 profile。

典型用法

应用或主题可以显式关闭某个子树的动效:

<section data-dsh-motion="off">...</section>

构建与检查:

pnpm install
pnpm run check
pnpm run pack:check

pnpm run check 会执行类型检查、构建 Node/Browser 两个 half,并运行单元测试、JSDOM 测试和 bundle 冒烟测试。

可选浏览器 E2E 矩阵需要一个正在运行的隔离 Web profile:

$env:DSH_MOTION_E2E_URL = 'http://127.0.0.1:3080/'
pnpm run test:e2e

适用场景与注意

适合在 Harness web profile 中为已有语义界面补充动效,尤其是希望同时满足以下条件时使用:

  • 使用默认 light/darkangelina-light/angelina-dark 主题语义标记。
  • 不依赖 CSS Module 哈希类名。
  • 保留宿主对布局和系统级动画的管理。
  • 遵循 prefers-reduced-motion 的减少动态效果设置。

当前版本针对本地 Harness 0.1.0-rc.5 源码和已发布的 0.1.0-rc.6 客户端运行时依赖进行测试。

以下区域不属于插件控制范围:AppFrame 与侧栏几何、Trajectory 交互、Tooltip、Toast、Composer 排版、流式对话行、大型页面退场副本以及 Angelina 视差图层。Composer 内的语义菜单/列表框和工作区树分组展开是明确例外。

安全上,dsh-motion 会作为 Harness 插件加载,并继承当前 dsh 进程权限运行。安装前应检查源码、依赖与 MIT 许可证范围,再决定是否启用。

链接

目录页:已核实资料中未提供 URL。

GitHub:https://github.com/bilbillm/dsh-motion

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜