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 並存)

已知問題