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 仍開放;本建置不依賴它。