返回目录
文件与数据 插件

dsh-plugin-table-zoom

Pasumao/dsh-plugin-table-zoom

DSH 聊天表格浮窗插件:长/宽 markdown 表格一键弹出可滚动浮窗查看,支持复制为 Markdown。纯前端 DOM 增强,零依赖。

Stars
1
Forks
0
Issues
0
更新
今天

PROJECT TOPICS

项目标签

INSTALL REFERENCE

安装参考

未验证
dsh plugin --profile web add github:Pasumao/dsh-plugin-table-zoom

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

PROJECT README

README

dsh-plugin-table-zoom

npm version License AI Assisted

DeepSeek Harness (dsh) Web GUI 聊天表格浮窗插件。

聊天里模型输出的 markdown 表格经常很长(行数多)或很宽(横向溢出), 在对话流里一次看不完:要上下滚动聊天、左右拖动才能看完。本插件在长表上方 自动注入一个小按钮「⛶ 浮窗查看」,点击后弹出独立可滚动的小浮窗完整显示 表格,并支持一键复制为 Markdown

纯前端 DOM 增强:不改核心包、不注册工具、无服务端逻辑、零运行时依赖。

功能

  • 长表(≥ 9 行含表头,或横向溢出超过 2px)表格下方出现右对齐的「⛶ 浮窗查看」按钮;
  • 短表不打扰;
  • 点击按钮弹出浮窗:标题显示「表格 · N 行 × M 列」,正文可独立滚动(横竖都行), 关闭按钮 / Esc / 点击遮罩均可关闭,打开期间锁定聊天页滚动;
  • 浮窗头部「复制为 Markdown」按钮一键复制整表(单元格内联换行折叠、管道符转义);
  • 浮窗里展示的是原表格的克隆,聊天里的表格保持不变,也不会被重复增强;
  • 拖拽改尺寸:浮窗右下角手柄可自由调整大小(最小 320×200,最大到视口留白), 只影响当次打开;
  • 每次打开自适应:浮窗不记忆任何布局——宽度按表格内容自适应(窄表不撑满、 超级大表直接铺满视口可用宽度,下限 320)、位置居中、缩放 100%;关掉再开即回到自适应;
  • 拖拽移动:按住标题栏可把浮窗拖到任意位置(自动限制在页面内,不会拖出屏幕), 位置只影响当次打开;
  • Ctrl+滚轮缩放:浮窗内按住 Ctrl 滚动滚轮,表格字体 60%–250% 缩放 (步进 10%),标题栏实时显示百分比;缩放不记忆,每次打开回到 100%
  • 拖拽平移:表格超宽/超高时,按住正文任意位置即可左右/上下拖动滚动 (grab 光标提示;越过 4px 阈值才视为拖动,不干扰文本选择;触屏走原生滚动);
  • 滚动条清晰:正文滚动条加深加粗,浅色主题下也能看清;
  • 列宽适配:列宽上限与聊天内一致(min(30vw, 320px)),超宽列自动换行收缩, 表格整体不再撑破浮窗。

配置

无需任何配置,安装即用:

  • 不读取环境变量,不需要 API Key / token,不写配置文件;
  • 长表判定阈值(≥ 9 行 / 横向溢出 2px)为内置默认值,无需调整;
  • 样式跟随 DSH 主题 CSS 变量自适应,不引入独立主题配置。

安装

本插件是纯客户端插件,需作为 bundle 挂载进 dsh 的 Web profile (与 dsh-notify / dsh-plugin-image-tools 同款机制)。

  1. 安装依赖(在 profile 目录,例如 ~/.dsh/profiles/web):

    npm install dsh-plugin-table-zoom
    # 或从 GitHub 直装
    npm install github:Pasumao/dsh-plugin-table-zoom
  2. 在 profile 的 package.jsondsh.profile.bundles 里加入该插件:

    "dsh": {
      "profile": {
        "bundles": [
          /* ...已有的 bundle... */,
          "dsh-plugin-table-zoom"
        ]
      }
    }
  3. 在 profile 目录执行 pnpm install(或 npm install);

  4. 重启 dsh web(launcher 重新拉起),新插件才会进入浏览器 bundle。

源码安装(本地开发 / 调试):

git clone https://github.com/Pasumao/dsh-plugin-table-zoom.git
cd dsh-plugin-table-zoom
npm install
# 以 link: 依赖挂载进 profile,见下方说明

若以本地目录开发调试,可用 link: 依赖替换第 1 步: "dsh-plugin-table-zoom": "link:D:/path/to/dsh-plugin-table-zoom"

工作原理

  • 服务端半边(lib/index.js):空实现。插件以「自带 bundle patch」方式挂载进 profile,客户端半边由 dsh.client 声明经 /plugins/dsh-plugin-table-zoom/client.js 送达浏览器(与 dsh-notify / dsh-plugin-image-tools 同款机制)。
  • 客户端半边(lib/client.js):MutationObserver 观察 document.body, rAF 合帧扫描 markdown 表格(核心渲染器把表格包在类名含 tableScroll 的 容器里),对长表在容器后注入按钮行;按钮点击后命令式创建浮窗(复用 image-tools 的 lightbox 模式:纯 DOM 单节点变更,不插入/移除 React 管理的 结构,重渲染时安全)。

开发

npm run selfcheck    # 纯函数离线测试(识别/长表判定/Markdown 序列化)
npm run smoke        # selfcheck + 假 DOM 端到端冒烟(按钮注入/浮窗开合/复制)
npm run pack         # 打包

兼容性

  • 目标:DeepSeek Harness Web GUI(dsh web),皮肤与主题 CSS 变量自适应;
  • 依赖浏览器 MutationObserver / requestAnimationFrame,无 DOM 环境自动禁用;
  • 不影响其他插件:只认 tableScroll 容器内的表格,跳过浮窗与 image-tools lightbox 内的表格。

AI 生成声明

代码与文档由 AI 辅助生成(DeepSeek Harness),均经人工审查与实机验证 (npm run smoke:selfcheck + 假 DOM 端到端冒烟)。

License

MIT

CLASSIFICATION EVIDENCE

分类依据

项目类型插件
功能分类文件与数据
规则置信度

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