Skip to content

Releases: zengweicheng666/dsh-svn-tools

v0.13.4

Choose a tag to compare

@zengweicheng666 zengweicheng666 released this 06 Oct 03:43

README 重写为中英双语(默认中文,右上角互为切换入口),并补上缺失的 LICENSE。本版无功能代码改动。

文档

  • 结构重排:简介与特性 → 安装(插件市场 / 裸仓库 / 版本 pin / 本地源码)→ 快速上手 → 侧边栏面板(载体 · 变更 · 提交 · 历史 · 在线/离线/只读)→ Agent 工具 33 个 → 设置 10 项 → 版本兼容 → 更新与安装形态 → 安全模型 → 自检与开发 → FAQ → 许可;顶部加徽章与目录。
  • 原先夹在正文里的超长段落改为表格与列表(三种历史回退操作、离线数据来源、载体矩阵、设置表都可按行查阅)。
  • 新增 README.en.md(英文版,与中文版一一对应);两版语言切换入口:[简体中文](README.md) · [English](README.en.md)。
  • 新增 LICENSE(MIT)—— package.json 与 README 此前已声明/链接但文件缺失。

可验证性

  • 新增 scripts/verify-readme.mjs(npm run verify:readme):校验两版内部锚点全部命中标题、无重复标题(GitHub 会加后缀破坏锚点)、互为切换入口、LICENSE 存在、文档点名的 svn_* 工具集合与代码注册集合完全一致、10 项设置在中英两版都有说明、两版都带当前版本号、package.json 的 files 含 README.en.md 与 LICENSE。
  • 6 个自检脚本在本机 0.1.6 上全部通过。

元数据

  • package.json:version: 0.13.4;files 补 README.en.md / LICENSE / scripts/verify-readme.mjs;scripts 增加 verify:readme。

安装:dsh plugin --profile web add github:zengweicheng666/dsh-svn-tools

v0.13.3

Choose a tag to compare

@zengweicheng666 zengweicheng666 released this 06 Oct 03:24

代码审计修复与加固。共修复宿主 7 项、浏览器半侧 5 项缺陷,移除安装期脚本,并新增一套回归断言。

宿主

  • 仓库 URL 不再被当成文件路径:svn_list / svn_cat / svn_export / svn_copy / svn_move / svn_mkdir 传 svn://host/repo 时曾被解析成 C:\…\svn:\host\repo(实测 E020024)。
  • svnPath 与「命令超时倍数」现在覆盖全部命令(原先 svn_cat、历史比对取内容、update-start 三处硬编码)。
  • 信任栅栏的 Origin 比较改为 .host(与上游 api-request-trust 一致,含端口)。
  • 只读模式把 export 计入写方法(它会 --force 写盘)。
  • 位置参数防选项注入:propget/propset/propdel 的 name、checkout/switch 的 url、merge/mergeinfo 的 source、changelist 的 name、relocate 的 from/to 拒绝以 - 开头(--config-dir=… 可让 svn 执行攻击者的 diff-cmd/editor-cmd)。
  • repoRelTarget 增加文件系统包含性校验并拒绝 ./.. 段(原先可被 …/../../x 逃逸工作副本)。
  • 提交前的 svn delete 失败不再被吞掉,改为新增 failed 列表随结果上报。

浏览器半侧

  • 「不是工作副本」判定收紧:E155004(已锁定)与 E155036(旧格式)不再被误判为检出场景(原先会让面板切到检出表单并禁用分支/清理/更新)。
  • 传输错误重试只用于读方法:commit/update 等写操作不再被重放。
  • 客户端写方法表补齐 export/propset/propdel,只读模式下按钮正确置灰。
  • 载体在挂载前先读宿主解析出的设置(新增 /svn/api/settings,适配 0.2.x 无 settingsScope):配 off/better-sidebar 不会再先闪出一个自带侧边栏分页。
  • 异步加载(log/diff/blame/locks)不再抢走用户已切换的页面;框选增加 ev.buttons 复位与 pointerleave(消除幽灵框选)。

工程

  • 移除 preinstall 脚本:自 0.13.0 起它只打印提示,却触发 pnpm 依赖脚本授权并在 allowBuilds 里按版本累积条目;市场目录的 runs code at install time (preinstall) 红线随之消失。
  • 新增 scripts/verify-hardening.mjs,并在既有脚本中补充针对以上修复的断言。
  • 声明 engines.dsh: >=0.1.0-rc.6(与 peer 一致)。

验证

  • 本机 0.1.6 与真实 0.2.0-rc.2 运行时上自检通过;并分别用门禁(dsh-app-boot)与市场(dshmarket/lib/discovery-compatibility)自身的判定函数实测本 manifest:0.1.0-rc.6 及以上全部 compatible,0.1.0-rc.5 拦截。

安装(裸仓库 spec,可正常收到后续更新提示):dsh plugin --profile web add github:zengweicheng666/dsh-svn-tools

v0.13.2

Choose a tag to compare

@zengweicheng666 zengweicheng666 released this 06 Oct 02:58

