hope2333.github.io / wiki

Push261105


Push261105 — v2 web UI archive 修复(2.0.25→2.0.31)+ v1 1.19.5 native 恢复

GitHub Release · 中文版 · English · Español · 日本語 · 繁體中文

概览

本批是 native 线两项修复:一是波及 v2 全部 2.0.25–2.0.31 的 web UI archive 静默回归,二是上一批被撤回的 v1 native 1.19.5 恢复上架。

共 16 包:v2 14 包 + v1 2 包(每版 deb + pacman 双格式),另附 SHA256SUMS 清单。

v2:web UI archive 回归

上游 2.0.25 改写了 app-assets.ts 的 skipBuild 守卫,旧的精确字符串锚点 静默失配 → 补丁被跳过 → 构建产物内嵌 /_assets/ 条目为 0。于是 serve 与 pair 对所有 /_assets/* 请求返回 404——登录后 web UI 白屏。 其它一切正常,TUI 照常工作,这正是它漏网的原因。

修复分三层:

  1. 锚点从精确匹配改为正则锚点,上游格式漂移不再打断补丁;
  2. 锚点缺失即硬失败——不再静默跳过;
  3. 构建后增加 strings 断言,确认产物真的内嵌了资产。

已安装用户自查:

strings -a $PREFIX/bin/opencode | grep -c '/_assets/'
# 必须大于 0 —— 本批每版均为 7

v1:1.19.5 恢复可用

v1 native 1.19.5 上一批被撤回。根因:bun ≥1.4.1 写出的模块图含 UTF-16 体 (encoding=2)与 38 个 Text loader 模块,而 bun 1.4.0 基两者都不认识—— 前者启动即报 Invalid character '\0',后者报 Unexpected identifier。

修法是模块图后处理工具 tools/transplant/fix_graph_for_bun140.py: UTF-16 体转 UTF-8,Text 模块改写为 export default "...",消费点加 namespace shim,被重定位的模块移入死区。不重编 bun,也不依赖上游 bun#47906(该 issue 仍开放)。

v1 pty splice

v1 native 包内现随附 pty splice (lib/opencode1/pty/{librust_pty_arm64_musl_patched.so, shim.so}), POST /api/pty 可用;此前缺 splice 的 native 包在此接口上返回 500。

互斥与共存

验收

判据 结果
v2 2.0.25–2.0.31 逐一 strings -a <runtime> | grep -c '/_assets/' 每版 7
serve 对 /_assets/* 返回 200 通过
v1 1.19.5 TUI 出屏 通过
v1 1.19.5 POST /api/pty 返回运行中进程 通过

安装

curl -fsSL https://hope2333.github.io/repo/install.sh | sh -s -- --install opencode

pacman -S opencode     # v2 主线
pacman -S opencode1    # v1 主线(与 v2 并存)

已知问题