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
恢复上架。
- v2 native
2.0.25–2.0.31(7 版)— web UI/_assets/修复 - 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
照常工作,这正是它漏网的原因。
修复分三层:
- 锚点从精确匹配改为正则锚点,上游格式漂移不再打断补丁;
- 锚点缺失即硬失败——不再静默跳过;
- 构建后增加 strings 断言,确认产物真的内嵌了资产。
已安装用户自查:
strings -a $PREFIX/bin/opencode | grep -c '/_assets/'
# 必须大于 0 —— 本批每版均为 7v1: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。
互斥与共存
- 同一代内 native / wrapper / compressed 互斥,只能装一种形态。
- 跨代
opencode1*(v1)与opencode*(v2)可双装共存。 - 所有 v1 包版本号均在
2.0.0以下。
验收
| 判据 | 结果 |
|---|---|
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 并存)已知问题
- v1
1.19.5老设备首屏:bootstrap 阶段可能等待约 75 秒;触发一次 resize 强制重绘后一切正常。 - v1
1.19.5与1.19.4可互换回退。 - 上游 bun#47906 仍开放;本构建不依赖它。