Push261104 — 终端修复与 wrapper 双代补齐
GitHub Release · 中文版 · English · Español · 日本語 · 繁體中文
概览
这批不是"又发几个版本",而是修两类静默失效——界面正常、服务正常,只有真正用到终端或按键时才暴露。
- v2 native
2.2.5-2— PTY 修复 - v1 native
1.19.4-2/1.19.5— TUI 输入修复 - v2 wrapper
2.0.0–2.2.5(43 版) - v1 wrapper
1.18.30–1.19.5(12 版)
wrapper 两代均为每版 deb + pacman 双格式。共 118 个资产:4 个 native + 110 个 wrapper 包 + 两份校验和清单。
两个修复的根因
v2 PTY 起不来。 POST /api/pty 恒返
500 ERR_DLOPEN_FAILED。TUI、serve、Web UI
全部正常,只有开终端(TUI 内 pane、远程客户端连 PTY、/goal
一类操作)失败。根因是内嵌的 librust_pty 是 glibc
构建,bionic 没有 libpthread.so.0。
musl + 符号 shim 这条路试过并放弃:能 dlopen,但 Bun 在
POST /api/pty 时 SIGSEGV@0x0——musl
的运行时预期远超 shim 能覆盖的符号数。最终改为为本机直接编译:host 即
aarch64-linux-android,把 bun-pty 的 Rust crate 编成 bionic
件(540 KB),只需补 termios 0.2.2 的 android cfg
与静态链接 libunwind.a。
v1 TUI 只显示不能操作。 进去就吐
^[]10;rgb:…、^[[?1016;0$y,鼠标点击回显成
0;108;22M。不是解析器问题:启动器为了捕获 SIGSEGV 崩溃
stderr,把 TUI
放在后台进程组,它永远拿不到终端前台权,raw
模式设不上(stty 实测 isig icanon echo
全开)——按键要回车才送达,终端对启动探测的应答被 tty 回显成垃圾。
修法是启动器改前台运行(崩溃记录与退出码不变),另加一条等长的二进制守卫,把 opentui 的 CPR 守卫泛化成"出现第二个 ESC 就丢弃"。
wrapper 补齐与两个管线缺陷
v2 wrapper 此前只有 2.0.23–2.0.27,v1 只有 1.18.32–1.19.4。本次补齐到两代各自连续:
- v2:
2.0.0–2.2.5全覆盖 - v1:
1.18.30–1.19.5全覆盖(1.19.5 为新增)
补齐时修掉两个真实缺陷:
family-v2-wrapper从不获取 glibc tarball——它只"期望"文件已存在,2.1.x/2.2.x 因此全线RC=2。现改为缺件时自动npm pack。wrapper-native硬编码包内路径package/bin/opencode,而 2.0.19–2.0.22 的布局不同,tar直接失败。现有回退查找并把实际成员名打印出来。
同时清理了此前误命名的 opencode1-wrapper_2.1.* /
2.2.*(v2 版本被 v1 脚本打包)。
验收
| 平台 | 判据 | 结果 |
|---|---|---|
| Android 9 / kernel 3.18.140 | POST /api/pty 返回真实 zsh 进程 |
通过 |
| Android 9 / kernel 3.18.140 | serve / TUI / 键入 / 15 秒回归 | 通过 |
| Android 16 / kernel 6.6.118 | --version、serve
启动、POST /api/pty 返回运行中进程 |
通过 |
| 全平台 | v1 stty 读数 -icanon、键入免回车、首屏无
rgb: 垃圾 |
通过 |
| 构建门 | 每个 v2 wrapper 的 --version 必须精确等于目标版本 |
43/43 |
| 资产对账 | 远端 digest 与本地 sha256sum 逐条比对 |
116/116,0 缺 0 错 |
安装
curl -fsSL https://hope2333.github.io/repo/install.sh | sh -s -- --install opencode
pacman -S opencode # v2 主线(或 opencode-wrapper)
pacman -S opencode1 # v1 主线(与 v2 并存)pacman -U opencode-2.2.5-2-aarch64.pkg.tar.xz
pacman -U opencode1-1.19.4-2-aarch64.pkg.tar.xz已知问题
- v1
1.19.5已补发:此前失败是因为 bun 基版本——1.4.0 复活 1.19.4/1.19.5 的模块图会产出运行即崩的二进制,换 1.4.2 即正常;基版本已上移并加包载荷版本门。 - Android 11+ 覆盖有限:主力验证仍在 Android 9,本批次新增 Android 16 / kernel 6.6.118 的 PTY 快速验证;完整 TUI 交互仍建议以 Android 9 / 3.18 为准。
- wrapper 属附录线:能用 native 就用 native;wrapper 与 native 在同一代内互斥,v1 与 v2 可并存。