npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-nb-plugin

v1.5.0

Published

DSH UI visibility plugin: show or hide every interface region from a floating panel or the Settings page. A fresh install hides the composer and the floating button; the Settings page brings both back.

Readme

dsh-nb-plugin

npm version npm downloads license GitHub

DSH(DeepSeek Harness)客户端插件:用一个右侧浮动按钮 + 设置页,逐项显示或隐藏界面区域。

⚠️ 安装默认会隐藏输入框和悬浮按钮(刷新后 DSH 看起来像只读模式)。这是设计好的,不是 bug;⌘⇧H / Ctrl+Shift+H 或 设置 →「界面显隐」可一键恢复。详见 整蛊指南。

功能

  • 22 个开关,分三组:
    • 侧边栏:整体、会话列表、面板入口、设置入口;
    • 会话:主面板、标题栏、标题栏按钮、对话内容、消息按钮、输入区、工作区选择、模式选择、附件区、模型选择、权限选择、计划开关;
    • 外壳:右侧面板、右侧内容、底部栏、顶部工具、拖拽手柄、浮层与挂件。
  • 细粒度靠插槽锚点:精细开关定位到 data-slot="…" 包装器(DSH 插槽出口渲染的 display:contents 锚点),所以能只隐藏「附件区」「模型选择」,而不动整个输入框。
  • 点哪藏哪:面板/设置页里的「拾取元素」进入拾取模式。悬停用页面覆盖高亮框跟上真实目标(含开放 Shadow DOM);点击后先确认要藏的层级,可往上扩到按钮或整块,也可「只藏这一个」或「同样的都藏」。已拾取的元素在列表里逐个恢复或一键全部恢复。
  • 悬浮按钮自带开关:面板里的「悬浮按钮」一行可以把这个入口本身隐藏;隐藏后按钮不再渲染,但显隐状态照常生效。
  • 设置菜单项:设置 →「界面显隐」,和浮动面板共用同一份状态,按钮被隐藏时也能从那里改回来。
  • 快捷键:⌘⇧H / Ctrl+Shift+H 一键切换全部区域(「全部显示」同时恢复悬浮按钮)。
  • 安装默认:全新安装时输入区和悬浮按钮都隐藏,界面干净;从设置页或快捷键把两者找回来。

安装

npm install dsh-nb-plugin
dsh plugin --profile desktop add dsh-nb-plugin

本地开发时也可以直接链接目录:

dsh plugin --profile desktop add "file:$PWD"

整蛊指南:让你的好朋友也装上这个 NB 插件

一句话:一条命令,他的输入框就没了。 先说清楚:这不是破坏,所有隐藏都可逆,恢复方法就在下面的「救他」里。

剧本

  1. 把 npm i dsh-nb-plugin 丢给他,配文「NB 插件,装上界面干净很多」;
  2. 他装完刷新页面 —— 输入框消失了;
  3. 他去找右边那个能救命的浮动按钮 —— 按钮也没了(默认值里两个一起藏);
  4. 他开始在群里问:「DSH 怎么不能打字了?」

因为这不是改了什么配置,而是全新安装的默认状态:输入区 + 悬浮按钮同时隐藏,看起来就像 DSH 突然变成了只读模式。重启、清缓存、换个浏览器都没用 —— 清掉存储后加载的还是同一套默认值。

救他(请务必备好这套话术)

| 动作 | 结果 | | --- | --- | | ⌘⇧H / Ctrl+Shift+H | 全部显示,输入区和悬浮按钮一起回来 | | 设置 →「界面显隐」→ 打开「输入区」「悬浮按钮」 | 只恢复这两个,其他保持原样 |

整蛊等级(想加码就往下翻)

| 等级 | 操作 | 朋友的反应 | | --- | --- | --- | | 轻度 | 只关「输入区」 | 「输入框呢?」 | | 默认 | 直接装 | 「输入框和按钮怎么都没了?」 | | 进阶 | 再点一下「沉浸模式」 | 「DSH 是不是崩了?」 | | 地狱 | 用「拾取元素」把发送按钮也点掉 | 「我连发送按钮都找不到了……」 |

⚠️ 地狱档注意:拾取的元素不受「全部显示」影响,必须在面板的「已拾取元素」里点 × 或「全部恢复」。整完记得告诉他,不然他真的要重装 DSH 了。

良心声明

本插件不联网、不上报、不碰 DSH 的安装文件,只往 localStorage 写一个状态、往页面插一张样式表。卸载插件即彻底恢复;清掉站点数据只会回到出厂默认(输入区仍然是隐藏的,记得按快捷键打开)。

别对不熟的同事、更别对生产环境干这事 —— 友谊比乐子贵。

找回界面

