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 ラインの修正 2 件です。1 つは v2 の 2.0.25〜2.0.31 全版に 及んだ web UI archive のサイレント回帰、もう 1 つは前回撤回された 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 は普通に動いていたため、 ここからしか異常が見えない —— それが見逃された原因です。

修正は 3 層構造です:

  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 と共存)

既知の問題