Nightjar 4.0.0-alpha.2 is the second preview of Nightjar 4.0, the client for Rubylight 3.0. It is a prerelease: Nightjar 3.2.3 stays the version the app and the store offer. It fixes what the Rubylight 3.0.0-rc.4 hardware pass found on our phones, TV and laptop: leaving the stream for Files or Home no longer ends it, a decoder that can't recover ends the stream with the reason instead of freezing, sound on MediaTek TVs drops far less after Wi-Fi stalls, and PyroWave says when another codec streams instead. Nightjar for Windows now has an installer, and Nightjar for Linux comes as a .deb, an .rpm and an AppImage. Everything in 4.0.0-alpha.1 is here too. Most of the new features need a PC with Rubylight 3.0; with any other Moonlight host Nightjar works as before.
Highlights
- Trips out of the stream don't end it. Leaving the stream for Files, Home or another app, even several times in a minute, comes back to the running game every time.
- A decoder that gives up says so. When the video decoder stops working and can't be brought back, for example when a TV runs out of memory, the stream ends with a message that says what failed and what to change, instead of the app closing or the picture freezing.
- Steadier sound on MediaTek TVs. After a Wi-Fi stall, late audio is cut back to the normal buffer in one step: on a TCL TV, dropped audio fell from 233 to 34 in a minute, with the same latency.
- PyroWave tells you when it can't stream. When PyroWave is chosen and the stream runs another codec, Nightjar says so once per PC, with the codec it uses and why.
- Nightjar for Windows and Linux, installed properly. A per-user Windows installer with a Start menu entry and updates in place, and .deb, .rpm and AppImage packages for Linux.
- More resolutions on the desktop. Android's 360p and 480p, common PC and laptop sizes up to 5120x1440 ultrawide, and a Custom entry for any size or frame rate.
Streaming and decoding
- Leaving the stream for Files, Home or another app, even several times in a minute, no longer ends it with "could not reconnect within one minute": each return resumes the game and leaves the reconnect attempts for real connection drops.
- When the video decoder stops working and can't be brought back, for example when a TV runs out of memory, the stream now ends with a message that says what failed and what to change, instead of the app closing or the picture freezing. A decoder that keeps failing before it shows a picture is retried a few times with growing pauses instead of ten times in two seconds. After a decoder gives up, the next stream starts with safer decoder settings, as after a decoder crash, but without a second "Video decoder crashed" message or a settings reset.
- PyroWave says when another codec streams. When PyroWave is chosen and the stream runs another codec, Nightjar says so once per PC, with the codec it uses and why: this device can't run PyroWave (for example a 32-bit app, or its display couldn't be set up), the PC has no PyroWave (or none in HDR), or Full chroma is on. On a device that can never run PyroWave, the codec list says why next to PyroWave, for all PCs and in each PC's own settings. Desktop: when the PC doesn't offer PyroWave, the stream says so once for that PC ("This PC doesn't offer PyroWave, so Nightjar uses HEVC.") and the log says why on every stream; once PyroWave streams from that PC again, a later fallback is told again.
- Android: when the video decoder failed again right after recovering, both decoder threads could wait on each other for good and the picture froze until the stream was stopped. They no longer do.
- Android: a PyroWave stream could show no picture at all, because its frame statistics ran out of memory at the start. They now use a small, fixed amount of memory.
- Android: Loss-based bitrate (Rust engine) now stays within your mobile data bitrate limit on a mobile network, as on desktop. Elsewhere it still raises the bitrate up to twice the starting rate after clean seconds.
- Android: after a Wi-Fi stall, the audio that arrives late is cut back to the normal buffer in one step instead of being dropped a few packets at a time. On a TCL TV, 4K60 Dolby Vision for 60 seconds, the dropped-audio count fell from 233 to 34, with the same audio latency.
Desktop
- Nightjar for Windows has an installer: it installs for your user without administrator rights, adds a Start menu entry, updates in place and keeps your settings and paired PCs. Uninstalling removes only Nightjar's own files, and your settings and paired PCs only when you tick the box for them; your screenshots and saved statistics stay.
- Nightjar for Linux comes as a .deb, an .rpm and an AppImage, next to the tar.gz. The packages bring the sound and display libraries Nightjar needs to start.
nightjar --versionprints the desktop client's version, into the console it was started from.- Resolution offers Android's 360p and 480p and common PC and laptop sizes (16:9, 16:10 and ultrawide up to 5120x1440), and Resolution and Frame rate each have a Custom… entry for any size or rate.
- PC render resolution (once called PC display scaling) is named, described and ranged (50-200 %) like on Android. It sets the resolution the PC renders its virtual display at, above or below the stream's; it doesn't change the size of text. A saved value above 200 % now reads as 200 %.
- A dropped stream now reconnects on its own while the Nightjar window is open behind another window or a dialog; before, it only did with the window focused. A minimized window still waits for you.
- An unattended stream started with NIGHTJAR_AUTOSTREAM now reconnects after a dropped connection like any other stream instead of quitting, and its set length counts from its first start.
- A PC's details page now shows Shared folders and Co-op where the PC offers them, and streams from such a PC copy images through the clipboard, resumed streams too. When the PC no longer lists this device, or another PC answers at its address, its folders, files, USB and co-op are no longer offered.
- A renamed file transfer shows both names with a mark the font has, not a box.
Android and TV
- Sharing files into Nightjar from another app lists your PCs instead of closing the app.
- Scanning a pairing QR code that was already used or has expired says to show a new code on the PC, instead of asking you to check the network. The Add PC hint no longer says to turn on QR pairing, which is always on.
- Android TV: a PC's settings follow whether the PC answers, so the connection test and the other PC rows are no longer greyed out on a PC that is online. TVs and Wi-Fi tablets no longer show the mobile data rows, unless a limit set earlier still applies. The Settings rail's top row stays whole when its last row is selected.
- Changing the bitrate or frame rate just as the PC ends the stream now says the stream ended before the change was sent.
Tested. Lint, the Android unit tests, the Rust protocol tests and the desktop checks pass in CI on this build, and the release build installs, starts and removes the .deb, .rpm and AppImage on Ubuntu and Fedora and upgrades and removes the Windows installer. Against a Rubylight 3.0 PC with an RX 7900 XT:
- Retroid Pocket 6 (Android 13): three trips to Files within two minutes each came back to the running game, with no recovery message. With Recover interrupted streams on, a 5 s Wi-Fi drop reconnected and resumed the game, and Back cancelled the retries; with it off, the stream ended without retrying. At 0.3 % loss with outage bursts, H.264 and HEVC streams had no decoder hang, and this device's own error correction lost no more frames than the PC's (15 against 18 on HEVC). With "Render through Vulkan", the per-display check took HLG where the standard call refused it, and the screen showed HLG. A used pairing link was refused with "show a new code" and paired nothing. Two files shared from the Files app went to the PC and arrived with matching checksums.
- TCL C6K TV (MediaTek MT9689, Android 14): HEVC HDR10 at 4K60 ran 60 s with no decoder hang. With "Render through Vulkan" at 4K60 HDR, where the TV's HEVC decoder kept failing, the stream ended after five spaced-out recoveries with the reason on screen instead of closing the app. Dropped audio in a 60 s Dolby Vision stream fell from 233 to 34, with the audio output's latency at 124 ms before and after. With PyroWave chosen on this 32-bit TV, Nightjar said the stream uses AV1 because PyroWave needs a 64-bit app.
- Nightjar for Windows on a Radeon 780M laptop, against Rubylight on the same laptop: an unattended stream reconnected by itself after the host stopped for 20 s, with its window behind another one, and resumed the game.
The APKs are signed by CI with the Nightjar release key; the desktop packages (Windows installer and zip; Linux .deb, .rpm, AppImage and tar.gz) are not signed. SHA-256 hashes of everything are in SHA256SUMS-4.0.0-alpha.2.txt.