peer 兼容范围改为「rc.6 及以上全部支持」。

修复

  • peerDependencies.@deepseek-ai/dsh-tools 由 ^0.1.0-rc.6 || ^0.2.0-rc.1 改为 >=0.1.0-rc.6:自带侧边栏自 0.1.0-rc.6 起就有,因此不再按大版本切段(旧写法会把 0.3.x / 1.x 误判成不兼容而被门禁拦下)。
  • 判定依据取自门禁自身实现(dsh-app-boot 的 evaluatePluginCompatibility):只检查 @deepseek-ai/dsh 与 @deepseek-ai/dsh-* 两类 peer,且用 semver.satisfies(runtime, range, { includePrerelease: true }),预发布参与比较。按该调用实测:0.1.0-rc.5 拦截;0.1.0-rc.6 / 0.1.6-alpha.1 / 0.2.0-rc.2 / 0.2.1-alpha.1 / 0.3.0-rc.1 / 1.0.0 放行。
  • 取舍:范围不设上限,未来若 DSH 出现破坏性变更,门禁不会提前拦截;由代码自身的兼容策略兜底(设置层自动在 installSection(0.1.x)与 Config 派生表单(0.2.x)之间选择;侧边栏载体按 sidebarRightTabs / betterSidebar 的可用性注册)。

验证

  • 四个自检脚本在 0.1.6 与真实 0.2.0-rc.2 运行时上均通过;peer 判定用门禁同款 semver 调用逐版本实测。

安装:dsh plugin --profile web add github:zengweicheng666/dsh-svn-tools#v0.13.2

v0.13.1

Choose a tag to compare

@zengweicheng666 zengweicheng666 released this 06 Oct 02:46

兼容 DSH 0.2.x。

修复

  • 安装被 0.2.x 兼容门禁拒绝:peerDependencies.@deepseek-ai/dsh-tools 由 ^0.1.0-rc.6 放宽为 ^0.1.0-rc.6 || ^0.2.0-rc.1(同时支持 0.1.x 与 0.2.x;0.3.x 仍会被门禁拦住并提醒)。此前在 dsh 0.2.0-rc.2 上安装会被判定不兼容并回滚 profile。
  • 0.2.x 的设置入口:新增导出 Config(schemastery)。0.2.x 已移除旧版 settings.yaml 命名空间机制,改为按 profile 条目 id 从插件自己的 Config 派生配置表单;apply() 现在以解析后的条目 config 为基准,仅在服务提供 installSection(0.1.x)时注册命名空间。
  • 0.1.x 行为不变:设置仍在 /settings.yaml 的 dsh-svn-tools: 段,卡片仍带「检测」「恢复默认」等交互。
  • 客户端无需改动:slots / sidebarRightTabs / sidebar.right.pane.tab / 向导入口在 0.2.0-rc.2 中名称未变;设置卡片在 0.2.x 自然降级,面板改由 /svn/api/root 提供解析后的配置。

验证

  • 四个自检脚本在 0.1.6 与真实 0.2.0-rc.2 运行时(含全部 peer 依赖 + 真实 SVN 工作副本)均通过;Config({}) 在两个运行时解析结果一致且拒绝非法值。

安装:dsh plugin --profile web add github:zengweicheng666/dsh-svn-tools#v0.13.1

v0.13.0

Choose a tag to compare

@zengweicheng666 zengweicheng666 released this 06 Oct 02:11

侧边栏载体可选 + 设置集中配置。

新增

  • 侧边栏面板可在「DSH 自带右侧栏(0.1.5+)」与 dsh-better-sidebar 之间切换(设置 → 插件 → 插件配置 → SVN 工具):
    • auto(默认):有自带侧边栏就用它,否则回退 dsh-better-sidebar
    • native / better-sidebar / off(只用 33 个 svn_* agent 工具)
    • 所选载体不可用时自动回退到另一个并在卡片里说明;切换即时生效
  • 新设置命名空间 dsh-svn-tools(落 /settings.yaml):sidebarCarrier、svnPath(带「检测」)、commandTimeoutScale、historyPageSize、historyCacheEnabled、historyCacheMaxEntries、autoAddUnversioned、autoDeleteMissing、showUnversionedDefault、defaultView
  • 宿主侧接入:svn/svnversion 路径解析、命令超时倍数、历史缓存开关与上限、提交前自动 add/delete 开关(关闭时把跳过的文件回报面板)、/svn/api/root 暴露解析值与用户覆盖、新增只读 /svn/api/check-svn

变更

  • 侧边栏载体与设置服务改为可选依赖(ctx.inject):缺任一服务不再让客户端 bundle 卡住
  • preinstall 从「缺少 dsh-better-sidebar 即中止安装」改为只提示不拦截
  • 声明 repository/homepage/bugs:dsh-update-checker 依赖已安装 manifest 的 repository 字段 + GitHub Release 才能识别本插件

验证

  • 四套校验全绿:verify-offline-modes / verify-offline-host / verify-settings / verify-settings-host

安装

dsh plugin --profile web add github:zengweicheng666/dsh-svn-tools#v0.13.0