本文档记录面向使用者的版本发布说明。开发过程中的细节记录见 CHANGELOG.md。
- 修复多窗口或多视图同时打开时,同一设备 scrcpy 底层流被反复取消和重启导致的投屏闪动。
- 提高多设备投屏在短暂丢帧、WebSocket 重连和 decoder 重建时的画面稳定性。
- 修复打 tag 后 GitHub Actions 只上传 workflow artifact、不上传 GitHub Release 附件的问题。
- 后端同一
serial + host + port的视频流改为复用单个 scrcpy 会话,并用 webview client lease 做引用计数,最后一个窗口释放后才停止底层流。 - 前端遇到可恢复的 H.264 序号跳变、decoder 重置或本地 WebSocket 重连时保留最后一帧,不再立即隐藏 canvas。
starting和reconnecting状态不再清空画面,只有disconnected或stopped才清除视频帧。- WebSocket 发送队列容量提升,降低多路投屏瞬时背压造成的丢包概率。
- Release workflow 新增独立
releasejob,会在 tag 构建完成后统一下载产物并上传.dmg、.msi、.exe到 GitHub Release。
本版本已通过以下检查:
npm test
npm run build
cargo test- 优化多设备 scrcpy 视频流稳定性和断流重连速度。
- 提升批量点击 USB 模式弹窗时的触发成功率。
- 优化初次加载和翻页时的视频流启动速度。
- 改进断流时的前端状态展示,避免旧画面误导操作判断。
- 视频流 EOF 或读取错误后会立即向前端显示断开状态。
- 稳定运行超过 2 秒的视频流断开后,先等待 500ms 再重连,给 USB 模式切换和 ADB 重枚举留出缓冲。
- USB 模式切换后的
device not found使用快速重试窗口,减少长时间卡在重连状态的情况。 - 重连成功后会重新建立 scrcpy server、TCP 视频流和 control socket。
- 前端在断流清帧后,新流首帧到达时会重新显示 canvas,修复
Receiving...但黑屏的问题。
- 批量点击优先使用 scrcpy control socket,减少 ADB
input tap的延迟和不稳定。 - scrcpy tap 的
ACTION_DOWN和ACTION_UP合并为一次 socket 写入,降低 USB 模式弹窗点击时事件被重枚举打断的概率。 - 去除批量点击后的 USB/MTP 状态确认,点击写入成功后立即进入下一台设备,显著缩短 29 台设备一轮点击耗时。
- control socket 在视频流 EOF 时会及时移除,避免复用失效连接。
- scrcpy 启动并发从 2 提升到 4,提高初次加载当前页视频流的连接速度。
- 当前页设备优先启动视频流。
- 翻页时保留当前页并预热相邻页设备视频流,减少下一页等待时间。
- 自动唤醒设备延后执行,避免和 scrcpy 启动阶段抢占 ADB 资源。
- 视频流断开、重连、接收状态更直接显示在设备卡片上。
- 断流后清除旧视频帧,避免误以为仍在实时显示。
- 恢复接收后首帧自动重新显示,无需手动刷新页面。
- 修复部分设备批量点击时 control socket 已写入但后续状态判断拖慢整轮操作的问题。
- 修复 USB 模式切换导致视频 EOF 后重连等待过长的问题。
- 修复断流后前端
streamFrames被清理但同尺寸新流不会重新显示的问题。 - 修复批量控制和视频重连争抢 ADB 信号量导致重连被饿死的问题。
- 批量点击不再验证 USB 是否最终切到 MTP;结果中的
ok表示点击事件写入成功。 - USB 模式切换导致的视频流断开属于预期现象,应用会自动重连。
- 翻页时相邻页设备会被后台预热,因此同时保持的视频流数量会比当前页设备数更多。
本版本已通过以下检查:
npm test -- --run
npm run build
cargo test验证结果:
- 前端单元测试:31 passed
- Rust 单元测试:49 passed
- 前端生产构建:通过
- 批量点击 USB 弹窗时,如果需要确认设备最终 USB 状态,需重新启用或另行实现后台并发验证。
- 大批量设备同时 USB 重枚举时,部分设备仍可能短暂显示
device not found,属于 ADB 枚举过程。 src-tauri/-是当前工作区内未跟踪的临时文件,不属于发布内容。
- 修复设备信息获取不完整的问题。
- 通过
adb shell wm size获取真实屏幕分辨率。 - 通过
adb shell getprop ro.product.model获取设备型号。 - 通过
adb shell dumpsys battery获取电池电量。 - 修复点击和滑动坐标映射因设备分辨率为 0 失效的问题。
- 修复前端传递浮点
sourceWidth/sourceHeight导致后端u32校验失败的问题。
- 多 ADB 服务器管理。
- 多设备列表与在线状态展示。
- 设备禁用/启用。
- 分页设备网格。
- 实时截屏预览。
- 批量点击、滑动、文本输入、按键事件和 shell 命令。
- 单设备 scrcpy 独立投屏入口。
- 深色主题界面。