Repository navigation
fix(input): track/release client keycode for modifiers - #5558
Conversation
Fixed, tested and working on my branch. Added tests to prevent regressions. shortcutFlags is compared against packet->modifiers, a client-side bitmask, but was updated from the host keycode from map_keycode(). - A keybindings entry moving Alt off VKEY_*MENU left the ALT bit clear, so send_key_and_modifiers() wrapped every following key in a real VKEY_MENU press - Alt->Meta on a macOS host turned Cmd+Space into Cmd+Option+Space - apply_shortcut() already gets the unmapped keycode, so both halves of the combo check now agree - Generalizes the key_rightalt_to_key_win case from LizardByte#5318 fix(input): release the remapped key when the client disconnects reset_keyboard_keys() emitted an unmapped virtual-key code. Keypresses go are sent via map_keycode(). Remapped keys stay pressed on the host after a disconnect. - With keybindings 0xA4 -> 0x5B, Option was released while Command was left held down - Also affected key_rightalt_to_key_win option test(input): cover keyboard passthrough with a recording sink platf::keyboard_update is a per-platform function and lvh's FakeKeyboard discards submit(), so ordered keyboard output could not be observed from a test. - Route the nine emit sites through emit_keyboard_update(), whose sink check sits inside #ifdef SUNSHINE_TESTS - Cover 45 held-modifier combinations, all 7 synthetic-injection subsets, and every printable ASCII character plain and shifted - Pin the spurious VKEY_MENU injection fixed in the previous commit - Native VK translation stays in libvirtualhid, which covers each backend table in its own platform's CI job
- Return the test keyboard recorder from an accessor, so the file adds no non-const variable at namespace scope - Build assertion tokens and the stream name with std::format instead of output manipulators and manual concatenation - Hold modifier masks in unsigned, and cast once where the packet helper needs a byte - Move the modifier selection loop into select_modifiers(), which drops the combination test to three levels of nesting - Make the fixture stream private, add using enum for side_e, and use std::ranges::sort with class template argument deduction
|
I'll test this as I've seen modifiers getting stuck sometimes myself on Linux host + Linux client. Will report back. |
|
So far I've not seen a single stuck modifier with this PR applied. Neither have there been any other problems related to keyboard input so LGTM from a practical standpoint. |
|
Thanks for working on this. There might be an edge case in the modifier tracking:
Releasing Right Alt currently clears the shared |
Left, right, and side-less Alt all share the same shortcutFlags::ALT bit. update_shortcutFlags() cleared that bit on any Alt release, so releasing Right Alt while Left Alt was still down (e.g. Right Alt mapped to Meta via key_rightalt_to_key_win) dropped the bit even though a real Alt key remained pressed. The next key then got wrapped in an unnecessary synthetic Alt press/release. - Track a side-less Alt key (VKEY_MENU) the same way Left/Right Alt are already tracked - Clear the aggregate ALT bit on release only when none of left/right/generic Alt remain pressed Extends KeepsRealAltWhileRightAltMapsToKeyWin to press a key after releasing Right Alt but before releasing Left Alt, asserting no synthetic Alt events are emitted. Addresses review feedback from @ReenigneArcher on LizardByte#5558.
|
I've rebased and added another commit+tests that should (hopefully) address your concerns @ReenigneArcher . |
|
I probably didn't describe the issue properly, but it applied to more modifiers than just ALT. I pushed another commit to fully address it. |
Bundle ReportBundle size has no change ✅ |
ed92e4a to
422bddb
Compare
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #5558 +/- ##
==========================================
+ Coverage 34.55% 35.18% +0.62%
==========================================
Files 104 104
Lines 25314 25409 +95
Branches 11194 11211 +17
==========================================
+ Hits 8748 8939 +191
+ Misses 14460 14366 -94
+ Partials 2106 2104 -2
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 2 files with indirect coverage changes Continue to review full report in Codecov by Harness.
|
Screenshot ComparisonPR #5558 screenshots vs Matrix:
|
|
Oh thank you so much for merging this @ReenigneArcher!. Sorry you had to fix the PR on top of everything else :( . Sunshine is an awesome piece of technology that I use all throughout my household, so I appreciate your time and attention. |
* build(homebrew): force cuda on Linux (LizardByte#5345) * chore(deps): update vmactions/freebsd-vm action to v1.4.9 (LizardByte#5348) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/cache action to v6.1.0 (LizardByte#5349) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5347) * chore(deps): update vmactions/freebsd-vm action to v1.5.0 (LizardByte#5352) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(video): avoid UAF crashes during video reinit (reproducible on Vulkan) (LizardByte#5346) * build(FreeBSD): adjust CI Python dependency groups (LizardByte#5355) * fix(video): avoid nullptr deref segfault on encode session teardown (LizardByte#5257) * fix(flatpak): system tray permission (LizardByte#5354) * feat(linux): pace capture at exact fractional NTSC framerates (LizardByte#5282) * chore: use lizardbyte-common in c++ (LizardByte#5356) Co-authored-by: Kishi <41839133+Kishi85@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.22.0 (LizardByte#5358) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5359) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(linux): avoid network for appstream cli & add missing deps (LizardByte#5363) * fix(linux/pipewire): avoid memory leaks (LizardByte#5360) Co-authored-by: Psyke83 <psyke83@users.noreply.github.com> * feat(macOS): libdispalydevice integration (LizardByte#5338) Co-authored-by: Dave Lane <42013603+ReenigneArcher@users.noreply.github.com> * perf(deps): switch to upstream nanors runtime dispatching (LizardByte#5369) * chore(deps): update dependency @lucide/vue to v1.23.0 (LizardByte#5365) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/moonlight-common-c from `99c45d3` to `1f76427` (LizardByte#5375) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `99c45d3` to `1f76427`. - [Commits](moonlight-stream/moonlight-common-c@99c45d3...1f76427) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 1f764276e848ae2ec7815ef90d1c1748272e074a 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/nanors from `57ee5e9` to `c3529fd` (LizardByte#5376) Bumps [third-party/nanors](https://github.com/sleepybishop/nanors) from `57ee5e9` to `c3529fd`. - [Commits](ursoid-tech/nanors@57ee5e9...c3529fd) --- updated-dependencies: - dependency-name: third-party/nanors dependency-version: c3529fda520f53cd007328ba30b6ad3f89947722 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 astral-sh/setup-uv action to v8.3.0 (LizardByte#5379) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(Linux): Allow building with Vulkan but without Wayland (LizardByte#5377) Signed-off-by: James Le Cuirot <chewi@gentoo.org> * chore(deps): lock file maintenance (LizardByte#5383) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: revise bug report template for clarity and rules (LizardByte#5387) * chore(sonar): ignore submodules (LizardByte#5390) * ci: fix PR checkouts on arch and flatpak (LizardByte#5391) * chore: Remove setuptools from glad dependencies (LizardByte#5392) * build(deps): bump third-party/moonlight-common-c from `1f76427` to `2ea4775` (LizardByte#5382) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `1f76427` to `2ea4775`. - [Commits](moonlight-stream/moonlight-common-c@1f76427...2ea4775) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 2ea47752c3051d72a64bcca190024e8b354fa1ef 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: move nanors to moonlight-common-c submodule (LizardByte#5393) * chore(l10n): update translations (LizardByte#5386) * chore(deps): update astral-sh/setup-uv action to v8.3.2 (LizardByte#5389) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux): drop implicit DRM master for card fds (LizardByte#5286) Co-authored-by: Kishi85 <41839133+Kishi85@users.noreply.github.com> * refactor(sonar): migrate worker threads to std::jthread (LizardByte#5398) * chore(packaging): Drop Windows NSIS builds and rename ZIP to lite (LizardByte#5405) * chore(l10n): update translations (LizardByte#5403) chore(l10n): update translations sunshine.json (Spanish) * build(deps): bump third-party/moonlight-common-c from `2ea4775` to `82e2514` (LizardByte#5402) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `2ea4775` to `82e2514`. - [Commits](moonlight-stream/moonlight-common-c@2ea4775...82e2514) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 82e25148549d249a80aaf4afc68e2abb07072edf 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 @lucide/vue to v1.24.0 (LizardByte#5396) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.6 (LizardByte#5395) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux): avoid memory leak from unnecessary encoder re-probing (LizardByte#5404) * chore(deps): Update build-deps to v2026.713.132551 (LizardByte#5409) * chore(sonar): change NOSONAR comment style (LizardByte#5410) * chore(deps): update actions/setup-node action to v7 (LizardByte#5413) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat(linux/vaapi): VAAPI encoder improvements (LizardByte#5388) * chore(deps): update dependency @vitejs/plugin-vue to v6.0.8 (LizardByte#5418) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(docs/linux): add Portal and EGL context tips (LizardByte#5419) * fix(packaging/windows): Allow WiX installer downgrades (LizardByte#5435) * feat(linux): use connector name as default display name on linux (LizardByte#5423) * chore(deps): update actions/checkout action to v7.0.1 (LizardByte#5412) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/setup-dotnet action to v6 (LizardByte#5422) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update vmactions/freebsd-vm action to v1.5.1 (LizardByte#5426) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.7 (LizardByte#5433) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.25.0 (LizardByte#5424) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue-i18n to v11.4.7 (LizardByte#5434) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5431) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/moonlight-common-c from `82e2514` to `703a069` (LizardByte#5428) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `82e2514` to `703a069`. - [Commits](moonlight-stream/moonlight-common-c@82e2514...703a069) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 703a06946861ff82cd33e5e13c59c1b017f7ded9 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.40 (LizardByte#5421) * chore(deps): update dependency vue to v3.5.40 * Add @vue/server-renderer lock entry Updates package-lock.json to include @vue/server-renderer@3.5.40 and its Vue SSR runtime dependencies, keeping the lockfile in sync with the installed dependency graph. --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * chore(deps): update vmactions/freebsd-vm action to v1.5.2 (LizardByte#5436) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/setup-python action to v7 (LizardByte#5437) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update astral-sh/setup-uv action to v9 (LizardByte#5438) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5420) * build(deps): bump third-party/moonlight-common-c from `703a069` to `e41355e` (LizardByte#5439) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `703a069` to `e41355e`. - [Commits](moonlight-stream/moonlight-common-c@703a069...e41355e) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: e41355ea01670fd4c830b384009d31dd0339a705 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 @lucide/vue to v1.26.0 (LizardByte#5440) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * refactor: clients section to dynamically fetch from app-directory (LizardByte#5380) * fix(amf): wire h264_amf coder and profile mapping (LizardByte#5442) Co-authored-by: k4idyn <252943111+k4idyn@users.noreply.github.com> * chore: bump FreeBSD version from 14.4 to 15.1 (LizardByte#5445) * chore: move nv-codec-headers to build-deps submodule (LizardByte#5449) * fix(linux/kms): use same methodology for display name matching and list generation (LizardByte#5448) * chore(l10n): update translations (LizardByte#5450) * fix(nvenc): dynamic nv codec sdk selection (LizardByte#5451) * chore(deps): update dependency @lucide/vue to v1.27.0 (LizardByte#5452) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue-i18n to v11.4.8 (LizardByte#5453) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): Update build-deps to v2026.724.203728 (LizardByte#5446) * build(deps): bump third-party/lizardbyte-common from `06cd442` to `011ad2b` (LizardByte#5457) * build(deps): bump third-party/lizardbyte-common Bumps [third-party/lizardbyte-common](https://github.com/LizardByte/lizardbyte-common) from `06cd442` to `011ad2b`. - [Release notes](https://github.com/LizardByte/lizardbyte-common/releases) - [Commits](LizardByte/lizardbyte-common@06cd442...011ad2b) --- updated-dependencies: - dependency-name: third-party/lizardbyte-common dependency-version: 011ad2bb139083dcf4ec21f9c09f07470891a668 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * style: run clang-format across C++ sources Reformatted conditionals, loops, and long function calls across core, platform, NVENC, and test helper code to match updated formatting rules, including minor spacing normalization in type declarations. These are style-only edits with no intended behavior 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> * chore(deps): lock file maintenance (LizardByte#5455) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: migrate to qt tray for all platforms (LizardByte#5260) * fix(FreeBSD): Qt6 tray dependency package (LizardByte#5458) * chore(deps): update lizardbyte/actions action to v2026.728.214955 (LizardByte#5459) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * test(tray): add system tray tests (LizardByte#4221) * fix(web-ui): Welcome page styling (LizardByte#5466) * chore(deps): update vmactions/freebsd-vm action to v1.5.3 (LizardByte#5478) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.28.0 (LizardByte#5463) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5470) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.9 (LizardByte#5473) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue to v3.5.41 (LizardByte#5475) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5479) * chore(docker): fix hadolint SC3014 (LizardByte#5482) * build(macOS): fix macOS framework signing glob (LizardByte#5483) * build(macOS): sign only valid framework bundles (LizardByte#5484) * feat(logging): rotating log files (LizardByte#5485) * chore(l10n): update translations (LizardByte#5487) * chore(deps): update dependency @lucide/vue to v1.30.0 (LizardByte#5486) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(unix): add nv-codec-headers include path (LizardByte#5488) * ci: add workflow to publish PR artifacts (LizardByte#5491) * chore(deps): update dependency @lucide/vue to v1.31.0 (LizardByte#5493) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5492) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux/kms)!: Use connector type index from KMS instead of self calculation (LizardByte#5489) * build(windows): default to qt6-static (LizardByte#5497) * feat(input): implement libvirtualhid adding new gamepad styles (LizardByte#5368) * ci(FreeBSD): remove aarch64 (LizardByte#5516) * chore(deps): lock file maintenance (LizardByte#5514) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(virtual-hid): remove license expiration (LizardByte#5517) * build(homebrew): normalize remapped LCOV source paths (LizardByte#5518) * chore(l10n): update translations (LizardByte#5507) * fix(macOS): update build script and ci with explicit Qt6 paths (LizardByte#5502) * chore(deps): update astral-sh/setup-uv action to v10 (LizardByte#5501) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.10 (LizardByte#5521) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux/pipewire): restore dummy buffer for software encoders and fix buffer ownership (LizardByte#5495) Co-authored-by: luanweslley77 <luanweslley77@users.noreply.github.com> * fix(linux/freebsd): truncate thread names to 15 characters (LizardByte#5527) * chore(deps): update dependency @lucide/vue to v1.32.0 (LizardByte#5528) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: update global workflows (LizardByte#5525) * chore(deps): update dependency @lucide/vue to v1.33.0 (LizardByte#5533) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(macOS): System tray icon disappears when restarting Sunshine (LizardByte#5504) * fix(input): preserve aux gamepad data and bump libvirtualhid (LizardByte#5531) * chore(l10n): update translations (LizardByte#5535) * fix(wayland): use the current wl_output mode (LizardByte#5150) Signed-off-by: Zach Denton <z@chdenton.com> Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * feat(amf): add amd_max_au_size option (LizardByte#4926) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5539) * chore: update Virtual HID requirements and mouse refresh (LizardByte#5547) * chore(deps): update vmactions/freebsd-vm action to v1.5.4 (LizardByte#5540) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/moonlight-common-c from `e41355e` to `874ac95` (LizardByte#5541) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `e41355e` to `874ac95`. - [Commits](moonlight-stream/moonlight-common-c@e41355e...874ac95) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 874ac9548f1bd6f095ef2b435c42cdde460e7821 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.9 (LizardByte#5546) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5543) * fix(linux/publish): release the Avahi client when the poll loop stops (LizardByte#5545) * chore(l10n): update translations (LizardByte#5548) * build(deps): bump third-party/lizardbyte-common from `011ad2b` to `ffc027d` (LizardByte#5550) build(deps): bump third-party/lizardbyte-common Bumps [third-party/lizardbyte-common](https://github.com/LizardByte/lizardbyte-common) from `011ad2b` to `ffc027d`. - [Release notes](https://github.com/LizardByte/lizardbyte-common/releases) - [Commits](LizardByte/lizardbyte-common@011ad2b...ffc027d) --- updated-dependencies: - dependency-name: third-party/lizardbyte-common dependency-version: ffc027d7b582b8a552c9028ebc18d18ecd919d72 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(l10n): update translations (LizardByte#5551) chore(l10n): update translations sunshine.json (Bulgarian) * chore: add branding images (LizardByte#5552) * fix(pipewire): gate variable rate capture and fix fractional framerates (LizardByte#5538) Co-authored-by: Kishi85 <41839133+Kishi85@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.11 (LizardByte#5555) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue-i18n to v11.4.10 (LizardByte#5556) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5557) * feat(input): update libvirtualhid integration (LizardByte#5563) * chore(deps): update vmactions/freebsd-vm action to v1.5.5 (LizardByte#5561) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue to v3.5.42 (LizardByte#5560) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.35.0 (LizardByte#5565) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5559) * chore(deps): add vite override for codecov plugin (LizardByte#5576) * chore(deps): update lizardbyte/actions action to v2026.829.140353 (LizardByte#5577) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dave Lane <42013603+ReenigneArcher@users.noreply.github.com> * chore(deps): update dependency vite to v8 (LizardByte#5578) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5579) * fix(linux/pipewire): try variable rate for non-KWin compositors (LizardByte#5569) * chore(deps): update dependency @lucide/vue to v1.37.0 (LizardByte#5581) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5582) * feat(session): add SUNSHINE_CLIENT_NAME environment variable (LizardByte#5465) * fix(windows/installer): PATH update reg add /f option ordering (LizardByte#5584) * chore(deps): lock file maintenance (LizardByte#5588) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.38.0 (LizardByte#5587) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(video): fall back to SDR when HDR isn't supported (LizardByte#5429) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * fix(windows): capture the configured audio sink instead of the default device (LizardByte#5408) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * fix(input): track/release client keycode for modifiers (LizardByte#5558) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * ci: sonar fixes (LizardByte#5594) * chore(l10n): update translations (LizardByte#5583) * docs: fix typo automaticaly -> automatically (LizardByte#5573) Signed-off-by: Vaibhav Srivastava <vaibhavsri1712@gmail.com> * fix: iterator/stat utility edge cases and add tests (LizardByte#5308) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * build(Linux): use compiler-selected libgcov for coverage (LizardByte#5597) * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `ac5a296` to `1fc3219` (LizardByte#5595) 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 `ac5a296` to `1fc3219`. - [Commits](flatpak/flatpak-builder-tools@ac5a296...1fc3219) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: 1fc32195e3e60fe5c97f0af646dec7a99df5962b 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 @lucide/vue to v1.39.0 (LizardByte#5596) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Merge commit from fork * Merge commit from fork * Merge commit from fork * Merge commit from fork * build(Windows): resolve system Node.js package (LizardByte#5599) * refactor: pairing flow, pairing tests, and inline struct comments (LizardByte#5602) * chore(deps): update dependency @lucide/vue to v1.40.0 (LizardByte#5606) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5600) * build(docker): add bake config (LizardByte#5607) * chore(deps): update dependency @lucide/vue to v1.41.0 (LizardByte#5609) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(flatpak): drop imagemagick dep (LizardByte#5610) * ci: add Cloudsmith packaging support (LizardByte#5611) * ci(release): avoid workflow concurrency deadlock (LizardByte#5612) * chore(deps): update lizardbyte/actions action to v2026.905.43751 (LizardByte#5614) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: update global workflows (LizardByte#5616) * style(homebrew): fix homebrew validation (LizardByte#5620) * build(deps): bump third-party/lizardbyte-common from `ffc027d` to `f9d91e1` (LizardByte#5624) * build(deps): bump third-party/lizardbyte-common Bumps [third-party/lizardbyte-common](https://github.com/LizardByte/lizardbyte-common) from `ffc027d` to `f9d91e1`. - [Release notes](https://github.com/LizardByte/lizardbyte-common/releases) - [Commits](LizardByte/lizardbyte-common@ffc027d...f9d91e1) --- updated-dependencies: - dependency-name: third-party/lizardbyte-common dependency-version: f9d91e1d29b7473f58e43acde4579da4e56c4abe dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * chore(deps): bump clang-format to 23.1.0 Update the lockfile and dependency metadata to use clang-format 23.1.0 for the lint-c and dev extras. This refreshes the resolved package artifacts and version constraints in uv.lock. --------- 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> * chore(deps): bump libvirtualhid (LizardByte#5585) * fix(macOS): enable microphone permission flow (LizardByte#5621) * build(deps): bump third-party/tray from `1d0d696` to `c329d9f` (LizardByte#5630) * build(deps): bump third-party/tray from `1d0d696` to `c329d9f` Bumps [third-party/tray](https://github.com/LizardByte/tray) from `1d0d696` to `c329d9f`. - [Release notes](https://github.com/LizardByte/tray/releases) - [Commits](LizardByte/tray@1d0d696...c329d9f) --- updated-dependencies: - dependency-name: third-party/tray dependency-version: c329d9fd0d39dfb47f0f2fb5467e1db2e8a1d623 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * test(tray): enable tray test hooks Gate `TRAY_ENABLE_TEST_HOOKS` behind `BUILD_TESTS` in dependency setup and propagate the same definition to test targets when tray tests are enabled. This keeps production tray builds unchanged while allowing tray-specific test hook code to be compiled consistently for supported platforms. --------- 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> * build(Linux): add aarch64 AppImage (LizardByte#5627) * chore(l10n): update translations (LizardByte#5626) * ci(FreeBSD): enable docs (LizardByte#5631) * feat(linux/pipewire): add support for unpaced capture when appropriate (LizardByte#5629) * chore(deps): update dependency @lucide/vue to v1.42.0 (LizardByte#5636) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5634) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): Update build-deps to v2026.905.170812 (LizardByte#5637) * build(Linux): enable openSUSE Leap 16.0 and Tumbleweed (LizardByte#5633) * chore(flatpak): update org.kde.Platform runtime to 6.11 (LizardByte#5639) * feat(config): add gamepad_driver option (LizardByte#5653) * chore(l10n): update translations (LizardByte#5632) * chore(deps): update dependency marked to v18.0.12 (LizardByte#5648) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/moonlight-common-c from `874ac95` to `62e0663` (LizardByte#5657) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `874ac95` to `62e0663`. - [Commits](moonlight-stream/moonlight-common-c@874ac95...62e0663) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 62e066388f1a1b133e0bee947b9a374311a3354b 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.909.30231 (LizardByte#5664) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update ubuntu docker tag to v26 (LizardByte#5666) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update vmactions/freebsd-vm action to v1.5.6 (LizardByte#5665) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.43.0 (LizardByte#5655) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * ci(homebrew): run tests in separate step (LizardByte#5669) * fix(deps): fix legacy nvenc presets and bump third-party/build-deps (LizardByte#5668) * build(Linux): add Alpine packages (LizardByte#4987) * fix(linux/vulkan): use vkGetDeviceQueue2 with FFmpeg 9.0 queue flags (LizardByte#5675) * build(Linux): harden Qt6 dependency detection (LizardByte#5679) * fix(av1,hevc): stop av1 probes from clobbering hevc results (LizardByte#5554) * fix(api): return the final result of pairing (LizardByte#5680) * fix(nvapi,nvenc): Load ARM64 DLLs on RTX Spark (LizardByte#5682) * ci(homebrew): skip more_space action for release job (LizardByte#5683) * chore(deps): update dependency @lucide/vue to v1.44.0 (LizardByte#5674) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(web-ui): localize config categories (LizardByte#5688) * ci(homebrew): drop sonoma (LizardByte#5689) * build(deps): bump third-party/plasma-wayland-protocols from `4c015e9` to `382dfab` (LizardByte#5687) build(deps): bump third-party/plasma-wayland-protocols Bumps [third-party/plasma-wayland-protocols](https://github.com/KDE/plasma-wayland-protocols) from `4c015e9` to `382dfab`. - [Commits](KDE/plasma-wayland-protocols@4c015e9...382dfab) --- updated-dependencies: - dependency-name: third-party/plasma-wayland-protocols dependency-version: 382dfabda886d3f2f5c067b22e5a22376685ba78 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/doxyconfig from `b87f7e4` to `212e309` (LizardByte#5686) * build(deps): bump third-party/doxyconfig from `b87f7e4` to `212e309` Bumps [third-party/doxyconfig](https://github.com/LizardByte/doxyconfig) from `b87f7e4` to `212e309`. - [Release notes](https://github.com/LizardByte/doxyconfig/releases) - [Commits](LizardByte/doxyconfig@b87f7e4...212e309) --- updated-dependencies: - dependency-name: third-party/doxyconfig dependency-version: 212e3094fe6a09848d8ae058956faab27557c65c dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): install doxygen from msys2 --------- 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> * fix: missing initializers and incorrect default for native_pen_touch (LizardByte#5693) * build(Linux): add Ubuntu 26.10 Docker bake target (LizardByte#5622) * fix(linux): handle NVENC in builds without CUDA (LizardByte#5698) * fix(network): respect configured bind address (LizardByte#5700) * fix(web-ui): add XDG Portal token reset (LizardByte#5701) * fix(linux): export all Wayland DMA-BUF planes (LizardByte#5699) * chore(deps): update dependency @lucide/vue to v1.45.0 (LizardByte#5694) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/doxyconfig from `212e309` to `419127b` (LizardByte#5703) Bumps [third-party/doxyconfig](https://github.com/LizardByte/doxyconfig) from `212e309` to `419127b`. - [Release notes](https://github.com/LizardByte/doxyconfig/releases) - [Commits](LizardByte/doxyconfig@212e309...419127b) --- updated-dependencies: - dependency-name: third-party/doxyconfig dependency-version: 419127bad87f49b2d45fa957ea7302abbb49c01f 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/flatpak-builder-tools from `1fc3219` to `de2225a` (LizardByte#5702) 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 `1fc3219` to `de2225a`. - [Commits](flatpak/flatpak-builder-tools@1fc3219...de2225a) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: de2225a6dee4818c1339b3cdbf29f90c471fcb7e 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(pipewire): extend KWin version check to handle 6.8 beta/RC versions (LizardByte#5704) * Merge commit from fork Sanitize GUI loader and plugin environment variables before privileged initialization, failing closed when the environment cannot be cleaned. Retain CAP_SYS_ADMIN only on a dedicated DRM worker, route KMS and CUDA DRM access through it, reject queued work safely during overflow or shutdown, and drop the worker privileges when DRM access is no longer needed. Add Linux regression coverage for the sanitizer and document the new privileged-worker interfaces. Co-authored-by: Conn O'Griofa <749000+psyke83@users.noreply.github.com> Co-authored-by: Kishi <41839133+Kishi85@users.noreply.github.com> * fix(linux): repair privileged DRM worker build (LizardByte#5706) * fix(pipewire): gate variable rate to KWin 5.x.x - 6.7.79 (up to stable 6.7 series) (LizardByte#5705) * test: PowerShell tests with Pester and Sonar fixes (LizardByte#5708) * test(linux): synchronize environment sanitizer tests (LizardByte#5710) * build(copr): use cuda redistributatle for Fedora builds (LizardByte#5719) * build(linux): fix ubuntu 26.10 aarch64 artifact extraction (LizardByte#5720) * chore(deps): update dependency @lucide/vue to v1.46.0 (LizardByte#5715) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5714) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vite to v8.3.0 (LizardByte#5711) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency windows to v2025 (LizardByte#5712) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dave Lane <42013603+ReenigneArcher@users.noreply.github.com> * feat(linux): use privileged EGL worker thread (LizardByte#5709) * chore(deps): update astral-sh/setup-uv action to v10.1.0 (LizardByte#5684) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5654) * chore(deps): bump libvirtualhid (LizardByte#5722) * fix(flatpak): remove need to prefix commands (LizardByte#5723) * chore(deps): update codecov/codecov-action action to v7.1.0 (LizardByte#5724) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): move boost to CPM and bump to 1.92 (LizardByte#5730) * refactor(web-ui): single page application (LizardByte#5731) * test(web-ui): add tests and coverage (LizardByte#5736) * refactor(web): sonar fixes (LizardByte#5740) * fix(pairing): replace duplicate client certificates (LizardByte#5737) * chore(deps): update codecov/codecov-action action to v7.1.1 (LizardByte#5741) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue to v3.5.43 (LizardByte#5742) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5735) * build(deps): bump third-party/nvapi from `cd6918f` to `87dca62` (LizardByte#5618) Bumps [third-party/nvapi](https://github.com/NVIDIA/nvapi) from `cd6918f` to `87dca62`. - [Commits](NVIDIA/nvapi@cd6918f...87dca62) --- updated-dependencies: - dependency-name: third-party/nvapi dependency-version: 87dca625e83fd89a983e19b904e5f3a580da90d2 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(macOS): remove zero-initialization (LizardByte#5744) Co-authored-by: Andy Grundman <105828+andygrundman@users.noreply.github.com> * build(deps): bump third-party/tray from `c329d9f` to `c1f2a8a` (LizardByte#5747) Bumps [third-party/tray](https://github.com/LizardByte/tray) from `c329d9f` to `c1f2a8a`. - [Release notes](https://github.com/LizardByte/tray/releases) - [Commits](LizardByte/tray@c329d9f...c1f2a8a) --- updated-dependencies: - dependency-name: third-party/tray dependency-version: c1f2a8ab56dd399b881fb7aeab4fe4fc9c58188d 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.12 (LizardByte#5745) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue-router to v4.6.4 (LizardByte#5746) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(tray): move tray icon ownership to vite config (LizardByte#5761) --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: James Le Cuirot <chewi@gentoo.org> Signed-off-by: Zach Denton <z@chdenton.com> Signed-off-by: Vaibhav Srivastava <vaibhavsri1712@gmail.com> Co-authored-by: Dave Lane <42013603+ReenigneArcher@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: LizardByte-bot <108553330+LizardByte-bot@users.noreply.github.com> Co-authored-by: Conn O'Griofa <connogriofa@gmail.com> Co-authored-by: Kishi <41839133+Kishi85@users.noreply.github.com> Co-authored-by: Harold <harold@mrtz.fr> Co-authored-by: Aliaksei Dziadziuk <djadjka.by@gmail.com> Co-authored-by: HurricanePootis <53066639+HurricanePootis@users.noreply.github.com> Co-authored-by: Psyke83 <psyke83@users.noreply.github.com> Co-authored-by: martona <marton@anka.me> Co-authored-by: Cameron Gutman <aicommander@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: James Le Cuirot <chewi@gentoo.org> Co-authored-by: 盼兮 <63710193+panxi39@users.noreply.github.com> Co-authored-by: neatnoise <neatnoise@gmail.com> Co-authored-by: Eduardo Mozart de Oliveira <2974895+eduardomozart@users.noreply.github.com> Co-authored-by: k4idyn <252943111+k4idyn@users.noreply.github.com> Co-authored-by: Noklef <281545466+Noklef@users.noreply.github.com> Co-authored-by: luanweslley77 <luanweslley77@gmail.com> Co-authored-by: luanweslley77 <luanweslley77@users.noreply.github.com> Co-authored-by: Zach Denton <z@chdenton.com> Co-authored-by: pollopopo <61017252+pollopopo@users.noreply.github.com> Co-authored-by: nikzasel <nikzasel@users.noreply.github.com> Co-authored-by: Justin E. Oryschak <justin@oryschak.net> Co-authored-by: matix753 <33520765+matix753@users.noreply.github.com> Co-authored-by: tonyctalope <95322229+tonyctalope@users.noreply.github.com> Co-authored-by: Seth Moore <sethdmoore@users.noreply.github.com> Co-authored-by: Vaibhav Srivastava <vaibhavsri1712@gmail.com> Co-authored-by: dasepmoch <108404480+dasepmoch@users.noreply.github.com> Co-authored-by: solidv <pedroclaro2@gmail.com> Co-authored-by: bitness <lars_damerow@pixar.com> Co-authored-by: Conn O'Griofa <749000+psyke83@users.noreply.github.com> Co-authored-by: Andy Grundman <105828+andygrundman@users.noreply.github.com>
* build(homebrew): force cuda on Linux (LizardByte#5345) * chore(deps): update vmactions/freebsd-vm action to v1.4.9 (LizardByte#5348) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/cache action to v6.1.0 (LizardByte#5349) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5347) * chore(deps): update vmactions/freebsd-vm action to v1.5.0 (LizardByte#5352) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(video): avoid UAF crashes during video reinit (reproducible on Vulkan) (LizardByte#5346) * build(FreeBSD): adjust CI Python dependency groups (LizardByte#5355) * fix(video): avoid nullptr deref segfault on encode session teardown (LizardByte#5257) * fix(flatpak): system tray permission (LizardByte#5354) * feat(linux): pace capture at exact fractional NTSC framerates (LizardByte#5282) * chore: use lizardbyte-common in c++ (LizardByte#5356) Co-authored-by: Kishi <41839133+Kishi85@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.22.0 (LizardByte#5358) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5359) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(linux): avoid network for appstream cli & add missing deps (LizardByte#5363) * fix(linux/pipewire): avoid memory leaks (LizardByte#5360) Co-authored-by: Psyke83 <psyke83@users.noreply.github.com> * feat(macOS): libdispalydevice integration (LizardByte#5338) Co-authored-by: Dave Lane <42013603+ReenigneArcher@users.noreply.github.com> * perf(deps): switch to upstream nanors runtime dispatching (LizardByte#5369) * chore(deps): update dependency @lucide/vue to v1.23.0 (LizardByte#5365) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/moonlight-common-c from `99c45d3` to `1f76427` (LizardByte#5375) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `99c45d3` to `1f76427`. - [Commits](moonlight-stream/moonlight-common-c@99c45d3...1f76427) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 1f764276e848ae2ec7815ef90d1c1748272e074a 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/nanors from `57ee5e9` to `c3529fd` (LizardByte#5376) Bumps [third-party/nanors](https://github.com/sleepybishop/nanors) from `57ee5e9` to `c3529fd`. - [Commits](ursoid-tech/nanors@57ee5e9...c3529fd) --- updated-dependencies: - dependency-name: third-party/nanors dependency-version: c3529fda520f53cd007328ba30b6ad3f89947722 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 astral-sh/setup-uv action to v8.3.0 (LizardByte#5379) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(Linux): Allow building with Vulkan but without Wayland (LizardByte#5377) Signed-off-by: James Le Cuirot <chewi@gentoo.org> * chore(deps): lock file maintenance (LizardByte#5383) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: revise bug report template for clarity and rules (LizardByte#5387) * chore(sonar): ignore submodules (LizardByte#5390) * ci: fix PR checkouts on arch and flatpak (LizardByte#5391) * chore: Remove setuptools from glad dependencies (LizardByte#5392) * build(deps): bump third-party/moonlight-common-c from `1f76427` to `2ea4775` (LizardByte#5382) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `1f76427` to `2ea4775`. - [Commits](moonlight-stream/moonlight-common-c@1f76427...2ea4775) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 2ea47752c3051d72a64bcca190024e8b354fa1ef 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: move nanors to moonlight-common-c submodule (LizardByte#5393) * chore(l10n): update translations (LizardByte#5386) * chore(deps): update astral-sh/setup-uv action to v8.3.2 (LizardByte#5389) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux): drop implicit DRM master for card fds (LizardByte#5286) Co-authored-by: Kishi85 <41839133+Kishi85@users.noreply.github.com> * refactor(sonar): migrate worker threads to std::jthread (LizardByte#5398) * chore(packaging): Drop Windows NSIS builds and rename ZIP to lite (LizardByte#5405) * chore(l10n): update translations (LizardByte#5403) chore(l10n): update translations sunshine.json (Spanish) * build(deps): bump third-party/moonlight-common-c from `2ea4775` to `82e2514` (LizardByte#5402) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `2ea4775` to `82e2514`. - [Commits](moonlight-stream/moonlight-common-c@2ea4775...82e2514) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 82e25148549d249a80aaf4afc68e2abb07072edf 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 @lucide/vue to v1.24.0 (LizardByte#5396) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.6 (LizardByte#5395) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux): avoid memory leak from unnecessary encoder re-probing (LizardByte#5404) * chore(deps): Update build-deps to v2026.713.132551 (LizardByte#5409) * chore(sonar): change NOSONAR comment style (LizardByte#5410) * chore(deps): update actions/setup-node action to v7 (LizardByte#5413) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat(linux/vaapi): VAAPI encoder improvements (LizardByte#5388) * chore(deps): update dependency @vitejs/plugin-vue to v6.0.8 (LizardByte#5418) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(docs/linux): add Portal and EGL context tips (LizardByte#5419) * fix(packaging/windows): Allow WiX installer downgrades (LizardByte#5435) * feat(linux): use connector name as default display name on linux (LizardByte#5423) * chore(deps): update actions/checkout action to v7.0.1 (LizardByte#5412) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/setup-dotnet action to v6 (LizardByte#5422) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update vmactions/freebsd-vm action to v1.5.1 (LizardByte#5426) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.7 (LizardByte#5433) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.25.0 (LizardByte#5424) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue-i18n to v11.4.7 (LizardByte#5434) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5431) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/moonlight-common-c from `82e2514` to `703a069` (LizardByte#5428) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `82e2514` to `703a069`. - [Commits](moonlight-stream/moonlight-common-c@82e2514...703a069) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 703a06946861ff82cd33e5e13c59c1b017f7ded9 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.40 (LizardByte#5421) * chore(deps): update dependency vue to v3.5.40 * Add @vue/server-renderer lock entry Updates package-lock.json to include @vue/server-renderer@3.5.40 and its Vue SSR runtime dependencies, keeping the lockfile in sync with the installed dependency graph. --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * chore(deps): update vmactions/freebsd-vm action to v1.5.2 (LizardByte#5436) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/setup-python action to v7 (LizardByte#5437) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update astral-sh/setup-uv action to v9 (LizardByte#5438) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5420) * build(deps): bump third-party/moonlight-common-c from `703a069` to `e41355e` (LizardByte#5439) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `703a069` to `e41355e`. - [Commits](moonlight-stream/moonlight-common-c@703a069...e41355e) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: e41355ea01670fd4c830b384009d31dd0339a705 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 @lucide/vue to v1.26.0 (LizardByte#5440) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * refactor: clients section to dynamically fetch from app-directory (LizardByte#5380) * fix(amf): wire h264_amf coder and profile mapping (LizardByte#5442) Co-authored-by: k4idyn <252943111+k4idyn@users.noreply.github.com> * chore: bump FreeBSD version from 14.4 to 15.1 (LizardByte#5445) * chore: move nv-codec-headers to build-deps submodule (LizardByte#5449) * fix(linux/kms): use same methodology for display name matching and list generation (LizardByte#5448) * chore(l10n): update translations (LizardByte#5450) * fix(nvenc): dynamic nv codec sdk selection (LizardByte#5451) * chore(deps): update dependency @lucide/vue to v1.27.0 (LizardByte#5452) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue-i18n to v11.4.8 (LizardByte#5453) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): Update build-deps to v2026.724.203728 (LizardByte#5446) * build(deps): bump third-party/lizardbyte-common from `06cd442` to `011ad2b` (LizardByte#5457) * build(deps): bump third-party/lizardbyte-common Bumps [third-party/lizardbyte-common](https://github.com/LizardByte/lizardbyte-common) from `06cd442` to `011ad2b`. - [Release notes](https://github.com/LizardByte/lizardbyte-common/releases) - [Commits](LizardByte/lizardbyte-common@06cd442...011ad2b) --- updated-dependencies: - dependency-name: third-party/lizardbyte-common dependency-version: 011ad2bb139083dcf4ec21f9c09f07470891a668 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * style: run clang-format across C++ sources Reformatted conditionals, loops, and long function calls across core, platform, NVENC, and test helper code to match updated formatting rules, including minor spacing normalization in type declarations. These are style-only edits with no intended behavior 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> * chore(deps): lock file maintenance (LizardByte#5455) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: migrate to qt tray for all platforms (LizardByte#5260) * fix(FreeBSD): Qt6 tray dependency package (LizardByte#5458) * chore(deps): update lizardbyte/actions action to v2026.728.214955 (LizardByte#5459) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * test(tray): add system tray tests (LizardByte#4221) * fix(web-ui): Welcome page styling (LizardByte#5466) * chore(deps): update vmactions/freebsd-vm action to v1.5.3 (LizardByte#5478) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.28.0 (LizardByte#5463) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5470) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.9 (LizardByte#5473) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue to v3.5.41 (LizardByte#5475) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5479) * chore(docker): fix hadolint SC3014 (LizardByte#5482) * build(macOS): fix macOS framework signing glob (LizardByte#5483) * build(macOS): sign only valid framework bundles (LizardByte#5484) * feat(logging): rotating log files (LizardByte#5485) * chore(l10n): update translations (LizardByte#5487) * chore(deps): update dependency @lucide/vue to v1.30.0 (LizardByte#5486) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(unix): add nv-codec-headers include path (LizardByte#5488) * ci: add workflow to publish PR artifacts (LizardByte#5491) * chore(deps): update dependency @lucide/vue to v1.31.0 (LizardByte#5493) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5492) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux/kms)!: Use connector type index from KMS instead of self calculation (LizardByte#5489) * build(windows): default to qt6-static (LizardByte#5497) * feat(input): implement libvirtualhid adding new gamepad styles (LizardByte#5368) * ci(FreeBSD): remove aarch64 (LizardByte#5516) * chore(deps): lock file maintenance (LizardByte#5514) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(virtual-hid): remove license expiration (LizardByte#5517) * build(homebrew): normalize remapped LCOV source paths (LizardByte#5518) * chore(l10n): update translations (LizardByte#5507) * fix(macOS): update build script and ci with explicit Qt6 paths (LizardByte#5502) * chore(deps): update astral-sh/setup-uv action to v10 (LizardByte#5501) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.10 (LizardByte#5521) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(linux/pipewire): restore dummy buffer for software encoders and fix buffer ownership (LizardByte#5495) Co-authored-by: luanweslley77 <luanweslley77@users.noreply.github.com> * fix(linux/freebsd): truncate thread names to 15 characters (LizardByte#5527) * chore(deps): update dependency @lucide/vue to v1.32.0 (LizardByte#5528) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: update global workflows (LizardByte#5525) * chore(deps): update dependency @lucide/vue to v1.33.0 (LizardByte#5533) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(macOS): System tray icon disappears when restarting Sunshine (LizardByte#5504) * fix(input): preserve aux gamepad data and bump libvirtualhid (LizardByte#5531) * chore(l10n): update translations (LizardByte#5535) * fix(wayland): use the current wl_output mode (LizardByte#5150) Signed-off-by: Zach Denton <z@chdenton.com> Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * feat(amf): add amd_max_au_size option (LizardByte#4926) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5539) * chore: update Virtual HID requirements and mouse refresh (LizardByte#5547) * chore(deps): update vmactions/freebsd-vm action to v1.5.4 (LizardByte#5540) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/moonlight-common-c from `e41355e` to `874ac95` (LizardByte#5541) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `e41355e` to `874ac95`. - [Commits](moonlight-stream/moonlight-common-c@e41355e...874ac95) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 874ac9548f1bd6f095ef2b435c42cdde460e7821 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.9 (LizardByte#5546) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5543) * fix(linux/publish): release the Avahi client when the poll loop stops (LizardByte#5545) * chore(l10n): update translations (LizardByte#5548) * build(deps): bump third-party/lizardbyte-common from `011ad2b` to `ffc027d` (LizardByte#5550) build(deps): bump third-party/lizardbyte-common Bumps [third-party/lizardbyte-common](https://github.com/LizardByte/lizardbyte-common) from `011ad2b` to `ffc027d`. - [Release notes](https://github.com/LizardByte/lizardbyte-common/releases) - [Commits](LizardByte/lizardbyte-common@011ad2b...ffc027d) --- updated-dependencies: - dependency-name: third-party/lizardbyte-common dependency-version: ffc027d7b582b8a552c9028ebc18d18ecd919d72 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(l10n): update translations (LizardByte#5551) chore(l10n): update translations sunshine.json (Bulgarian) * chore: add branding images (LizardByte#5552) * fix(pipewire): gate variable rate capture and fix fractional framerates (LizardByte#5538) Co-authored-by: Kishi85 <41839133+Kishi85@users.noreply.github.com> * chore(deps): update dependency marked to v18.0.11 (LizardByte#5555) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue-i18n to v11.4.10 (LizardByte#5556) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5557) * feat(input): update libvirtualhid integration (LizardByte#5563) * chore(deps): update vmactions/freebsd-vm action to v1.5.5 (LizardByte#5561) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue to v3.5.42 (LizardByte#5560) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.35.0 (LizardByte#5565) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5559) * chore(deps): add vite override for codecov plugin (LizardByte#5576) * chore(deps): update lizardbyte/actions action to v2026.829.140353 (LizardByte#5577) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dave Lane <42013603+ReenigneArcher@users.noreply.github.com> * chore(deps): update dependency vite to v8 (LizardByte#5578) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5579) * fix(linux/pipewire): try variable rate for non-KWin compositors (LizardByte#5569) * chore(deps): update dependency @lucide/vue to v1.37.0 (LizardByte#5581) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5582) * feat(session): add SUNSHINE_CLIENT_NAME environment variable (LizardByte#5465) * fix(windows/installer): PATH update reg add /f option ordering (LizardByte#5584) * chore(deps): lock file maintenance (LizardByte#5588) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.38.0 (LizardByte#5587) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(video): fall back to SDR when HDR isn't supported (LizardByte#5429) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * fix(windows): capture the configured audio sink instead of the default device (LizardByte#5408) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * fix(input): track/release client keycode for modifiers (LizardByte#5558) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * ci: sonar fixes (LizardByte#5594) * chore(l10n): update translations (LizardByte#5583) * docs: fix typo automaticaly -> automatically (LizardByte#5573) Signed-off-by: Vaibhav Srivastava <vaibhavsri1712@gmail.com> * fix: iterator/stat utility edge cases and add tests (LizardByte#5308) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> * build(Linux): use compiler-selected libgcov for coverage (LizardByte#5597) * build(deps): bump packaging/linux/flatpak/deps/flatpak-builder-tools from `ac5a296` to `1fc3219` (LizardByte#5595) 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 `ac5a296` to `1fc3219`. - [Commits](flatpak/flatpak-builder-tools@ac5a296...1fc3219) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: 1fc32195e3e60fe5c97f0af646dec7a99df5962b 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 @lucide/vue to v1.39.0 (LizardByte#5596) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Merge commit from fork * Merge commit from fork * Merge commit from fork * Merge commit from fork * build(Windows): resolve system Node.js package (LizardByte#5599) * refactor: pairing flow, pairing tests, and inline struct comments (LizardByte#5602) * chore(deps): update dependency @lucide/vue to v1.40.0 (LizardByte#5606) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5600) * build(docker): add bake config (LizardByte#5607) * chore(deps): update dependency @lucide/vue to v1.41.0 (LizardByte#5609) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(flatpak): drop imagemagick dep (LizardByte#5610) * ci: add Cloudsmith packaging support (LizardByte#5611) * ci(release): avoid workflow concurrency deadlock (LizardByte#5612) * chore(deps): update lizardbyte/actions action to v2026.905.43751 (LizardByte#5614) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: update global workflows (LizardByte#5616) * style(homebrew): fix homebrew validation (LizardByte#5620) * build(deps): bump third-party/lizardbyte-common from `ffc027d` to `f9d91e1` (LizardByte#5624) * build(deps): bump third-party/lizardbyte-common Bumps [third-party/lizardbyte-common](https://github.com/LizardByte/lizardbyte-common) from `ffc027d` to `f9d91e1`. - [Release notes](https://github.com/LizardByte/lizardbyte-common/releases) - [Commits](LizardByte/lizardbyte-common@ffc027d...f9d91e1) --- updated-dependencies: - dependency-name: third-party/lizardbyte-common dependency-version: f9d91e1d29b7473f58e43acde4579da4e56c4abe dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * chore(deps): bump clang-format to 23.1.0 Update the lockfile and dependency metadata to use clang-format 23.1.0 for the lint-c and dev extras. This refreshes the resolved package artifacts and version constraints in uv.lock. --------- 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> * chore(deps): bump libvirtualhid (LizardByte#5585) * fix(macOS): enable microphone permission flow (LizardByte#5621) * build(deps): bump third-party/tray from `1d0d696` to `c329d9f` (LizardByte#5630) * build(deps): bump third-party/tray from `1d0d696` to `c329d9f` Bumps [third-party/tray](https://github.com/LizardByte/tray) from `1d0d696` to `c329d9f`. - [Release notes](https://github.com/LizardByte/tray/releases) - [Commits](LizardByte/tray@1d0d696...c329d9f) --- updated-dependencies: - dependency-name: third-party/tray dependency-version: c329d9fd0d39dfb47f0f2fb5467e1db2e8a1d623 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * test(tray): enable tray test hooks Gate `TRAY_ENABLE_TEST_HOOKS` behind `BUILD_TESTS` in dependency setup and propagate the same definition to test targets when tray tests are enabled. This keeps production tray builds unchanged while allowing tray-specific test hook code to be compiled consistently for supported platforms. --------- 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> * build(Linux): add aarch64 AppImage (LizardByte#5627) * chore(l10n): update translations (LizardByte#5626) * ci(FreeBSD): enable docs (LizardByte#5631) * feat(linux/pipewire): add support for unpaced capture when appropriate (LizardByte#5629) * chore(deps): update dependency @lucide/vue to v1.42.0 (LizardByte#5636) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5634) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): Update build-deps to v2026.905.170812 (LizardByte#5637) * build(Linux): enable openSUSE Leap 16.0 and Tumbleweed (LizardByte#5633) * chore(flatpak): update org.kde.Platform runtime to 6.11 (LizardByte#5639) * feat(config): add gamepad_driver option (LizardByte#5653) * chore(l10n): update translations (LizardByte#5632) * chore(deps): update dependency marked to v18.0.12 (LizardByte#5648) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/moonlight-common-c from `874ac95` to `62e0663` (LizardByte#5657) build(deps): bump third-party/moonlight-common-c Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c) from `874ac95` to `62e0663`. - [Commits](moonlight-stream/moonlight-common-c@874ac95...62e0663) --- updated-dependencies: - dependency-name: third-party/moonlight-common-c dependency-version: 62e066388f1a1b133e0bee947b9a374311a3354b 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.909.30231 (LizardByte#5664) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update ubuntu docker tag to v26 (LizardByte#5666) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update vmactions/freebsd-vm action to v1.5.6 (LizardByte#5665) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @lucide/vue to v1.43.0 (LizardByte#5655) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * ci(homebrew): run tests in separate step (LizardByte#5669) * fix(deps): fix legacy nvenc presets and bump third-party/build-deps (LizardByte#5668) * build(Linux): add Alpine packages (LizardByte#4987) * fix(linux/vulkan): use vkGetDeviceQueue2 with FFmpeg 9.0 queue flags (LizardByte#5675) * build(Linux): harden Qt6 dependency detection (LizardByte#5679) * fix(av1,hevc): stop av1 probes from clobbering hevc results (LizardByte#5554) * fix(api): return the final result of pairing (LizardByte#5680) * fix(nvapi,nvenc): Load ARM64 DLLs on RTX Spark (LizardByte#5682) * ci(homebrew): skip more_space action for release job (LizardByte#5683) * chore(deps): update dependency @lucide/vue to v1.44.0 (LizardByte#5674) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(web-ui): localize config categories (LizardByte#5688) * ci(homebrew): drop sonoma (LizardByte#5689) * build(deps): bump third-party/plasma-wayland-protocols from `4c015e9` to `382dfab` (LizardByte#5687) build(deps): bump third-party/plasma-wayland-protocols Bumps [third-party/plasma-wayland-protocols](https://github.com/KDE/plasma-wayland-protocols) from `4c015e9` to `382dfab`. - [Commits](KDE/plasma-wayland-protocols@4c015e9...382dfab) --- updated-dependencies: - dependency-name: third-party/plasma-wayland-protocols dependency-version: 382dfabda886d3f2f5c067b22e5a22376685ba78 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/doxyconfig from `b87f7e4` to `212e309` (LizardByte#5686) * build(deps): bump third-party/doxyconfig from `b87f7e4` to `212e309` Bumps [third-party/doxyconfig](https://github.com/LizardByte/doxyconfig) from `b87f7e4` to `212e309`. - [Release notes](https://github.com/LizardByte/doxyconfig/releases) - [Commits](LizardByte/doxyconfig@b87f7e4...212e309) --- updated-dependencies: - dependency-name: third-party/doxyconfig dependency-version: 212e3094fe6a09848d8ae058956faab27557c65c dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): install doxygen from msys2 --------- 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> * fix: missing initializers and incorrect default for native_pen_touch (LizardByte#5693) * build(Linux): add Ubuntu 26.10 Docker bake target (LizardByte#5622) * fix(linux): handle NVENC in builds without CUDA (LizardByte#5698) * fix(network): respect configured bind address (LizardByte#5700) * fix(web-ui): add XDG Portal token reset (LizardByte#5701) * fix(linux): export all Wayland DMA-BUF planes (LizardByte#5699) * chore(deps): update dependency @lucide/vue to v1.45.0 (LizardByte#5694) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): bump third-party/doxyconfig from `212e309` to `419127b` (LizardByte#5703) Bumps [third-party/doxyconfig](https://github.com/LizardByte/doxyconfig) from `212e309` to `419127b`. - [Release notes](https://github.com/LizardByte/doxyconfig/releases) - [Commits](LizardByte/doxyconfig@212e309...419127b) --- updated-dependencies: - dependency-name: third-party/doxyconfig dependency-version: 419127bad87f49b2d45fa957ea7302abbb49c01f 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/flatpak-builder-tools from `1fc3219` to `de2225a` (LizardByte#5702) 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 `1fc3219` to `de2225a`. - [Commits](flatpak/flatpak-builder-tools@1fc3219...de2225a) --- updated-dependencies: - dependency-name: packaging/linux/flatpak/deps/flatpak-builder-tools dependency-version: de2225a6dee4818c1339b3cdbf29f90c471fcb7e 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(pipewire): extend KWin version check to handle 6.8 beta/RC versions (LizardByte#5704) * Merge commit from fork Sanitize GUI loader and plugin environment variables before privileged initialization, failing closed when the environment cannot be cleaned. Retain CAP_SYS_ADMIN only on a dedicated DRM worker, route KMS and CUDA DRM access through it, reject queued work safely during overflow or shutdown, and drop the worker privileges when DRM access is no longer needed. Add Linux regression coverage for the sanitizer and document the new privileged-worker interfaces. Co-authored-by: Conn O'Griofa <749000+psyke83@users.noreply.github.com> Co-authored-by: Kishi <41839133+Kishi85@users.noreply.github.com> * fix(linux): repair privileged DRM worker build (LizardByte#5706) * fix(pipewire): gate variable rate to KWin 5.x.x - 6.7.79 (up to stable 6.7 series) (LizardByte#5705) * test: PowerShell tests with Pester and Sonar fixes (LizardByte#5708) * test(linux): synchronize environment sanitizer tests (LizardByte#5710) * build(copr): use cuda redistributatle for Fedora builds (LizardByte#5719) * build(linux): fix ubuntu 26.10 aarch64 artifact extraction (LizardByte#5720) * chore(deps): update dependency @lucide/vue to v1.46.0 (LizardByte#5715) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): lock file maintenance (LizardByte#5714) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vite to v8.3.0 (LizardByte#5711) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency windows to v2025 (LizardByte#5712) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dave Lane <42013603+ReenigneArcher@users.noreply.github.com> * feat(linux): use privileged EGL worker thread (LizardByte#5709) * chore(deps): update astral-sh/setup-uv action to v10.1.0 (LizardByte#5684) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5654) * chore(deps): bump libvirtualhid (LizardByte#5722) * fix(flatpak): remove need to prefix commands (LizardByte#5723) * chore(deps): update codecov/codecov-action action to v7.1.0 (LizardByte#5724) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): move boost to CPM and bump to 1.92 (LizardByte#5730) * refactor(web-ui): single page application (LizardByte#5731) * test(web-ui): add tests and coverage (LizardByte#5736) * refactor(web): sonar fixes (LizardByte#5740) * fix(pairing): replace duplicate client certificates (LizardByte#5737) * chore(deps): update codecov/codecov-action action to v7.1.1 (LizardByte#5741) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue to v3.5.43 (LizardByte#5742) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(l10n): update translations (LizardByte#5735) * build(deps): bump third-party/nvapi from `cd6918f` to `87dca62` (LizardByte#5618) Bumps [third-party/nvapi](https://github.com/NVIDIA/nvapi) from `cd6918f` to `87dca62`. - [Commits](NVIDIA/nvapi@cd6918f...87dca62) --- updated-dependencies: - dependency-name: third-party/nvapi dependency-version: 87dca625e83fd89a983e19b904e5f3a580da90d2 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(macOS): remove zero-initialization (LizardByte#5744) Co-authored-by: Andy Grundman <105828+andygrundman@users.noreply.github.com> * build(deps): bump third-party/tray from `c329d9f` to `c1f2a8a` (LizardByte#5747) Bumps [third-party/tray](https://github.com/LizardByte/tray) from `c329d9f` to `c1f2a8a`. - [Release notes](https://github.com/LizardByte/tray/releases) - [Commits](LizardByte/tray@c329d9f...c1f2a8a) --- updated-dependencies: - dependency-name: third-party/tray dependency-version: c1f2a8ab56dd399b881fb7aeab4fe4fc9c58188d 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.12 (LizardByte#5745) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vue-router to v4.6.4 (LizardByte#5746) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(tray): move tray icon ownership to vite config (LizardByte#5761) --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: James Le Cuirot <chewi@gentoo.org> Signed-off-by: Zach Denton <z@chdenton.com> Signed-off-by: Vaibhav Srivastava <vaibhavsri1712@gmail.com> Co-authored-by: Dave Lane <42013603+ReenigneArcher@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: LizardByte-bot <108553330+LizardByte-bot@users.noreply.github.com> Co-authored-by: Conn O'Griofa <connogriofa@gmail.com> Co-authored-by: Kishi <41839133+Kishi85@users.noreply.github.com> Co-authored-by: Harold <harold@mrtz.fr> Co-authored-by: Aliaksei Dziadziuk <djadjka.by@gmail.com> Co-authored-by: HurricanePootis <53066639+HurricanePootis@users.noreply.github.com> Co-authored-by: Psyke83 <psyke83@users.noreply.github.com> Co-authored-by: martona <marton@anka.me> Co-authored-by: Cameron Gutman <aicommander@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: James Le Cuirot <chewi@gentoo.org> Co-authored-by: 盼兮 <63710193+panxi39@users.noreply.github.com> Co-authored-by: neatnoise <neatnoise@gmail.com> Co-authored-by: Eduardo Mozart de Oliveira <2974895+eduardomozart@users.noreply.github.com> Co-authored-by: k4idyn <252943111+k4idyn@users.noreply.github.com> Co-authored-by: Noklef <281545466+Noklef@users.noreply.github.com> Co-authored-by: luanweslley77 <luanweslley77@gmail.com> Co-authored-by: luanweslley77 <luanweslley77@users.noreply.github.com> Co-authored-by: Zach Denton <z@chdenton.com> Co-authored-by: pollopopo <61017252+pollopopo@users.noreply.github.com> Co-authored-by: nikzasel <nikzasel@users.noreply.github.com> Co-authored-by: Justin E. Oryschak <justin@oryschak.net> Co-authored-by: matix753 <33520765+matix753@users.noreply.github.com> Co-authored-by: tonyctalope <95322229+tonyctalope@users.noreply.github.com> Co-authored-by: Seth Moore <sethdmoore@users.noreply.github.com> Co-authored-by: Vaibhav Srivastava <vaibhavsri1712@gmail.com> Co-authored-by: dasepmoch <108404480+dasepmoch@users.noreply.github.com> Co-authored-by: solidv <pedroclaro2@gmail.com> Co-authored-by: bitness <lars_damerow@pixar.com> Co-authored-by: Conn O'Griofa <749000+psyke83@users.noreply.github.com> Co-authored-by: Andy Grundman <105828+andygrundman@users.noreply.github.com>









































































Description
Fix two related bugs in the
keybindingspath. Also add tests.Please let me know if any of the changes are unacceptable. This change set fixes bugs I
encountered while streaming OSX Taho with Sunshine to Linux (via Moonlight).
Tested and working after these patches. Wayland Arch client (moonlight) -> OSX host (sunshine).
Both bugs stem from the same issue:
key_pressandshortcutFlagswere stored onthe client's unmapped virtual-key code. Key presses were emitted through
map_keycode(), so the host holds a different key than Sunshine's perspective.1. Synthetic modifier fix (
src/input.cpp,passthrough)shortcutFlagsis compared againstpacket->modifiers, a client-side bitmask. It wasupdated from the remapped host keycode.
Any
keybindingsentry that moves Alt offVKEY_MENU/VKEY_LMENU/VKEY_RMENUcaused the ALT bit to clear while the client stillreported
MODIFIER_ALT.send_key_and_modifiers()wrapped every following key in a realVKEY_MENUpress/release.Before the fix, Alt+Space from a client (linux) arrived as Cmd+Option+Space on Sunshine host (OSX).
This would cause annoyances like: "Search This Mac" appearing when attempting to spawn Spotlight.
It also made simple things like such as option-as-alt in terminals to be unusable.
The bug affected every key pressed while the remapped Alt was held, not just Space.
The synthetic-modifier path exists for clients that report modifiers in the bitmask without
sending discrete modifier key events, so both sides of that comparison should be client-side.
apply_shortcut()in the combo check already receives the unmapped keycode, so this alsomakes the two halves of that check agree.
2. Remapped key left latched on disconnect (
src/input.cpp,reset_keyboard_keys)The reset path pulled the unmapped VK back out of
key_pressand released those unmapped keys.The remapped key that was never released. With the
keybindingsconfig above, a disconnectreleased Option and left Command held.
This bug also affects the shipped
key_rightalt_to_key_winoption, which follows the same remap / unmap flow.3. Tests
platf::keyboard_updateis a per-platform free function, and libvirtualhid'sFakeKeyboarddiscards
submit(), so ordered keyboard output was not observable. The nine emit sites now gothrough one
emit_keyboard_update()forwarder whose sink check is inside#ifdef SUNSHINE_TESTS; non-test builds compile to a plain forwarder.18 tests: 45 held-modifier combinations (3 side variants x 15 non-empty subsets of
Shift/Ctrl/Alt/Meta), all 7 synthetic-injection subsets, 91 keys forwarded verbatim, a
self-verifying table proving all 95 printable ASCII characters are reachable and exercised
plain and shifted, flags propagation, press/release dedup, the shortcut-swallow path, and
regression coverage for both fixes. One test clears the recorder and asserts through
lvh::Keyboard::submit_count()so a broken delivery path can't hide behind the sink.Both fixes were verified by reverting them individually and confirming the tests fail:
fix 1 -> 3 failures (expected
{+0x20, -0x20}, got{+0x12, +0x20, -0x12, -0x20});fix 2 -> 2 failures (released
-0xA4instead of-0x5B). A no-keybindings control testpasses either way, showing fix 2 doesn't over-map.
Native VK -> native keycode translation is deliberately not tested here. It moved to
libvirtualhid, whose backend tables live in anonymous namespaces in translation units that
only compile on their own platform, and which are already covered by
TranslatesKeyboardKeysin that project's per-platform test jobs. Nothing here is platform-gated, so every CI job runs
all 18.
Screenshot
N/A - not a UI change.
Issues Fixed or Closed
None open that I could find. Fix 1 is the same root cause as #4531, which #5318 fixed for the
key_rightalt_to_key_winpath only. That special is likely redundant. Unmappedtracking
VKEY_RMENUapplies the ALT bit on its own.Roadmap Issues
None.
Type of Change
Checklist
AI Usage
See our AI usage policy.