Skip to content

Releases: tu1918/dsh-git-plugin

Release list

v1.0.1

Choose a tag to compare

@tu1918 tu1918 released this 06 Oct 04:54

仓库正规化:许可证、元数据、截图,以及一条会静默漏掉 harness 下一个预发布版的 peer 范围。

插件行为没有任何变化。 这一版改的全是「装之前能读到什么」和「装的时候能不能解析对」。

本次改动

  • 新增 LICENSE —— package.json 从第一次提交起就写着 license: MIT,但仓库里一直没有许可证正文,GitHub 因此报 licenseInfo: null。现在 MIT 正文在仓库根,npm 打包会自动带上(附件因此从 5 个文件变成 6 个)。
  • package.json 补上 repository / homepage / bugs / author —— 这四个此前一个都没有。其中 repository 最要紧:它让这个包认领这个仓库,而不只是恰好住在里面。
  • peer 范围补上显式 || 分支 —— ^0.2.0-rc.2 → ^0.2.0-rc.2 || >=0.2.1-0 <0.3.0(dsh-llm 与 dsh-credentials)。node-semver 只允许预发布版满足「有比较符落在同一个 major.minor.patch 元组上、且那个比较符自己带预发布标签」的范围,所以 ^0.2.0-rc.2 收得下 0.2.0-rc.3,却会静默排除 0.2.1-alpha.1。理由写在 README 里那两个范围的旁边——没有理由的范围,正是那种会被后人「顺手简化」回去的东西。
  • 新增 screenshots.json + 截图 —— 面板在真实 dsh web 里的样子:Git 标签页、分支栏、暂存 / 更改 / 未跟踪三区叠着提交框,下面是带泳道的最近提交。这也是它第一次在 jsdom 之外被看到。
  • README —— 截图放在开头;Install 改成以预构建的 release 附件为主,link: 那条退为「改插件时用」。

安装

dsh plugin --profile web add https://github.com/tu1918/dsh-git-plugin/releases/latest/download/dsh-git-panel.tgz
# 然后重启 `dsh web` —— bundle 只在启动时组合

附件名刻意不带版本号,所以上面这条链接跨版本一直有效:latest/download/ 只在请求时解析 tag,文件名是照字面取的,带版本的资产名会在发版次日 404。

为什么是 1.0.1 而不是把 v1.0.0 的标签挪过来

被打包进附件的 package.json 变了(peer 范围 + 元数据),所以挂在 v1.0.0 上的那个附件已经不再描述这个提交构建出来的东西。标签一旦公开就不该再移动,所以往上加了一版,v1.0.0 原样保留。

校验

npm run check 全绿:tsc --noEmit + 630 项测试 + build。附件本身也从一个隔离的 $DSH_HOME 用上面那条 latest/download 链接真装了一遍(装得上、config 树里出现 - id: ui-git-panel、dsh web 起来后插件自己的路由回自己的信封)。

v1.0.0

Choose a tag to compare

@tu1918 tu1918 released this 06 Oct 04:39

DSH Web GUI 右侧栏 git 面板的 v1.0.0:M5b 之后的一批收尾——F-1 缺陷、依赖升到 DSH 0.2.0-rc.2、两处观感修正,以及 v1.0 发布本身。已交付范围见 README 的「What works today」。

本次改动

  • git 操作端到端有界(F-1) —— 此前点取回(fetch)等操作可能一直转圈。现在宿主侧的 deadline 由 SIGTERM 升级到 SIGKILL,并以进程 结束 为准,而不是等 close 事件:父进程退出后仍占着管道的 helper 不再拖住结果。请求在宿主与浏览器各带一条时限,超时后的写操作会明说 结果未知(git 可能还在跑)并回读仓库,不再谎报成功或失败。
  • 依赖升到 DSH 0.2.0-rc.2 —— 随发行版发布的类型与生产实际运行的那份 DSH 对齐;legacy-peer-deps 的绕行随 0.1.5-rc.1 一起消失。
  • 取回字形重画 —— 「拉取」旁那枚由虚线箭头改成 云 + ↓,靠形状而不是线型与「拉取」区分;该字形自己的默认尺寸 13 → 15px。
  • 禁用的主按钮文字保持可读。
  • v1.0 发布收尾 —— 版本号 0.1.0 → 1.0.0,README 与已交付范围对齐,安装路径在隔离的 $DSH_HOME 里核对过。

附件

dsh-git-panel-1.0.0.tgz(120.5 kB)—— 本次发布的安装包,lib/index.js 与 lib/client.js 已构建好,装它不需要 devDependencies,也不需要现场构建。

安装

需要 DSH >= 0.2.0-rc.2 与 git >= 2.20。装完都必须重启 dsh web —— bundle 只在启动时组合。面板随后通过右侧栏的 + 出现,名字是「Git changes」。

A. 一条命令,用本次发布的预构建包(推荐)

dsh plugin --profile web add https://github.com/tu1918/dsh-git-plugin/releases/download/v1.0.0/dsh-git-panel-1.0.0.tgz

(这个链接是钉住 tag 的写法,不会随下次发版失效。想要 latest 形式的链接,得让附件名不带版本号——带版本的资产名配上 latest/download/ 会在下次发版当天静默 404。)

B. 从源码目录(开发/改代码时)

git clone https://github.com/tu1918/dsh-git-plugin.git
cd dsh-git-plugin && npm install      # prepare 会跑 build,产出 gitignore 的 lib/
dsh plugin --profile web add link:"$PWD"

lib/ 是派生产物、不入库,所以这条路必须先构建;一次都没构建过的检出会在 dsh web 启动时报 missing bundle,而不是静默少一块。

校验

npm run check 全绿:tsc --noEmit + 630 项测试 + build。

附件本身也按它自己的路径验过一遍:在隔离的 $DSH_HOME 里 dsh plugin add <本附件> → profile 依赖写成 file:…/dsh-git-panel-1.0.0.tgz 并装好(只拉 vscode-diff,peer 依赖由 harness 提供)→ dsh --profile web --dump-config 出现 - id: ui-git-panel 一层 → dsh web --port 3099 起来后 GET /git-panel/status?session=none 回插件自己的信封 no-session,即 host 半确实从装好的包里挂载成功;包内 lib/*.js 与本地构建逐字节一致。附件直链的匿名请求也确认过:200,120517 字节。