Skip to content

feat(macOS): Capture audio on macOS using Tap API#4209

Merged
ReenigneArcher merged 57 commits into
LizardByte:masterfrom
ThomVanL:users/thomasvanlaere/feat-macos-ca-taps
Mar 21, 2026
Merged

feat(macOS): Capture audio on macOS using Tap API#4209
ReenigneArcher merged 57 commits into
LizardByte:masterfrom
ThomVanL:users/thomasvanlaere/feat-macos-ca-taps

Conversation

@ThomVanL

@ThomVanL ThomVanL commented Aug 29, 2025

Copy link
Copy Markdown
Contributor

Description

This PR adds system-wide audio tap support for macOS. The implementation introduces:

  • System-wide audio tap functionality to capture audio from all system sources
    • Uses an audio converter to handle varying client audio requirements
  • Unit tests covering the new system tap methods, along with additional coverage for the existing microphone path
  • Updated UI with a macOS-specific toggle (see screenshots)
  • Updated configuration options to support the new audio tap feature
  • Added Doxygen documentation for new APIs

Additional changes

  • Adjusted cmake files for compatibility with Homebrew-based setup.
    • Tweaked dependency detection so that openssl and opus are found automatically. This replaces the need to run manual ln commands, but I’m not sure if this is the best long-term approach. Feedback welcome.
    • Updated cmake/compile_definitions/unix.cmake to ensure SUNSHINE_ASSETS_DIR resolves correctly.
  • Updated src_assets/macos/assets/Info.plist to prepare for required macOS permission prompts.
  • Added a macos_system_wide_audio_tap config option to the audio_t struct.

Testing

  • Verified functionality with multiple (Moonlight) clients requiring mono, stereo, 5.1, and 7.1 audio configurations.
  • Confirmed audio conversion works as expected across varying client setups.
  • Stress-tested with multiple concurrent clients for several hours without memory leaks or race conditions observed.
  • Host ran an arm64 build during testing

Notes

  • My background is primarily in .NET, with some experience in C, C++, and Rust. Objective-C is new to me, but I carefully reviewed and tested the bits on memory management and synchronization.
  • I leaned on GitHub Copilot and AI assistance heavily for the Objective-C parts, especially syntax and boilerplate; but I reviewed, debugged and tested everything myself a bunch of times.
  • Some of the unit tests were bordering on integration tests, so I tried to keep them focused and not blur the lines too much.
  • I developed this feature to make Sunshine more accessible on macOS, especially for less technical users. I have to admit that I fumbled quite a bit getting BlackHole to work. 🙂 But I also wanted to make sure to not break the existing setupMicrophone functionality as it is also a viable option!
  • I am not entirely convinced on the naming or location of the macos_system_wide_audio_tap setting.
    • Open to suggestions here!
  • Built this on arm64 macOS 15.6.1 (24G90)

If the AI involvement is a blocker for merging, no worries. I can totally understand! This was also a learning project for me and I had a lot of fun building it.

Screenshot

Web UI – Audio/Video Configuration
New option for enabling system-wide audio recording on macOS. Disables the audio sink option when checked.
a

macOS Permission Prompt
System permission request when Sunshine first tries to access system audio:
b

System Settings – Screen & System Audio Recording
macOS privacy settings showing Sunshine/Terminal access to "System Audio Recording Only":
c

Issues Fixed or Closed

Roadmap Issues

Type of Change

  • feat: New feature (non-breaking change which adds functionality)
  • fix: Bug fix (non-breaking change which fixes an issue)
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semicolons, etc.)
  • refactor: Code change that neither fixes a bug nor adds a feature
  • perf: Code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files
  • revert: Reverts a previous commit
  • BREAKING CHANGE: Introduces a breaking change (can be combined with any type above)

Checklist

  • Code follows the style guidelines of this project
  • Code has been self-reviewed
  • Code has been commented, particularly in hard-to-understand areas
  • Code docstring/documentation-blocks for new or existing methods/components have been added or updated
  • Unit tests have been added or updated for any new or modified functionality

AI Usage

  • None: No AI tools were used in creating this PR
  • Light: AI provided minor assistance (formatting, simple suggestions)
  • Moderate: AI helped with code generation or debugging specific parts
  • Heavy: AI generated most or all of the code changes

@ThomVanL ThomVanL changed the title Capture audio on macOS using Tap API feat(macOS): Capture audio on macOS using Tap API Aug 29, 2025
@ReenigneArcher

This comment was marked as resolved.

@ThomVanL

This comment was marked as resolved.

@ReenigneArcher

This comment was marked as resolved.

Comment thread src/platform/windows/display_base.cpp
@ReenigneArcher

This comment was marked as resolved.

@codecov

codecov Bot commented Aug 30, 2025

Copy link
Copy Markdown

Bundle Report

Changes will increase total bundle size by 19 bytes (0.0%) ⬆️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
sunshine-esm 780.86kB 19 bytes (0.0%) ⬆️

Affected Assets, Files, and Routes:

view changes for bundle: sunshine-esm

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/_plugin-*.js 19 bytes 352.6kB 0.01%

Files in assets/_plugin-*.js:

  • ./src_assets/common/assets/web/public/assets/locale/en.json → Total Size: 37.87kB

@codecov

codecov Bot commented Aug 30, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 45.61069% with 285 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (master@a7ab814). Learn more about missing BASE report.
⚠️ Report is 209 commits behind head on master.

Files with missing lines Patch % Lines
src/platform/macos/av_audio.mm 48.79% 143 Missing and 90 partials ⚠️
src/platform/macos/microphone.mm 5.00% 30 Missing and 8 partials ⚠️
src/platform/macos/coreaudio_helpers.h 50.00% 9 Missing and 3 partials ⚠️
src/audio.cpp 66.66% 0 Missing and 1 partial ⚠️
src/platform/windows/audio.cpp 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff            @@
##             master    #4209   +/-   ##
=========================================
  Coverage          ?   18.51%           
=========================================
  Files             ?      107           
  Lines             ?    22448           
  Branches          ?     9970           
=========================================
  Hits              ?     4156           
  Misses            ?    15929           
  Partials          ?     2363           
Flag Coverage Δ
Archlinux 12.27% <0.00%> (?)
FreeBSD-14.3-amd64 14.09% <0.00%> (?)
Homebrew-ubuntu-22.04 14.63% <75.00%> (?)
Linux-AppImage 12.77% <0.00%> (?)
Windows-AMD64 14.98% <0.00%> (?)
Windows-ARM64 13.39% <0.00%> (?)
macOS-arm64 19.11% <29.23%> (?)
macOS-x86_64 18.48% <44.52%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/config.h 0.00% <ø> (ø)
src/platform/common.h 32.40% <ø> (ø)
src/platform/linux/audio.cpp 60.14% <100.00%> (ø)
src/audio.cpp 55.21% <66.66%> (ø)
src/platform/windows/audio.cpp 25.40% <0.00%> (ø)
src/platform/macos/coreaudio_helpers.h 50.00% <50.00%> (ø)
src/platform/macos/microphone.mm 25.75% <5.00%> (ø)
src/platform/macos/av_audio.mm 48.79% <48.79%> (ø)

@andygrundman

Copy link
Copy Markdown
Contributor

Thanks for the PR. I have built this on my M1 Pro MBP and have been trying to get it to work, but haven't had much success so far. I am not able to get any sound to be captured and/or sent. So far I am only testing with the simplest use case of audio playing out of my MBP speakers. I edited the code to make the tap and aggregate non-private, so I could try to view the tap/aggregate with Apple's sample app I can see the tap, but not the aggregate. I'm not sure what's wrong. Can you detail your testing process?

I do seem to be getting OK log entries and since I'm running from iTerm, all my permissions seem to be in order (iTerm has access to many things).

[2025-08-29 23:56:39.783]: Info: Detected display: Built-in Retina Display (id: 1) connected: true
[2025-08-29 23:56:39.783]: Info: Configuring selected display (1) to stream
[2025-08-29 23:56:39.841]: Info: Creating encoder [hevc_videotoolbox]
[2025-08-29 23:56:39.841]: Info: Color coding: SDR (Rec. 601)
[2025-08-29 23:56:39.841]: Info: Color depth: 10-bit
[2025-08-29 23:56:39.841]: Info: Color range: MPEG
[2025-08-29 23:56:39.841]: Info: Streaming bitrate is 55987000
[2025-08-29 23:56:39.850]: Info: [hevc_videotoolbox @ 0x143e60e70] This device does not support the max_ref_frames option. Value ignored.
[2025-08-29 23:56:40.712]: Info: Using macOS system audio tap for capture.
[2025-08-29 23:56:40.712]: Info: Sample rate: 48000, Frame size: 240, Channels: 2
[2025-08-29 23:56:40.738]: Info: Aggregate device created with ID: 203
[2025-08-29 23:56:40.738]: Info: Aggregate device created and configured successfully
[2025-08-29 23:56:40.739]: Info: No conversion needed - formats match (device: 48000Hz/2ch)
[2025-08-29 23:56:40.739]: Info: Device properties and converter configuration completed
[2025-08-29 23:56:40.793]: Info: System tap IO proc created and started successfully
[2025-08-29 23:56:40.793]: Info: Audio buffer initialized successfully with size: 8192 bytes
[2025-08-29 23:56:40.793]: Info: System tap setup completed successfully!
[2025-08-29 23:56:40.793]: Info: macOS system audio tap capturing.
[2025-08-29 23:56:40.794]: Info: Opus initialized: 48 kHz, 2 channels, 512 kbps (total), LOWDELAY

I had to make the following changes to get it to build:

-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunguarded-availability-new"
-    AVCaptureDeviceDiscoverySession *discoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInMicrophone, AVCaptureDeviceTypeExternalUnknown]
+    AVCaptureDeviceDiscoverySession *discoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeMicrophone, AVCaptureDeviceTypeExternal]
                                                                                                                mediaType:AVMediaTypeAudio
                                                                                                                 position:AVCaptureDevicePositionUnspecified];
     NSArray *devices = discoverySession.devices;
     BOOST_LOG(debug) << "Found "sv << [devices count] << " devices using discovery session"sv;
     return devices;
-#pragma clang diagnostic pop

plus a fix in our input.cpp that breaks the latest Xcode 16.4, I'm surprised if you didn't run into this one. I am running Xcode 16.4 clang-1700.0.13.5).

