Repository navigation
Releases
v1.0.2
这一版解决什么
别的用户装完用不了。 宿主端插件以前只在两个位置找登录工具 DSH-GitHub-Login.exe:
<DSH_HOME>/dsh-github-login/dist/DSH-GitHub-Login.exe
D:/dsh/dsh-github-login/dist/DSH-GitHub-Login.exe ← 作者本机路径
第二行在任何别的机器、任何别的平台上都永远命中不了,而 npm 包里不带 exe ——
于是新用户点"登录 GitHub"只会拿到一句提示,既没有工具,也没有"去哪拿"的说明。
改了什么
- 删掉作者本机路径。候选位置现在全部由规则推导:环境变量 /
<DSH_HOME>/ 插件自身安装目录,一条字面量都没有。 - 首次使用自动获取:没有工具时,插件自己从本仓库 Release 下载 exe,边下边算 SHA-256,
与发布方的.sha256不符就拒绝启用,可疑文件立即删除,绝不启动。
并发唤起只下载一次;网络抖动最多重试 3 次,校验和/格式这类"重试也没用"的失败立即停。 - 失败不再静默:拿不到工具时回一条能照着做的指引(下载地址、校验和地址、落盘路径、
两个覆盖用环境变量),并原样带上失败原因(下载 404 / 校验和不符 / 网络不可达)。 - 新增
GET /github-auth/tool:在不在、装在哪、候选列表、是否正在下载,给面板和排障用。 - README 补上"新用户怎么拿到并使用登录工具"的完整路径 + 帮助区的对应条目。
别人怎么拿到 exe(本版的重点)
通常不用管 —— 第一次点登录时插件会自动下载并校验,落盘到:
<DSH_HOME>/dsh-github-login/DSH-GitHub-Login.exe # DSH_HOME 缺省 ~/.dsh
下载地址:https://github.com/Noob-stupid/dsh-github-login/releases/latest/download/DSH-GitHub-Login.exe
自动下载不可用(网络受限 / 需要镜像源)时,按提示手动装:
- 从本页下载
DSH-GitHub-Login.exe(和它的.sha256) - 放到
<DSH_HOME>/dsh-github-login/DSH-GitHub-Login.exe - 或者用环境变量指路:
DSH_GITHUB_LOGIN_EXE=<exe 绝对路径>;
想换分发源用DSH_GITHUB_LOGIN_RELEASE_BASE_URL=<.../latest/download 基址>
怎么校验
sha256sum DSH-GitHub-Login.exe
# bdd670c7c6add6a502fcb9ce4abe22a0dc5330b7e6508f4c6d1c8eb73dbb7206 DSH-GitHub-Login.exe本版 exe 与 v1.0.1 的那份是同一份字节(本体没有改动,只是获取链路变了),因此校验和与 v1.0.1 相同;
上方的 DSH-GitHub-Login.exe.sha256 就是它的官方校验和(88 字节,<哈希><两空格><文件名> 格式)。
插件自动下载时用的就是同一个值,不匹配会拒绝启用。
测试
npm test → 23 项全绿(含新增的可移植性断言):
- 入库源码/文档/测试文件里不得出现机器专用绝对路径(白名单逐条登记,无整文件豁免);
- 候选列表每一项都能由规则推导(不含盘符字面量,且返回值都落在可推导根下);
- 自动下载的 sha256 不匹配必须拒用,且不留下任何产物(用本地 HTTP 服务器构造坏哈希走失败分支);
- 上面三条都做过变异验证:把缺陷写回去必红、还原必绿,且逐字节还原。
平台说明
登录窗口目前仍只有 Windows 的便携 exe;Linux/macOS 上插件会给出"暂无可用登录工具"的明确指引,
而不是静默失败。令牌文件(<DSH_HOME>/github-auth.json)与设备码流程本身与平台无关,
GET /github-auth/status 在任意平台都可用。
v1.0.1
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的 entryname与入口导出的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.ymlentry 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组树」,未在真实宿主上做一次端到端启动(不重启任何运行中的实例)。
v1.0.0
DSH GitHub Login v1.0.0
零终端的 GitHub 可视化登录工具(独立 exe 版)。无需终端:打开窗口 → 窗口内完成 Device Flow 授权 → 完成。
功能
- 窗口内授权:授权页内嵌窗口(webview),带前进 / 后退 / 刷新,也可一键改用外部浏览器
- 令牌保存至
~/.dsh/github-auth.json,并同步进 gh CLI(~/.config/gh/hosts.yml),gh 命令行立即可用 - 托盘常驻:随时查看账号状态 / 一键退出登录
- 与 dsh-plugin-hub 配套:登录后插件面板 GitHub 市场自动带认证
安装
- 独立使用:下载
DSH-GitHub-Login.exe直接运行(便携单文件,免安装) - DSH 插件模式:
dsh plugin --profile web add github:Noob-stupid/dsh-github-login(附宿主端GET /github-auth/status状态接口与POST /github-auth/open唤起接口)
校验
DSH-GitHub-Login.exe.sha256 附 SHA-256 校验和。首次运行若被杀软提示,属便携打包工具的常见误报,可核对源码自行构建(npm install && npm run dist)。