Skip to content

v1.0.1

Choose a tag to compare

@Noob-stupid Noob-stupid released this 12 Oct 09:09
· 1 commit to main since this release

DSH GitHub Login v1.0.1

修复「安装插件后启动 DSH 直接报错」的问题,并理顺版本线。

根因

package.json 的 name 是无 scope 的 dsh-github-login,安装器也是按这个名字建目录(node_modules/dsh-github-login);但入口导出的 name 与 cordis.patch.yml 里 entry 的 name 却写成了 @deepseek-ai/dsh-github-login。宿主端加载器是按 entry 声明的名字去 import 的,于是去找一个根本不会被创建的目录,启动即失败:

failed to import loader entry github-login (@deepseek-ai/dsh-github-login):
Cannot find package '@deepseek-ai/dsh-github-login' imported from <profile>/

本次修复

  • cordis.patch.yml 的 entry name 与入口导出的 name 都改为真实包名 dsh-github-login,三处身份一致(不改 package.json 的包名,避免破坏已装用户)。
  • 路由注册改为 ctx.inject(['webServer'], …),等 webServer 就绪后再挂载,修掉「挂载时 ctx.get('webServer') 取不到就静默跳过、且无重试」的竞态(/github-auth/* 时有时无甚至一直 404)。
  • 入口 lib/index.js → lib/index.mjs:显式 ESM 模块类型,不再依赖 Node 的语法探测;main.js / preload.js 仍为 CommonJS,桌面工具不受影响。
  • 版本 0.1.0 → 1.0.1,与已发布的 v1.0.0 标签线对齐。
  • 新增 test/identity.test.mjs:把「package.json.name == 入口导出 name == cordis.patch.yml entry name」钉成可失败断言(并禁止再使用官方 @deepseek-ai/* scope)。已做变异验证:任意一处被改回旧名,测试即失败。

未改动:既有 v1.0.0 标签与 Release 逐字段保持原样,未移动、未删除、未覆盖。

安装 / 升级

  • DSH 插件模式:dsh plugin --profile web add github:Noob-stupid/dsh-github-login
  • 已装过旧版的用户:重新执行一次上面的安装命令即可(安装器会重新拉取并覆盖)。
  • 独立工具:下载下方 DSH-GitHub-Login.exe 直接运行(便携单文件,免安装)。

校验

DSH-GitHub-Login.exe.sha256 为对应的 SHA-256:

bdd670c7c6add6a502fcb9ce4abe22a0dc5330b7e6508f4c6d1c8eb73dbb7206  DSH-GitHub-Login.exe

首次运行若被杀软提示,属便携打包工具的常见误报,可核对源码自行构建(npm install && npm run dist)。

致谢

感谢 @dr1am1 与 @TomIsFat 报告该问题(issue #1),以及 @SX2000CN 提交的 PR #3 —— 本次修复的改动方向与 PR #3 一致,其中「入口改 .mjs 显式声明模块类型」「路由改 ctx.inject 等服务就绪」两点亦采用其结论。

说明:PR #3 未能以 GitHub 的「合并」方式入账 —— 该 PR 的 head 仓库(贡献者 fork)已被删除,GitHub 拒绝再对其做状态变更(state cannot be changed. The repository that submitted this pull request has been deleted.),重新打开被 422 拒绝。因此修复由本仓库按同一方向重新实现,并在提交信息与 Release 中署名致谢。

另外,本次验证为「隔离 DSH_HOME + 真实远程安装 + 入口解析 + --dump-config 组树」,未在真实宿主上做一次端到端启动(不重启任何运行中的实例)。