I want to take a moment to thank everyone who has contributed to Wolf. This is truly a community effort, and we wouldn't still be here if it wasn't for all the people that helped along the way. It has been quite a journey from the first experiments in 2021… But I'm really glad to see that what started as a passion project is growing into a healthy community!
We are working on so many new features and improvements that all I can say is: stay tuned 😜!
Summary
Changes here looks massive because we haven't released a version in 2 years; after popular demand we've decided to now release automatically on the 1st of each month:
wolf:betapoints to thebetabranch, which is where development happens and receives changes as soon as they're merged.wolf:stablewill from now on point to the latest release tag, updated automatically on the 1st of each month.
Notable changes
Just a short list of the biggest changes in the past couple of months
Fedora base image
Wolf base image is now Fedora (instead of Ubuntu) this brings fresh new Mesa GPU drivers amongst other things.
Default apps in config.toml now points to :fedora instead of the old :edge tag, we recommend user to move to the new GOW images, ex:
ghcr.io/games-on-whales/steam:fedora
We'll automatically transition configs to the new images in the next release.
Input and controllers
- Wolf's virtual controllers are now isolated from the host desktop, in particular, DualSense devices are matched by HID name for hidraw seat isolation.
- Modifier keys held by the client are no longer instantly released; stuck-key and unplug-during-lobby issues are fixed.
- Unknown clients with motion sensors are auto-promoted so gyro works without manual overrides.
General fixes
- NVIDIA Blackwell (RTX 50xx) black screen on stream start is fixed via a
gst-wayland-displayupgrade. - 7.1 Opus channel mapping advertised to Moonlight is corrected, and the PulseAudio router now fixed isolation between sessions
- Re-launching an app resumes the existing session instead of killing its container.
- Device unplug events now reach lobby containers, and joypads are plugged in before a session is marked as connected.
What's Changed
- Support for nvidia container toolkit by @ABeltramo in #84
- Direct mouse and keyboard events without udev by @ABeltramo in #86
- Prevent null pointer deference in get_mac_address by @pablojrl123 in #90
- Multi GPU and encoders improvements by @ABeltramo in #91
- Create a dedicated doc page for Steam by @shocklateboy92 in #100
- Update quickstart.adoc to inform that nvidia container toolkit still needs
modeset=1by @salty2011 in #108 - Docs: Create Apps Section by @salty2011 in #111
- Fix multi user port assignment by @ABeltramo in #110
- docs: correct apps links by @salty2011 in #112
- docs: update to use mounts by @salty2011 in #113
- Automatically trigger docs build on games-on-whales.github.io by @ABeltramo in #114
- Update configuration.adoc by @Diudid in #122
- Doc: keyboard layout environment variable and compositor config Sway / Gamescope by @PierreBeucher in #125
- Added Proxmox LXC + Nvidia (Manual) to quickstart.adoc by @vinibutturi in #126
- doc: added some notes on modifying HOST_APPS_STATE_FOLDER and customizing app images by @TheRainstorm in #132
- Improve manual_build docs. by @robjh in #93
- mDNS makes Moonlight discover Wolf by @Helvio88 in #134
- Exposing Wolf events via API by @ABeltramo in #101
- Mouse fixes by @ABeltramo in #121
- Fix mDNS uncaught exception by @ABeltramo in #139
- Fix exposing ports via Docker APIs by @ABeltramo in #150
- Low-level input API by @ABeltramo in #160
- fix: dev containers building with llvm 19 by @kode54 in #162
- Dev wolfapi by @salty2011 in #170
- feat: create FAQ page by @bo0tzz in #186
- DualSense adaptive trigger support by @ABeltramo in #189
- Hidraw hotplug fix by @ABeltramo in #190
- [DO-NOT-MERGE] Patches required for Kubernetes by @alexzielenski in #181
- Moonlight patches and upgrades by @ABeltramo in #191
- Pass touch directly to gst-wayland-display by @camelcx in #208
- WIP: quick fixes... by @ABeltramo in #210
- Update docker lxc script link by @SirRGB in #213
- Implement zero copy pipeline by @ABeltramo in #156
- Adding back libmfx for older Intel GPUs by @ABeltramo in #223
- Fix Intel DG2 devices by @ABeltramo in #239
- Simplifying mount and starting options by @ABeltramo in #251
- Support 2/6/8 channel audio with correct GStreamer masks in streamin… by @Gylfkxjyjdll in #252
- Update GPU deployment configuration in quickstart by @ironoa in #279
- Add Podman / Quadlet setup example by @scottsweb in #282
- fix: get CUDA device index in ascending order based on PCI addresses by @zexi in #287
- Wolf UI by @ABeltramo in #179
- Fix CUDA memory leak by @ABeltramo in #294
- fix: use the correct port for pin log by @zexi in #283
- Fix stuck modifier keys when triggering Wolf UI overlay combo by @LifetimeMistake in #302
- Docs overhaul with new Wolf UI by @ABeltramo in #308
- Update steam.adoc for alternative proton implementations by @JBailes in #313
- Enhance steam.adoc with shared library setup details by @Greaper88 in #315
- Add section for troubleshooting AV1 by @JBailes in #317
- Update quickstart.adoc by @vinibutturi in #338
- Avoid exception when Docker returns a weird port format by @ABeltramo in #340
- Fix audio when Moonlight client doesn't support encryption by @ABeltramo in #342
- fix: gstreamer build option (nvcodec) by @jbdemonte in #343
- Add Pulse Audio Router to ensure correct sink is selected by @camelcx in #347
- note that volume with old drivers should be removed by @undefx in #349
- Add environment-considerations page by @ryant00000 in #346
- Add troubleshooting doc for tracing down wireless latency spikes on linux client by @vrga in #326
- Clang format by @ABeltramo in #351
- Fix typo in quickstart.adoc command by @robotathand in #366
- Update quickstart.adoc by @JBailes in #376
- gpu-drivers: add Kisak-Mesa PPA for latest Mesa drivers by @JBailes in #378
- fix: add VBV buffer constraints and improve UDP streaming by @Baz00k in #368
- Fix Lutris config for version 0.5.19 or later by @clsty in #367
- docs: Improve instruction after reloading udev rules by @clsty in #402
- Harden NVIDIA device and PulseAudio startup handling by @JBailes in #408
- fix: race in wait_for_ping causes std::future_error crash on stream start (NVIDIA) by @barne856 in #412
- Make default run UID/GID configurable, fix UID following GID on update by @JBailes in #416
- fix(audio): set the pulse on_ready promise at most once by @JBailes in #420
- Fix Wolf UI Wayland startup race (runtime-dir mount + socket wait) by @JBailes in #418
- Run PulseAudio inside the Wolf container by @JBailes in #422
- fix(nvidia): bump gst-wayland-display to fix Blackwell black screen by @JBailes in #425
- feat: advertise comprehensive display modes by @JBailes in #429
- Add support for explicit sync by @ABeltramo in #427
- fix(rtsp): keep RTSP server alive when a client disconnects mid-request by @JBailes in #432
- Update wayland client test by @ABeltramo in #433
- Fix OpenAPI schema for lobby events by @Baz00k in #426
- fix(test): static wayland registry listener by @JBailes in #440
- feat: better control over motion joypads by @kmreisi in #442
- fix(docker): resume the running session instead of killing its container on re-launch by @wolph in #438
- fix(lobby): deliver device unplug events to the lobby container by @kmreisi in #452
- fix(api): keep start_audio_server when deserialising an App by @WMP in #466
- fix(input): DualSense battery always reads low in Steam by @zerofltexx in #464
- fix(input): stop Wolf virtual controllers leaking into the host desktop by @JBailes in #455
- Added instructions for agents by @ABeltramo in #472
- fix(lobby): Controller lost when joining a running lobby. by @dustuu in #480
- fix(input): match the DualSense hidraw node by its HID name by @zerofltexx in #473
- Fix modifier keys being instantly released when clients send side-specific VK codes by @LorenzoMorelli in #459
- fix(rest): don't send a second response after a successful resume by @jdonaldson in #510
- check if CUDA context is valid before trying to use it by @r0b0tb4c0n in #505
- docs: Update environment-considerations.adoc by @enlewof in #521
- feat: automated monthly release by @bo0tzz in #532
- feat: move Wolf to Fedora as the default base image by @ABeltramo in #541
- fix: install libva-intel-media-driver (renamed from intel-media-driver in Fedora 44) by @ABeltramo in #545
- fix(audio): correct 7.1 Opus channel mapping advertised to Moonlight by @shocklateboy92 in #546
- fix(mdns): advertise the configured HTTP port by @luisvzr in #552
- fix(hardware): own DRM descriptors by value by @elibosley in #493
- CI: run the virtual input (uinput/uhid) tests on GitHub runners by @xerhab in #554
- Release v2026.11 by @github-actions[bot] in #556
New Contributors
- @pablojrl123 made their first contribution in #90
- @shocklateboy92 made their first contribution in #100
- @salty2011 made their first contribution in #108
- @Diudid made their first contribution in #122
- @vinibutturi made their first contribution in #126
- @TheRainstorm made their first contribution in #132
- @robjh made their first contribution in #93
- @Helvio88 made their first contribution in #134
- @kode54 made their first contribution in #162
- @bo0tzz made their first contribution in #186
- @alexzielenski made their first contribution in #181
- @camelcx made their first contribution in #208
- @SirRGB made their first contribution in #213
- @Gylfkxjyjdll made their first contribution in #252
- @ironoa made their first contribution in #279
- @scottsweb made their first contribution in #282
- @zexi made their first contribution in #287
- @LifetimeMistake made their first contribution in #302
- @Greaper88 made their first contribution in #315
- @jbdemonte made their first contribution in #343
- @undefx made their first contribution in #349
- @ryant00000 made their first contribution in #346
- @vrga made their first contribution in #326
- @robotathand made their first contribution in #366
- @Baz00k made their first contribution in #368
- @clsty made their first contribution in #367
- @barne856 made their first contribution in #412
- @kmreisi made their first contribution in #442
- @wolph made their first contribution in #438
- @WMP made their first contribution in #466
- @zerofltexx made their first contribution in #464
- @dustuu made their first contribution in #480
- @LorenzoMorelli made their first contribution in #459
- @jdonaldson made their first contribution in #510
- @r0b0tb4c0n made their first contribution in #505
- @enlewof made their first contribution in #521
- @luisvzr made their first contribution in #552
- @elibosley made their first contribution in #493
- @xerhab made their first contribution in #554
- @github-actions[bot] made their first contribution in #556
Full Changelog: v2024.07...v2026.11