Skip to content

Releases: TiChuXiXi/dsh-git-vcs

v0.2.0 · DSH 0.2.1 兼容与 Git 操作加固

Choose a tag to compare

@Charles-yueyue831 Charles-yueyue831 released this 11 Oct 18:11

兼容性

  • 要求 Node.js ≥ 22.12.0、DSH ≥ 0.2.1-alpha.2;实测宿主 0.2.1-alpha.2(官方提交 d743267388641bc76f17c45ce8b4c231aed1d32c)。
  • DSH 0.1.7 用户请保留插件 0.1.2,升级前先更新宿主。

改进与修复

  • 合并 develop 到 main,完善 README 的安装、升级、兼容性与排障说明。
  • 加固 RPC 请求格式、端点校验和取消传播。
  • 修复首次提交前取消暂存、通配符文件误操作、符号链接和仓库根边界逃逸。
  • 贮藏支持包含未跟踪文件,空操作不再误报新建记录;凭据相关输出脱敏。
  • 单文件差异测试改用独立夹具,避免合并提交导致误报。

验证与限制

  • npm test:10 组 Node 回归、64 项 host、17 项客户端、6 项 VM/JSON 检查通过。
  • Chrome DOM:33 项检查通过;真实 DSH 认证、暂存/取消暂存、Origin 防护、协议与客户端资源集成通过。
  • 尚未逐项验证 Windows/Linux 桌面和全部真实菜单;暂不支持按行提交、并排 diff 或冲突编辑器。

获取

GitHub 源码标签:v0.2.0。已发布到 npm:dsh-git-vcs@0.2.0,latest 指向 0.2.0;官方源包校验值与本标签发行文件一致。安装命令:

dsh plugin --profile web add dsh-git-vcs@0.2.0 --registry=https://registry.npmjs.org

安装后重启 dsh web 并刷新浏览器。

兼容性测试报告

Full Changelog: v0.1.2...v0.2.0

v0.1.2

Choose a tag to compare

@TiChuXiXi TiChuXiXi released this 29 Sep 02:59

dsh-git-vcs 0.1.2 —— 适配 DeepSeek Harness 0.1.7

修复:面板一直显示「(未加载)」

DSH 0.1.7 的会话清单快照 SessionListState 移除了 current 字段(0.1.5 时代用它定位"当前会话"),
旧写法 sessions.byId[sessions.current] 取到 undefined → 默认仓库路径恒为空 → 面板连 repo/snapshot
都不发出去,于是分支胶囊停在「(未加载)」、路径框空白、中间提示手填路径(host 侧通道其实是好的)。

现在改走 session 作用域的标准 prop sessionId:

const sessionCwd = useSessions((state) => sessionCwdOf(state, sessionId))

与官方 dsh-client-ui-sidebar-files 在 0.1.7 里的写法一致(useSessions((s) => s.byId[sessionId]?.cwd)),
并保留旧版本 state.current 回退,所以 0.1.5 / 0.1.7 都能自动打开会话工作目录。

变更清单

  • lib/client.js:新增 sessionCwdOf(state, sessionId);引导页入口补上 0.1.7 要求的稳定 id
  • package.json:dsh.engines.dsh 提到 >=0.1.7-rc.2(不能写 >=0.1.7:semver 下预发布版小于同号正式版)
  • 探针夹具同步成 0.1.7 真机 props 形态;render-probe.mjs 支持 RENDER_PROBE_CLIENT 反向对照
  • 新增 scripts/live-probe.mjs:隔离 DSH_HOME 起真实例 + headless 浏览器打开带 token 的真实页面(诊断用)
  • README:兼容性表、更新记录、排障新增「(未加载)」一节

兼容性

项目 值
需要 @deepseek-ai/dsh ≥ 0.1.7-rc.2
依赖的官方插件 @deepseek-ai/dsh-client-ui-sidebar-right(随 web-app 分发)
构建 零构建、零运行时依赖

自检

verify-host 64/64、render-probe 15/15、dom-probe 33/33、web-rpc-probe 在 0.1.7 下 401 = 路由在;
反向对照(把 cwd 取法还原成旧写法)新夹具立刻报 12 条红,证明断言咬得住这次的问题。

