Skip to content

fix(github): 支持 GitHub Releases API token#503

Merged
deepcoldy merged 2 commits into
deepcoldy:masterfrom
darylchen97:fix/github-api-token-pr
Jul 18, 2026
Merged

fix(github): 支持 GitHub Releases API token#503
deepcoldy merged 2 commits into
deepcoldy:masterfrom
darylchen97:fix/github-api-token-pr

Conversation

@darylchen97

Copy link
Copy Markdown
Contributor

背景

Dashboard changelog 与 daemon restart-report 会读取 GitHub Releases API。未认证请求在共享出口 IP 下只有较低的速率额度;同时 Node.js fetch 不会自动读取 curl 的 ~/.curlrc / ~/.netrc 登录状态,因此需要一条显式、可移植且可审计的认证路径。

改动

  • 新增共享 GitHub 认证 helper:优先读取 GITHUB_TOKEN,后备 GH_TOKEN;进程环境缺失时只读解析 ~/.botmux/.env,不修改 process.env,不记录或缓存 token。
  • update-checkrestart-report 的 GitHub Releases 请求统一使用该 helper,Dashboard 与 daemon 共用同一认证语义。
  • 默认阻断 token 从 daemon 继承到 worker、再继承到 CLI/tmux pane。
  • tmux 边界做精确隔离:botmux client env 去除继承 token,pane wrapper 先 unset;但不删除用户共享 tmux server 的 global GITHUB_TOKEN/GH_TOKEN
  • 保留 per-bot 显式 env 注入能力,需要 token 的特定 bot 仍可显式配置。
  • 补充中英文环境变量文档。
    本次不新增 Dashboard 设置页、持久化配置或保存接口,也不解析 .netrc,不 shell out 到 curl/gh。

公共层影响

  • 影响 GitHub Releases 更新检查、restart-report、daemon→worker fork 和 worker→CLI/tmux 的默认环境继承。
  • 未配置 token 时保持原有匿名请求行为。
  • daemon 级 GitHub token 默认不会下发给 worker/agent;特定 bot 如需使用,必须通过其自身 env 显式配置。
  • 无 UI 变化,无需截图。
    验证
  • corepack pnpm exec vitest run test/github-auth.test.ts test/child-env.test.ts test/update-check.test.ts test/restart-report.test.ts test/session-lifecycle-start.test.ts test/herdr-backend.test.ts test/tmux-env-isolation.test.ts
    • 7 files / 134 tests 通过。
  • corepack pnpm exec vitest run test/tmux-backend-env.test.ts -t 'wrapper clears every stale managed value|wrapper unsets inherited GitHub tokens'
    • 2 tests 通过。
  • PATH=/tmp/botmux-corepack-bin:$PATH pnpm build
    • 通过。
  • git diff --check
    • 通过。
  • 真实集成验证:显式 unset 当前进程 GITHUB_TOKEN/GH_TOKEN 后,helper 可从真实 ~/.botmux/.env 生成认证 header,且不污染 process.env;GitHub /rate_limit 返回 200、core limit 5000,Releases 与 changelog 请求成功。
  • 标准全量 pnpm test9079 passed / 31 failed。相同 31 条失败已在干净 base 53518e5aa459313f64f354bdc069af24ffab58da 独立复现:25 条来自本机 Git 2.20.1 不支持 git init -b,1 条为既有 tmux keep-shell 失败,5 条为既有 v3 timeout/fence 不稳定;因此不声明“全量测试通过”。
  • 未重启 live daemon:当前机器存在活跃 botmux 会话,为避免影响线上会话,采用隔离测试、build 与真实只读 GitHub API 请求完成验证。

@darylchen97
darylchen97 requested a review from deepcoldy as a code owner July 16, 2026 16:46

@deepcoldy deepcoldy left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

二次 review 完成:未发现阻塞项。已独立核对 GitHub token helper、daemon→worker→CLI/tmux 隔离、以及 per-bot 显式注入路径;聚焦回归与构建通过。workflow ephemeral worker 仍继承 daemon token 作为非阻塞后续项。

@deepcoldy
deepcoldy merged commit cf31bdc into deepcoldy:master Jul 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants