fix: Resolve minimum_fps_target related issues on all platforms#4967
Conversation
3a84519 to
3bac8e3
Compare
|
The basic issue that this PR aims to solve is framerate violations that occur when frame processing latency is a bit higher than usual. This can happen with any capture method, but a solid Linux testcase that can be replicated for the issue against master is the following:
Result on master:
Results with PR:
Requesting a test from @andygrundman and @oryschakj-personal if it's not too much trouble. @ReenigneArcher I've also added two additional commits. One implements snapshot timeout + duplicate filtering on kmsgrab, and the other reverts the portalgrab workaround related to the same issue that this PR should hopefully solve. If you want we can split these into separate PRs, but I think it's helpful to test all three changes together as a first step. |
Bundle ReportBundle size has no change ✅ |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #4967 +/- ##
==========================================
+ Coverage 17.36% 18.00% +0.63%
==========================================
Files 108 109 +1
Lines 23220 23502 +282
Branches 10138 10374 +236
==========================================
+ Hits 4033 4232 +199
+ Misses 17075 16041 -1034
- Partials 2112 3229 +1117
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 62 files with indirect coverage changes Continue to review full report in Codecov by Sentry.
|
3bac8e3 to
48e6847
Compare
|
I've backed out the kmsgrab duplicate detection change as it was triggering some false timeouts. I'll check if that can be fixed later and send in a separate PR if so. The testcase and fix I described for kmsgrab still applies to this PR in its current state, however. I'm still testing this PR with portalgrab to make 100% sure that it solves the issue of runaway framerate bursting; it's more difficult to reproduce consistently, so it may take some time to see if there's a regression. |
|
I got the build installed (48e6847) but can't get either VA-API or Vulkan running on my 5090. Is the fix still applicable to nvenc? |
Yes. You can still try the test case as long as you test with the kmsgrab capture method, the encoder shouldn't matter. This PR should resolve your issue reported in #4906 (but make sure the hardware cursor is enabled in kwin and set minimum_fps_target back to the default if you want to trigger the stutter issue properly). |
Excellent, thank you! I've been running this for a couple hours with the appropriate Sunshine config settings, vsync tester, stream stats, and top up and am not seeing any of the problems I reported for that bug. |
|
Actually - maybe a false alarm. I can recreate the laggy/stuttering mouse behavior with high Sunshine CPU usage and 50ms+ host processing times by mousing around an open Konsole window. Nothing needs to be running in the console session. |
|
It would really help if you could confirm: on master/stable builds, were you able to reproduce the specific symptoms of the framerate cap being violated during cursor shape changes using the testcase I described? Keep in mind that the high CPU usage in Sunshine that's specific to kmsgrab and cursor shape changes is not being solved by the PR, but the visible stuttering and framerate violations during this mouse movement is what I'm attempting to address. With this PR, there are no stutters visible on the stream on my system when the cursor shape changes, but the maximum host processing latency does still increase from ~3-4ms to ~11-15ms when the mouse issue is triggered, and Sunshine's CPU usage still increases. I'm only testing at 60fps @ 1080P, but I did try a 120fps stream and it seems roughly the same (but my client has a 60Hz screen, so naturally I'm not seeing all frames). I'll mark this as draft, as I've discovered some other issues related to minimum_fps_target that requires more investigation. |
|
Do you have problems if you set your min_fps to a lower value like 10 or 20? Does this affect Windows? I am not sure we should change this part of the code for everyone, if it's just a Linux issue. I would really like to have a nice Linux test environment, if you guys have any tips let me know. I still get overwhelmed thinking about the matrix of backends and encoders and all the stuff I don't know how to run or test. |
|
I believe that the logic needs to be changed in The kmsgrab backend has no duplicate filtering on frames, so it always captures at full framerate, and capture cadence is usually consistent, meaning that Portalgrab is receiving frames from the compositor via pipewire, and these buffers arrive at irregular intervals compared to a traditional capture method like DXGI or kmsgrab. If you recall, I effectively disabled duplicate frame insertion to work around the issue, but I had a lot of trouble reproducing a testcase to justify the change. Now I can reproduce it clearly:
This consistently results in the stream violating the framerate cap, running at 90fps for a 60fps stream due to duplicate frames being inserted and bunched together with the actual 45fps worth of frames. I'm trying to find a better resolution than this PR as it stands currently. Some WIP code: diff --git a/src/video.cpp b/src/video.cpp
index 09645818..346e7fb7 100644
--- a/src/video.cpp
+++ b/src/video.cpp
@@ -2069,6 +2069,9 @@ namespace video {
}
}
+ // 1. Initialize the tracker before the while(true) loop
+ auto last_encode_time = std::chrono::steady_clock::now();
+ const auto slack_factor = 2.5;
while (true) {
// Break out of the encoding loop if any of the following are true:
// a) The stream is ending
@@ -2102,7 +2105,17 @@ namespace video {
// Encode at a minimum FPS to avoid image quality issues with static content
if (!requested_idr_frame || images->peek()) {
- if (auto img = images->pop(max_frametime)) {
+ // 2. Calculate how much 'patience' we have left
+ auto now = std::chrono::steady_clock::now();
+ auto elapsed = now - last_encode_time;
+
+ // We want to wait until at least (max_frametime * slack_factor)
+ // has passed since the last encode.
+ auto wait_limit = std::chrono::duration_cast<std::chrono::milliseconds>(max_frametime * slack_factor);
+ auto remaining_wait = (wait_limit > elapsed) ? (wait_limit - elapsed) : 0ms;
+
+ if (auto img = images->pop(remaining_wait)) {
+ // We got a real frame!
frame_timestamp = img->frame_timestamp;
if (session->convert(*img)) {
BOOST_LOG(error) << "Could not convert image"sv;
@@ -2110,6 +2123,10 @@ namespace video {
}
} else if (!images->running()) {
break;
+ } else {
+ // 3. Timeout reached: We haven't seen a new frame in ~1.5x intervals.
+ // We will fall through and encode() the last known image as a duplicate.
+ BOOST_LOG(debug) << "Minimum FPS heartbeat triggered (Duplicate sent)"sv;
}
}
@@ -2117,6 +2134,7 @@ namespace video {
BOOST_LOG(error) << "Could not encode video packet"sv;
return;
}
+ last_encode_time = std::chrono::steady_clock::now();
session->request_normal_frame();
This resolves the 45 -> 90fps issue on portalgrab, but the slack factor needs consideration. If set to 1.5x, it doesn't fix the kmsgrab cursor stuttering. if set to 2.0x exactly, it resolves kmsgrab cursor stutter, but we may still see duplicates inserted for 30fps content on a 60fps stream for portalgrab. I believe this issue can also potentially manifest on Windows, but I've not been testing Sunshine on that platform lately myself. There may be some issues tracked here (90fps FPS on a 60fps stream) that could point the finger to |
OT, but I have a SSD connected via a USB adapter plugged into my host PC, and I use ventoy + vtoyboot that allows me to native boot into multiple VDI images of Fedora, Arch etc., and the images are stored on an exfat partition. I believe it also supports booting from an ntfs partition (even your Windows partition), but I wouldn't risk it myself (hence the external storage). |
|
I’d like to be able to test more methodically but I suspect if I do a Spectacle screen capture that itself will mess with whatever I’m trying to identify. When I get some time to dig into it I’ll try to get some comparative tests done between builds. On Apr 11, 2026, at 2:55 PM, psyke83 ***@***.***> wrote:psyke83 left a comment (LizardByte/Sunshine#4967)
Do you have problems if you set your min_fps to a lower value like 10 or 20? Does this affect Windows? I am not sure we should change this part of the code for everyone, if it's just a Linux issue.
I would really like to have a nice Linux test environment, if you guys have any tips let me know. I still get overwhelmed thinking about the matrix of backends and encoders and all the stuff I don't know how to run or test.
OT, but I have a SSD connected via a USB adapter plugged into my host PC, and I use ventoy + vtoyboot that allows me to native boot into multiple VDI images of Fedora, Arch etc., and the images are stored on an exfat partition. I believe it also supports booting from an ntfs partition (even your Windows partition), but I wouldn't risk it myself (hence the external storage).
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: ***@***.***>
|
d2cb654 to
7330c1f
Compare
|
I believe these changes are worth checking. I haven't yet verified if Windows capture is affected negatively, but if I can test later if the build artifacts succeed. Two commits are not directly related or needed to fix the bursting, but benefit from testing with these changes: I understand that you don't have a Linux test system up and running, but what are your thoughts on the main fix? Was this an oversight in the logging vs actual wait period to be used by the pop() timeout, or am I completely misunderstanding the intended logic of the minimum_fps_target? This change alone resolves all the bursting issues I was seeing with both portalgrab and kmsgrab, and fixes idle desktop (previously, 60fps at idle was settling on ~52fps, now idles at ~28-30fps). |
|
I'm going to give this a try after having a few issues with one game (Blue Prince) that is stuttering when streaming using moonlight-android (on a CCwGTV). I'm also getting Bandwidth warnings (and black screens on connecting until seeing activity) with moonlight-android on idle desktop (but I'm not sure if are related to Vulkan encoding with VBR yet). I'll report my findings once I've had some time to give this an extended try. First thing I've noted with the patch is from having a minimum_fps_target=30 set explicitly in config (as a workaround for those moonlight-android issues) that the Desktop will idle at around ~15fps. Setting it to 40 will make the desktop idle at ~20fps. Removing the minimum_fps_target (or setting it to 0) and setting 60fps as the stream framerate in Moonlight will make the Desktop idle at ~28-30fps. Looks like the real minimum fps now is 1/2*minimum_fps_target if that is set with the current state of the patch. EDIT: All using portalgrab with vulkan encoder on CachyOS latest with an RX9070XT |
If you could turn down the client bitrate to eliminate transient network issues that would help make sure it's not an issue with the PR. I don't believe any of my changes should cause bitrate bursting.
With the changes to this PR, that's the expected result; unset will select the stream framerate, and the value will be halved to give the actual target FPS which you can check from your log: The difference related to this logging is that master branch is lying about the frame time target (it was using a 16ms interval in my case). That's the main change that fixes the bursting issues on portalgrab and kmsgrab. |
Sorry, I misunderstood what you meant here. The previous |
I see but then the config setting should probably be renamed shouldn't it? As it's more like the intended fps target and the minimum is half of that value or am I misunderstanding something here?
That is what it looks like as setting a minium_fps_target of half the framerate set on moonlight was also helping with the issue. The patch is helping for that issue as expected. |
or just use 2*minimum_fps_target to get the intended effect. |
|
Well, it would help to understand the reason why it was changed. I believe the previous setting was causing issues on Windows, but I wasn't actively using Sunshine on that OS at the time. The documentation is half-correct; the value 0 is "treated" as half the stream framerate, but the effective value would be 60 for 60fps. Additionally, you would want to set 40 instead of 20 to avoid duplicating 24fps content. |
It seems linear on the lower end, but it's not linear as you go up.
This goes way back to #754 which set the floor to ~10fps. But this caused other issues, so it became configurable. I really just wish we could stream the exact rate that's being requested. We shouldn't really worry about tiny bandwidth saving in my opinion, since live gamestreaming (or any kind of video streaming) is going to consume a ton of bandwidth anyway. |
|
If you look at the original implementation, the 10fps floor was correctly using a 100ms pop interval. Some time from then till now, the pop timeout interval became half the stated target floor (that was configured & logged), thus the effective frametime became the same as the stream's frametime (60fps -> 16ms), which was the main culprit for all the bursting issues. |
|
I'm also happy that this is configurable (even though it's not working on master as expected), as the difference between idle and 30fps is 10W+ in measured GPU load. Electricity is not cheap in Europe, and I don't have decoding issues at low framerate. Either way, the implementation needs to be fixed to resolve the bursting. |
|
OK, so I've added a commit to align the variable with the actual desired FPS value, which is what the documentation already implies is the case. minimum_fps_target = 0 or unset -> real value is assigned to (config.framerate / 2), so 30 for a 60fps stream. The PR is messy right now, but I'm trying to avoid squashing or rebasing commits so that my recent changes can be more easily tracked. |
|
If you have an Xbox try the Display-locked frame pacer, I think it’s the only actual solution to the variable framerate situation. The client takes over all responsibility for duping frames, and simply renders 1 frame every frame at the refresh rate, choosing between a new or repeat frame based on interpolating the incoming framerate. It works well, there is a bit more resource use on the client but no bandwidth is wasted. It would also let you stream at 1fps from the server if you wanted. I am almost done porting this frame pacer option to Mac and then the rest of Qt (plus lots more improvements like the ImGui graphs, a dev UI panel for viewing data and tweaking everything, etc. |
bc32c32 to
d36b417
Compare
|
I've rebased the PR with just the minimal fixes; kmsgrab and pacing changes that will improve kmsgrab and 30fps pacing with portalgrab may be submitted later when the PR load reduces. @ReenigneArcher I believe these changes are ready for merge, but I'd like to test a Windows build first. I'd appreciate if you could kick off a build when possible so I can test the Windows artifact, as my dev environment on my old Windows install was wiped. Thanks. |
|
No worries. Your PRs are always welcomed and valuable. I really appreciate you testing and reviewing other PRs as well. It helps a lot! |
|
This looks good on my end as well. Have been using it for a while now and haven't had any issues when using kmsgrab, portalgrab or kwingrab (#5009). |
This comment was marked as resolved.
This comment was marked as resolved.
…Byte#4839)" This reverts commit 99d4e05.
The previous implementation called wait_for(delay) inside a manual loop, causing the full timeout to reset on each spurious wakeup. Replace with a single predicate-based wait_for call, which handles spurious wakeups internally while correctly honoring the original deadline.
…interval alignment The current minimum_fps_target and max_frametime intervals are set/logged incorrectly and break capture methods on Linux. Example with a 60fps stream: * default minimum_fps_target is populated as config.framerate (60), * minimum FPS target is logged as 30 and interval logged as 33.33ms, but pop() interval is actually 16.6ms. * result: default value is 2x what documentation implies should be the case. Setting a manual value logs the target FPS and interval incorrectly but sets the correct target interval for the duplicate insertion logic via pop(). Issues observed at 60fps: * kmsgrab: fps cap violations and stuttering during cursor shape changes due to increased host processing latency triggering extra duplicates. * portalgrab: idle desktop settles on ~52fps instead of the correct 30fps default target. * portalgrab: massive framerate bursting due to irregular frame arrival that manifests at specific framerates; example: "strangle 45 glxgears" produces sustained 90fps on a 60fps stream. Can also manifest when framerate = stream framerate, but is harder to reproduce. New behaviour: * minimum_fps_target defaults to (config.framerate / 2), and max_frametime aligns with the actual minimum target FPS. This makes the logging accurate and the existing documention becomes sensible. * kmsgrab: during expensive cursor updates, no more framerate violations or stuttering. * portalgrab: desktop idles at 30fps instead of ~52fps. * portalgrab: bursting is resolved. No more violations at 45fps, 60fps, etc.
d36b417 to
3f71759
Compare
|
|
I checked the Windows build and it looks OK to me. It may idle a bit lower than before (~22fps on a 60fps stream), but the previous behavior was logging an invalid interval and causing havoc with other capture methods, and the documentation was not making sense, so this fix should be committed IMO. If the lower effective floor on Windows introduces an issue with poor client decoders, the proper fix would be to target a different default value of the minimum_fps_target variable, or add an artificial multiplication factor for known problematic capture method such as Windows instead of using the wrong pop() duplicate pacing interval. For my example, adding a 1.35 (or rather, 0.75 if the capture method really needs a shorter pop interval) factor for Windows only would bring it closer to 30, but of course it would need more testing and some clarity to make sure that the real frame interval is logged properly with the factor applied. Using a factor to bring the real FPS to slightly above 50% of config.framerate would also indirectly benefit Linux capture, as it would help avoid unnecessary dropped frames caused by pipewire capture jitter for the exact half framerate case such as 30fps active rendering on a 60fps stream - but my duplicate pacing changes would be a better solution. We can revisit the pacing changes or evaluate a different default value later, if needed. |
* chore(l10n): update translations (#4793) * build(homebrew): dynamic link opus (#4826) * fix(linux/wlgrab): add frame_timestamp using wayland's ready timestamp (#4787) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * fix(linux): use FQDN naming for all Linux packaging types (#4779) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * build(deps): bump lucide-vue-next from 0.576.0 to 0.577.0 (#4818) Bumps [lucide-vue-next](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-vue-next) from 0.576.0 to 0.577.0. - [Release notes](https://github.com/lucide-icons/lucide/releases) - [Commits](https://github.com/lucide-icons/lucide/commits/0.577.0/packages/lucide-vue-next) --- updated-dependencies: - dependency-name: lucide-vue-next dependency-version: 0.577.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * refactor(confighttp): HTML page handlers into generic getPage function (#4645) * build(deps): move nvapi to official NVIDIA repo and bump to R590 (#3725) * build(deps): bump vue-i18n from 11.2.8 to 11.3.0 (#4828) Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 11.2.8 to 11.3.0. - [Release notes](https://github.com/intlify/vue-i18n/releases) - [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md) - [Commits](https://github.com/intlify/vue-i18n/commits/v11.3.0/packages/vue-i18n) --- updated-dependencies: - dependency-name: vue-i18n dependency-version: 11.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(linux/xdgportal): implement event-driven capture (#4768) * build(windows): sign windows executables (#4829) * build(deps): bump vue from 3.5.29 to 3.5.30 (#4834) Bumps [vue](https://github.com/vuejs/core) from 3.5.29 to 3.5.30. - [Release notes](https://github.com/vuejs/core/releases) - [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md) - [Commits](https://github.com/vuejs/core/compare/v3.5.29...v3.5.30) --- updated-dependencies: - dependency-name: vue dependency-version: 3.5.30 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(l10n): update translations (#4831) * fix(web-ui): add missing featured apps platform icons (#4837) * ci(windows): disable signing for arm64 (#4838) * fix(linux/xdgportal): descriptor/pointer cleanups (#4840) * feat(web-ui): add browse feature to find directories/executables/files (#4848) * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `5de4612` to `37eb3e5` (#4844) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `5de4612` to `37eb3e5`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/5de461271d05f43f267b954ac6010b410378ae47...37eb3e5bdc5a14d13ee27b85265aae2c5e9a60c2) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: 37eb3e5bdc5a14d13ee27b85265aae2c5e9a60c2 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump actions/download-artifact from 8.0.0 to 8.0.1 in the github-actions group across 1 directory (#4842) build(deps): bump actions/download-artifact Bumps the github-actions group with 1 update in the / directory: [actions/download-artifact](https://github.com/actions/download-artifact). Updates `actions/download-artifact` from 8.0.0 to 8.0.1 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3...3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: 8.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(l10n): update translations (#4841) * build(Fedora): Adjust version ranges for GCC selection (#4851) * fix(linux/xdgportal): avoid duplicate frame insertion (#4839) * build(deps): bump vmactions/freebsd-vm from 1.4.2 to 1.4.3 (#4849) Bumps [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm) from 1.4.2 to 1.4.3. - [Release notes](https://github.com/vmactions/freebsd-vm/releases) - [Commits](https://github.com/vmactions/freebsd-vm/compare/c9f815bc7aa0d34c9fdd0619b034a32d6ca7b57e...4807432c7cab1c3f97688665332c0b932062d31f) --- updated-dependencies: - dependency-name: vmactions/freebsd-vm dependency-version: 1.4.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/shared-modules from `fc11224` to `a61b494` (#4850) build(deps): bump packaging/linux/flatpak/deps/shared-modules Bumps [packaging/linux/flatpak/deps/shared-modules](https://github.com/flathub/shared-modules) from `fc11224` to `a61b494`. - [Commits](https://github.com/flathub/shared-modules/compare/fc1122496c63b13aa96ca2351a9662294291b9e0...a61b4949d10e96e5f8923284a1c847964ac3f9ad) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/shared-modules dependency-version: a61b4949d10e96e5f8923284a1c847964ac3f9ad dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(linux): generate glad sources at compile time (#4798) Co-authored-by: Conn O'Griofa <connogriofa@gmail.com> * build(deps): bump third-party/doxyconfig from `ba47416` to `a9f0c38` (#4853) Bumps [third-party/doxyconfig](https://github.com/LizardByte/doxyconfig) from `ba47416` to `a9f0c38`. - [Commits](https://github.com/LizardByte/doxyconfig/compare/ba47416c88a7f5661fa1ed24b7300ef62185e877...a9f0c38766e53d29f1141098db237e51ba3d64d8) --- updated-dependencies: - dependency-name: third-party/doxyconfig dependency-version: a9f0c38766e53d29f1141098db237e51ba3d64d8 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(i18n): clarify cmd notes (#4856) * build(deps): bump third-party/inputtino from `504f0ab` to `73e9fa1` (#4860) Bumps [third-party/inputtino](https://github.com/games-on-whales/inputtino) from `504f0ab` to `73e9fa1`. - [Commits](https://github.com/games-on-whales/inputtino/compare/504f0abc7da8ebc351f8300fb2ed98db5438ee48...73e9fa11179c86c8801e1dbce1c329d2ca07621a) --- updated-dependencies: - dependency-name: third-party/inputtino dependency-version: 73e9fa11179c86c8801e1dbce1c329d2ca07621a dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump third-party/glad from `dcc4f69` to `73db193` (#4858) Bumps [third-party/glad](https://github.com/Dav1dde/glad) from `dcc4f69` to `73db193`. - [Release notes](https://github.com/Dav1dde/glad/releases) - [Commits](https://github.com/Dav1dde/glad/compare/dcc4f69620ce15e3d40b3e8d907d293bd297dbe1...73db193f853e2ee079bf3ca8a64aa2eaf6459043) --- updated-dependencies: - dependency-name: third-party/glad dependency-version: 73db193f853e2ee079bf3ca8a64aa2eaf6459043 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(linux/xdgportal): allow unified systemd service for all capture methods (#4854) * feat(linux/keyboard): add F13-F24 keycodes (#4833) * build(deps): bump apple-actions/import-codesign-certs from 6.0.0 to 6.1.0 (#4864) build(deps): bump apple-actions/import-codesign-certs Bumps [apple-actions/import-codesign-certs](https://github.com/apple-actions/import-codesign-certs) from 6.0.0 to 6.1.0. - [Release notes](https://github.com/apple-actions/import-codesign-certs/releases) - [Commits](https://github.com/apple-actions/import-codesign-certs/compare/b610f78488812c1e56b20e6df63ec42d833f2d14...fe74d46e82474f87e1ba79832ad28a4013d0e33a) --- updated-dependencies: - dependency-name: apple-actions/import-codesign-certs dependency-version: 6.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump third-party/nv-codec-headers from `22441b5` to `fe32761` (#4866) build(deps): bump third-party/nv-codec-headers Bumps [third-party/nv-codec-headers](https://github.com/FFmpeg/nv-codec-headers) from `22441b5` to `fe32761`. - [Release notes](https://github.com/FFmpeg/nv-codec-headers/releases) - [Commits](https://github.com/FFmpeg/nv-codec-headers/compare/22441b505d9d9afc1e3002290820909846c24bdc...fe32761e7a8bc79fcf560f356bf3898271bf4d56) --- updated-dependencies: - dependency-name: third-party/nv-codec-headers dependency-version: fe32761e7a8bc79fcf560f356bf3898271bf4d56 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump actions/cache from 5.0.3 to 5.0.4 in the github-actions group across 1 directory (#4870) build(deps): bump actions/cache Bumps the github-actions group with 1 update in the / directory: [actions/cache](https://github.com/actions/cache). Updates `actions/cache` from 5.0.3 to 5.0.4 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/cdf6c1fa76f9f475f3d7449005a359c84ca0f306...668228422ae6a00e4ad889ee87cd7109ec5666a7) --- updated-dependencies: - dependency-name: actions/cache dependency-version: 5.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump codecov/codecov-action from 5.5.2 to 5.5.3 (#4871) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.2 to 5.5.3. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/671740ac38dd9b0130fbe1cec585b89eea48d3de...1af58845a975a7985b0beb0cbe6fbbb71a41dbad) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-version: 5.5.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `37eb3e5` to `cc1d7b8` (#4872) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `37eb3e5` to `cc1d7b8`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/37eb3e5bdc5a14d13ee27b85265aae2c5e9a60c2...cc1d7b8ddc859d611faed53c263af78a0aeb0c5c) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: cc1d7b8ddc859d611faed53c263af78a0aeb0c5c dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump third-party/inputtino from `73e9fa1` to `f4ce2b0` (#4873) Bumps [third-party/inputtino](https://github.com/games-on-whales/inputtino) from `73e9fa1` to `f4ce2b0`. - [Commits](https://github.com/games-on-whales/inputtino/compare/73e9fa11179c86c8801e1dbce1c329d2ca07621a...f4ce2b0df536ef309e9ff318f75b460f7097d7c1) --- updated-dependencies: - dependency-name: third-party/inputtino dependency-version: f4ce2b0df536ef309e9ff318f75b460f7097d7c1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(linux): use FQDN service name in desktop launcher (#4874) * fix(linux/xdgportal): portalgrab capture stability & mutter compatibility (#4875) * feat(macOS): Capture audio on macOS using Tap API (#4209) Co-authored-by: David Lane <42013603+ReenigneArcher@users.noreply.github.com> * feat(linux/glad): implement EGL_IMG_context_priority (#4857) * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `cc1d7b8` to `5c73dc4` (#4880) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `cc1d7b8` to `5c73dc4`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/cc1d7b8ddc859d611faed53c263af78a0aeb0c5c...5c73dc44f2be1cc5968e4700ba67c32dfa11ba23) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: 5c73dc44f2be1cc5968e4700ba67c32dfa11ba23 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump marked from 17.0.4 to 17.0.5 (#4881) Bumps [marked](https://github.com/markedjs/marked) from 17.0.4 to 17.0.5. - [Release notes](https://github.com/markedjs/marked/releases) - [Commits](https://github.com/markedjs/marked/compare/v17.0.4...v17.0.5) --- updated-dependencies: - dependency-name: marked dependency-version: 17.0.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump third-party/doxyconfig from `a9f0c38` to `334ad6a` (#4888) Bumps [third-party/doxyconfig](https://github.com/LizardByte/doxyconfig) from `a9f0c38` to `334ad6a`. - [Release notes](https://github.com/LizardByte/doxyconfig/releases) - [Commits](https://github.com/LizardByte/doxyconfig/compare/a9f0c38766e53d29f1141098db237e51ba3d64d8...334ad6a7421663be9edbaf4897c33b524642ca70) --- updated-dependencies: - dependency-name: third-party/doxyconfig dependency-version: 334ad6a7421663be9edbaf4897c33b524642ca70 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump third-party/libdisplaydevice from `b46492b` to `fe7e6a8` (#4887) build(deps): bump third-party/libdisplaydevice Bumps [third-party/libdisplaydevice](https://github.com/LizardByte/libdisplaydevice) from `b46492b` to `fe7e6a8`. - [Release notes](https://github.com/LizardByte/libdisplaydevice/releases) - [Commits](https://github.com/LizardByte/libdisplaydevice/compare/b46492be8e5d1933ead8fb8867a7910ed10b610a...fe7e6a81f65deae91594702e1a185f47229745b9) --- updated-dependencies: - dependency-name: third-party/libdisplaydevice dependency-version: fe7e6a81f65deae91594702e1a185f47229745b9 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/shared-modules from `a61b494` to `2f1fb18` (#4886) build(deps): bump packaging/linux/flatpak/deps/shared-modules Bumps [packaging/linux/flatpak/deps/shared-modules](https://github.com/flathub/shared-modules) from `a61b494` to `2f1fb18`. - [Commits](https://github.com/flathub/shared-modules/compare/a61b4949d10e96e5f8923284a1c847964ac3f9ad...2f1fb187252a619f4775e3126395584041b071fb) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/shared-modules dependency-version: 2f1fb187252a619f4775e3126395584041b071fb dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(csrf): make errors more apparent (#4889) * fix: clear tray icon when unpairing the last paired client (#4890) * feat(linux): add thread priority support for POSIX systems (#4885) * build: fix build-deps tag matching (#4899) * build(deps): bump third-party/tray from `4caf0d0` to `563dee4` (#4894) Bumps [third-party/tray](https://github.com/LizardByte/tray) from `4caf0d0` to `563dee4`. - [Release notes](https://github.com/LizardByte/tray/releases) - [Commits](https://github.com/LizardByte/tray/compare/4caf0d0868aa45b98373249db8761551f7da7b03...563dee475f8878d252ab2b9938d3a014e776ed08) --- updated-dependencies: - dependency-name: third-party/tray dependency-version: 563dee475f8878d252ab2b9938d3a014e776ed08 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump msys2/setup-msys2 from 2.30.0 to 2.31.0 (#4893) Bumps [msys2/setup-msys2](https://github.com/msys2/setup-msys2) from 2.30.0 to 2.31.0. - [Release notes](https://github.com/msys2/setup-msys2/releases) - [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md) - [Commits](https://github.com/msys2/setup-msys2/compare/4f806de0a5a7294ffabaff804b38a9b435a73bda...cafece8e6baf9247cf9b1bf95097b0b983cc558d) --- updated-dependencies: - dependency-name: msys2/setup-msys2 dependency-version: 2.31.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump lucide-vue-next from 0.577.0 to 1.0.0 (#4905) Bumps [lucide-vue-next](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-vue-next) from 0.577.0 to 1.0.0. - [Release notes](https://github.com/lucide-icons/lucide/releases) - [Commits](https://github.com/lucide-icons/lucide/commits/1.0.0/packages/lucide-vue-next) --- updated-dependencies: - dependency-name: lucide-vue-next dependency-version: 1.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump azure/trusted-signing-action from 1.1.0 to 1.2.0 (#4903) Bumps [azure/trusted-signing-action](https://github.com/azure/trusted-signing-action) from 1.1.0 to 1.2.0. - [Release notes](https://github.com/azure/trusted-signing-action/releases) - [Commits](https://github.com/azure/trusted-signing-action/compare/87c2e83e6868da99d3380aa309851b32ed9a8346...b443cf8ea4124818d2ea9f043cba29fc3ec47b16) --- updated-dependencies: - dependency-name: azure/trusted-signing-action dependency-version: 1.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `5c73dc4` to `caca92b` (#4910) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `5c73dc4` to `caca92b`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/5c73dc44f2be1cc5968e4700ba67c32dfa11ba23...caca92bc6898ea40d6521b581fef2402ba3b3aae) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: caca92bc6898ea40d6521b581fef2402ba3b3aae dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump vue from 3.5.30 to 3.5.31 (#4911) Bumps [vue](https://github.com/vuejs/core) from 3.5.30 to 3.5.31. - [Release notes](https://github.com/vuejs/core/releases) - [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md) - [Commits](https://github.com/vuejs/core/compare/v3.5.30...v3.5.31) --- updated-dependencies: - dependency-name: vue dependency-version: 3.5.31 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump LizardByte/actions from 2026.227.200013 to 2026.328.161128 in the lizardbyte-actions group across 1 directory (#4920) build(deps): bump LizardByte/actions Bumps the lizardbyte-actions group with 1 update in the / directory: [LizardByte/actions](https://github.com/lizardbyte/actions). Updates `LizardByte/actions` from 2026.227.200013 to 2026.328.161128 - [Release notes](https://github.com/lizardbyte/actions/releases) - [Commits](https://github.com/lizardbyte/actions/compare/70bb8d394d1c92f6113aeec6ae9cc959a5763d15...0affa4f7bcb27562658960eee840eff8ff844578) --- updated-dependencies: - dependency-name: LizardByte/actions dependency-version: 2026.328.161128 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lizardbyte-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * test(windows): fix display device tests with clang (#4921) * chore: update global workflows (#4916) * build(deps): bump codecov/codecov-action from 5.5.3 to 6.0.0 (#4913) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.3 to 6.0.0. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/1af58845a975a7985b0beb0cbe6fbbb71a41dbad...57e3a136b779b570ffcdbf80b3bdc90e7fab3de2) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: Allow FFMPEG_PLATFORM_LIBRARIES to be overridden by the user (#4915) * fix: restore stdin-based pairing (#4912) * build(deps): bump third-party/moonlight-common-c from `6268780` to `7022b33` (#4923) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `6268780` to `7022b33`. - [Commits](https://github.com/moonlight-stream/moonlight-common-c/compare/62687809b1f7410c3db4be2527503a54ae408d70...7022b337a9a682f1d974aed69f6065fa57b4164f) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 7022b337a9a682f1d974aed69f6065fa57b4164f dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(api/ui): add client enable/disable access control (#4771) * fix(windows): update-path.bat registry command syntax in installer (#4902) * build(deps): bump vmactions/freebsd-vm from 1.4.3 to 1.4.4 (#4928) Bumps [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm) from 1.4.3 to 1.4.4. - [Release notes](https://github.com/vmactions/freebsd-vm/releases) - [Commits](https://github.com/vmactions/freebsd-vm/compare/4807432c7cab1c3f97688665332c0b932062d31f...7ca82f79fe3078fecded6d3a2bff094995447bbd) --- updated-dependencies: - dependency-name: vmactions/freebsd-vm dependency-version: 1.4.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(linux): Add Vulkan video encoder (#4603) * build(deps): bump third-party/moonlight-common-c from `7022b33` to `7b026e7` (#4930) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `7022b33` to `7b026e7`. - [Commits](https://github.com/moonlight-stream/moonlight-common-c/compare/7022b337a9a682f1d974aed69f6065fa57b4164f...7b026e77be62175104640e7e722b758df6d3d0d7) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 7b026e77be62175104640e7e722b758df6d3d0d7 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump third-party/nvapi from `9296d67` to `9b181ea` (#4917) Bumps [third-party/nvapi](https://github.com/NVIDIA/nvapi) from `9296d67` to `9b181ea`. - [Commits](https://github.com/NVIDIA/nvapi/compare/9296d671e71608d6d6b7749ed93989af4ada8858...9b181ea572f680327fe01a14a0f1f41c78034104) --- updated-dependencies: - dependency-name: third-party/nvapi dependency-version: 9b181ea572f680327fe01a14a0f1f41c78034104 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore: update global workflows (#4936) * build(deps): bump vue from 3.5.31 to 3.5.32 (#4941) Bumps [vue](https://github.com/vuejs/core) from 3.5.31 to 3.5.32. - [Release notes](https://github.com/vuejs/core/releases) - [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md) - [Commits](https://github.com/vuejs/core/compare/v3.5.31...v3.5.32) --- updated-dependencies: - dependency-name: vue dependency-version: 3.5.32 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump marked from 17.0.5 to 18.0.0 (#4957) Bumps [marked](https://github.com/markedjs/marked) from 17.0.5 to 18.0.0. - [Release notes](https://github.com/markedjs/marked/releases) - [Commits](https://github.com/markedjs/marked/compare/v17.0.5...v18.0.0) --- updated-dependencies: - dependency-name: marked dependency-version: 18.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump vue-i18n from 11.3.0 to 11.3.1 (#4953) Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 11.3.0 to 11.3.1. - [Release notes](https://github.com/intlify/vue-i18n/releases) - [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md) - [Commits](https://github.com/intlify/vue-i18n/commits/v11.3.1/packages/vue-i18n) --- updated-dependencies: - dependency-name: vue-i18n dependency-version: 11.3.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/shared-modules from `2f1fb18` to `6ea20c8` (#4949) build(deps): bump packaging/linux/flatpak/deps/shared-modules Bumps [packaging/linux/flatpak/deps/shared-modules](https://github.com/flathub/shared-modules) from `2f1fb18` to `6ea20c8`. - [Commits](https://github.com/flathub/shared-modules/compare/2f1fb187252a619f4775e3126395584041b071fb...6ea20c834ed5378c4ab5d36676650921eeac1367) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/shared-modules dependency-version: 6ea20c834ed5378c4ab5d36676650921eeac1367 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: redact logging of sensitive config & CSRF validation (#4955) * fix(linux): correct "Pulseadio" typo in PulseAudio log messages (#4956) * fix(linux/vulkan): add 16-bit DRM format support for HDR DMA-BUF import (#4962) * fix(linux/xdgportal): Properly support multiple screens by exposing pipewire streams as separate displays (#4931) * fix(linux/postins): allow running on rpm-ostree environments (#4963) * build(deps): bump actions/github-script from 8.0.0 to 9.0.0 (#4970) build(deps): bump actions/github-script in / Bumps [actions/github-script](https://github.com/actions/github-script) in `/` from 8.0.0 to 9.0.0. Updates `actions/github-script` from 8.0.0 to 9.0.0 - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/ed597411d8f924073f98dfc5c65a23a2325f34cd...3a2844b7e9c422d3c10d287c895573f7108da1b3) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github_actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump vue-i18n from 11.3.1 to 11.3.2 (#4964) Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 11.3.1 to 11.3.2. - [Release notes](https://github.com/intlify/vue-i18n/releases) - [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md) - [Commits](https://github.com/intlify/vue-i18n/commits/v11.3.2/packages/vue-i18n) --- updated-dependencies: - dependency-name: vue-i18n dependency-version: 11.3.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(linux/xdgportal): Improve multi-monitor support and work around breaking kmsgrab (#4969) * chore: update global workflows (#4976) * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `caca92b` to `9d9ad80` (#4983) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `caca92b` to `9d9ad80`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/caca92bc6898ea40d6521b581fef2402ba3b3aae...9d9ad80a55d730e4284d1f09a93da667c84a118a) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: 9d9ad80a55d730e4284d1f09a93da667c84a118a dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/shared-modules from `6ea20c8` to `b8236c7` (#4975) build(deps): bump packaging/linux/flatpak/deps/shared-modules Bumps [packaging/linux/flatpak/deps/shared-modules](https://github.com/flathub/shared-modules) from `6ea20c8` to `b8236c7`. - [Commits](https://github.com/flathub/shared-modules/compare/6ea20c834ed5378c4ab5d36676650921eeac1367...b8236c7961e3dd447b1b9605375a54a12f9f24b6) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/shared-modules dependency-version: b8236c7961e3dd447b1b9605375a54a12f9f24b6 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (#4974) build(deps): bump peter-evans/create-pull-request in / Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) in `/` from 8.1.0 to 8.1.1. Updates `peter-evans/create-pull-request` from 8.1.0 to 8.1.1 - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/c0f553fe549906ede9cf27b5156039d195d2ece0...5f6978faf089d4d20b00c7766989d076bb2fc7f1) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-version: 8.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github_actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (#4973) build(deps): bump actions/upload-artifact in / Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) in `/` from 7.0.0 to 7.0.1. Updates `actions/upload-artifact` from 7.0.0 to 7.0.1 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f...043fb46d1a93c77aae656e7c1c64a875d1fc6a0a) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github_actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(linux/xdgportal): Additional error handling and minor code improvements (#4979) * feat(linux/vulkan): enable RADV low-latency Vulkan Video encoding (#4984) * build(deps-dev): bump vite from 6.4.1 to 6.4.2 (#4985) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.4.1 to 6.4.2. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v6.4.2/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.4.2/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 6.4.2 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * revert: "feat(linux/vulkan): enable RADV low-latency Vulkan Video encoding" (#4989) * chore: update global workflows (#4990) * fix(linux/vulkan): encoder not working on NVIDIA GPUs (#4994) * chore(deps): update dependency @vitejs/plugin-vue to v6.0.6 (#4992) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/cache action to v5.0.5 (#4991) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux/vulkan): guard deprecated FFmpeg Vulkan queue lock/unlock (#5005) * chore(deps): update dependency setuptools to v81 (#5003) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update lizardbyte/actions action to v2026.417.35446 (#5012) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.1 (#5011) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update vmactions/freebsd-vm action to v1.4.5 (#5001) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `9d9ad80` to `34ecf07` (#5015) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `9d9ad80` to `34ecf07`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/9d9ad80a55d730e4284d1f09a93da667c84a118a...34ecf07ef4843f36b3078637ca13f1dbb1c2963a) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: 34ecf07ef4843f36b3078637ca13f1dbb1c2963a dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): update msys2/setup-msys2 action to v2.31.1 (#5016) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @codecov/vite-plugin to v2 (#4996) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux): auto-detect GPU with connected display for VAAPI and Vulkan (#4961) * refactor(linux/xdgportal): Split pipewire code into it's own file so it can be reused (#5008) * fix(rtsp): ignore clientRefreshRateX100 if more than 1% variance from framerate (#5027) Co-authored-by: Andy Grundman <105828+andygrundman@users.noreply.github.com> * fix: Resolve minimum_fps_target related issues on all platforms (#4967) * fix(linux/vulkan): remove deprecated FFmpeg Vulkan queue lock/unlock (#5031) * feat(nvenc): support for split frame encoding on GPUs with 2+ nvenc blocks (#4892) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * refactor(linux/xdgportal): Move elevated privilege check/drop to misc.cpp (#5026) * fix(linux/vulkan): change default rate control from VBR to CBR (#5032) * chore(deps): update actions/setup-node action to v6.4.0 (#5033) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.2 (#5022) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/nv-codec-headers from `e844e5b` to `33a9ede` (#5035) build(deps): bump third-party/nv-codec-headers Bumps [third-party/nv-codec-headers](https://github.com/FFmpeg/nv-codec-headers) from `e844e5b` to `33a9ede`. - [Release notes](https://github.com/FFmpeg/nv-codec-headers/releases) - [Commits](https://github.com/FFmpeg/nv-codec-headers/compare/e844e5b26f46bb77479f063029595293aa8f812d...33a9ede8d9914299d9262539c576a15bd0a19621) --- updated-dependencies: - dependency-name: third-party/nv-codec-headers dependency-version: 33a9ede8d9914299d9262539c576a15bd0a19621 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(linux): multi-GPU segfault + wlr GPU auto selection, DMA-BUF metadata planes and revert wlr vulkan support (#5030) * chore(deps): update apple-actions/import-codesign-certs action to v7 (#5037) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix: touch scaling bug and initialize display variables as 0 (#4758) Co-authored-by: Chase Payne <27069224+nonary@users.noreply.github.com> * fix(network): restore ExternalIP in server info response (#5043) * chore(deps): update dependency vue to v3.5.33 (#5042) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux/pipewire): Fix absolute touchinput for multi-monitor (#5041) * refactor(linux): remove leftovers from portalgrab -> pipewire split (#5039) * docs(readme): restructure feature compatibility tables (#5040) * fix(linux/pipewire): calculate env_width/env_height from all displays for pipewire_display_t (#5050) * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `34ecf07` to `e39e586` (#5052) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `34ecf07` to `e39e586`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/34ecf07ef4843f36b3078637ca13f1dbb1c2963a...e39e58633c61060e3705b5a24d1b52e99a79f1b5) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: e39e58633c61060e3705b5a24d1b52e99a79f1b5 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): update dependency vue-i18n to v11.4.0 (#5048) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat(linux/xdgportal): Simplify display matching logic (#5053) * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `e39e586` to `50a0768` (#5055) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `e39e586` to `50a0768`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/e39e58633c61060e3705b5a24d1b52e99a79f1b5...50a07682428880637a315e4225499b719317344f) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: 50a07682428880637a315e4225499b719317344f dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(linux/pipewire): Add support for pipewire stream selection by object serial (#5054) * build(deps): bump third-party/build-deps from `c08f69d` to `cd7d45a` (#5056) * build(deps): bump third-party/build-deps from `c08f69d` to `cd7d45a` Bumps [third-party/build-deps](https://github.com/LizardByte/build-deps) from `c08f69d` to `cd7d45a`. - [Release notes](https://github.com/LizardByte/build-deps/releases) - [Commits](https://github.com/LizardByte/build-deps/compare/c08f69db10450bd06cf79045e79b9179c99bae70...cd7d45a4a1916d7949046162d81e859112ad3ab1) --- updated-dependencies: - dependency-name: third-party/build-deps dependency-version: cd7d45a4a1916d7949046162d81e859112ad3ab1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * Update FFmpeg flatpak sources to v2026.425 Bump the FFmpeg prebuilt artifacts used by the Flatpak module to release v2026.425.130933. Updated download URLs and SHA256 checksums for x86_64 and aarch64 builds (dest-filename remains ffmpeg.tar.gz). No other changes. --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * feat(capture/linux): add KWin direct screencast capture method (#5009) Co-authored-by: Ramalama2 <6314556+Ramalama2@users.noreply.github.com> * feat(linux/pipewire): Handle HDR(Rec. 2020/SMPTE 2084 PQ) visuals (#5025) * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `50a0768` to `1895ec8` (#5073) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `50a0768` to `1895ec8`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/50a07682428880637a315e4225499b719317344f...1895ec86e460198100089435ecb7c387ebd2264d) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: 1895ec86e460198100089435ecb7c387ebd2264d dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/shared-modules from `b8236c7` to `2dfad85` (#5070) build(deps): bump packaging/linux/flatpak/deps/shared-modules Bumps [packaging/linux/flatpak/deps/shared-modules](https://github.com/flathub/shared-modules) from `b8236c7` to `2dfad85`. - [Commits](https://github.com/flathub/shared-modules/compare/b8236c7961e3dd447b1b9605375a54a12f9f24b6...2dfad855131c70ff7cafd32f3f4901c6d82b9247) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/shared-modules dependency-version: 2dfad855131c70ff7cafd32f3f4901c6d82b9247 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump third-party/wlr-protocols from `a741f0a` to `bf4fc79` (#5072) Bumps [third-party/wlr-protocols](https://github.com/LizardByte-infrastructure/wlr-protocols) from `a741f0a` to `bf4fc79`. - [Commits](https://github.com/LizardByte-infrastructure/wlr-protocols/compare/a741f0ac5d655338a5100fc34bc8cec87d237346...bf4fc79abc359eea5a0edec0ac6d4a2b2955f82a) --- updated-dependencies: - dependency-name: third-party/wlr-protocols dependency-version: bf4fc79abc359eea5a0edec0ac6d4a2b2955f82a dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.3 (#5068) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat(input): implement multiseat support and virtual device naming (#4954) * fix(linux): security: drop CAP_SYS_ADMIN when possible, retain CAP_SYS_NICE (#5075) * feat(linux/wlgrab): match output_name by xdg_output name (#5071) * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `1895ec8` to `dda10aa` (#5077) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `1895ec8` to `dda10aa`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/1895ec86e460198100089435ecb7c387ebd2264d...dda10aa5949811589747e6e485da6ae2e86b5d2b) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: dda10aa5949811589747e6e485da6ae2e86b5d2b dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): update dependency vue to v3.5.34 (#5078) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(linux): add ubuntu 26.04 support (#5051) * build(linux): fix gcov detection for ArchLinux (#5081) * chore(deps): update dependency vue-i18n to v11.4.2 (#5080) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Merge commit from fork * build(web-ui): commit lock file (#5083) * fix: show actual bind address in Web UI log message (#4897) * build(windows): Always setup Node.js in Windows CI (#5084) * feat(nvenc): support intraRefresh for h264, add outputRecoveryPointSEI=1 to intra-refresh config for h264 and hevc (#5091) * fix: building without the system tray enabled (#5092) * build(deps): bump third-party/build-deps from `cd7d45a` to `d8b1d18` (#5097) Bumps [third-party/build-deps](https://github.com/LizardByte/build-deps) from `cd7d45a` to `d8b1d18`. - [Release notes](https://github.com/LizardByte/build-deps/releases) - [Commits](https://github.com/LizardByte/build-deps/compare/cd7d45a4a1916d7949046162d81e859112ad3ab1...d8b1d18b7e82f8ee396bdd05e226896fa523b0df) --- updated-dependencies: - dependency-name: third-party/build-deps dependency-version: d8b1d18b7e82f8ee396bdd05e226896fa523b0df dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/shared-modules from `2dfad85` to `8c3f3cf` (#5098) build(deps): bump packaging/linux/flatpak/deps/shared-modules Bumps [packaging/linux/flatpak/deps/shared-modules](https://github.com/flathub/shared-modules) from `2dfad85` to `8c3f3cf`. - [Commits](https://github.com/flathub/shared-modules/compare/2dfad855131c70ff7cafd32f3f4901c6d82b9247...8c3f3cfa5a4af9a696ff0bfb3ed0eba404faaf5d) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/shared-modules dependency-version: 8c3f3cfa5a4af9a696ff0bfb3ed0eba404faaf5d dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ci: remove moonlight discord release announcement (#5099) * build(deps): Add SUNSHINE_SYSTEM_VULKAN_HEADERS option (#5103) Signed-off-by: James Le Cuirot <chewi@gentoo.org> * build(macos): configure C++ standard and ICU root (#5101) * fix(macos): preserve modifier state in input events (#5102) * build(windows): drop unused boost-locale (#5116) * ci(windows): add linkage check (#5118) * chore(deps): update azure/trusted-signing-action action to v2 (#5117) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(macos): provide left/right identity for modifiers (#5115) * feat(web-ui): add logout (#5121) * build(deps): bump third-party/moonlight-common-c from `7b026e7` to `2600bea` (#5123) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `7b026e7` to `2600bea`. - [Commits](https://github.com/moonlight-stream/moonlight-common-c/compare/7b026e77be62175104640e7e722b758df6d3d0d7...2600beaf13f18bfa43453609cf5e3b84a4227760) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 2600beaf13f18bfa43453609cf5e3b84a4227760 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): update dependency @vitejs/plugin-vue to v6.0.7 (#5122) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/plasma-wayland-protocols from `18afc45` to `4c015e9` (#5124) build(deps): bump third-party/plasma-wayland-protocols Bumps [third-party/plasma-wayland-protocols](https://github.com/KDE/plasma-wayland-protocols) from `18afc45` to `4c015e9`. - [Commits](https://github.com/KDE/plasma-wayland-protocols/compare/18afc45c092857e998c890afce1e7e71f808d819...4c015e90ae6c88f2ffa766e899387ef431eade49) --- updated-dependencies: - dependency-name: third-party/plasma-wayland-protocols dependency-version: 4c015e90ae6c88f2ffa766e899387ef431eade49 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(linux/pipewire): Add 10-bit RGB formats with 2-bit Alpha to format_map (#5088) * chore: update global workflows (#5126) * fix(audio): fix install of Steam Streaming Speakers driver (#5125) * build(deps): bump third-party/doxyconfig from `334ad6a` to `e552f7c` (#5127) Bumps [third-party/doxyconfig](https://github.com/LizardByte/doxyconfig) from `334ad6a` to `e552f7c`. - [Release notes](https://github.com/LizardByte/doxyconfig/releases) - [Commits](https://github.com/LizardByte/doxyconfig/compare/334ad6a7421663be9edbaf4897c33b524642ca70...e552f7c9f00cd0cf24764a37d0905935b3d2c188) --- updated-dependencies: - dependency-name: third-party/doxyconfig dependency-version: e552f7c9f00cd0cf24764a37d0905935b3d2c188 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump freebsd version to 14.4 and build-deps to v2026.516.30821 (#5129) * build(deps): bump third-party/inputtino from `f4ce2b0` to `b887f6a` (#5135) Bumps [third-party/inputtino](https://github.com/games-on-whales/inputtino) from `f4ce2b0` to `b887f6a`. - [Commits](https://github.com/games-on-whales/inputtino/compare/f4ce2b0df536ef309e9ff318f75b460f7097d7c1...b887f6a37a4f6babea66ee7b9a79bc8f520d7554) --- updated-dependencies: - dependency-name: third-party/inputtino dependency-version: b887f6a37a4f6babea66ee7b9a79bc8f520d7554 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(macos): scale remote scroll input using macOS scroll speed (#5133) * chore(deps): update dependency vue-i18n to v11.4.3 (#5139) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: fixes for release automation (#5142) * chore(deps): update dependency vue-i18n to v11.4.4 (#5143) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency date-fns to v4.2.1 (#5145) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update codecov/codecov-action action to v6.0.1 (#5149) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(web): disconnect only the disabled client instead of all sessions (#5138) * chore(deps): update dependency marked to v18.0.4 (#5151) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: rename copilot-instructions.md to AGENTS.md (#5156) * fix(Windows-installer): move ViGEmBus to ThirdParty group (#5157) * feat(rtsp): add option to limit packetsize for clients that cannot configure it (#5153) Signed-off-by: Georgi Valkov <gvalkov@gmail.com> * feat(web-ui): Added Filtering & Searching to the Apps page (#5158) Co-authored-by: Noklef <281545466+Noklef@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `dda10aa` to `ee65dc7` (#5155) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `dda10aa` to `ee65dc7`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/dda10aa5949811589747e6e485da6ae2e86b5d2b...ee65dc7a798be56de8c4c1ab73411461cac020b4) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: ee65dc7a798be56de8c4c1ab73411461cac020b4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(crowdin): set commit message (#5160) * chore(l10n): update translations (#5161) * fix(web): the packetsize upper limit is 65535 (#5167) Signed-off-by: Georgi Valkov <gvalkov@gmail.com> * chore(l10n): update translations (#5162) * chore(deps): update dependency date-fns to v4.3.0 (#5172) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `ee65dc7` to `96e2fe8` (#5165) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `ee65dc7` to `96e2fe8`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/ee65dc7a798be56de8c4c1ab73411461cac020b4...96e2fe8bf7d2e5791ca1bdce2dba373f1e27c425) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: 96e2fe8bf7d2e5791ca1bdce2dba373f1e27c425 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): update lizardbyte/actions action to v2026.522.121358 (#5173) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(web-ui): add documentation link and version-aware URLs (#5176) * chore(deps): update lizardbyte/actions action to v2026.524.145234 (#5177) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): migrate from lucide-vue-next to @lucide/vue (#5179) * chore(l10n): update translations (#5178) * chore: Add CLion run configuration for 'sunshine' (#5181) * build(freebsd): fix npm install (#5182) * fix(linux): migrate to qt tray (#4907) Co-authored-by: Kishi <41839133+Kishi85@users.noreply.github.com> * fix: explicitly check construct function error in thread_safe.h (#5184) * build(macos): quote SHOULD_SIGN env expansion in install script (#5185) * fix(macos/packaging): add NSLocalNetworkUsageDescription so Bonjour can register (#5186) * chore(l10n): update translations (#5193) * fix(linux/vulkan): preserve host aspect ratio in encoder output (#5130) * fix(macos): drop max_ref_frames=1 for h264_videotoolbox and enable PARALLEL_ENCODING (#5200) * chore(deps): update dependency vue to v3.5.35 (#5204) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (#5196) * build(Archlinux): Shallow clone dependent submodules (#5206) * chore(deps): update dependency @lucide/vue to v1.17.0 (#5210) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/setup-dotnet action to v5.3.0 (#5208) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux/vulkan): Ensure RADV vulkan video encoding is enabled on newer versions of Mesa (#5211) * fix(linux/kwin): retry init with fully dropped elevated privileges in case KWin is missing CAP_SYS_NICE on linux (#5212) * feat(web-ui): Updated `Add` / `Edit` app form to use modals + new `Delete` App UI flow (#5166) * chore(deps): bump wayland-protocols to 1.48 (#5219) * chore(deps): update dependency date-fns to v4.4.0 (#5215) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (#5220) * build(deps): bump third-party/tray from `6332649` to `df9af11` (#5221) Bumps [third-party/tray](https://github.com/LizardByte/tray) from `6332649` to `df9af11`. - [Release notes](https://github.com/LizardByte/tray/releases) - [Commits](https://github.com/LizardByte/tray/compare/6332649ac6c051453c00327919e84472c7a2f660...df9af119085e2cd3f1a9e88e4cc865963879d468) --- updated-dependencies: - dependency-name: third-party/tray dependency-version: df9af119085e2cd3f1a9e88e4cc865963879d468 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(python): migrate to uv (#5222) * build(homebrew): fix service install on linux (#5223) * chore(gh-pages): remove unused jquery dependency (#5235) * docs(contributing): refresh clang-format guidance (#5233) * chore(deps): update vmactions/freebsd-vm action to v1.4.6 (#5226) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (#5229) * chore(deps): update dependency bootstrap-icons to v1.13.1 (#5239) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vite to v6.4.3 (#5238) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update official github actions to v6.0.3 (#5242) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency simple-icons to v13 (#5243) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency simple-icons to v16 (#5248) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: David Lane <42013603+ReenigneArcher@users.noreply.github.com> * chore(deps): use lizardbyte-common for python helpers (#5250) * chore(deps): update lizardbyte/actions action to v2026.605.34721 (#5253) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.5 (#5251) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update astral-sh/setup-uv action to v8.2.0 (#5245) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update codecov/codecov-action action to v7 (#5262) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue-i18n to v11.4.5 (#5256) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `96e2fe8` to `ac5a296` (#5263) build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools Bumps [packaging/linux/flatpak/deps/flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools) from `96e2fe8` to `ac5a296`. - [Commits](https://github.com/flatpak/flatpak-builder-tools/compare/96e2fe8bf7d2e5791ca1bdce2dba373f1e27c425...ac5a296ac6111aa2319daf532f609a067b88d8a9) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: ac5a296ac6111aa2319daf532f609a067b88d8a9 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump third-party/wayland-protocols from `02e63e7` to `ee78491` (#5271) build(deps): bump third-party/wayland-protocols Bumps [third-party/wayland-protocols](https://github.com/LizardByte-infrastructure/wayland-protocols) from `02e63e7` to `ee78491`. - [Commits](https://github.com/LizardByte-infrastructure/wayland-protocols/compare/02e63e74a807afed95bc25a386173110afef24e3...ee78491a237eaff9389a0ccf8680521d074407d3) --- updated-dependencies: - dependency-name: third-party/wayland-protocols dependency-version: ee78491a237eaff9389a0ccf8680521d074407d3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(homebrew): bump ubuntu to 24.04 (#5272) * fix(wayland): support DMA-BUF modifiers for wlroots capture (#5132) * chore(deps): bump libdisplaydevice (#5280) * chore(deps): update vue monorepo to v3.5.37 (#5281) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(tray): fix compiling without system tray enabled (#5284) * chore(deps): update msys2/setup-msys2 action to v2.32.0 (#5285) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update lucide monorepo to v1.18.0 (#5287) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update vue monorepo to v3.5.38 (#5283) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(Linux/AppImage): replace gtk plugin with qt plugin for system tray (#5295) * feat(linux): Add hardware yuv444 chromasubsampling support on nvidia cards (cuda/cuda gl) (#4965) * chore(deps): lock file maintenance (#5269) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/tray from `df9af11` to `8ea4c68` (#5296) Bumps [third-party/tray](https://github.com/LizardByte/tray) from `df9af11` to `8ea4c68`. - [Release notes](https://github.com/LizardByte/tray/releases) - [Commits](https://github.com/LizardByte/tray/compare/df9af119085e2cd3f1a9e88e4cc865963879d468...8ea4c6835d623b1095a6c8885d70e6c836ca2307) --- updated-dependencies: - dependency-name: third-party/tray dependency-version: 8ea4c6835d623b1095a6c8885d70e6c836ca2307 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): update lucide monorepo to v1.20.0 (#5297) Co-authored-by: renovate[bot] <29139614+renovate[…



Description
Multiples changes that affects all platforms, aimed at resolving issues related to the minimum_fps_target setting. During testing of both portalgrab and kmsgrab, certain streaming conditions can be observed to cause the stream framerate cap to be violated, which is resolved by these changes.
fix(video): set correct default minimum_fps_target and max_frametime interval alignment
The current minimum_fps_target and max_frametime intervals are set/logged incorrectly
and break capture methods on Linux. Example with a 60fps stream:
pop() interval is actually 16.6ms.
Setting a manual value logs the target FPS and interval incorrectly but
sets the correct target interval for the duplicate insertion logic via pop().
Issues observed at 60fps:
due to increased host processing latency triggering extra duplicates.
default target.
that manifests at specific framerates; example: "strangle 45 glxgears"
produces sustained 90fps on a 60fps stream. Can also manifest when framerate =
stream framerate, but is harder to reproduce.
New behaviour:
aligns with the actual minimum target FPS. This makes the logging accurate
and the existing documention becomes sensible.
or stuttering.
fix: resolve timed pop() resetting timeout on spurious wakeups
The previous implementation called wait_for(delay) inside a manual loop,
causing the full timeout to reset on each spurious wakeup.
Replace with a single predicate-based wait_for call, which handles
spurious wakeups internally while correctly honoring the original deadline.
Revert "fix(linux/xdgportal): avoid duplicate frame insertion (#4839)"
This reverts commit 99d4e05.
Screenshot
Issues Fixed or Closed
Fixes #4906
Roadmap Issues
Type of Change
Checklist
AI Usage