hope2333.github.io / wiki

Push261105


Push261105 — Reparación de web UI archive en v2 (2.0.25→2.0.31) + v1 1.19.5 native restaurado

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

Resumen

Dos reparaciones en la línea native: una regresión silenciosa del web UI archive que afectó a todas las versiones v2 de 2.0.25 a 2.0.31, y la restauración de v1 native 1.19.5, retirado en el lote anterior.

16 paquetes en total: 14 de v2 + 2 de v1 (deb + pacman por versión), más un manifiesto SHA256SUMS.

v2: regresión del web UI archive

El upstream reescribió en 2.0.25 la guarda skipBuild de app-assets.ts. El ancla exacta anterior dejó de coincidir en silencio, el parche se omitió y el binario resultante salió con cero entradas /_assets/ embebidas. serve y pair respondían 404 a todas las peticiones /_assets/* — el web UI mostraba una pantalla en blanco tras el login. Todo lo demás funcionaba y la TUI seguía operativa, que es justamente por lo que pasó desapercibido.

La corrección tiene tres capas:

  1. ancla por expresión regular en lugar de coincidencia exacta, para que los cambios de formato del upstream no rompan el parche;
  2. fallo duro si falta el ancla — se elimina la omisión silenciosa;
  3. aserción strings tras la compilación que verifica que el binario realmente embebe los assets.

Auto-verificación en una instalación v2 native:

strings -a $PREFIX/bin/opencode | grep -c '/_assets/'
# debe ser > 0 — en este lote todas las versiones traen 7

v1: 1.19.5 restaurado

v1 native 1.19.5 fue retirado en el lote anterior. Causa raíz: bun ≥1.4.1 escribe grafos de módulos con cuerpos UTF-16 (encoding=2) y 38 módulos Text loader, y la base bun 1.4.0 no entiende ninguno de los dos — el primero cae con Invalid character '\0', el segundo con Unexpected identifier.

La corrección es un posprocesador del grafo, tools/transplant/fix_graph_for_bun140.py: los cuerpos UTF-16 se convierten a UTF-8, los módulos Text se reescriben como export default "...", los puntos de consumo reciben un namespace shim y los módulos reubicados se aparcan en una zona muerta. Sin recompilar bun y sin depender del bun#47906 del upstream (el issue sigue abierto).

splice de PTY en v1

Los paquetes v1 native ahora incluyen el splice de PTY (lib/opencode1/pty/{librust_pty_arm64_musl_patched.so, shim.so}), por lo que POST /api/pty funciona. Los paquetes native sin el splice devolvían 500 en ese endpoint.

Compatibilidad

Verificación

Comprobación Resultado
strings -a <runtime> | grep -c '/_assets/' en v2 2.0.25–2.0.31 7 por versión
serve responde 200 para /_assets/* pasa
v1 1.19.5 TUI se dibuja en pantalla pasa
v1 1.19.5 POST /api/pty devuelve un proceso en ejecución pasa

Instalación

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

pacman -S opencode     # línea principal v2
pacman -S opencode1    # línea principal v1 (coexiste con v2)

Problemas conocidos