|
|
d6dd84e1c8
|
fix(gui): 启动期误判服务端未启动;keybd_event 类型名致组合键全废
## 修 GUI 反复误判「服务端未启动」
isServerRunning() 硬编码 http://localhost:8080/。实测该部署下服务端在
192.168.2.60:8080(homed 跑在 WSL 里):
localhost:8080 -> 000 连不上
192.168.2.60:8080 -> 302 正常
于是每次启动都:探测失败 → 误判服务没起 → 去 startHomed() 拉起 GUI 旁
并不存在的 homed.exe(findHomed 返回 null 就 skip)→ 再 waitForServer()
干等 8s 超时 → 打印 "homed failed to start within timeout"。
gui.log 里这条 ERR 累计出现 53 次,是日志里唯一的错误项。
改法:
· serverProbeTargets() 按「connections.json 里已配置的连接(当前连接
优先)→ localhost」顺序探测,命中任一即视为在线
· 服务可达时直接 skip homed 自动拉起
· 无本地 homed 可执行文件时不再空等超时,直接说明情况
· probeOne 加超时保护,避免启动被挂住
实测:修复后启动日志为 "server reachable, skip homed autostart",
该 ERR 不再出现。
## 修 keybd_event 类型名(组合键整体失效)
koffi 不认 Win32 的 `byte`:
"void keybd_event(byte bVk, ...)"
-> Error: Unknown or invalid type name 'byte'
"void keybd_event(uint8 bVk, ...)" -> 正常
原代码用的正是 `byte`,且整段包在空 catch 里,于是 keybd_event 恒为 null,
所有组合键(keypress/hotkey)都返回 "keybd_event unavailable"。
这个 bug 很难被发现:单键 click/move/scroll 走 mouse_event,不受影响。
端到端实测确认:修复前 hotkey ctrl+shift+t 报
computeruse hotkey: keybd_event unavailable
另外签名解析失败现在会打日志,不再静默。
## 判据
computeruse.test.mjs 扩到 38 条(进 npm test,全量 121 条全绿),新增:
· keybd_event 签名类型(且已做变异验证:改回 byte 判据立即转红)
· 服务探测不只探 localhost / localhost 仅兜底 / 仅当有 homed 才拉起
· 服务可达时 skip autostart / 探测有超时保护
|
2026-10-02 13:03:17 +08:00 |
|