Skip to content

LoopCtrl v0.3.1

Choose a tag to compare

@github-actions github-actions released this 29 Oct 07:36

LoopCtrl 0.3.1:远程画面的稳定性和流畅度。修掉「能操作但画面不动、刷新才恢复」,每个观看端有了自己的编码器,中继断线后会自己连回,并新增可选的「系统录屏推流」。中继继续用 server-v0.3.0 即可。/ Steadier, smoother remote screen. Fixes "actions work but the picture is frozen until a reload", gives every viewer an encoder of its own, reconnects to the relay by itself after a drop, and adds an optional System Broadcast. The relay stays at server-v0.3.0.

🐞 修复 / Fixes

  • 画面停住、操作照常、刷新才好:LoopCtrl 在前台时建的硬件编码器,一回到后台(比如在网页上按了主屏幕)就被 iOS 作废,之后帧进去什么都不出,也不报错。现在 LoopCtrl 进出前后台时编码器都会重建,编码报错或一秒没有输出也会马上换一个新的;控制页自己也会检查:帧来了画不出来就换播放器,操作后没有新画面就要关键帧,再没有就重连 / Frozen picture while actions still work, until a reload: iOS invalidates a hardware encoder made while LoopCtrl was in front once LoopCtrl goes to the background (pressing Home from the page is enough), and frames then went in with nothing coming out and no error. Encoders now restart whenever LoopCtrl moves between foreground and background, and any encoder that errs or returns nothing for a second is replaced at once. The control page also checks the picture itself: frames that arrive but aren't shown get a new player, and an action with no new frame asks for a keyframe, then reconnects
  • 中继断线后不再一直离线:以前重连 5 次失败就关掉自动连接,要手动再连。现在一直在后台重试(每 30 秒,网络变化时立即),Wi-Fi 和蜂窝切换时马上换新隧道 / No longer stuck offline after a relay drop: five failed reconnects used to turn auto-connect off until someone reconnected by hand. The phone now keeps retrying (every 30 s, at once when the network changes), and opens a new tunnel as soon as it moves between Wi-Fi and cellular
  • 切换标签页不再断流重连:页面隐藏 15 秒内回来,继续用原来的流 / Switching tabs no longer restarts the stream: a page back within 15 s keeps its stream

🔧 改进 / Improvements

  • 每个观看端一个编码器(最多 3 个,再多的按相同画质共用):新观看端加入不再改掉别人的画质和编码格式,中继上慢的观看端也不再拖慢局域网上的 / An encoder per viewer (up to three; more share one of the same quality): a viewer joining no longer changes everyone else's quality and codec, and a slow viewer on the relay no longer slows one on the LAN
  • 静止画面少截图:画面 1 秒没变就降到每秒 10 次检查,一变或一操作立刻恢复全速,手机更凉 / Fewer screenshots of a still screen: after a second without change it is checked 10 times a second, back to full rate the moment it changes or an action lands, so the phone stays cooler
  • 通过中继打开的控制页可以走局域网直连(Chrome / Edge,首次会询问「本地网络访问」):手机和浏览器在同一局域网时,控制和画面直接走局域网,失败自动回到中继 / A control page opened through the relay can go direct on the LAN (Chrome / Edge, which ask once for local network access): when the phone and the browser share a LAN, control and video go there, falling back to the relay on any failure
  • 系统录屏推流(可选,设置 › 系统录屏推流):画面改由 iOS 系统录屏提供,不再逐帧截图;每次在首页点「开始」,运行时有红色录屏标记,结束后自动回到截图。控制页状态栏显示当前是「截图」还是「系统录屏」 / System Broadcast (optional, Settings › System Broadcast): the screen comes from iOS screen recording instead of screenshots; start it on the home screen each time, it shows the red recording indicator, and screenshots take over again when it ends. The control page's status line says which one is in use

📥 下载地址 / Downloads

  • iOS 应用 App(未签名 IPA,需自行重签后侧载):LoopCtrl.ipa — 可直接覆盖旧版 LoopCtrl;新增一个录屏扩展(<bundle id>.broadcast),用免费账号侧载时会多占一个 App ID / installs over the older LoopCtrl; it now carries a screen-broadcast extension (<bundle id>.broadcast), which takes one more App ID on a free signing account
  • 全部文件的 SHA256 / Checksums:SHA256SUMS.txt

Bundle version 0.3.1 (build 4).

Install

Download LoopCtrl.ipa. It is one app and takes one sideloading slot. It
replaces an older LoopCtrl install. Check it against SHA256SUMS.txt if you
like.

  1. Re-sign and install it: the latest SideStore (My Apps → +) with a free
    Apple ID, or on a Mac Scripts/sign-ipa.sh -i LoopCtrl.ipa.
    Signers that skip the nested .xctest produce an app that crashes on open.
  2. Trust the certificate under Settings → General → VPN & Device Management,
    and turn on Developer Mode.
  3. Below iOS 27, pair once over USB with
    LoopCtrl Pair (Windows,
    macOS, Linux, Android) or import a pairing file. On iOS 27 and later, pair
    on the phone.
  4. Open LoopCtrl → mount the Developer Disk Image (with LocalDevVPN or
    Shadowrocket connected) → Start. The first start asks for your passcode
    and for Notifications and Local Network access.

The package is unsigned, so iOS will not install it as-is. It carries no
provisioning profile, no team id and no device identifiers.

See the README for
requirements by iOS version, pairing approval, LAN and remote access, and the
API.