v1.3.6

ROI 区域捕获 & Web 音频流 & 主界面可用性全面提升

历时约 14 天,跨 25 次提交。本版本围绕四条主线:服务端 ROI 区域捕获(Z 按钮拖选 + 客户端限定捕获区域,大幅节省带宽)、Web 远程桌面音频流(客户端 PCM 实时推送给浏览器,工具栏音频开关)、主控界面可用性全面补强(可拖拽分割条、消息日志面板开关、多处 CSV 导出)以及许可证工具链issue-token CLI + 匿名试用配额)。同期累积了 9 项 Bug 修复,涵盖 RTT 计算虚高、残留图像、缩略图误清、macOS 触控等多个长期痛点。

ROI 区域捕获(Z 按钮)

  • 工具栏新增 Z 按钮:点击后在远程画面上拖选矩形,向客户端发送 COMMAND_SCREEN_ROI,将捕获区域限定在选框内——仅传输感兴趣区域,远端带宽按比例下降
  • 客户端 ScreenCapturerDXGI / CScreenSpy 均已适配:收到后重启采集,只裁剪并传输指定矩形;发送 {0,0,0,0} 清除 ROI、恢复全屏
  • 三状态机:Z 按钮 InactiveArmed(等待拖选)→ Active(ROI 激活,Z 高亮蓝色);拖选框小于 20px 自动回到 Armed 状态
  • 蓝色虚线选框:拖选过程中实时绘制,与红色缩放框(Q)、绿色截图框(S)视觉明确区分
  • 坐标经 ScreenRectToImageRect() 映射并含边界钳制,保证发出的坐标始终合法

与控制模式的交互:点击 Z 按钮时若处于控制模式,系统自动先退出控制模式再进入 ROI 选择;已激活的 ROI 在进入控制模式后继续保持。

Web 远程桌面:音频流

  • 客户端 PCM 音频转发:捕获客户端桌面音频,通过 WebSocket 实时推送给所有 Web 观察者,前端 Web Audio API 维持连续无中断播放缓冲
  • 工具栏音频开关:全屏工具栏新增 🔊 音频切换按钮,可即时开启 / 关闭音频接收;默认关闭,规避浏览器自动播放限制

Web 远程桌面:界面增强

  • 实时带宽读出:Web 全屏页面实时显示当前接收带宽(KB/s)
  • 可折叠全屏工具栏:工具栏支持一键折叠 / 展开,折叠后画面可用区域最大化
  • 主机备注随主机名显示:在线列表中主机名旁同步展示备注字段,无需悬停即可识别机器

主控界面可用性提升

  • 可拖动分割条:主机列表 / 消息日志区域间新增可拖动分割条,替代固定比例布局,偏好自动持久化
  • 消息日志面板一键切换(HideMsg):菜单新增 HideMsg(带 checkmark),一键隐藏 / 显示消息日志面板
  • 在线主机信息 CSV 复制:右键选中主机后,IP / 机器名 / 备注等以 CSV 格式复制到剪贴板
  • 消息日志 CSV 复制:消息日志支持选中多行后一键复制为 CSV,方便批量导出

Go 许可证工具链

  • issue-token CLI 子命令yama-server issue-token 直接在命令行签发 JWT,运营侧无需访问 Web 界面
  • 匿名试用模式 + 服务端配额强制:用户无需注册账号即可在全局配额内体验;超额自动拒绝

授权与安全

  • AuthKernel 绑定机器 ID:鉴权改用 Machine ID,解决多客户端部署场景下 IP 识别不准确的问题
  • 主控 / 服务端一键卸载菜单:主控界面新增菜单直接触发受管端软件卸载,无需登录远端手动操作

改进

  • macOS 客户端正确读取质量配置(FPS / 比特率),支持超分辨率时硬件降级缩放,与 Windows 端行为对齐
  • 新增客户端构建特性开关宏,简化合规定制场景的 binary 裁剪

Bug 修复

  • RTT 计算排除服务端 UI 队列延迟,消除数值虚高
  • 非自适应滚动模式下帧边界外残留图像
  • 子连接断开(如 RDP)误清主连接仍在线主机的缩略图
  • Shellcode+AES 加载器路径 ServerDll / TinyRun 构建失败
  • macOS 触控双击失效修复;滚动步长 10px → 40px 每格
  • 单显示器捕获误触黑屏检测,导致捕获无端重启
  • 键盘输入日志每 10 分钟自动落盘,防进程退出时丢失
  • 重连时 share_list 出现重复子客户端
  • InitControl() 调用时机修正,消除列标题空白

升级提示

  • ROI 需双端升级:服务端可发送 COMMAND_SCREEN_ROI,但客户端执行裁剪也需升级到 v1.3.6
  • Web 音频默认关闭:需用户在工具栏主动开启,规避浏览器自动播放策略;服务端无需额外配置
  • issue-token 仅 Go 主控:该子命令仅在 Go 主控二进制中可用,MFC 主控无此命令行入口
  • 匿名试用配额:升级前默认配额为 0(关闭),需在 config.ini 中显式配置 TrialQuota 后生效