Skip to content
Merged

v0.20.0 #1115

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
fd7760b
docs: use project_copyright alias (#1110)
ReenigneArcher Mar 30, 2023
0116756
versioning: fix release versions (#1122)
ReenigneArcher Apr 1, 2023
809d7f9
config: fix 4K resolution typo (#1139)
ReenigneArcher Apr 5, 2023
290c9b3
Fix compilation on macOS (#1132)
ns6089 Apr 6, 2023
f04d5e1
Combine the separate HDR and SDR capture formats
cgutman Apr 5, 2023
6526821
Saturate RGB values in non-PQ shaders to improve SDR streams of HDR d…
cgutman Apr 5, 2023
bd44339
Don't test HDR encoding with H.264
cgutman Apr 5, 2023
036aa2e
Free dummy images when they are no longer needed
cgutman Apr 5, 2023
0e92bdd
Use DS4_BUTTON_SHARE as BACK action
aseligmann Apr 7, 2023
abf4ab4
Don't zero-initialize non-dummy textures
ns6089 Apr 7, 2023
a9b7fd7
Remove useless Flush() call
cgutman Apr 8, 2023
191b929
Make installer DPI aware so it doesn't appear blurry to 4k screens
Nonary Apr 7, 2023
eed27d3
Decrease normal capture buffer to single image
ns6089 Mar 29, 2023
ae7ae8a
Raise capture buffer normal size to 2
ns6089 Apr 8, 2023
4e04604
Add support for keyboard input that is not normalized to US English l…
cgutman Apr 9, 2023
44f89de
Respect modifier flags in keyboard events
cgutman Apr 9, 2023
6467e10
Reprobe encoders each time streaming begins
cgutman Apr 9, 2023
7038c1a
Create config directories recursively
ns6089 Apr 5, 2023
010440d
add X11 to PLATFORM_LIBARIES when found
devusb Apr 10, 2023
b5c8bba
Fix color conversion for SDR FP16 capture formats
cgutman Apr 13, 2023
242a146
Add DXGI_FORMAT_B8G8R8X8_UNORM as a supported capture format
cgutman Apr 14, 2023
7b11b48
Delayed capture buffer trim
ns6089 Apr 6, 2023
045d4b8
Switch between img and surface in last frame
ns6089 Apr 6, 2023
7da33f7
Remove unnecessary reference
ns6089 Apr 15, 2023
8081873
build(deps): bump sphinx-copybutton from 0.5.1 to 0.5.2 (#1182)
dependabot[bot] Apr 16, 2023
8f74c3b
Leave reference frames unspecified if REF_FRAMES_RESTRICT is not supp…
cgutman Apr 14, 2023
d973e5b
Avoid unnecessary encoder probing during startup and launch
cgutman Apr 14, 2023
006a698
Use a faster probe for launch-time encoders that weren't available be…
cgutman Apr 15, 2023
d33bd00
Fix HEVC mode if the encoder changes
cgutman Apr 16, 2023
dd6fcbd
Grant everyone SYNCHRONIZE access to our systray thread
cgutman Apr 15, 2023
f518768
Stop the service if the user quits via the tray icon
cgutman Apr 15, 2023
820a20d
build(docker): update dependencies (#1193)
ReenigneArcher Apr 17, 2023
91afe33
build(deps): bump git from 2.39.2 to 2.40.0 for fedora 37 (#1196)
ReenigneArcher Apr 18, 2023
2215ab9
fix(web ui): add response headers (#1190)
ReenigneArcher Apr 18, 2023
25d0f43
build(deps): update fedora dependencies (#1206)
ReenigneArcher Apr 22, 2023
2138d0c
docs(advanced_usage): fix nvlax url (#1205)
ReenigneArcher Apr 23, 2023
5a8b6c3
build(deps): bump sphinx from 6.1.3 to 6.2.0 (#1212)
dependabot[bot] Apr 24, 2023
5ad5699
build(linux): honor install prefix for tray icon (#1208)
istori1 Apr 26, 2023
db5c032
refactor(tray icon): update header definitions (#1221)
ReenigneArcher Apr 26, 2023
4459e54
docs(doxygen): enable macro expansion (#1226)
ReenigneArcher Apr 27, 2023
eed4df1
fix: header guards on system tray (#1222)
Apr 27, 2023
82d6bc2
docs(diagrams): add diagrams using graphviz (#1228)
ReenigneArcher Apr 27, 2023
18ab7dc
Remove 3-byte NALU prefix fixup
cgutman Apr 28, 2023
430a439
Elevated Commands Redesign (#1123)
Nonary Apr 29, 2023
4c407c1
Fix Fedora 37 build
cgutman Apr 30, 2023
d05dc73
Add RFC 6598 CGN CIDR block to LAN addresses list
cgutman Apr 28, 2023
4668ff5
Fix ringing with non-truthy values in alarm_t
cgutman Apr 28, 2023
50f689f
Implement restart support for all platforms
cgutman Apr 23, 2023
3cfb520
fix(audio)!: remove policy config for Windows Vista (#1235)
ReenigneArcher May 1, 2023
590733b
build(deps): unpin docker dependencies (#1243)
ReenigneArcher May 3, 2023
bd533dc
Extend packet header with frame processing latency
ns6089 Apr 18, 2023
8347824
Print frame processing latency to debug log
ns6089 May 1, 2023
c8d4fd9
Keep/turn the display on during streaming
cgutman Apr 30, 2023
4730f4a
Ensure the credentials dir exists before setting ACLs on it
cgutman Apr 29, 2023
14fd7ad
Don't recursively reset ACLs on our install directory
cgutman Apr 29, 2023
c4c0469
Restore the start menu shortcut as a proper launcher for the UI and s…
cgutman Apr 29, 2023
292ef7e
Don't show a console window when opening a URL
cgutman Apr 29, 2023
65b7f23
Fix merging user environment variables during process launch
cgutman Apr 29, 2023
e8f3dfe
Reset ACLs on the config directory and migrated config files
cgutman Apr 30, 2023
c706ba4
Add Windows-specific warnings if Sunshine is unable to access config …
cgutman May 2, 2023
81aecff
Pass the SID instead of the group name to icacls
cgutman May 4, 2023
5779a4b
packaging: fix macos dmg (#1141)
ReenigneArcher May 5, 2023
df1286a
Fix crash if the app terminates before the control stream is connected
cgutman May 5, 2023
10ea677
Fix crash if capture is stopped before completing startup
cgutman May 5, 2023
eb8aaf0
Fix graceful termination messages being discarded by Moonlight
cgutman May 5, 2023
a6d295b
Wait for pending sessions to connect before breaking on app termination
cgutman May 5, 2023
2fca9cd
Fix launching apps with a log file specified
cgutman May 5, 2023
27f9d6d
Clear the PIN field after a successful pairing
cgutman May 5, 2023
a7c1252
Fix accidental concatenation of resolution strings
cgutman May 5, 2023
663bf75
Add missing cstdint include
cgutman May 6, 2023
b59b885
Fix pairing error handling when the hash doesn't match
cgutman May 5, 2023
6a3b770
Remove unnecessary uniqueid check for /applist
cgutman May 5, 2023
020d5cd
Add status messages for client errors
cgutman May 5, 2023
f21b195
Add notes about GPU, display, and encoder compatibility
cgutman May 5, 2023
91460f3
fix(ui): allow case-insensitive username (#1249)
ReenigneArcher May 6, 2023
ba3b0be
build(deps): bump peter-evans/create-pull-request from 4 to 5 (#1138)
dependabot[bot] May 6, 2023
06a1609
Change udev rule to automatically grant access to virtual input devices
kodemeister Apr 1, 2023
5d30347
Remove setup of 'input' group from Linux packaging scripts
kodemeister Apr 1, 2023
f6b3cdf
Remove setup of 'input' group from documentation
kodemeister Apr 2, 2023
3e2cb07
Fix path to udev rules in AppRun script
kodemeister Apr 2, 2023
89b8cad
Do not add 'lizard' user inside Docker container to 'input' group
kodemeister Apr 7, 2023
343f200
Remove group and mode assignment from the udev rule
kodemeister May 6, 2023
3fa5f74
Archive Win32 binaries with debug info for crash analysis
cgutman May 6, 2023
1d6ea8c
Allow audio sinks to match on device names
cgutman May 3, 2023
e821f4d
Fix misleading channel support information
cgutman May 3, 2023
e165146
Add 5.1 Side and Quadraphonic configs
cgutman May 3, 2023
e8963b8
Only modify channel-related format attributes
cgutman May 3, 2023
86c854c
Allow streaming even if no audio sink is available
cgutman May 4, 2023
97f18d6
Fix audio capture reinitialization
cgutman May 7, 2023
979f7f4
docs: improvements to source code documentation (#1236)
ReenigneArcher May 7, 2023
8f6ee0b
ci: add fedora 38 (#1114)
ReenigneArcher May 7, 2023
07808de
docs: correct typo for task_pool (#1257)
ReenigneArcher May 7, 2023
4ca6dc6
docs: update file level doxygen blocks (#1258)
ReenigneArcher May 7, 2023
7e8c43c
fix(ui): use release url for nightly releases (#1260)
ReenigneArcher May 8, 2023
ccdc882
Fix pessimising move warning with GCC 13.1
cgutman May 7, 2023
bc39209
Reinitialize capture if the default audio device changes
cgutman May 7, 2023
66989a4
Set the default back to the virtual sink if it's changed
cgutman May 7, 2023
4ae412b
Allow localAudioPlayMode to change on /resume
cgutman May 7, 2023
53125ff
Add support for installing the Steam Streaming Speakers driver (#1262)
cgutman May 10, 2023
71dcef8
Fix systray icon sometimes not appearing after login
cgutman May 11, 2023
9e23b39
Add NO_RC_BUF_LIMIT vaapi
istori1 May 7, 2023
8c85bcf
build(deps): bump third-party/nv-codec-headers
dependabot[bot] May 12, 2023
f4bb410
Treat dependency includes as system headers to suppress warnings
cgutman May 11, 2023
1c83a44
Fix const reference and const pointer types in wrap_ptr
cgutman May 11, 2023
a4f788f
Replace Win32 UTF-16 conversion with std::wstring_convert
cgutman May 11, 2023
f08ba0f
Fix missing override specifier on set_frame()
cgutman May 11, 2023
8db0ad0
Fix and enable -Wmaybe-uninitialized
cgutman May 11, 2023
2571682
Fix pessimizing move warnings on Clang
cgutman May 11, 2023
390dc1c
Fix unused-but-set-variable warnings on Mac and Linux
cgutman May 11, 2023
ff046bb
Fix and enable -Wmissing-braces
cgutman May 11, 2023
0fa406d
Remove unnecessary moves in return statements
cgutman May 11, 2023
fabadaa
Fix const-correctness bugs in uniq_ptr and code that uses it
cgutman May 11, 2023
17124de
Fix const-correctness bugs in round_robin.h
cgutman May 11, 2023
33dafbc
Add warning when Desktop Duplication API masks protected content from…
cgutman May 12, 2023
f41e57e
ci!: remove fedora 36 (#1244)
ReenigneArcher May 16, 2023
9955890
Fix console session changes via fast user switching
cgutman May 15, 2023
32ca9d4
Fix crash on exit if a process is currently running
cgutman May 15, 2023
8da2caf
Do not add 'lizard' user inside Fedora 38 container to 'input' group …
kodemeister May 17, 2023
31f72cd
Remove Boost_NO_BOOST_CMAKE=ON to fix Windows build (#1298)
cgutman May 22, 2023
8a9eed2
Fix leak of X509 on each HTTPS request
cgutman May 22, 2023
5b24148
Fix leak of VA driver resources on each encoder init
cgutman May 22, 2023
85af191
Fix leak of AVPackets
cgutman May 22, 2023
25e0244
Stop reporting ExternalIP field to clients
cgutman May 15, 2023
5a4fd95
Rewrite UPnP support
cgutman May 21, 2023
f5e3353
Fix resolutions reported by dxgi-info.exe on high DPI systems
cgutman May 24, 2023
78737d7
Adjust descriptions on the A/V page to discourage manual settings
cgutman May 24, 2023
fbb77aa
Prefer virtual sink over audio sink if host playback is disabled
cgutman May 24, 2023
0e2eacb
Reduce opacity of placeholder text
cgutman May 24, 2023
f22ce25
Fix systray after Explorer restart
cgutman May 25, 2023
0f1dc1b
Print a warning if GameStream is using conflicting ports
cgutman May 17, 2023
2f4cc9a
Add option to always send scancodes
cgutman May 25, 2023
b3f57cf
Fix emulated Home/Guide presses being missed
cgutman May 25, 2023
8da919f
Rename Back Button Timeout and disable it by default
cgutman May 25, 2023
5c9750a
Clean up installer options now that the service is mandatory
cgutman May 24, 2023
a87d833
Add a friendly name for SunshineSvc
cgutman May 24, 2023
fe62b10
Add an option to control whether Sunshine starts on boot
cgutman May 24, 2023
60ebafd
Expand core component group by default
cgutman May 26, 2023
9a65c91
Rename SunshineSvc to SunshineService
cgutman May 26, 2023
f37914d
build(deps): bump furo from 2023.3.27 to 2023.5.20 (#1299)
dependabot[bot] May 26, 2023
1bafa5a
build(deps): bump sphinx from 6.2.0 to 7.0.1 (#1286)
dependabot[bot] May 27, 2023
bca61bf
Always change the sink if it differs from the active sink
cgutman May 27, 2023
f734d66
Reset the default audio device on startup if Steam Streaming Speakers…
cgutman May 27, 2023
8090fb4
Fix software encoding defaulting to HEVC instead of H.264
cgutman May 28, 2023
7cc6fcd
v0.20.0 release prep (#1321)
cgutman May 29, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ NamespaceIndentation: All
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PointerAlignment: Right
ReflowComments: false
ReflowComments: true
SpaceAfterCStyleCast: true
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
Expand Down
3 changes: 2 additions & 1 deletion .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ body:
- Linux - solus (Third Party)
- macOS - dmg
- macOS - Portfile
- macOS - pkg
- Windows - Chocolatey (Third Party)
- Windows - installer
- Windows - portable
Expand All @@ -111,6 +110,7 @@ body:
- other (not listed)
- other (self built)
- other (fork of this repo)
- n/a
validations:
required: true
- type: dropdown
Expand All @@ -123,6 +123,7 @@ body:
- Intel
- Nvidia
- none (software encoding)
- n/a
validations:
required: true
- type: input
Expand Down
81 changes: 29 additions & 52 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -474,7 +474,7 @@ jobs:
build_mac:
name: MacOS
runs-on: macos-11
needs: setup_release
needs: [check_changelog, setup_release]

steps:
- name: Checkout
Expand Down Expand Up @@ -514,47 +514,34 @@ jobs:
# package
cpack -G DragNDrop
mv ./cpack_artifacts/Sunshine.dmg ../artifacts/sunshine-macos-experimental-dragndrop.dmg
cpack -G Bundle
mv ./cpack_artifacts/Sunshine.dmg ../artifacts/sunshine-macos-experimental-bundle.dmg
mv ./cpack_artifacts/Sunshine.dmg ../artifacts/sunshine.dmg
cpack -G ZIP
mv ./cpack_artifacts/Sunshine.zip ../artifacts/sunshine-macos-experimental-archive.zip
# cpack -G Bundle
# mv ./cpack_artifacts/Sunshine.dmg ../artifacts/sunshine-bundle.dmg
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: sunshine-macos
path: artifacts/

# this step can be removed after packages are fixed
- name: Delete experimental packages
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
working-directory: artifacts
run: |
rm -f ./sunshine-macos-experimental-dragndrop.dmg
rm -f ./sunshine-macos-experimental-bundle.dmg
rm -f ./sunshine-macos-experimental-archive.zip
# # no artifacts to release currently
# - name: Create/Update GitHub Release
# if: ${{ needs.setup_release.outputs.create_release == 'true' }}
# uses: ncipollo/release-action@v1
# with:
# name: ${{ needs.setup_release.outputs.release_name }}
# tag: ${{ needs.setup_release.outputs.release_tag }}
# commit: ${{ needs.setup_release.outputs.release_commit }}
# artifacts: "*artifacts/*"
# token: ${{ secrets.GH_BOT_TOKEN }}
# allowUpdates: true
# body: ${{ needs.setup_release.outputs.release_body }}
# discussionCategory: announcements
# prerelease: ${{ needs.setup_release.outputs.pre_release }}
- name: Create/Update GitHub Release
if: ${{ needs.setup_release.outputs.create_release == 'true' }}
uses: ncipollo/release-action@v1
with:
name: ${{ needs.setup_release.outputs.release_name }}
tag: ${{ needs.setup_release.outputs.release_tag }}
commit: ${{ needs.setup_release.outputs.release_commit }}
artifacts: "*artifacts/*"
token: ${{ secrets.GH_BOT_TOKEN }}
allowUpdates: true
body: ${{ needs.setup_release.outputs.release_body }}
discussionCategory: announcements
prerelease: ${{ needs.setup_release.outputs.pre_release }}

build_mac_port:
name: Macports
needs: setup_release
needs: [check_changelog, setup_release]
runs-on: macos-11

steps:
Expand Down Expand Up @@ -728,25 +715,6 @@ jobs:
done
exit "$fail"
- name: Package
run: |
# create packages
sudo port pkg sunshine
sudo port dmg sunshine
work=$(port work sunshine)
echo "Sunshine port work directory: ${work}"
# move components out of port work directory
sudo mv ${work}/Sunshine*component.pkg /tmp/
# copy artifacts
sudo mv ${work}/Sunshine*.pkg ./artifacts/sunshine.pkg
sudo mv ${work}/Sunshine*.dmg ./artifacts/sunshine.dmg
# move components back
# sudo mv /tmp/Sunshine*component.pkg ${work}/
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
Expand All @@ -770,7 +738,7 @@ jobs:
build_win:
name: Windows
runs-on: windows-2019
needs: setup_release
needs: [check_changelog, setup_release]

steps:
- name: Checkout
Expand Down Expand Up @@ -813,7 +781,7 @@ jobs:
run: |
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release \
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DSUNSHINE_ASSETS_DIR=assets \
-G "MinGW Makefiles" \
..
Expand All @@ -833,6 +801,15 @@ jobs:
mv ./cpack_artifacts/Sunshine.exe ../artifacts/sunshine-windows-installer.exe
mv ./cpack_artifacts/Sunshine.zip ../artifacts/sunshine-windows-portable.zip
- name: Package Windows Debug Info
working-directory: build
run: |
# save the original binaries with debug info
7z -r `
"-xr!CMakeFiles" `
"-xr!cpack_artifacts" `
a "../artifacts/sunshine-debuginfo-win32.zip" "*.exe"
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/localize.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ jobs:
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT

- name: Create/Update Pull Request
uses: peter-evans/create-pull-request@v4
uses: peter-evans/create-pull-request@v5
with:
add-paths: |
locale/*.po
Expand Down
28 changes: 9 additions & 19 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,16 @@ version: 2

# Set the version of Python
build:
os: ubuntu-20.04
os: ubuntu-22.04
tools:
python: "3.10"

## apt packages required packages to run cmake on sunshine, note that additional packages are required
# apt_packages:
# - cmake
# - libboost-filesystem-dev
# - libboost-log-dev
# - libboost-thread-dev

## run cmake
# jobs:
# pre_build:
# - cmake .

## Include the submodules, required for cmake
# submodules:
# include: all
# recursive: true
python: "3.11"
apt_packages:
- graphviz

# submodules required for include statements
submodules:
include: all
recursive: true

# Build documentation in the docs/ directory with Sphinx
sphinx:
Expand Down
81 changes: 81 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,85 @@
# Changelog

## [0.20.0] - 2023-05-28
**Breaking**
- (Windows) The Windows installer version of Sunshine is now always launched by the Sunshine Service. Manually launching Sunshine.exe from Program Files is no longer supported. This was necessary to address security issues caused by non-admin users having access to Sunshine's config data. If you have set up Task Scheduler or other mechanisms to launch Sunshine automatically, remove those from your system before updating.
- (Windows) The Start Menu shortcut has been redesigned for use with the Sunshine Service. It now launches Sunshine in the background (if not already running) and opens the Web UI, avoiding the persistent Command Prompt window present in prior versions. The Start Menu shortcut is now the recommended method for opening the Web UI and launching Sunshine.
- (Network/UPnP) If the Moonlight Internet Hosting Tool is installed alongside Sunshine, you must remove it or upgrade to v5.6 or later to prevent conflicts with Sunshine's UPnP support. As a reminder, the Moonlight Internet Hosting Tool is not required to stream over the Internet with Sunshine. Instead, simply enable UPnP in the Sunshine Web UI.
- (Windows) If Steam is installed, the Steam Streaming Speakers driver will be automatically installed when starting a stream for the first time. This behavior can be disabled in the Audio/Video tab of the Web UI. This Steam driver enables support for surround sound and muting host audio without requiring any manual configuration.
- (Input) The Back Button Timeout option has been renamed to Guide Button Emulation Timeout and has been disabled by default to ensure long presses on the Back button work by default. The previous behavior can be restored by setting the Guide Button Emulation Timeout to 2000.
- (Windows) The service name of SunshineSvc has been changed to SunshineService to address a false positive in MalwareBytes. If you have any scripts or other logic on your system that is using the service name, you will need to update that for the new name.
- (Windows) To support new installer features, install-service.bat no longer sets the service to auto-start by default. Users executing install-service.bat manually on the Sunshine portable build must also execute autostart-service.bat to start Sunshine on boot. However, installing the service manually like this is not recommended. Instead, use the Sunshine installer which handles service installation and configuration automatically.
- (Linux/Fedora) Fedora 36 builds are removed due to upstream end of support

**Added**
- (Windows) Added an option to launch apps and prep/undo commands as administrator
- (Installer/Windows) Added an option to choose whether Sunshine launches on boot. If not configured to launch on boot, use the Start Menu shortcut to start Sunshine when desired.
- (Input/Windows) Added option to send VK codes instead of scancodes for compatibility with iOS/Android devices using non-English keyboard layouts
- (UI) The Apply/Restart option is now available in the Web UI for all platforms
- (Systray) Added a Restart option to the system tray context menu
- (Video/Windows) Added host latency data to video frames. This requires future updates to Moonlight to display in the on-screen overlay.
- (Audio) Added support for matching Audio Sink and Virtual Sink values on device names
- (Client) Added friendly error messages for clients when streaming fails to start
- (Video/Windows) Added warning log messages when Windows is hiding DRM-protected content from display capture
- (Interop/Windows) Added warning log messages when GeForce Experience is currently using the same ports as Sunshine
- (Linux/Fedora) Fedora 38 builds are now available

**Changed**
- (Video) Encoder selection now happens at each stream start for more reliable GPU detection
- (Video/Windows) The host display now stays on while clients are actively streaming
- (Audio) Streaming will no longer fail if audio capture is unavailable
- (Audio/Windows) Sunshine will automatically switch back to the Virtual Sink if the default audio device is changed while streaming
- (Audio) Changes to the host audio playback option will now take effect when resuming a session from Moonlight
- (Audio/Windows) Sunshine will switch to a different default audio device if Steam Streaming Speakers are the default when Sunshine starts. This handles cases where Sunshine terminates unexpectedly without restoring the default audio device.
- (Apps) The Connection Terminated dialog will no longer appear in Moonlight when the app on the host exits normally
- (Systray/Windows) Quitting Sunshine via the system tray will now stop the Sunshine Service rather than leaving it running and allowing it to restart Sunshine
- (UI) The 100.64.0.0/10 CGN IP address range is now treated as a LAN address range
- (Video) Removed a workaround for some versions of Moonlight prior to mid-2022
- (UI) The PIN field is now cleared after successfully pairing
- (UI) User names are now treated as case-insensitive
- (Linux) Changed udev rule to automatically grant access to virtual input devices
- (UI) Several item descriptions were adjusted to reflect newer configuration recommendations
- (UI) Placeholder text opacity has been reduced to improve contrast with non-placeholder text
- (Video/Windows) Minor capture performance improvements

**Fixed**
- (Video) VRAM usage while streaming is significantly reduced, particularly with higher display resolutions and HDR
- (Network/UPnP) UPnP support was rewritten to fix several major issues handling router restarts, IP address changes, and port forwarding expiration
- (Input) Fixed modifier keys from the software keyboard on Android clients
- (Audio) Fixed handling of default audio device changes while streaming
- (Windows) Fixed streaming after Microsoft Remote Desktop or Fast User Switching has been used
- (Input) Fixed some games not recognizing emulated Guide button presses
- (Video/Windows) Fixed incorrect gamma when using an Advanced Color SDR display on the host
- (Installer/Windows) The installer is no longer blurry on High DPI systems
- (Systray/Windows) Fixed multiple system tray icons appearing if Sunshine exits unexpectedly
- (Systray/Windows) Fixed the system tray icon not appearing in several situations
- (Windows) Fixed hang on shutdown/restart if mDNS registration fails
- (UI) Fixed missing response headers
- (Stability) Fixed several possible crashes in cases where the client did not successfully connect
- (Stability) Fixed several memory leaks
- (Input/Windows) Back/Select input now correctly generates the Share button when emulating DS4 controllers
- (Audio/Windows) Fixed various bugs in audio-info.exe that led to inaccurate output on some systems
- (Video/Windows) Fixed incorrect resolution values from dxgi-info.exe on High DPI systems
- (Video/Linux) Fixed poor quality encoding from H.264 on Intel encoders
- (Config) Fixed a couple of typos in predefined resolutions

**Dependencies**
- Bump sphinx-copybutton from 0.5.1 to 0.5.2
- Bump sphinx from 6.13 to 7.0.1
- Bump third-party/nv-codec-headers from 2055784 to 2cd175b
- Bump furo from 2023.3.27 to 2023.5.20

**Misc**
- (Build/Linux) Add X11 to PLATFORM_LIBARIES when found
- (Build/macOS) Fix compilation with Clang 14
- (Docs) Fix nvlax URL
- (Docs) Add diagrams using graphviz
- (Docs) Improvements to source code documentation
- (Build) Unpin docker dependencies
- (Build/Linux) Honor install prefix for tray icon
- (Build/Windows) Unstripped binaries are now provided as a debuginfo package to support crash dump debugging
- (Config) Config directories are now created recursively

## [0.19.1] - 2023-03-30
**Fixed**
- (Audio) Fixed no audio issue introduced in v0.19.0
Expand Down Expand Up @@ -409,3 +489,4 @@ settings. In v0.17.0, games now run under your user account without elevated pri
[0.18.4]: https://github.com/LizardByte/Sunshine/releases/tag/v0.18.4
[0.19.0]: https://github.com/LizardByte/Sunshine/releases/tag/v0.19.0
[0.19.1]: https://github.com/LizardByte/Sunshine/releases/tag/v0.19.1
[0.20.0]: https://github.com/LizardByte/Sunshine/releases/tag/v0.20.0
Loading