MoonlightWeb v0.1.3 — seamless quality switching
MoonlightWeb v0.1.3 — seamless quality switching
A release centred on what happens when the network gets worse: the stream now adapts without ever interrupting play — no loader, no black frame, no lost input. MoonlightWeb streams your Sunshine gaming PC to any device with a browser — you still install one app on the gaming PC only; every other device just opens a URL.
Streaming
- Transparent quality switching — when congestion forces a quality change (or the network recovers and quality goes back up), MoonlightWeb opens the new stream as a hidden standby session alongside the live one and swaps the display on its first decoded frame. Input, audio, pointer lock and fullscreen follow the swap; the old session retires quietly behind it. Previously every change meant a visible reconnect.
- A degrade ladder that actually saves bandwidth — each rung now cuts the bitrate too (-50% on the first rung, -30% after, floored at 2 Mbps) and steps the resolution down one rung at a time to a 720p floor, with video enhancement (SGSR) switched on automatically to compensate. Then media transport, then a 60 fps cap. Dropping resolution alone barely shrank the encoded stream.
- Automatic recovery — once the network holds up again, quality climbs back on its own.
- Seamless switching is always on — the setting is gone; hosts that can't run two concurrent sessions fall back to the previous freeze-frame relaunch automatically.
Under the hood
- One process per session — streams now run in dedicated
--stream-workerchild processes, lifting the single-session limit that came from moonlight-common-c's process-global state. The parent supervises each worker, detects crashes and releases the slot cleanly. - Aligned with Sunshine's session model — a second client joins the running app through
/resume(not/launch), and retiring one leg of a dual stream no longer cancels the shared host app session for the survivor. - Sunshine configured for two clients — provisioning raises Maximum Connected Clients to 2 when it's lower, leaving higher values untouched. The extra client certificate and its double pairing are no longer needed and have been removed.
Fixes
- No more black screen on a static host screen — Sunshine only encodes on screen damage, so a requested keyframe could never arrive (typically on the pairing page). The buffered keyframe is now displayed instead of being discarded as stale.
- Internet access: no more intermittent 502 — every ACME and DNS request now sends a
MoonlightWeb/<version>User-Agent; Qt sends none by default, and ZeroSSL's front-end answered UA-less requests with an HTML 502. - Press-and-hold now repeats
Delfrom the on-screen toolbar. - Clearer self-stream notice — it now spells out that MoonlightWeb is installed on the PC being streamed.
Installer
- Prior Internet authorization is remembered — on Windows and macOS, re-installing pre-ticks "allow Internet access" when the server was already authorized. First installs stay unchecked: the initial opt-in always requires an explicit click.
Docs & website
- New pages on moonlightweb.top — an FAQ and step-by-step install guides for Windows, Linux and macOS.
Downloads
Install on the gaming PC only:
| Platform | Asset |
|---|---|
| Windows x64 | MoonlightWeb-installer-0.1.3-win-x64.exe |
| Windows ARM64 | MoonlightWeb-installer-0.1.3-win-arm64.exe |
| macOS (Apple Silicon) | moonlightweb-0.1.3-macos-arm64.pkg |
| Linux (Debian/Ubuntu/Mint) | moonlightweb-0.1.3-linux-x64.deb |
| Linux (Fedora/RHEL/openSUSE) | moonlightweb-0.1.3-linux-x64.rpm |
| Linux (portable) | moonlightweb-0.1.3-linux-x64.AppImage |
Playing from a phone, tablet or TV? Nothing to download — just open your server's URL in the browser.
Requirements
- A gaming PC running Sunshine (the installer can set it up for you).
- A modern browser on the client device (Chrome/Edge recommended for full codec, HDR and WebGPU support).