v1.3.4

Go 主控(全平台闭环)& Web 远程桌面/终端 & 合规与反滥用

历时约 10 天,跨 34 次提交。核心交付一个轻量 Go 主控作为 MFC 主控的补充形态——为不便跑 Windows VPS 的用户提供原生 Linux/macOS 主控落点,至此客户端 + 服务端在 Windows / Linux / macOS 上全部打通。同时大幅强化 Web 远程桌面/终端体验,并把授权签名抽象成 Signer 接口,作为分布式多节点拓扑的技术尝试。

Go 主控(全平台闭环,新增)

定位是”功能简单、聚焦于远程桌面 + 远程终端 + 多用户”的轻量服务端,不替代 MFC 主控。两种主控共用同一套客户端,可混搭部署。

  • 单二进制内嵌 server/web/ 资源,开箱即用
  • 屏幕帧端到端转发:H.264 流通过 WebSocket 直发浏览器,WebCodecs 硬解;客户端 graceful BYE 关闭
  • 鼠标 / 键盘输入 + 多用户体系:users.json 持久化、管理员/普通用户分级、按设备组授权
  • Web 远程终端转发:xterm.js + PTY 模式 + graceful close
  • 设备列表稳定排序;客户端下线主动通知浏览器(device_offline),网页不再卡死
  • 安全:登录限流(IP + 用户名双维度)+ WebSocket Origin 白名单 + REST Bearer 鉴权

Go 多节点授权拓扑(新增)

  • Signer 接口 + Local/Remote/NoOp 三种实现,把签发逻辑从主 HMAC 密钥解耦
  • License Server HTTP:/license/sign + /license/heartbeat,JWT RS256 签名,24 小时本地缓存兜底
  • 下游节点跑 RemoteSigner 永远不接触主 HMAC 密钥——作为家庭实验 / 跨实例分布式拓扑的技术尝试

主控 / Web UI

  • 在线主机列表新增实时缩略图列;双击可弹出循环快照预览小窗
  • Web 远程终端:xterm.js + 移动端 UX 打磨(iOS safe-area、图标化工具栏、登出确认)
  • 触控模式视觉光标跟随远端 IDC_* 状态;触控板光标对齐到 SVG 箭头尖
  • 无 GUI 主机也可直接打开终端
  • HTML 从 C++ 内嵌字符串抽离到 server/web/index.html,前端可独立开发调试

合规与反滥用

  • 反代理 RTT 检测 + 分级使用策略 + 免责声明
  • 检测点从授权流程迁到 KernelManager 心跳路径,减小误判面

改进

  • AVX2 运行时探测 + x264 可选编译:旧 CPU 不再启动即崩溃
  • scheduler.h 补齐,覆盖全部任务类型
  • Web 管理员密码独立环境变量 YAMA_WEB_ADMIN_PASS,与主授权密码解耦

Bug 修复

  • 客户端 TCP 心跳硬化对抗半死连接(对端崩了但本地 OS 还认为连接存活)
  • Web 退出远程桌面全屏后设备列表点击无效
  • Web 远程桌面 OEM 非 shifted 符号映射、IME 多字符 commit 丢字
  • 缩略图列在焦点失去时选中背景不一致
  • .RC 文件不使用绝对资源路径

升级提示

  • MFC 主控(YAMA.exe)仍是主推方案:日常运维(文件管理、媒体采集、注册表、品牌定制)继续使用它;Go 主控仅聚焦”远程桌面 + 终端 + 多用户”。
  • Go 主控部署:参见 Go 服务端部署指南
  • 多节点授权部署:下游节点跑 RemoteSigner 调用根节点 License Server,永远拿不到主 HMAC 密钥;详见 server/go/licensing/