安装 / 升级

dsh plugin --profile web add dsh-git-vcs@0.1.2

升级后重启 dsh web(host 半区是进程内代码),浏览器里再 Ctrl+Shift+R。

v0.1.1

Choose a tag to compare

@TiChuXiXi TiChuXiXi released this 16 Sep 03:44

主要变化

提交树(issue #1)

  • 覆盖所有分支:git log --exclude=refs/stash --all,不再只有当前分支的祖先链。
  • 滚到底续拉:50 条一页、--skip 接着上次窗口取、按 hash 去重(两次调用之间落了新提交也不会重复行),
    单次刷新最多渲染 2000 行。刻意不加 --date-order / --topo-order:它们要先 limit_list()
    把整段可达历史读进内存排序,-n 就不再流式,正是 issue 里担心的性能问题。
  • 多泳道图(对齐 git log --graph / IDEA 的画法):每条分支一条泳道,泳道记「下一个期待的提交」,
    没有泳道期待它就是分支起点、多条泳道同时期待它就在本行汇合;第一个父提交留在原泳道,
    其余父提交各开一条斜线。原先的单轨画法会把「基于历史提交拉出来的分支」画成当前分支的延续。
  • 修掉两处真机几何错位:① 斜线层 <svg> 只给 left/top/right/bottom 时高度按 viewBox 固有比例
    算成 100px(行高只有 29.5px),斜线被放大到下面几行;② 2px 宽的连线以泳道中心为 left,
    线心比圆心偏右 1px。

未初始化仓库(issue #2)

  • 目录不是 git 仓库时,面板只渲染一块居中空态:图标 + 「当前目录不是 Git 仓库」+ 目录路径 +
    一个「在当前目录初始化 Git 仓库」按钮,页签 / 工具栏 / 提交树一律不显示。
  • 点按钮先展开初始分支名:可自由输入,另有 main / master 一键备选(回车即确认),
    确认后才执行 git init;成功后空态自动消失、面板自己长回完整功能(不必再点 Refresh)。
  • host 侧 repo/init 的语义边界:目录不是仓库 → git init -b <branch>(git < 2.28 无 -b 时
    退回 git init + symbolic-ref HEAD);已经是仓库根 → already: true 不重复初始化;
    仓库内部子目录 → 拒绝,避免凭空造出嵌套仓库。路径校验复用 validateCwd(),
    因此同样受 repoRoot 白名单约束。

自检

脚本 结果
node scripts/verify-host.mjs 64/64(含"客户端调用的每个端点 host 侧都存在"的结构性反查、repo/init 全部行为分支)
node scripts/render-probe.mjs 14/14(迷你 React:泳道拓扑、续拉去重、刷新不缩页)
node scripts/render-probe.mjs --real 16/16(与 git log --graph 逐提交比对泳道下标与分叉行)
node scripts/dom-probe.mjs 18/18(headless 浏览器量像素:连线与圆点同心、斜线跨度、空态行为与分支名选择)
node scripts/preview-check.mjs 全部通过(每个端点的信封都是无损 JSON)

安装

dsh plugin --profile web add dsh-git-vcs@0.1.1

装完重启 dsh web,然后强制刷新页面。

v0.1.0

Choose a tag to compare

@TiChuXiXi TiChuXiXi released this 15 Sep 09:45

首个发布版本:DSH Web GUI 的 Git 版本管理插件(右侧栏「版本管理」页,参照 IDEA 的 Version Control 工具窗)。

功能

  • 右侧栏 tab:Local Changes / Log / Console / Branches / Remotes / Stash 六页
  • 勾选提交(只提交勾选的文件,未跟踪文件同样可选)、暂存 / 取消暂存 / 回滚
  • 提交树(每条分支一色、HEAD 实心、分支标签)、提交详情按需拉取单文件 diff、右键菜单
  • 分支 / 远程 / 贮藏管理,命令流水(Console)
  • 推送链路:直推 → SSL 后端兜底 → 认证表单(凭据存进 git 凭据助手)

安装

dsh plugin --profile web add dsh-git-vcs

兼容 @deepseek-ai/dsh >=0.1.5-rc.1,零构建、零运行时依赖。

详见 README。