插件目录 / UI & Skins / dsh-ui-easyfold
dsh-ui-easyfold
已验证 · 实测可装 MrTrujay
功能简介
Easy-fold plugin for the dsh Web GUI: sticky Think fold row and fold scroll compensation for long expanded content
可用 — 实测通过,早期项目
Easy-fold plugin for the dsh Web GUI: sticky Think fold row and fold scroll compensation for long expanded content 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
@trujaycc/dsh-ui-easyfold
English | 中文
Easy-fold plugin for the dsh Web GUI: two browser-side behaviors that keep long expanded content easy to read and fold.
Problem
Some disclosure components have a reading ergonomics problem: when the folded content is very long, expanding it and scrolling down to read carries the fold button out of the screen; to collapse the content again, the user must first scroll back to the top of the content to reach the button, interrupting their reading position.


What the plugin does
Both behaviors run entirely in the browser:
- Sticky fold row — while the content is expanded, the fold row pins to the top of the conversation scrollport, staying visible and clickable during reading; the pin releases by itself once the whole content has scrolled out, without changing the layout.
- Collapse scroll compensation — folding a pinned component (click, Enter, or Space on the row) pulls the scrollport back to the fold row's position — the spot the pinned row occupied. The viewport stays at the component node instead of landing below it; a fold of a row already inside the viewport stays exactly in place.
Affected UI components
| Component | Status |
|---|---|
| Think (reasoning fold row) | Implemented |
| Other long-content fold components | Planned |
Install
Requires a dsh deployment with the Web surface. Install into the profile you use for pnpm dsh web:
pnpm dsh plugin --profile web add @trujaycc/dsh-ui-easyfold
pnpm dsh plugin add installs the package into the profile and registers its bundle patch layer automatically (the profile manifest's dsh.profile.bundles gains the entry). Restart pnpm dsh web to compose the new row, then open the Web page.
To uninstall:
pnpm dsh plugin --profile web remove @trujaycc/dsh-ui-easyfold
Develop
pnpm install
pnpm run typecheck
pnpm test
pnpm run build # emits lib/index.js and lib/client.js (ModuleLoader handoff)
The client bundle resolves react from the dsh Web loader's platform module table; the package declares no other runtime dependencies. To test a local checkout before publishing, install it by path or tarball:
pnpm pack
pnpm dsh plugin --profile web add ./trujaycc-dsh-ui-easyfold-0.1.0.tgz
Model Experience
None. Presentation-only client plugin: no host services, tools, or session events; nothing reaches a model request or the session log.
KV Cache effect
None.
Known Limitations and Deferred Work
- Product DOM contract coupling — both behaviors hook the dsh Web chat DOM by its stable attributes (
data-conversation-scroll,data-variant="think",data-open,data-disclosure-row). A product markup change silently disables them. - First scrollport only — the compensation targets the first
data-conversation-scrollin the document; side-by-side session windows (subagent views) keep a single behavior owner. - Bounded commit patience — the compensation waits up to eight animation frames for the product's React commit; a deferred commit beyond that window skips the correction (no scroll damage, just no pull-back).
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-ui-easyfold」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:MrTrujay/dsh-ui-easyfold Headless(CLI)profile:
dsh plugin --profile headless add github:MrTrujay/dsh-ui-easyfold 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。