--- a/src/platform/macos/input.cpp
+++ b/src/platform/macos/input.cpp
@@ -534,7 +534,7 @@ const KeyCodeMap kKeyCodesMap[] = {
     if (!output_name.empty()) {
       uint32_t max_display = 32;
       uint32_t display_count;
-      CGDirectDisplayID displays[max_display];
+      CGDirectDisplayID displays[32];

@ReenigneArcher

This comment was marked as outdated.

@ThomVanL

Copy link
Copy Markdown
Contributor Author

Hey @andygrundman, thanks for taking the time to test the PR. Sorry to hear it’s not working correctly.

Here’s my setup on an M4 MBP and what I did.

clang --version
Apple clang version 17.0.0 (clang-1700.0.13.5)
Target: arm64-apple-darwin24.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

I made the changes in VS Code and followed the steps in building.md:

mkdir build
cmake -B build -G Ninja -S . 
ninja -C build

For testing I did the following steps:

  • In the VS Code terminal: ./build/sunshine
  • Accept the allow connections prompt
  • Connect with multiple Moonlight clients with the following sample rate/frame size/channel combos:
    • iPad @ 1080p → 48000Hz/240/2ch audio → works
    • Android TV @ 1080p → 48000Hz/240/8ch audio → works
    • iOS @ 360p → 48000Hz/480/2ch audio → works

So at one point I'm running three streams simultaneously and the audio plays through the devices.

My sunshine.conf looks like:

audio_sink = Steam Streaming Speakers
macos_system_wide_audio_tap = true
origin_web_ui_allowed = pc
stream_audio = true
wan_encryption_mode = 2

With min_log_level = debug, here’s the output when connecting from the 360p device (trimmed for brevity).

[2025-08-30 10:42:27.456]: Info: CLIENT CONNECTED
[2025-08-30 10:42:27.463]: Debug: Start capturing Video
[2025-08-30 10:42:27.463]: Info: Detecting displays
[2025-08-30 10:42:27.463]: Info: Detected display: Built-in Retina Display (id: 1) connected: true
[2025-08-30 10:42:27.463]: Info: Configuring selected display (1) to stream
[2025-08-30 10:42:27.541]: Info: Creating encoder [hevc_videotoolbox]
[2025-08-30 10:42:27.541]: Info: Color coding: SDR (Rec. 601)
[2025-08-30 10:42:27.541]: Info: Color depth: 8-bit
[2025-08-30 10:42:27.541]: Info: Color range: MPEG
[2025-08-30 10:42:27.541]: Info: Streaming bitrate is 1268000
[2025-08-30 10:42:27.550]: Info: [hevc_videotoolbox @ 0x13d01de00] This device does not support the max_ref_frames option. Value ignored.
[2025-08-30 10:42:27.945]: Debug: Start capturing Audio
[2025-08-30 10:42:27.946]: Warning: audio_control_t::set_sink() unimplemented: Steam Streaming Speakers
[2025-08-30 10:42:27.946]: Info: Using macOS system audio tap for capture.
[2025-08-30 10:42:27.946]: Info: Sample rate: 48000, Frame size: 480, Channels: 2
[2025-08-30 10:42:27.946]: Debug: setupSystemTap called with sampleRate:48000 frameSize:480 channels:2
[2025-08-30 10:42:27.946]: Debug: macOS version check passed (running 15.6.1)
[2025-08-30 10:42:27.946]: Debug: System tap initialization completed
[2025-08-30 10:42:27.946]: Debug: Creating tap description for 2 channels
[2025-08-30 10:42:27.946]: Debug: Creating process tap with name: SunshineAVAudio-Tap-0x6000007d00c0
[2025-08-30 10:42:27.949]: Debug: AudioHardwareCreateProcessTap returned status: 0
[2025-08-30 10:42:27.949]: Debug: Process tap created successfully with ID: 140
[2025-08-30 10:42:27.949]: Debug: Creating aggregate device with tap UID: 675EC59C-D7CC-4A25-A093-F2B4B4227895
[2025-08-30 10:42:27.957]: Debug: AudioHardwareCreateAggregateDevice returned status: 0
[2025-08-30 10:42:27.957]: Info: Aggregate device created with ID: 141
[2025-08-30 10:42:27.959]: Debug: Set aggregate device sample rate to 48000Hz
[2025-08-30 10:42:27.959]: Debug: Set aggregate device buffer size to 480 frames
[2025-08-30 10:42:27.959]: Info: Aggregate device created and configured successfully
[2025-08-30 10:42:27.960]: Debug: Device reports 2 input channels
[2025-08-30 10:42:27.960]: Debug: Device properties - Sample Rate: 48000Hz, Channels: 2
[2025-08-30 10:42:27.960]: Debug: needsConversion: NO (device: 48000Hz/2ch -> client: 48000Hz/2ch)
[2025-08-30 10:42:27.960]: Info: No conversion needed - formats match (device: 48000Hz/2ch)
[2025-08-30 10:42:27.960]: Info: Device properties and converter configuration completed
[2025-08-30 10:42:27.960]: Debug: Creating IOProc for aggregate device ID: 141
[2025-08-30 10:42:27.977]: Debug: AudioDeviceCreateIOProcID returned status: 0
[2025-08-30 10:42:27.978]: Debug: Starting IOProc for aggregate device
[2025-08-30 10:42:27.995]: Debug: AudioDeviceStart returned status: 0
[2025-08-30 10:42:27.995]: Info: System tap IO proc created and started successfully
[2025-08-30 10:42:27.995]: Debug: Initializing audio buffer for 2 channels
[2025-08-30 10:42:27.995]: Info: Audio buffer initialized successfully with size: 8192 bytes
[2025-08-30 10:42:27.995]: Info: System tap setup completed successfully!
[2025-08-30 10:42:27.995]: Info: macOS system audio tap capturing.
[2025-08-30 10:42:27.995]: Info: Opus initialized: 48 kHz, 2 channels, 96 kbps (total), LOWDELAY

I’m familiar with the sample app! It might be the case that the aggregate device settings are probably still marked as private. You’ll need to flip those to NO in two places, once for the tap description and once for the aggregate device.

[tapDescription setPrivate:YES];

@kAudioAggregateDeviceIsPrivateKey: @YES,

Then the tap will show up in Apple's sample app's UI.

Screenshot 2025-08-30 at 10 56 15

And the aggregate device shows up as well.

Screenshot 2025-08-30 at 10 56 22

But even with those values flipped to YES, I can still hear audio on the 360p device!

@andygrundman

Copy link
Copy Markdown
Contributor

Thanks for the detailed info. I forgot my log only had Info level, when using Debug my log does look exactly like yours. I feel like I must just have a permission issue, maybe using iTerm as the permission "owner" isn't correct.

Do you see both of these items? What process names are they using? I only get a System Audio item when recording a test file in AudioTapSample.
permissions

Here's basically what my Screen & System Audio Recording settings look like:
privacy

If this is the issue, I wonder how Sunshine can detect that it doesn't actually have permission, hmm.

@ThomVanL

ThomVanL commented Aug 30, 2025

Copy link
Copy Markdown
Contributor Author

You're right, because I ran into a similar issue with VS Code. Granting it "Screen & System Audio Recording" wasn’t enough; I had to explicitly allow "System Audio Recording Only." From what I found online, the VS Code app bundle itself might be causing the problem. I also tried running tccutil reset All to clear permissions, but the behavior stayed the same. I had to explicitly add permissions, but only for VS Code.

Screenshot 2025-08-30 at 13 26 59

I did not even notice the little privacy notice at the top until just now, thanks for that. Here's what it's like on my end.

Screenshot 2025-08-30 at 13 28 52

When I launched ./build/sunshine directly from the macOS Terminal (not iTerm), I did get the prompt mentioned in my initial message on this PR.

Edit: just to be clear, my dev loop consists of launching sunshine builds through the VS Code integrated terminal.

@ReenigneArcher

ReenigneArcher commented Mar 10, 2026

Copy link
Copy Markdown
Member

It appears that tests are crashing on macOS 15 and 26, at these tests

  • 15 - Configurations/AudioTest.TestEncode/HIGH_STEREO
  • 26 - Configurations/AudioTest.TestEncode/SURROUND51

Also, still one lint issue: https://github.com/LizardByte/Sunshine/actions/runs/22879151110/job/66380516025?pr=4209#step:10:57

@ThomVanL

Copy link
Copy Markdown
Contributor Author

It appears that tests are crashing on macOS 15 and 26, at these tests

  • 15 - Configurations/AudioTest.TestEncode/HIGH_STEREO
  • 26 - Configurations/AudioTest.TestEncode/SURROUND51

It looks like we might still need your TCC fix after all… but I will run a few tests first!

@ReenigneArcher

Copy link
Copy Markdown
Member

It looks like we might still need your TCC fix after all… but I will run a few tests first!

It's somewhat odd because the macOS-26 completes some of the audio tests before crashing out.

@ThomVanL

ThomVanL commented Mar 14, 2026

Copy link
Copy Markdown
Contributor Author

Hey @ReenigneArcher I've had some time to really dive into this a bit more and it's, like you mentioned, worth noting that the TCC prompting is not happening during the Homebrew validation on the master branch. I thought that was a little strange, as well.

You can see that I've pushed a small (preliminary) change that I'd love to see run through the workflow. Your feedback is very much welcome.

I had a closer look at the CI workflow logs (the Homebrew macOS validation) and I noticed other parts of the code also interact with TCC but appear to skip cleanly:

On macOS 14:

  [----------] 2 tests from EncoderVariants/EncoderTest
  [ RUN      ] EncoderVariants/EncoderTest.ValidateEncoder/videotoolbox
  IOServiceMatchingfailed for: AppleM2ScalerCSCDriver
  /private/tmp/sunshine-20260314-59779-wfzgqc/tests/unit/test_video.cpp:18: Skipped
  Encoder not available
  [  SKIPPED ] EncoderVariants/EncoderTest.ValidateEncoder/videotoolbox (1055 ms)

macOS 15

  [----------] 2 tests from EncoderVariants/EncoderTest
  [ RUN      ] EncoderVariants/EncoderTest.ValidateEncoder/videotoolbox
  IOServiceMatchingfailed for: AppleM2ScalerParavirtDriver
  /private/tmp/sunshine-20260314-30146-nfg1wh/tests/unit/test_video.cpp:18: Skipped
  Encoder not available
  
  [  SKIPPED ] EncoderVariants/EncoderTest.ValidateEncoder/videotoolbox (2287 ms)
  [ RUN      ] EncoderVariants/EncoderTest.ValidateEncoder/software
  [       OK ] EncoderVariants/EncoderTest.ValidateEncoder/software (86 ms)
  [----------] 2 tests from EncoderVariants/EncoderTest (2374 ms total)

macOS 26

  [----------] 2 tests from EncoderVariants/EncoderTest
  [ RUN      ] EncoderVariants/EncoderTest.ValidateEncoder/videotoolbox
  IOServiceMatchingfailed for: AppleM2ScalerParavirtDriver
  /private/tmp/sunshine-20260314-71238-cegf4y/tests/unit/test_video.cpp:18: Skipped
  Encoder not available
  
  [  SKIPPED ] EncoderVariants/EncoderTest.ValidateEncoder/videotoolbox (1954 ms)
  [ RUN      ] EncoderVariants/EncoderTest.ValidateEncoder/software
  [       OK ] EncoderVariants/EncoderTest.ValidateEncoder/software (88 ms)
  [----------] 2 tests from EncoderVariants/EncoderTest (2043 ms total)

So, I went and implemented something in test_audio.cpp similar to what happens in test_video.cpp, where encoder availability is checked before running.

But about those audio tests... I think the reason these pass on the master branch is a bit subtle. When no audio sink is set in AudioTest, config::audio.sink is empty, so the local audio_sink variable inside microphone() stays at its default of "", which gets passed to findMicrophone(""). That function iterates through all available AVCaptureDevice instances and compares each device's localizedName to "". Since no device matches, it returns nil. That in turn propagates back up as nullptr from microphone() and the null check in audio.cpp returns immediately without starting capture. The test's timer fires after 100ms, stops the queue, and the capture thread exits cleanly. Since no packets ever arrive, the FAIL() on empty packet data is never hit, and the test "passes". In other words, that test can pass even when audio capture never initialized at all — it isn't actually verifying that audio is working.

With the CoreAudio tap implementation, however, not setting a sink in AudioTest now causes execution to reach the CoreAudio tap creation flow. I don't think I can insert a guard in microphone() to fail gracefully, as creating the tap itself triggers the TCC prompt and blocks.

As an alternative, we could inject permissions directly into the TCC database, but that feels a little brittle and error-prone.

So the question is: should we add a GTEST_SKIP() guard (which would skip the test on machines without the permission rather than actually verifying capture works) or should we go ahead with TCC injection in CI? I'm leaning toward the skip at the moment, but wanted to get input before going any further.

(I'll sort out rebasing my commits, too.)

ReenigneArcher
ReenigneArcher previously approved these changes Mar 14, 2026
@ReenigneArcher

Copy link
Copy Markdown
Member

I also noticed the audio test wasn't really the greatest test. We could probably improve it in a later PR. For now, I think I'm good with this PR as is. Would you want to submit a follow up PR to help improve the tests?

My preference would be to actually verify audio works, but I understand sometimes this isn't the easiest to do in a CI environment where we don't have control of the hardware. For the encoder tests, I just make them skip if they don't work, unless software encoding fails in which case it is a failure. Software encoding should always work, whether in a CI environment or not.

@ReenigneArcher

Copy link
Copy Markdown
Member

Looks like the audio tests are still failing on macos 15 and 26, so maybe it needs a better fix before this is merged.

@ThomVanL

Copy link
Copy Markdown
Contributor Author

I also noticed the audio test wasn't really the greatest test. We could probably improve it in a later PR. For now, I think I'm good with this PR as is. Would you want to submit a follow up PR to help improve the tests?

Sure thing, I don't mind taking a look.

Looks like the audio tests are still failing on macos 15 and 26, so maybe it needs a better fix before this is merged.

That's unfortunate... Though I don't mind digging into it some more!

@ReenigneArcher

Copy link
Copy Markdown
Member

@ThomVanL so you think it's a permissions issue?

  • macOS-14: are all skipped now
  • macOS-15: HIGH_STEREO crashes
  • macOS-26: HIGH_STEREO is skipped, and the next one crashes

Would adding a virtual audio device allow it to pass? Looks like blackhole is available in homebrew with 3 variants. We could make these dependencies in the homebrew package?

  1. https://formulae.brew.sh/cask/blackhole-2ch#default
  2. https://formulae.brew.sh/cask/blackhole-16ch#default
  3. https://formulae.brew.sh/cask/blackhole-64ch#default

@ThomVanL

ThomVanL commented Mar 17, 2026

Copy link
Copy Markdown
Contributor Author

@ReenigneArcher Yes, I think it's got to do with the kTCCServiceAudioCapture permission. I have been also considering adding a sink, so it's definitely something we could try.

I have been conducting quite a bit of testing on a separate repository, with just the code path that creates the tap and aggregate device, gtest and a workflow; least with enough code to prompt the TCC. But so far I've been unable to add those permissions to the TCC database.

It also looks like the permission is not configured in GitHub's macOS runners, based on what I can tell.

I will do some more testing this evening.

@ReenigneArcher

Copy link
Copy Markdown
Member

@ThomVanL the script you linked is where I originally discovered how to adjust the permissions in the runner as well. You can add anything you want in the same way they do because SIP is disabled in the runners. The hard part, when I originally did it, was figuring out what to give the permission to... but that was with macports. I think with homebrew it should be easier as it's supported on the runners out of the box.

@ThomVanL

ThomVanL commented Mar 19, 2026

Copy link
Copy Markdown
Contributor Author

@ReenigneArcher I did some more testing on this across a few different approaches, but I wasn’t able to get the TCC settings to apply correctly. I tried configuring it in multiple ways, but no success so far.

As a fallback, I replicated the current behavior by forcing the sink to a non-existent value:

(I have not yet committed this, by the way)

struct AudioTest: PlatformTestSuite, testing::WithParamInterface<std::tuple<std::basic_string_view<char>, config_t>> {
  void SetUp() override {
    m_config = std::get<1>(GetParam());
    m_mail = std::make_shared<safe::mail_raw_t>();

#ifdef __APPLE__
    m_saved_sink = config::audio.sink;
    if (config::audio.sink.empty()) {
      config::audio.sink = "__nonexistent_audio_sink__";
      m_overrode_sink = true;
    }
#endif
  }

  void TearDown() override {
#ifdef __APPLE__
    if (m_overrode_sink) {
      config::audio.sink = m_saved_sink;
    }
#endif
  }

  config_t m_config;
  safe::mail_t m_mail;
#ifdef __APPLE__
  std::string m_saved_sink;
  bool m_overrode_sink {};
#endif
};

That said, I’m not particularly a big fan of this approach. I find it to be more along the lines of a quick fix rather than a proper solution.. Though as far as I can tell it mirrors the current behavior in master.

I’ll keep digging into the TCC side tomorrow evening to see if there’s a way to get the permissions set correctly in the runner.

@ThomVanL ThomVanL force-pushed the users/thomasvanlaere/feat-macos-ca-taps branch from dd24999 to 50b2105 Compare March 21, 2026 00:56
@ThomVanL

ThomVanL commented Mar 21, 2026

Copy link
Copy Markdown
Contributor Author

@ReenigneArcher Even better, I've been able to add the correct TCC permissions, and in my testing I've been able to get OK results from all four Configurations/AudioTest tests. I've added the script as a conditional step in the ci-homebrew.yaml and rolled back the changes to test_audio.cpp.

I ended up just expanding upon that script from the "actions/runner-images" I linked earlier. It didn't occur to me to add kTCCServiceAudioCapture to those recurring clients, my bad.

@sonarqubecloud

Copy link
Copy Markdown

@ReenigneArcher

Copy link
Copy Markdown
Member

@ThomVanL nice work! Looks like everything is green!

@ReenigneArcher ReenigneArcher merged commit 0d3be0b into LizardByte:master Mar 21, 2026
73 checks passed
eball added a commit to Above-Os/Sunshine that referenced this pull request Jun 24, 2026
* 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[…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai PR has signs of heavy ai usage (either indicated by user or assumed) roadmap This PR closes a roadmap entry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sunshine: Capture audio on macOS using Tap API

4 participants