Releases: yh4922/dsh-workspace
Release list
v0.12.0
- 新增:远程会话的 Agent 工具
upload_to_remote,把对话里的图片 / 文件(用户粘贴的,或generate_image、read_image等工具产生的)上传到远程工作区。只在远程会话注册,本地会话的工具清单不变。- 来源:只接受
attachment_id(sha256:…),并且必须是本会话里出现过的附件。附件经 DSH 附件服务读取,写入生效前核对内容哈希等于 id。不接受任何本机路径,这个工具不能被用来把本机文件外传到远端。 - 来源里的生图结果:只认
generate_image/edit_image/get_image_generation_task这三个工具结果里的meta.images,其他工具结果里的同名字段不算,防止被伪造的引用扩大范围。图片在写入时才读取。 - 目标:只接受相对工作区根的路径,拒绝绝对路径、
..、~、反斜杠、以/.结尾的写法、控制字符(含 C1),以及双向控制符、零宽字符等会让显示与实际不一致的字符。- 在远端用 SFTP
realpath按真实路径校验,工作区内的目录链接允许,指向工作区外的一律拒绝。 - 目标本身是符号链接时拒绝,不跟随。
- 临时文件独占创建(O_EXCL)后再改名,改名前与写完后各复核一次;临时文件名里的原文件名按字节截断,不会超过 255 字节上限。
- 覆盖时优先原子改名;只有服务端不支持该扩展时才退化为「删旧 + 改名」,权限不足等真实失败直接报错,不会丢掉原文件(远程编辑器保存也一并修正)。
- 在远端用 SFTP
- 受保护位置:任意层级的
.git/、.ssh/、.gnupg/、.husky/,以及authorized_keys、.envrc;远端家目录下紧接的点文件和点目录(.bashrc、.config/autostart/…),按真实路径判断,工作区根是家目录本身还是它的上级(/home、/)都拦得住。 - 新建文件不带可执行位(请求 0644,实际权限再受远端 umask 约束);覆盖会替换整个文件,原文件的属主和权限不保留。默认不覆盖(需显式
overwrite)。单文件上限 100 MB。 - 同一会话的上传串行执行;排队中的调用可以被中止;前一个上传卡住超过 10 分钟后,不再挡住后面的上传。
- 上传成功后才把覆盖前的原内容存入改动前存档(与 write / edit 共用)。上传后对该文件的「已读」登记同时覆盖模型原来的写法和真实位置。
- 每次调用(包括被拒绝的)都写一条连接日志,不含文件内容;日志里的外部输入经过转义并截断,不能伪造出新的一行。
- 注意:DSH 保存图片附件时会做归一化,传到远端的是 DSH 存档的那一版,不一定和原始文件逐字节相同。
- 来源:只接受
- 新增:远程会话里
present支持远程文件,交付卡片和收尾正文里的文件链接会在侧栏打开远程预览。- 原因:宿主的
present用本机文件系统检查路径,远程路径一律报 file not found,卡片出不来。 - 做法:在远程会话里接管
present,在远端检查文件存在、是普通文件、不是符号链接;工具成功返回后,按宿主格式追加deliverables/presented事件(核对版本 0.2.0-rc.2),卡片界面完全复用宿主的。 - 路径统一记为规范化后的远程绝对路径;相对路径和照抄占位目录的路径都会换算过去。
- 一次调用里全部是本机文件时(如生图后复制到本机的预览图),交回宿主原实现;本机与远程混在一起时报错,提示分两次调用。
- Windows 宿主:盘符 / UNC 路径是本机文件。macOS / Linux 宿主:
/开头又不在远程工作区根下的路径,本机存在且远端不存在时按本机文件处理(例如/Users/me/pic.png)。 - 插件写入的交付事件给每个文件加上
remoteHost标记,▾ 菜单的服务端查询以它为准,与 present 时的判断保持一致。
- Windows 宿主:盘符 / UNC 路径是本机文件。macOS / Linux 宿主:
- 卡片右侧 ▾ 菜单对远程文件改为:菜单里的应用只有「侧栏预览」(默认),「打开」会在侧栏打开远程预览;「显示文件位置」会打开插件的「文件管理」,逐级展开到该文件,高亮并滚动到它所在的行(路径含隐藏目录时自动显示隐藏文件)。之前这两项都会报「无法在文件管理器中显示」。
- 实现:▾ 控件直接调用全局
fetch('api/present.open?…'),宿主没有可替换的回调,所以在浏览器端包装fetch,只处理这一个路径、并且只处理远程工作区会话里的远程文件。 - 其余请求,包括本地会话的,以及远程会话里交付的本机文件,一律原样交给宿主;查询失败也交还宿主。
- 新增网关方法
presentedFile:按「会话 + 事件序号 + 文件下标」读交付事件,判断该文件是不是远程文件、远程路径是什么。 - 文件不在工作区根下,或当前显示的会话属于别的工作区时,「显示文件位置」返回宿主的「没有可用的主机路径」提示,而不是假装成功。
- 接管了 DSH「文件」侧栏时,定位到接管的那个标签,不会出现两个文件树。
- 标签重新挂载(切换会话后回来)时不会重复执行定位。
fetch包装全局只装一层,插件热更新时不会层层叠加。- 菜单里「显示文件位置」及执行后的提示文字来自宿主,实际行为是在插件「文件管理」里定位,文字对不上属于宿主控件的限制。
- 实现:▾ 控件直接调用全局
- 原因:宿主的
安装
先安装并启用侧边栏插件 dsh-better-sidebar,再安装本插件(命令不带版本号,自动装最新版):
dsh plugin --profile <profile> add @yh4922/dsh-workspace也可以直接装本 Release 的安装包:https://github.com/yh4922/dsh-workspace/releases/latest/download/dsh-workspace.tgz
本版本的固定包:yh4922-dsh-workspace-0.12.0.tgz(需要锁定版本时用它)。
升级:先 dsh plugin --profile <profile> remove @yh4922/dsh-workspace,再用上面的命令安装——对同一个包再装一次时,插件管理器判断不出这次装的是哪个包(依赖值没有变化),会回滚并提示「无法从依赖变更中确定安装了哪一个包」。
从旧版本升级(包名变更):0.7.7 及更早的包名是 dsh-workspace,先 dsh plugin --profile <profile> remove dsh-workspace,再安装新包名。
DSH Desktop:在「插件管理」→「添加插件」里填入上面的包名或地址;升级同样是先移除、再添加(插件管理里没有「更新」按钮)。
v0.11.1
- 修复:「添加工作区」弹窗里在连不上与连得上的主机之间来回切换会卡住,连带正常主机与状态轮询一起排队直到超时。
- 原因:连不上的主机每次请求要挂约 107 秒(5 次 × 20 秒握手超时重试),切走后请求也不会撤回;挂着的请求占满浏览器对同一地址的并发连接(HTTP/1.1 每个来源 6 个),后面的请求全部排队。
- 主机连不上(拒绝连接、不可达、域名解析失败、握手超时)不再重试:拒绝连接立即失败,不可达最多等一次握手超时(默认 20 秒);连接中途断开仍按原策略重试。
- 弹窗里同一台主机的家目录请求复用进行中的那一次,成功后记住,来回切换不再重复发请求。
- 页面状态轮询:上一次还没返回就不再发新的,不再在排队时越堆越多。
- 「新建终端」不再因为一台主机正在连接而整个禁用。
安装
先安装并启用侧边栏插件 dsh-better-sidebar,再安装本插件(命令不带版本号,自动装最新版):
dsh plugin --profile <profile> add @yh4922/dsh-workspace也可以直接装本 Release 的安装包:https://github.com/yh4922/dsh-workspace/releases/latest/download/dsh-workspace.tgz
本版本的固定包:yh4922-dsh-workspace-0.11.1.tgz(需要锁定版本时用它)。
升级:先 dsh plugin --profile <profile> remove @yh4922/dsh-workspace,再用上面的命令安装——对同一个包再装一次时,插件管理器判断不出这次装的是哪个包(依赖值没有变化),会回滚并提示「无法从依赖变更中确定安装了哪一个包」。
从旧版本升级(包名变更):0.7.7 及更早的包名是 dsh-workspace,先 dsh plugin --profile <profile> remove dsh-workspace,再安装新包名。
DSH Desktop:在「插件管理」→「添加插件」里填入上面的包名或地址;升级同样是先移除、再添加(插件管理里没有「更新」按钮)。
v0.11.0
- 新增:全局配置里的「更新」卡片。
- 检查更新:先直连 GitHub(
releases/latestAPI,失败时改读发布页跳转地址),再不通回退 npm 官方源(registry.npmjs.org,不用同步滞后的 npmmirror)。 - 下载并更新:安装包下载到
~/.dsh/workspaces/updates/,按发布页的 sha256(npm 来源用 sha512 integrity)校验,再检查包名、版本与插件声明,然后交给 DSH 插件管理器安装。- 安装不先卸载:先卸载会把插件自身的后端停掉,后续安装就没人执行了。
- 安装包文件名每次带时间戳,避免宿主报
ambiguous-install。
- 上传离线包:上传
.tgz后先检查,显示版本、大小、sha256,以及相对当前版本是新、同版还是降级;确认后才安装。 - 安装完成后提示重启:桌面版提供「立即重启 DSH」按钮,其他环境提示手动重启。
- 未打包的开发构建不检查更新;GitHub 访问频率受限时有提示。
- 检查更新:先直连 GitHub(
- 升级完成后提示重启:在全局配置里看着安装完成时弹窗「升级完成」(桌面版可直接「立即重启 DSH」或「稍后重启」,网页版提示手动完全退出再打开);更新卡片顶部常驻醒目的待重启提示条(刷新页面后仍在),直到重启加载新版本
- 修复:在「远程工作区」页面安装新版本后,宿主会重载插件的浏览器端代码、把页面关回会话,「升级完成」提示随之丢失,要手动再进来才看到。现在开始安装时在浏览器里留下标记,重载后自动回到全局配置并弹出重启提示(弹过即清,30 分钟后失效;后台已是新版本时静默清除)
- 新增:「远程文件」「远程 Git」改名为「文件管理」「Git 仓库」,并支持本地工作区。
- 本地会话直接读写本机文件、执行本机 git。
- 根目录由宿主按会话 cwd 推导,浏览器只传会话 id。
- 路径限定在工作区内(含同仓库的其他 git 工作目录);词法检查后再做 realpath 校验,拒绝经符号链接或目录联接逃出工作区。
- 按用户决定,本地写操作不受 DSH 会话沙箱策略限制。
- 新增:文件树右键菜单补齐新建文件、新建文件夹、上传到此处、下载、删除(远程与本地都有);名称输入与删除确认改用侧栏内浮层(桌面版不支持
window.prompt)。 - 新增:接管 DSH 自带的「文件」侧栏(kind
files,含 Ctrl/⌘+P),改开「文件管理」。- 在全局配置里可以开关,默认开启。
- 若已被其他插件(如 better-sidebar)接管则不抢,只在全局配置里提示去关闭它的「文件」标签;关闭后自动接管,无需刷新。
- 升级后只刷新了页面、DSH 后台仍是旧版本时,本地工作区的「文件管理」「Git 仓库」直接提示完全重启 DSH,不再报「主机不存在:local:…」
- 「文件管理」「Git 仓库」的左侧列表与右侧预览各自滚动:会话顶部标签的宿主视图区高度随内容增长,原来列表与预览会被外层会话容器一起滚动;现在面板高度钉成可视高度(扣除上方内容与输入框),宽屏两列各自滚动
- 文件树、改动列表(含查看分支的改动、与当前分支比较)改为虚拟滚动:只渲染可见区附近的行,5000 个文件 / 3000 条改动实测只渲染约 40 行;分区标题(已暂存 / 更改 / 未跟踪)滚动时吸顶
- 重构:远程 Git 的执行方式改为「参数数组 + 执行器」(远程 = 逐个单引号转义后经 SSH,本地 = 直接起 git 进程、不经 shell)。
- 所有 git 命令统一加
-c core.fsmonitor=false,防止恶意仓库借 fsmonitor 执行命令。 - 新增用本机 sh 代替 SSH 的执行器测试。
- 所有 git 命令统一加
安装
先安装并启用侧边栏插件 dsh-better-sidebar,再安装本插件(命令不带版本号,自动装最新版):
dsh plugin --profile <profile> add @yh4922/dsh-workspace也可以直接装本 Release 的安装包:https://github.com/yh4922/dsh-workspace/releases/latest/download/dsh-workspace.tgz
本版本的固定包:yh4922-dsh-workspace-0.11.0.tgz(需要锁定版本时用它)。
升级:先 dsh plugin --profile <profile> remove @yh4922/dsh-workspace,再用上面的命令安装——对同一个包再装一次时,插件管理器判断不出这次装的是哪个包(依赖值没有变化),会回滚并提示「无法从依赖变更中确定安装了哪一个包」。
从旧版本升级(包名变更):0.7.7 及更早的包名是 dsh-workspace,先 dsh plugin --profile <profile> remove dsh-workspace,再安装新包名。
DSH Desktop:在「插件管理」→「添加插件」里填入上面的包名或地址;升级同样是先移除、再添加(插件管理里没有「更新」按钮)。
v0.10.1
- 修复:宿主目录选择能力为 native(macOS 桌面版,只能弹系统对话框)时,「添加工作区」的本机一栏直接显示
directory-picker/unavailable ... serves "native"报错。现在改由插件宿主端自己列本机目录(新增远程方法localList/localMkdir,Node fs 实现,只列子目录),macOS 上也能应用内浏览、新建文件夹;「使用系统对话框…」按钮仍保留(取用顺序与官方 native picker 一致) - 修复:桌面版远程文件侧栏的 HTML / Markdown 预览白屏或报
Browser access is disabled。桌面版本机 Web 服务只放行 DSH 自身页面来源的请求,而预览 iframe 刻意不带allow-same-origin(远程 HTML 不可信),它的请求拿不到放行令牌。桌面版改为 srcdoc 预览:页面里的相对样式表 / 脚本 / 图片 / CSSurl()与@import经新增的远程方法sftpReadData取回后内联(单个资源上限 8 MB),iframe 仍是不透明来源;网页版保持原来的预览路由。已知限制:脚本运行时 fetch / 动态加载的相对资源不可用 - 修复:Monaco 编辑器样式丢失时(macOS 反馈:代码行乱飘、多出一个原生输入框)不会自己恢复——monaco.js 只执行一次,样式标签被移除后就再也不注入。现在构建产物把 CSS 全文存到
window.__dshwsMonacoCss,每次创建编辑器 / 对比视图前核对并补回(也兼容挂在 Shadow DOM 里的情况) - 桌面版预览内联增加兜底:
sftpReadData失败(典型是宿主端仍为旧版本、新方法 404)时,样式表 / 脚本 / SVG 退回用sftpRead按文本读取,页面不再整页丢样式;仍失败的资源在预览上方提示(含「请用 ⌘Q 完全退出」),不再静默 - DSH NEXT(页面为
dsh-app://app)适配:HTTP 请求(上传 / 下载 / 预览路由 / 图片)保持页面同源的相对地址——NEXT 只给主框架的同源请求附渲染进程令牌,直连streamBaseUrl的 http 地址会被拒(Browser access is disabled);WebSocket 仍走streamBaseUrl。下载在自定义协议页面上改为 fetch 取回再存盘(<a download>是导航请求,拿不到令牌),失败时弹出原因 - 编辑器创建后自检隐藏输入框的定位,样式未生效时在控制台输出定位信息(样式标签数量 / 长度、是否 Shadow DOM、UA 等);补样式时改用编辑器所在文档
- 信任围栏:回环主机名视为同一族(
localhost/127.x/[::1]互访放行,含sec-fetch-site: cross-site),外站与局域网规则不变 - 插件宿主端还是旧版本(升级后只刷新了页面)时,「添加工作区」不再显示
transport failure ... HTTP 404,改为提示完全重启 DSH - Windows:原子写的改名步骤遇到杀毒 / 索引占用(EPERM / EACCES / EBUSY)时退避重试约 0.6 秒,失败则清理临时文件;自动解锁的 DPAPI 调用改用
%SystemRoot%下 PowerShell 的绝对路径,被系统策略(AppLocker / 受限语言模式)拦截时给出可读原因 - macOS:本机路径比较不区分大小写(APFS 默认不区分),与 Windows 一致
- 跨平台修正(macOS / Linux):
- 远程工作区路径映射:占位目录在 macOS / Linux 上本身以
/开头,原先会被当成远程路径原样发给远端(Agent 工具与侧栏打开文件都受影响);现在先判断是否位于占位目录下(宿主端同时比较字面路径与 realpath),客户端比较键只在 Windows 风格路径上忽略大小写 - 私钥路径支持
~/.ssh/...(原先 readFileSync 不认~),中文占位提示同步改为~/.ssh/id_ed25519 - 终端:macOS 搜索改为 ⌘F(Ctrl+F 留给 readline / vim / less),Option 当 Meta(Alt+B/F/D 按词移动);Ctrl+Shift+C / V 补
preventDefault,修复 Chromium 上粘贴两次;右键菜单的快捷键提示按平台显示 - 保险箱、known-hosts、绑定、终端记录、偏好文件以 0600 写入、数据目录 0700 创建(macOS / Linux 原先是 0644 / 0755,明文字段对同机其他用户可读)
- ssh-agent 认证在 Windows 上回退到 OpenSSH 命名管道;Windows 保留名判定补上带扩展名的情况(
aux.api等)
- 远程工作区路径映射:占位目录在 macOS / Linux 上本身以
- 「添加工作区」目录浏览的错误改为横幅样式:标题说明哪个目录/操作失败,不可读时给出可能原因,原始报错折叠在「详情」里(可选中复制),带「重试」与关闭;进不去的子目录不再影响当前列表
- Windows 卷根的系统保留目录(
System Volume Information、$RECYCLE.BIN等)按隐藏处理——部分磁盘 / 网盘挂载(如 115 网盘)不会给它们打隐藏属性,点进去会报EINVAL ... readdir - 修复:115 网盘等挂载盘上的空文件夹打不开(报
EINVAL: invalid argument, readdir)。这类驱动对空目录的枚举直接返回失败(cmddir显示 File Not Found),现在遇到该错误时先列上一级确认目录存在,存在就按空文件夹显示,可以正常选作工作区 - 终端 WebSocket 地址改为优先使用宿主注入的
__DSH_TRANSPORT__.streamBaseUrl(与宿主自身流通道一致),不再只看页面地址——针对 macOS 桌面版终端一直「连接中断,正在重连」而 SFTP 正常的反馈;首次断开时在控制台输出目标地址,服务端拒绝终端连接的日志补上 Origin / Sec-Fetch-Site 便于排查
安装
先安装并启用侧边栏插件 dsh-better-sidebar,再安装本插件(命令不带版本号,自动装最新版):
dsh plugin --profile <profile> add @yh4922/dsh-workspace也可以直接装本 Release 的安装包:https://github.com/yh4922/dsh-workspace/releases/latest/download/dsh-workspace.tgz
本版本的固定包:yh4922-dsh-workspace-0.10.1.tgz(需要锁定版本时用它)。
升级:先 dsh plugin --profile <profile> remove @yh4922/dsh-workspace,再用上面的命令安装——对同一个包再装一次时,插件管理器判断不出这次装的是哪个包(依赖值没有变化),会回滚并提示「无法从依赖变更中确定安装了哪一个包」。
从旧版本升级(包名变更):0.7.7 及更早的包名是 dsh-workspace,先 dsh plugin --profile <profile> remove dsh-workspace,再安装新包名。
DSH Desktop:在「插件管理」→「添加插件」里填入上面的包名或地址;升级同样是先移除、再添加(插件管理里没有「更新」按钮)。
v0.10.0
- 移动端/窄屏适配:新增
useNarrow()(主区按视口宽度判断)与@media (max-width: 640px)样式段——主机列表不再换行、改为整卡左右滑动;页签横向滚动;页面内边距与头部收紧(简介在窄屏隐藏) - 「上锁」与「更多」(改主密码 / 导出 / 导入)从头部移到「全局配置」页签新增的「保险箱」区,头部只留标题
- 远程文件在窄屏改为自适应单列;点文件后的预览/编辑改成全屏浮层(带关闭按钮,未保存修改仍会确认),不再占用右侧一列;浮层以本页为定位上下文(
absolute,不再压住宿主网页版头部),并在窄屏隐藏编辑器顶部的「大小 · 权限 · 修改时间」一行 - 隐藏 Monaco 在 iPad / 触屏 UA 下自带的悬浮键盘按钮(
iPadShowKeyboard,点了不会按预期唤出输入法) - 「新建/编辑主机」表单去掉「SSH Agent」认证方式(旧数据在表单里按「密码」展示,底层类型与存储保留;
vault/store.ts的四个 switch 顺带补default兜底),并修正窄屏表单单列排布 - 「添加工作区」弹窗:窄屏改单列并收紧高度预算(左栏限高、底栏竖排),避免输入框与按钮被挤出屏幕
- 接管「添加工作区」的优先级由 -200 降到 -1000,注册回调加 try/catch 与「head 是否为自己」自检——针对网页端被 dsh-bridge 抢占弹窗的问题(dsh-bridge 用 -10、dsh-remote 用 -100,宿主规则是 priority 最小者渲染)
- 修复:公网访问时「添加工作区」仍弹出 dsh-bridge 的弹窗。根因有两条:① 动态包的 priority 会被宿主运行器改写成页内递减计数,-1000 不生效——改为「不是 head 就重注册」直到压过 dsh-bridge,并订阅插槽变化随时抢回;② dsh-bridge 在 document 捕获阶段按按钮文字截走点击(
stopImmediatePropagation),宿主根本不会打开插槽——改为在更早的 window 捕获阶段临时中和按钮的 aria-label,事件照常交给宿主(仅在开启接管时生效,见workspace/bridge-compat.ts) - 修复:移动端「添加工作区」进入盘符后目录列表无法滚动、只显示前几行(窄屏单列用的 grid + 自适应高度让列表拿不到有限高度)——改为固定高度的纵向 flex,目录列表独立滚动
- 修复:手机上点左侧「远程工作区」进入本页时,抽屉图标收成窄栏但抽屉容器仍然打开(装了 dsh-bridge 时抽屉容器由它的
body.dsh-drawer-open控制)——收起时两边一起收 - 手机上从抽屉里点「添加工作区」打开弹窗后,自动收起抽屉(同样同时收宿主与 dsh-bridge 两侧)
安装
先安装并启用侧边栏插件 dsh-better-sidebar,再安装本插件(命令不带版本号,自动装最新版):
dsh plugin --profile <profile> add @yh4922/dsh-workspace也可以直接装本 Release 的安装包:https://github.com/yh4922/dsh-workspace/releases/latest/download/dsh-workspace.tgz
本版本的固定包:yh4922-dsh-workspace-0.10.0.tgz(需要锁定版本时用它)。
升级:先 dsh plugin --profile <profile> remove @yh4922/dsh-workspace,再用上面的命令安装——对同一个包再装一次时,插件管理器判断不出这次装的是哪个包(依赖值没有变化),会回滚并提示「无法从依赖变更中确定安装了哪一个包」。
从旧版本升级(包名变更):0.7.7 及更早的包名是 dsh-workspace,先 dsh plugin --profile <profile> remove dsh-workspace,再安装新包名。
DSH Desktop:在「插件管理」→「添加插件」里填入上面的包名或地址;升级同样是先移除、再添加(插件管理里没有「更新」按钮)。
v0.9.1
- 修复:浏览器 bundle 注册到
window.__ModuleLoader__的 id 仍写死旧包名,宿主dsh-client-modules按包名核对不通过(loaded without registering "<id>"),会让 DSH Desktop 直接启动失败(0.8.0 / 0.9.0 都受影响);现改为从package.json现读包名,并补冒烟断言ModuleLoader 注册 id = 包名兜住这类改名漏改
安装
先安装并启用侧边栏插件 dsh-better-sidebar,再安装本插件(命令不带版本号,自动装最新版):
dsh plugin --profile <profile> add @yh4922/dsh-workspace也可以直接装本 Release 的安装包:https://github.com/yh4922/dsh-workspace/releases/latest/download/dsh-workspace.tgz
本版本的固定包:yh4922-dsh-workspace-0.9.1.tgz(需要锁定版本时用它)。
升级:先 dsh plugin --profile <profile> remove @yh4922/dsh-workspace,再用上面的命令安装——对同一个包再装一次时,插件管理器判断不出这次装的是哪个包(依赖值没有变化),会回滚并提示「无法从依赖变更中确定安装了哪一个包」。
从旧版本升级(包名变更):0.7.7 及更早的包名是 dsh-workspace,先 dsh plugin --profile <profile> remove dsh-workspace,再安装新包名。
DSH Desktop:在「插件管理」→「添加插件」里填入上面的包名或地址;升级同样是先移除、再添加(插件管理里没有「更新」按钮)。
v0.9.0
- 适配 DSH 0.2.0-rc.1 内核:
peerDependencies里@deepseek-ai/dsh-*的范围由^0.1.5-rc.2改为^0.1.5-rc.2 || ^0.2.0-rc.1(旧内核仍可安装;0.2.x 内核不再被宿主判定为不兼容而禁用插件) - 开发依赖(
@deepseek-ai/*)同步升到 0.2.0-rc.1,README 的依赖表注明同时兼容 0.1.x / 0.2.x
安装
先安装并启用侧边栏插件 dsh-better-sidebar,再安装本插件(命令不带版本号,自动装最新版):
dsh plugin --profile <profile> add @yh4922/dsh-workspace也可以直接装本 Release 的安装包:https://github.com/yh4922/dsh-workspace/releases/latest/download/dsh-workspace.tgz
本版本的固定包:yh4922-dsh-workspace-0.9.0.tgz(需要锁定版本时用它)。
升级:先 dsh plugin --profile <profile> remove @yh4922/dsh-workspace,再用上面的命令安装——对同一个包再装一次时,插件管理器判断不出这次装的是哪个包(依赖值没有变化),会回滚并提示「无法从依赖变更中确定安装了哪一个包」。
从旧版本升级(包名变更):0.7.7 及更早的包名是 dsh-workspace,先 dsh plugin --profile <profile> remove dsh-workspace,再安装新包名。
DSH Desktop:在「插件管理」→「添加插件」里填入上面的包名或地址;升级同样是先移除、再添加(插件管理里没有「更新」按钮)。
v0.8.0
- 包名由
dsh-workspace改为@yh4922/dsh-workspace(npm 上原名已被他人占用);cordis.patch.yml里 insert 的 name 必须与包名一致(否则插件加载不到),远程清单的身份名PACKAGE也一并对齐 - 发布流程新增发布到 npm(
registry.npmjs.org,publishConfig.access=public),并在 GitHub Release 额外上传固定文件名dsh-workspace.tgz供不带版本号的安装地址使用 - 安装说明改为不带版本号:主推
dsh plugin add @yh4922/dsh-workspace,补充升级方式与旧包名迁移说明
安装
先安装并启用侧边栏插件 dsh-better-sidebar,再安装本插件(命令不带版本号,自动装最新版):
dsh plugin --profile <profile> add @yh4922/dsh-workspace也可以直接装本 Release 的安装包:https://github.com/yh4922/dsh-workspace/releases/latest/download/dsh-workspace.tgz
本版本的固定包:yh4922-dsh-workspace-0.8.0.tgz(需要锁定版本时用它)。
升级:先 dsh plugin --profile <profile> remove @yh4922/dsh-workspace,再用上面的命令安装——对同一个包再装一次时,插件管理器判断不出这次装的是哪个包(依赖值没有变化),会回滚并提示「无法从依赖变更中确定安装了哪一个包」。
从旧版本升级(包名变更):0.7.7 及更早的包名是 dsh-workspace,先 dsh plugin --profile <profile> remove dsh-workspace,再安装新包名。
DSH Desktop:在「插件管理」→「添加插件」里填入上面的包名或地址;升级同样是先移除、再添加(插件管理里没有「更新」按钮)。
v0.7.7
首个公开发布版本。以下为自 0.7.2 以来的变化,更早的版本仅为本地开发版本。
- 远程工作区页面新增「全局配置」页签:接管「添加工作区」、自动解锁两个开关移到这里(标题栏只保留上锁 / 更多)
- 「全局配置」里新增「关于」:版本、作者、许可证,以及仓库、更新日志、版本发布、使用说明、问题反馈的链接
- 修复:「接管添加工作区」开关被撑变形、挤出可视区,且开关旁没有文字说明
- 远程文件、远程 Git 在宽屏分栏时,左侧列表宽度可拖动调整:最小 240px、右侧至少保留 320px;双击恢复默认,按面板分别记住
- 远程文件 / 远程 Git 的复制提示改为浮窗,不再插在列表顶部造成抖动
- 添加工作区弹窗:远程主机按分组树形展示;选中主机显示「连接中」、不阻塞界面、失败可重试;「此电脑」「远程主机」可展开收起
- 修复:远程工作区页面被宽内容撑开
安装
先安装并启用侧边栏插件 dsh-better-sidebar,再安装本插件:
dsh plugin --profile <profile> add https://github.com/yh4922/dsh-workspace/releases/download/v0.7.7/dsh-workspace-0.7.7.tgzDSH Desktop:在「插件管理」→「添加插件」里填入上面的地址。