Repository navigation
Releases: 6mt/dsh-control
Release list
v0.2.1
修复
- 远程环境里点开「文件」面板报
session "…" not found(本轮最难的一个):
桌面壳用dsh-app://自定义协议提供页面,而帧内 URL 改写只认http/https/ws/wss,
导致远端界面用绝对路径发出的请求(/sidebar/api/fs.trees等)原样打到本地 dsh,
本地没有远端会话 → 报 not found。现在同 scheme 判断改为与文档自身协议比较,
自定义协议同样补代理前缀。沙箱(http)与桌面(dsh-app)行为一致。 - 帧内存储未隔离:远端界面能读到底座应用(同源)的
dsh.sessions.current等状态,
现在按环境命名空间隔离,clear()也只清自己的命名空间。 - 启动诊断静默丢失:注入脚本的
PATCH变量作用域错误被自身的 catch-all 吞掉,
导致kind:"frame"诊断不再上报。已修,并让测试“只要脚本吞掉内部错误就全红”。
变更
- 面板里的「打开界面」改为跳到应用内「远程环境」页并选中该环境;
「在浏览器打开」保留为次按钮(独立窗口场景)。 - 远程环境切到别的本地会话再回来不再重新加载(iframe 常驻根级浮层)。
性能
- 凭据只验证一次(5 分钟内复用,401 时自动刷新重试),不再每个资源请求都取一次 cookie。
- 哈希静态资源本地缓存(上限 64MB,
immutable):第二次请求 ~1.6ms;整页 10 个资源
冷加载 1.97s → 热加载 0.05s。 - 打开「远程 dsh 环境」面板时后台预热 SSH 通道;
proxyUrl增加耗时埋点
DIAG {"tunnelMs","authMs","totalMs"}。
诊断
- mux 帧遥测:记录每条
open帧的 endpoint/sessionId,以及远端返回的错误帧
(MUX →/MUX ←前缀),出错的 RPC 在宿主日志里自己报名字。
测试
- 全量 90 项 / 13 个文件(
node scripts/run-tests.mjs),含隐私闸门。 - 新增注入脚本行为级 vm 测试(真实执行 + 断言 WebSocket 静态常量/instanceof/事件、
URL 改写、存储隔离、自定义协议、冻结 fetch、补丁状态上报)。 - 注入脚本吞掉内部错误 → 全部用例失败(防止“静默错误”再次上线)。
- 发版前新增安装验证脚本:
node scripts/verify-install.mjs --source github。
安装:dsh plugin --profile <profile> add github:6mt/dsh-control
固定本版:dsh plugin --profile <profile> add github:6mt/dsh-control#v0.2.1
已有安装升级:dsh plugin --profile <profile> update dsh-control,然后 ⌘Q 完全重启
这一版修掉了「远程环境里打开文件面板报 session not found」——根因是桌面自定义协议下帧内绝对路径请求没有经过代理。升级后重启即可。
v0.2.0
新增:场景二「远程环境」
左侧栏新增「🌐 远程环境」,把远端机器上完整的 dsh 界面(工作区/会话/对话/设置)呈现在本地一个页面里,顶部标签切换环境。
- 同源反向代理:页面由本地 web 服务转发并注入远端凭据,浏览器不接触令牌;远端外面的反向代理/鉴权层不影响
- 界面 100% 真实:远端自己渲染,随远端版本自动更新
- 常驻浮层:切到本地会话再回来,远端界面不重载、连接不重建
- 资源保留 gzip:仅文档请求关压缩(需注入),静态资源走压缩
修复(本轮全部实测定位)
- 桌面壳自定义协议导致帧内 WebSocket 1006 → 同 scheme 帧 + 注入绝对
streamBaseUrl - 远端 CSRF 栅栏 403 → 转发时重写
Origin/Referer - iframe 401 → 每次打开前经 SSH 重探测 token
- 收养的隧道死亡后不重建 → 每次使用前实测端口
- 面板空白(
SessionList被误删仍引用)→ 补回 + 静态检查 - 对话只显示
source.kind === "user"(白名单)
测试
- 全量入口:
node scripts/run-tests.mjs— 12 个文件 75 项,逐文件独立进程 + 超时 - 新增回归用例覆盖上述每个 bug,均做变异验证
安装:dsh plugin --profile <profile> add github:6mt/dsh-control
固定本版:dsh plugin --profile <profile> add github:6mt/dsh-control#v0.2.0
升级后需 ⌘Q 完全重启(宿主半代码在进程启动时加载)。
v0.1.1
文档
- README(中英)新增「版本与更新」小节:升级命令与固定版本的写法(均经封闭实验实测)
- 新增 CHANGELOG 与 RELEASING(发布流程、版本号规则)
v0.1.0 的 tag 在发布当日随修复有过移动,最终包含首版全部功能、中英 README、
双语截图、环境行分隔符修复、GitHub 直装主线。详见 CHANGELOG。
安装:dsh plugin --profile <profile> add github:6mt/dsh-control
固定本版:dsh plugin --profile <profile> add github:6mt/dsh-control#v0.1.1
v0.1.0
首个公开版本。
- 一键接入远端环境(SSH 探测/令牌/隧道,零远端改动)
- 环境自动生成同名工作区,新会话自动绑定远端路由
- 远端会话真流式回流本地
- 远端会话自动命名「控制端·本地标题」
- 52+ 项自动化测试 + 启动自愈验证
发布当日随 tag 一并包含:中英 README 分离、双机截图与面板截图接入、
环境行分隔符修复(cn-dsh2已连接 → cn-dsh2 · 已连接,含回归测试)、安装主线改为 GitHub 直装。
安装:dsh plugin --profile <profile> add github:6mt/dsh-control
(本 tag 当日有过移动,最新版本见 releases)