初始状态没有任何浮动入口,三种办法:

  1. 设置 →「界面显隐」:打开「悬浮按钮」,或直接把「输入区」打开;
  2. ⌘⇧H / Ctrl+Shift+H:「全部显示」会把所有区域连同悬浮按钮一起恢复;
  3. 已经装过的老版本升级:v1 的旧状态会迁移,悬浮按钮保持可见(不会被新版默认值吞掉)。

拾取元素

面板或设置页点「拾取元素」进入拾取模式:

  1. 鼠标移到任意界面元素上,页面级高亮框会跟着真实目标走(用 composedPath() 进入开放 Shadow DOM,再用 getBoundingClientRect() 画框,不依赖穿不进 shadow 的页面 CSS);
  2. 点击后进入确认:底栏会标出「当前」要藏的是哪一层。若点到文字或细节,可用「往上扩一层」选中按钮或整块,高亮始终跟着当前目标;
  3. 确认时可选「只藏这一个」或「同样的都藏」(例如每条消息上的同类按钮)。特征不够时,「同样的都藏」不可用;
  4. Esc:若已点选则先退回悬停,再按一次(或点「取消」)退出拾取,不做任何修改;
  5. 列表里的 × 恢复单个,全部恢复 清空所有拾取。插件自己的悬浮按钮和拾取条不会被点选。

隐藏方式:插件给目标打上稳定标记(data-dsh-uiv-pick),用该标记写 display:none。主文档样式表负责亮 DOM;开放 Shadow Root 会另外注入一份同样的隐藏样式。插件同时记下含 shadow 边界的路径,刷新或 React 重渲染后由 MutationObserver 重新打标。不必再要求选择器在全页唯一,所以「某条消息上的一个按钮」这类重复零件也可以只藏一个。

旧版已保存在 dsh.ui-visibility.v2 里的 custom 选择器仍然生效(继续走主文档样式表)。「全部显示」只恢复区域开关和悬浮按钮,不会清空已拾取项(这是原有行为)。

已知限制

  • 封闭 Shadow DOM:事件在边界被重定向,插件不能进入 closed shadow root,也不会在里面注入样式。此时只能隐藏宿主节点本身,不会抛错。
  • iframe:点选监听挂在宿主文档上,跨进 iframe 内的点击不在这次范围内;把 iframe 当作已知限制即可。
  • 路径或 DOM 结构大改后,个别已拾取项可能不再命中,用列表里的 × 清掉重新拾取即可。

状态存储

浏览器 localStorage:

| 键 | 内容 | | --- | --- | | dsh.ui-visibility.v2 | { "hidden": ["composer"], "dock": false, "custom": [{ "selector": "…", "label": "…", "pickId?": "uiv-…", "path?": [], "mode?": "single\|similar", "similar?": {} }] } | | dsh.ui-visibility.v1 | 旧版纯数组格式,首次加载时自动迁移并删除 |

v2 不存在时:有 v1 就迁移(悬浮按钮视为显示),两者都没有就用安装默认值。默认值不会立刻写盘,第一次交互后才持久化。拾取的元素存在 custom 数组里,最多 60 条。只有 selector + label 的旧条目仍然有效;1.5.0 起新拾取还会写入 pickId / path(及可选的 mode / similar)以便重新打标。

版本

  • 1.5.0:拾取增强:开放 Shadow DOM 可点选并隐藏、页面级高亮框、确认前可往上扩层、重复零件可只藏一个或同类都藏;用稳定标记代替「全页唯一选择器」;刷新后尽量重新打标。封闭 shadow 与 iframe 列为已知限制。
  • 1.4.0:新增「拾取元素」模式(点哪藏哪)与工作区/模式选择开关,区域共 22 个;拾取结果随状态持久化。
  • 1.3.0:区域从 10 个粗粒度扩到 20 个,新增会话列表、面板入口、设置入口、标题栏按钮、消息按钮、附件区、模型选择、权限选择、计划开关、右侧内容;面板按侧边栏/会话/外壳分组。
  • 1.2.1:补全 repository / homepage / bugs 元数据,npm 页面可直达 GitHub。
  • 1.2.0:安装默认同时隐藏输入区与悬浮按钮;包名改为 dsh-nb-plugin。
  • 1.1.0:悬浮按钮可隐藏、设置页菜单项、默认隐藏输入区、状态升级到 v2。
  • 1.0.0:初始版本,纯浮动面板。

开发

扁平 JS 客户端模块,无需构建:

  • client.js:window.__ModuleLoader__.load({ id: 'dsh-nb-plugin', ... }) 注册客户端模块、浮动面板、设置页与样式;
  • index.js:空 Host 半边;
  • cordis.patch.yml:把自身 insert 进 DSH 组合。
  • test/pick-helpers.test.mjs:针对路径打标、选择器消毒、同类匹配等纯函数的小测试(从 client.js 中的 <pick-utils> 块抽出运行)。
npm test

模块 id 必须与包名一致,否则客户端模块图找不到对应 factory。

License

MIT