Vibepollo 2.0.1
These release notes cover the stable 2.0.1 releases, from the original stable release through this update.
2.0.1
Notice: Vibepollo may trigger false-positive antivirus alerts. Details and workarounds are documented here: Nonary/vibeshine#59
Changes
- Added optional wired USB DualSense emulation on Windows x64 for native waveform haptics. Select DualSense USB audio and haptics in the installer; it is off by default and may require a restart. When available, automatic DualSense selection uses its HID and audio endpoints, including Desktop and Steam Big Picture. The per-application DualSense waveform haptics option can force DualSense and wait for readiness. Moonlight's keep controllers attached after disconnect setting preserves the audio endpoint across a paused application. Requires a compatible game and a Moonlight client with waveform support. See the setup guide.
- Added
dualsense_haptics_gainfor waveform feedback on Windows and Linux, from0.0to4.0with1.0as the default. Boosting preserves actuator contrast within available headroom; ordinary rumble and adaptive triggers are unchanged. - Raised the configurable virtual-display client limit to eight on Windows and Linux. The default remained four; set
virtual_display_max_clientsto1–8. Game and Remote Monitor sessions from the same paired client share a slot. Existing four-output Linux pools remain intact; reboot or safely reprovision with the host and compositor stopped before requesting more than four clients. - Added dashboard status and recovery for orphan virtual screens, including recovery when physical monitors wake or return. Added a Linux virtual-display termination action in Maintenance that reports display removal separately from desktop restoration and interrupts video using those outputs.
- Added saved relative Windows client-display arrangements under Devices → Arrange client displays, with direction, alignment, spacing, and Preserve / manual options. Supported extended sessions retain those choices across connections.
- Added shared automatic focus settings for managed Steam, Lutris, and Playnite launches across supported platforms. The default makes three confirmed attempts within 15 seconds; setting the attempt count or timeout to zero disables it. Manual applications and Desktop launches are excluded.
- Added a Windows Playnite installation-directory setting for portable or undetected installations, and replaced the Playnite 10 PowerShell connector with a compiled plugin supporting library notifications and launch/reconnect handling. Playnite 11 requires a separate compatible connector.
- Added authenticated, paced UDP bandwidth calibration for paired PyroWave clients, using frame-shaped traffic, loss and stability checks, and confirmation at a lower rate when needed. Compatible clients receive critical FEC overhead for their bandwidth recommendations; older clients retain HTTPS calibration. Run calibration with no active stream over a fast wired LAN using the Nonary VRR Moonlight Client.
- Added Windows service-startup controls in Troubleshooting/Maintenance. Disabling automatic startup sets the installed service to Manual, leaves an existing session running, and reports the actual service mode or permission failure.
- Expanded Everyday settings into grouped display, smoothness, PyroWave, Remote Monitor, and game-library setup controls. Everyday and detailed settings share pending edits, show platform-appropriate options, and retain unsupported saved limiter choices without silently replacing them. Standard FEC accepts
1–255; unchanged legacy zero values still allow unrelated edits. - Made native AMD AMF the automatic Windows encoder choice and changed the default AMD quality preset to Speed, preserving explicit settings. Reduced ready-output delay and stale-frame backlog. Automatic selection can retry once with compatible FFmpeg AMF after an eligible initialization failure while preserving codec, depth, chroma, and HDR; explicit encoder choices stay strict. Added an experimental native AV1 tile override (
amd_av1_tiles = 1,2, or4). - Enabled prerelease update notifications by default while preserving saved stable-only choices. Update checks use release API data without downloading metadata assets or installers, recognize qualified daily builds, and require a package for the host platform. Dismissed Web UI notices and delivered tray notifications remain remembered; each tray notification opens its own release page.
- Added verified upgrades for newer self-signed Windows display and gamepad drivers. Gamepad selection discloses and authorizes trust for the exact bundled certificate; package signatures and identities are checked before trust or driver changes. Equal or newer installed components retain their driver and certificate state.
Fixes
- Improved Windows desktop restoration after broken helper connections, partial restores, and returning physical monitors. Saved layouts remain available until their topology, modes, primary display, and positions are verified; recovery honors saved preferences and disabled scheduled tasks.
- Fixed Remote Monitor teardown removing or changing displays still used by RTSP or WebRTC capture. Cleanup protects other clients, retains failed removal for retry, and can remove the disconnected client's screen even when restoring the remaining layout fails. Retained remote sessions keep their displays when a game ends.
- Fixed Windows Graphics Capture shutdown and reinitialization crashes, capture starting before display setup settled, and live HDR/SDR changes leaving streams forced into HDR. Capture now drains callbacks safely, cancels pending helper handshakes, and follows confirmed output color changes.
- Preserved driver-owned Windows HDR calibration when virtual displays are reused, including when monitor metadata is unavailable. Shipped the virtual-display driver's BT.2020/D65 HDR gamut correction and both 32-bit and 64-bit Vulkan HDR layer payloads.
- Fixed Windows virtual-display refresh overrides and mappings using a promoted capture rate instead of the requested stream FPS. Manual and mapped choices take precedence, while automatic high-refresh modes respect Windows 10 and pre-24H2 Windows 11 display limits.
- Fixed Xbox clients being automatically identified as DualSense by Windows VHF, corrected DualSense GameInput identity, and updated virtual-gamepad report ownership and Switch initialization. Bounded Windows input recovery retries during desktop transitions.
- Kept original Windows playback-role restoration queued when Steam audio-visibility recovery fails, while preserving newer user-selected defaults.
- Kept the Linux Web UI responsive during display queries and restoration, and preserved recovery intent across stream teardown, host crashes, and connector retirement. Physical-only snapshots prevent virtual outputs from being mistaken for the restore target; paused applications and retained Remote Monitor sessions keep ownership. Larger rotated and HDR layouts and globally numbered virtual connectors are handled correctly.
- Fixed AMD virtual-frame readback and packed-color ordering on Linux, preserved Virtio console rendering on multi-GPU hosts, and rejected unsafe CPU reads of imported buffers with unknown layouts.
- Honored explicitly selected Linux capture methods for managed virtual displays, and avoided automatic portal-consent prompts after KMS or native compositor capture had already been selected.
- Fixed Linux installation and machine setup under translated locales or inaccessible working directories, with repair preserving profiles and pairing state. Corrected Steam/Proton discovery of Pressure Vessel
/run/host/paths and skipped global limiter injection into read-only or system-owned Proton tools. - Fixed Intel GPU PyroWave encoder compatibility on Windows and kept stream traffic within the negotiated wire-bandwidth budget, including critical FEC, audio, control, and packet overhead. Bounded UDP retries under socket pressure and accounted for failed frame sends.
- Kept the Web UI available while paused streams retain displays or capability discovery stalls, with timed-out status requests able to retry.
- Fixed Windows 2.0.0 upgrades mistaking the visible uninstall entry for a separate installation, while retaining legacy Sunshine/Apollo removal and existing migration behavior. Preserved virtual-display and gamepad selections across upgrade, repair, and cancel/reopen; used native PowerShell and PnPUtil for driver actions.
- Restored Steam portraits for newer games whose cached artwork uses content-hash directories, including matching the correct CDN filename.
Linux installation
Arch Linux and CachyOS (beta)
You need x86_64, Linux 6.16 or newer with headers matching the running kernel, KDE Plasma 6 on Wayland started by SDDM or Plasma Login Manager, and a GPU with hardware H.264 encoding. Testing has focused on NVIDIA and modern AMD GPUs; older cards may not work properly. The native beta does not ship AppImage, Flatpak, Debian, Fedora, or Docker packages. Pre-login streaming requires NVIDIA.
curl -fsSLO https://raw.githubusercontent.com/Nonary/Vibepollo/2.0.1/scripts/linux_install.sh
sudo bash linux_install.sh --no-repo --version 2.0.1The script checks requirements, installs matching kernel headers and the exact 2.0.1 GitHub release package with pacman, configures an active firewalld or ufw firewall, and prints the remaining steps. Reboot after the first installation so the display driver and login-session integration are ready. If installation requests Secure Boot key enrollment, approve it during that reboot. Then log in to Plasma Wayland, open https://localhost:47990 on the host, create your Web UI login, and pair Moonlight. The new login also activates Vibepollo's PipeWire audio configuration. For signed repository setup, multiple desktop users, upgrades, and troubleshooting, follow the Linux install guide.
Arch Linux and CachyOS
Download vibepollo-2.0.1-1-x86_64.pkg.tar.zst and install it with:
sudo pacman -U ./vibepollo-2.0.1-1-x86_64.pkg.tar.zstManaged virtual displays require Linux 6.16 or newer. If matching headers are missing, the package prints the exact sudo pacman -S --needed <kernel-package>-headers command for the running kernel. Run it, then retry the driver setup:
sudo /usr/libexec/vibeshine/vibeshine-drm-install installOr let the installer script handle headers, the package, and the firewall:
curl -fsSLO https://raw.githubusercontent.com/Nonary/Vibepollo/2.0.1/scripts/linux_install.sh
sudo bash linux_install.sh --version 2.0.1See the full Linux installation guide.