Skip to content

v0.5.5

Choose a tag to compare

@github-actions github-actions released this 01 Sep 05:16
· 9 commits to main since this release

v0.5.5

修复本地一键启动在重启场景下必然 401 的死 token 问题。dsh-web.log 只追加不轮转,旧实例的 token 行会一直留在文件里,而 dsh web 每次重启都换 launch token;原实现对全量日志取最后一条 ?token= 行、找到即返回,点击时 web 已在跑(走重启路径)就会把上一实例的死 token 交给浏览器,新实例数秒后才打印自己的 token 行——401 必现。Windows 等无授权插件的原生 token 鉴权环境直接暴露,macOS 开发机因 web profile 装有授权插件、鉴权被整个旁路而死 token 也放行,问题被掩盖。

Changes

  • token 解析绑定本次启动dsh_start_web 在 spawn/restart 动作前记录日志字节锚点,解析只看锚点之后追加的区域(fresh_log_region)——重启后只认本次实例自己打印的 token 行,旧实例的死行永远进不了候选
  • 兜底回退保持不变:新区域始终无 token 行(如 web 由外部手工启动、token 只落在终端)仍回退裸地址;锚点越界(日志被清空/轮转)按空区域处理,不再交出来历不明的旧行
  • 重试窗口 10→20×500ms:打印与端口就绪先后无保证,加长窗口减少无谓的裸地址回退;拿到 token 行立即返回,正常路径无额外等待
  • 新增区域绑定单元测试:新区域无 token 行时返回空、本次打印后只认新 token、锚点越界与多字节字符中间两个安全兜底

验证

  • cargo test:60 项全部通过(含新增区域绑定测试)
  • cargo clippy --all-targets:无告警
  • vitest:25 项全部通过
  • pnpm run check:release -- --tag v0.5.5:版本三处一致、release notes 存在、bundle resources 路径有效

已知边界

  • dsh 检测的 local_url(集成卡 Open/复制按钮)无启动锚点,web 被外部手段重启后仍可能给出死 token,后续以探测裁决或 dsh 侧查询端点解决
  • 连续多次点击一键启动无并发互斥,互相顶掉刚拉起的实例(日志中 EADDRINUSE 假失败),后续单独处理