返回目录
界面增强 插件

dsh-force-motion

maxesisnclaw/dsh-force-motion

Keep DeepSeek Harness UI animations running despite prefers-reduced-motion / 强制开启 dsh 界面动效

Stars
0
Forks
0
Issues
0
更新
今天

PROJECT TOPICS

项目标签

INSTALL REFERENCE

安装参考

未验证
dsh plugin --profile web add github:maxesisnclaw/dsh-force-motion

该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。

PROJECT README

README

dsh-force-motion

English | 中文

Keep DeepSeek Harness (dsh) UI animations running even when the browser reports prefers-reduced-motion: reduce.

The problem

dsh honours the reduced-motion preference in two places, so on a machine whose OS/browser reports it, every effect is frozen:

  1. CSS — each animated element carries a guard:

    @media (prefers-reduced-motion: reduce) {
      .turnStatus { background-position: 0 0; background-size: 100% 100%; animation: none }
    }

    Seven rules like this cover the "深度求索中…" status shimmer, command-row sweep, turn mark, reasoning-row sweep and retry shimmer. The status line ends up as a static gradient — it looks like a glow that never moves.

  2. JS — some renderers call matchMedia("(prefers-reduced-motion: reduce)").matches and take a static branch.

What this plugin does

Nothing under node_modules is touched. A small script injected into the served index page:

  • wraps matchMedia so the reduced-motion query never reports a match, and
  • deletes prefers-reduced-motion rules from every same-origin stylesheet (re-running when new <style>/<link> nodes appear), so the base animation declarations win again.

Result: all animations play, with no dependency on dsh's hashed class names or keyframe names, so it keeps working across upgrades.

Install

dsh plugin --profile web add github:maxesisnclaw/dsh-force-motion

Manual install: copy this directory into <dsh-install>/plugins/ and add to $DSH_HOME/cordis.patch.yml:

- insert:
    - id: force-motion
      name: /absolute/path/to/dsh-force-motion/index.js

Then restart dsh.

Opt out / trade-off

This deliberately overrides an accessibility preference. It is meant for a workstation whose owner wants the animations (e.g. the OS reduced-motion flag is set for unrelated reasons). Uninstall the plugin, or set window.__dshForceMotion = false before the app boots, to restore the standard behaviour.

Verify

  • The status line while the model is thinking should shimmer instead of sitting still.
  • Console: matchMedia('(prefers-reduced-motion: reduce)').matches returns false, and the plugin logs dsh-force-motion: reduced-motion suppression neutralised.
  • Unit test: npm test.

License

MIT

CLASSIFICATION EVIDENCE

分类依据

项目类型插件
功能分类界面增强
规则置信度

系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: web-ui。