Skip to content

MoonlightWeb v0.1.3 — seamless quality switching

Choose a tag to compare

@github-actions github-actions released this 19 Jul 15:13

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-worker child 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 Del from 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).