Releases: GLFzr/dsh-file-upload
Releases · GLFzr/dsh-file-upload
Release list
v2.1.0 — 修复深度实测发现的 8 个问题
v2.1.0 修复内容(均经实测复现验证)
- P1 快路径误复用:同名同大小但内容已改的文件不再被秒回旧路径(File.lastModified + .dsh-manifest.json 登记校验);重复拖同一文件仍秒回
- P2 清理误标:新增 manifest 清单,冗余副本只认清单登记,notes_2024.txt 这类自然命名不再被误标/误删
- P3 失败泄漏:上传失败立即 abort,不再滞留宿主内存 10 分钟
- P4 静默丢弃:移除 16 文件上限截断(一次拖 20 个文件实测 20 个 chip 全插入)
- P5 插入乱序:同一次拖拽的多个文件按拖拽顺序整体插入(批次聚合,实测 [大文件, a, b] 按原顺序插入)
- P6 busy/scope 卡死:composer 忙或会话 scope 未就绪时插入失败自动重试
- P7 sanitize 兜底:纯非法字符名落盘为 file
- P8 跨源防护:HTTP 路由拒绝跨源请求(403 前排空请求体,keep-alive 连接不被污染)
测试
- 官方套件 21 → 27 例全绿(新增 P1/P2/P3/P7/P8 回归 + 旧文件迁移 + 清单生命周期)
- 独立真实 HTTP 层验证 17/17
- 新版本完整栈在线实例验证 17/17(隔离端口 3099 实测)
- 浏览器 E2E:P4/P5 修复生效验证通过
v2.0.0
v2.0.0 — DSH 文件上传插件(正式更名)
定位变更:从"拖拽文件转路径"正式更名为 任意文件上传 —— 把 DSH Web GUI 原版只支持图片的附件通道,扩展为任意文件上传(PDF、3MF、ZIP、Excel、代码、图片……)。路径只是内部机制,用户界面不再出现任何路径概念。
本版本内容
- 📦 任意文件拖入(多文件/图片均可),原版"仅图片"附件通道被静默接管
- 📍 本机文件零上传直引(Chromium entry API);Firefox 等走上传中转
- 🔵 文件以整体蓝色 chip 插入输入框(只显示文件名),提交给 agent 的是完整真实路径
- ♻️ 两级去重(begin 秒回 + end 内容哈希),同名同大小不同内容绝不误复用
- 🛡️ 完整性校验(分块长度/齐全性/解码字节数),绝不落盘损坏文件
- ⏳ 插入点待机圆环(150ms 延迟、镜像层定位、chip 插入瞬间同步消失)
- 🗑️ 侧边栏垃圾桶图标(设置图标上方):上传目录清理(冗余副本/按大小/清空)
- 🔧 bundle patch 自引用 dsh-file-upload(修复旧名引用导致 dsh 启动崩溃的问题)
升级注意
- 插件 id / 路由 / source 全部更名为 file-upload(/api/file-upload/*)
- 旧包名 dsh-drop-file-to-path 不再使用;GitHub 仓库已改名(旧地址 301 重定向)
- profile 依赖更新为 "dsh-file-upload": "github:GLFzr/dsh-file-upload" 后重新 install 即可
测试
21 例宿主行为测试 + GitHub Actions CI。
v1.4.8
v1.4.8 — 拖拽文件转路径插件(完整版)
为 DSH Web GUI 提供 Codex 式拖拽交互:拖入任意文件 → 路径以蓝色整体 chip 插入输入框光标处(Hermes 风格)。本版本整合了此前全部迭代,一次发布。
功能
- 🖱️ 页面任意位置拖入任意文件(多文件、图片均可),拖拽时全屏提示
- 📍 本机文件直接引用原路径(Chromium entry API):零上传、零复制;Firefox 等拿不到路径时才回退到 dropbox 上传
- 🔵 路径以一个整体 chip 插入:蓝色文字(只显示文件名+格式)、不可局部删改、篮筐宽度随文件名自适应(composer 真实字体实测 + NBSP 扩宽)
- 🙈
.b64后缀与_1/_2重名序号显示隐藏:提交给 agent 的仍是带后缀的真实路径 - ♻️ 两级去重(先查后传):begin 同名同大小秒回旧路径(零上传);end 内容 sha256 逐字节比对,同名同大小不同内容绝不误复用
- 🛡️ 完整性校验:分块精确长度、齐全性、解码字节数 === 声明大小——截断/缺块/伪造一律拒绝
- ⏳ 插入点待机圆环:只有真正需要等待的上传才显示(150ms 延迟,瞬间完成不出圈);DeepSeek 蓝渐隐拖尾转圈环,定位在光标右侧一个字符处(镜像层测量);chip 插入的同一瞬间同步消失
- 🗑️ 侧边栏垃圾桶图标(设置图标上方,悬停提示):打开 Dropbox 清理浮层——文件清单、清理冗余
_N副本、按大小清理、清空全部,操作前确认 - 🚀 ~4MB 分块、512MB 上限、16MB/次请求体上限
关键修复(本版本整合)
- >4MB 文件损坏(分块非 3 的倍数导致 base64 中间
==截断)→ 分块 4194303(4MiB−1) - 草稿投影损坏(无 pad 补丁的 DSH 上 NaN 截断)→ 自动回退
[offset, offset+1) - 去重失效/误复用 → begin 快路径 + end 内容哈希两级
- chip 样式丢失(动态规则时序 bug)→ 恢复全局规则
用法
- 安装:
dsh plugin --profile web add <本仓库路径>(或源码版pnpm dsh plugin --profile web add ./plugins/drop-file-to-path),重启 DSH - 拖文件进页面 → 需要等待时插入点出现蓝环 → chip 出现在光标处
- 侧边栏垃圾桶图标 → 清理 dropbox(冗余副本/按大小/清空)
- 浏览器限制说明、
.b64解码约定、开发/测试方式详见 README
测试
21 例宿主行为测试(node --test)+ GitHub Actions CI(语法检查 + 测试)。
v1.1.0
v1.1.0 更新内容(相对 v1.0.0)
- 路径以整体 chip 插入输入框:蓝色文件名文字、不可被局部删改(Backspace/Delete 一次整删),光标处插入
- chip 宽度随文件名自适应:插入时按 composer 真实字体实测文件名宽度,以 NBSP 扩展占位符贴合(误差 <1 个字符),不再有固定宽度空槽
- 输入框只显示文件名+格式:落盘痕迹(.b64 后缀、重名 _1/_2 序号、目录路径)全部隐藏;提交给 agent 的仍是完整真实路径
- 同名同大小自动复用:重复拖入同一文件时宿主端直接返回已有 dropbox 路径,不再重复落盘、序号不再增长
- 本机文件直接引用:若浏览器暴露源路径(webkitGetAsEntry)则直接引用原文件,跳过上传
- 新增 \ ools/patch-chip-font.mjs\:chip 基础字体(1em)生成工具
注意:chip 的扩展占位机制需要配套核心 composer(dsh-client-ui-conversation)的 pad 支持,详见 README「工作原理」。