github Nonary/Vibepollo 2.17.3
Vibepollo 2.17.3 (Nightly)

pre-releaseone hour ago

This is a nightly release of Vibepollo and contains several bug fixes and may contain new features. Check the commit log for more information.

Windows installer · Linux (Arch x86_64)

Nightly Windows installers are unsigned and include self-signed gamepad components. They may cause false-positive antivirus alerts.

Commit log

Source: bce817d4e334

Since the preceding successfully published nightly 2.14.11: compare exact sources.

e2b7fc539382

fix(linux): Support SDDM Wayland greeter streaming

SDDM greeters were rejected by Plasma Login Manager-only detection and
readiness checks. Bind supported SDDM KWin peers to their session and
preserve valid streams across transient probes while revoking replacements.
Add SDDM regression coverage and document opt-in greeter configuration.

Fixes #741

Co-authored-by: Codex <noreply@openai.com>

7d674a9afdc7

fix(input): Recover first VHF controller after device removal

An idle keyboard/mouse device loss could strand recovery before the
controller worker started, leaving gamepads unavailable until restart.
Retire stale idle connections and retry first-controller creation once,
preserving active controllers and safe keyboard/mouse teardown.
Add production-path regression coverage to CTest and PR validation.

Fixes #736

Co-authored-by: Codex <noreply@openai.com>

05cb0bb2761f

i18n(locale): translate frame-gen / virtual-display / Reflex slice for all languages

Backfill the 376-key frame-generation, virtual-display, Reflex/limiter,
and display-device string slice (including the newly extracted
apps.framegen.* keys) into every offered locale that was missing them.

- 19 non-English locales translated to native phrasing, preserving every
  {placeholder} and keeping product/technical terms verbatim (Vibeshine,
  NVIDIA, Reflex, Smooth Motion, RTSS, DLSS, FSR, LSFG, HDR, WGC, Hz, FPS,
  ms, etc.). Verified: 0 placeholder mismatches, 0 dropped brand terms.
- en_GB and en_US filled from en for the same slice so the files are
  self-complete.

Existing translations were left untouched; only missing keys were added.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit 31e34dadfd494d84c295d3b9f65bdd886bc8601d)

2b7ef4dcbdf2

feat(l10n): gate frontend translations with static audit

Add a strict frontend localization audit so new missing keys, hard-coded UI text, fallback literals, and stale locale JSON drift are caught before the web bundle builds.
Backfill the current missing locale entries in 50-string translation batches and baseline the remaining known debt so CI fails only on new regressions.
Include focused Vitest coverage for the auditor and wire the audit into bundle CI from the web package directory.

Generated with [Codex](https://openai.com/codex/)
Model: GPT 5.5 High

(cherry picked from commit aaa0f3e30ef7bda268fec21e77b11294e2029a1e)

249ff165aae2

Complete v2 settings and prioritize Linux virtual screens

(cherry picked from commit 017cc6048bb6089111a8dfd6aaca1e65884917bc)

33a570d21aff

test: replace source-text guards with behavior checks

Source-text checks could pass despite runtime regressions. Execute production
recovery, pairing, display and controller decisions with fixed outcomes,
and mount or drive actual frontend components instead of scanning Vue.
Extract the unchanged session classifier for deterministic behavior tests.
Retain deployment contracts and explicitly weak native integration guards.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit f8e122bf520151a969b688140482c10429949f04)

d0f2da489f59

fix(shutdown): report stalled cleanup phase

The shutdown watchdog can fire while a main-thread cleanup operation is still blocked, leaving the timeout diagnostic without a useful checkpoint.

Record selected waits and cleanup steps in a lock-free phase tracker and append the latest phase to the existing watchdog log. This remains best-effort and does not identify a blocked thread or establish the incident root cause.

Reapplied from private candidate 763d0d5c0c8abb0a51e1abafa2d96f50af2028b9.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit 51d8544bdf9bdab37ebe40b65002493da92b142e)

1592c045bde6

Add redacted launch and resume traces

Add bounded route-stage and timing diagnostics for launch and resume, and carry request-detail redaction through direct and deferred display request construction.

Reconciles diagnostic intent from unpublished seed 6292eeab30ad90e2b17a08129893cdee1a3f1d53, originally onto published Vibeshine master 5a77c3ed895b9f5c5fc7f1e0c9055d2c2065ae57, then refreshes the same patch onto current published master d499f4b3ba50afca3c39d9de8f8e4a14cf9a0f4b. This is not an exact cherry-pick of the seed.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit bfeeb1e823e985bde7aeb669818a41151d0781fa)

3d29590f16da

feat(display): add opt-in IddCx frame-push capture

Add a D3D11 four-slot consumer and owner-authenticated target lookup to the Windows capture selector. Require explicit build opt-in and a validated first frame before activation, while retaining WGC fallback for unsupported or unavailable targets.

Refs: #626

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit 34d294432c765a07b8f190f251b067585704a73f)

3955e55b8fd9

fix(installer): Identify local builds and accept native companions

Distinguish local builds from clean release tags with a commit-based version suffix while retaining existing artifact versions when skipping builds. Include the native tray and package preflight artifacts in installation validation.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit e7cddc5e0b520063a879c7356699f8ac01d09789)

c29a528988e2

fix(installer): Prevent display inventory timeouts

Exclude inbox drivers from the bounded inventory to avoid exhausting its 15-second deadline during setup.
Attribute warnings to the driver action that produced them and preserve wrapped 64-bit error details so SudoVDA failures no longer blame the selected display driver.

Generated with [Codex](https://openai.com/codex/)

Model: GPT 6.1-Sol High
(cherry picked from commit 6b4e1a3f182ab94f7a222fee4824007789bc8155)

37f77dfdb3f9

ci(nightly): dispatch Canary workflow from master (#380)

* ci(nightly): align master display release lock handling

* ci(nightly): dispatch Canary workflow from master

* fix(windows): include Winsock before SDK headers

(cherry picked from commit 0b969b2867bf66de61c835cd8f667f8fc65b7e95)

c166f392552a

test(macos): Keep FFmpeg dependency checks offline

Seed the content-addressed cache with a synthetic archive and a matching test-only pin so framework checks do not require a Darwin download. Verify that a tampered cache still fails the production checksum check.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit c1fb49871ff9800b8f4e725f601ff7739c77e683)

612751491c41

fix(release): Include the previous stable patch notes

Compose the preceding stable patch line automatically so users can see recent changes without duplicating release-note files.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit 4366299e2d48a51af191cc8cc24aa0abb1648879)

413fece7e91d

fix(installer): Accept the optional Linux HDR runtime helper

Allow packages with the on-demand HDR downloader while retaining compatibility with older rollback packages. Preserve this checkout installer fix on Canary.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit 944bc2ec045c4f772723dfddb11061e588675190)

e905b58e77d1

fix(playnite): back off and rate-limit pipe reconnects (#689)

* fix(playnite): back off and rate-limit pipe reconnects

When the pre-0.5 script connector (SunshinePlaynite.psm1) is still
installed next to Playnite.DesktopApp.exe, Playnite loads it alongside the
compiled plugin. Both serve the single-instance pipe
Sunshine.PlayniteExtension, so the one that does not own the name gets
ERROR_PIPE_BUSY from NamedPipeServerStream immediately. The accept loop
retried with no delay and logged a WARN every ~1 ms to extensions.log and
sunshine_playnite-*.log, growing them by gigabytes and keeping Defender's
real-time scanner busy.

Plugin:
- Back off after a failed accept attempt: 250 ms doubling to 10 s with
  jitter, reset on a successful accept; the wait ends on Stop().
- Log the first failure of a run, then at most one summary per 60 s, and
  note recovery once a client is accepted.
- Explain ERROR_PIPE_BUSY: another process owns the pipe, usually a second
  copy of the connector.
- At startup, warn about any SunshinePlaynite.psm1 in Playnite's
  Extensions folders.

Sunshine (IpcClient, also used by playnite-launcher):
- Replace the fixed 500/300 ms reconnect sleeps with the same backoff; it
  resets only after a connection stays up for 5 s, so a connect-and-drop
  loop cannot spin either. Sleeps return promptly on stop().
- Rate-limit connect-failure logging the same way, with the Win32 error.
- Add NamedPipeFactory::set_quiet_connect_failures() so per-attempt
  "pipe not found/busy" logs drop to debug for callers that report
  failures themselves, and last_connect_error() so the real error is
  reported instead of a GetLastError() clobbered by logging.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(playnite): update pipe fixtures for the reconnect backoff

The identification and virtual-display transport fixtures extract code from
pipes.cpp and playnite_ipc.cpp, so they broke on the new connect_to_plugin
signature and the factory's quiet-failure state. Carry that state into both
fixtures and assert the connect error is reported on failure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Vibeshine adaptation: preserve the existing ConnectorRetryPolicy server
backoff and logging semantics, private IPC security contracts and their tests.
Port native client backoff and legacy connector warning; extend the native
fixture to check jitter bounds, exponential growth, cap and reset.

(cherry picked from commit b739553a9653fa1b2a288f7e3ab2321ab1a0c3a4)
(cherry picked from commit a52a2052623bed563a3d9a5b27565d6f33349008)

fc89f4d80d99

test(ipc): bound pipe authority extraction to its function

Extract only the verified acceptance function so unrelated reconnect-policy methods cannot leak into its standalone security fixture.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit a29804b23b57cde4daf6e0caf46269296180473f)

98efdca5816a

fix(macos): retain exact launch display refresh policy

Adapt imported display setup to the current millihertz fields and saturating Hertz fallback instead of the removed source normalization helper.

(cherry picked from commit 604f77460b42b53785abb5f31310f007b549183a)

3c562ba1571d

fix(release): validate and order historical nightly revisions

Adapt legacy parser and metadata compatibility portion only, preserve numeric producer/workflows.

Co-authored-by: Codex <noreply@openai.com>

(cherry picked from commit 0a2aad994bbab95e117c8fe100c2c6f328d5817d)
(cherry picked from commit a1317f48c532b51967e0c66df139f09d1ed7bfd6)

251b1cc0912e

fix(macos): load tray fallback from current Shine assets

The active web asset set provides 16px PNG states, not the legacy 45px filenames.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit 8efbe86699e9a0678f07d9ba895c3d2074d29f24)

62d2f6a3e8d9

Document and translate virtual_display_keep_while_paused

The pause hold's setting had no entry in configuration.md or the v2 UI's
base locale, so the config catalog contract test failed, and the v2
settings page didn't offer it. Add the docs entry, the English strings,
and a macOS-only switch next to the other virtual display settings,
appended so the Everyday page's field picks stay the same.

The v2 page also hid the paused virtual display timeout on macOS, which
the pause hold uses as its limit; show it there too and assert that in
the parity test.

(cherry picked from commit 955b265f13907c190ed719dd08b33239635d02d8)
(cherry picked from commit b9d9df309a82c30f44cfb28ed43f925d756b39d1)

c2ce06626c6b

fix(macos): retain local shutdown signal captures

Shine owns the shutdown atomic as a local rather than the source static, so native signal callbacks must retain their reference captures.

(cherry picked from commit c1573ec8010bde23b152245de56d4cdff3f8b21f)

794f5167c3cb

lowlatency fallback for AMF (+ VAAPI lowpower fallback) (#419)

* Update amf_d3d11.cpp - AMF lowlatency fallback

Add lowlatency fallback for amf encoder

* Update video.cpp - VAAPI lowpower fallback

implemented the VAAPI lowpower fallback

(cherry picked from commit e1dd3091d4009bffb6715f3b6d260adaaeb87080)
(cherry picked from commit 56e2d94b4dd551ddb811e829215e25fe98f051da)

8f0e47124cb2

test(sync): preserve encoder and pacing compatibility contracts

Keep the existing broadcast control adapter and precise adaptive pacing while applying optional explicit ceilings. Exercise atomic admission, fractional timing, bounded AMF retry and device-loss exclusions, hardware-gated temporal AQ and low-MTU packet caps. Preserve the existing C++ default scheduling priorities and document disabled-by-default options. Release the lifecycle gate before a rejected start can destroy its last broadcast reference.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit 3c9ac3b9c35772f6f2747691722e6322e56902aa)

e8c507a8fe3b

test(linux): cover managed audio capture sink precedence

Exercise production selection for managed and resumed sinks while preserving configured/default fallbacks. Broker metadata adaptation preserves directory-aware command routing and the isolated elevated path; only supported Sunshine metadata and Proton toggles cross the desktop-user boundary.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit 0b28712972e53f9bb9abf378868402a2cc18673a)

84a26ebccec2

fix(ci): restore nightly dependency and regression contracts

(cherry picked from commit 08b4f455306bfd9b7af65889f75884f0740cdc83)

f52e59200abf

fix(linux): make machine-host shutdown deadline unconditional

Exit the supervised machine host before touching logging on deadline expiry.
Keep phase diagnostics and the debug trap on the ordinary host path.
Exercise blocked logging, signal-driven expiry, ordinary expiry and completion
with the extracted production deadline and real thread compatibility wrapper.

Targeted reverse port; preserve Vibeshine shutdown phase tracking.
(cherry picked from commit 02ea43e9abe5b62014f238d07bafb05c26db4217)
(cherry picked from commit 65ff782d0d29e4f83d14e4dae8d1bff98102f258)

3cb0b0a85895

fix(display): fail closed when switching helper engines

Carry the missing timeout and wait-failure returns from the reviewed engine
restart change. Restrict fast-ping reuse and hard restart to a matching engine.
Preserve Vibeshine's private control pipe, expected-process checks and centralized
termination helper. Exercise the production branch with deterministic wait,
connection reset, cancellation and ping outcomes.

Targeted reverse port of the remaining engine-switch guards.
(cherry picked from commit 4944d915f34185b883cfbb263107c65d137ecf8e)
(cherry picked from commit d86f4b171d4de79395c83eb96b1a303a6c9a1ee7)

4e1033b5bdb5

fix(display): bound capture retries by the stream-start budget

Publish the current stream-start APPLY deadline and cap post-APPLY capture
retry sleeps by its remaining time. Keep full-policy applies and normal
capture retries unchanged, and preserve current recovery-instance tracking.
Exercise the extracted publication, readback and capture retry code with a
controlled clock, including expired budgets and successful capture.

Targeted reverse port; existing helper/IPC startup budgets remain in place.
(cherry picked from commit 88fbd834c5992bcc2325259704e5922e87a4d080)
(cherry picked from commit e2183dc1e6ca039a42e2d287f54a97d17162fc0c)

0d371f84dd66

test(windows): keep restored policy harnesses portable

Carry the quoted-header search path and Windows CRT guard from the source.
The disconnect fixture has already superseded the source's third hunk.

Adapt the restored checks to Apple's compiler: mark an optional permission
constant unused, select Windows production branches after host C++ headers,
and canonicalize temporary fixture roots before exercising the unchanged
Playnite symlink guard. Explicitly select both readiness branches on Windows.

(cherry picked from commit 8468c3da401eed0dc10641446fafe041116a6830)
(cherry picked from commit ae231be947a3e0f9a2f80a5350d97bee97d46e05)

1540db8edaa6

test(ci): refresh Linux production-boundary adapters

(cherry picked from commit baa3b2d064e9e9b34e11e5a85c59559004d54aac)

9c137c5fb3c7

test: align shutdown and budget fixtures with production

Use forced exit status, bounded elapsed time, vendor entry and absent cleanup
completion as the PyroWave deadline oracle. Exercise normal and probe-return
shutdown with blocked vendor release and a deliberately blocking logger seam;
never require a diagnostic emitted by the unsafe pre-exit logging path.

Guard the capture-budget fixture's Windows macro and compile its production
replay with both default and already-defined platform macros. Load host C++
headers before selecting the Windows branch on non-Windows test hosts.

Preserve the production unconditional shutdown deadline and newer Canary repairs.

(cherry picked from commit 183816054694978310d523d115003d43e957745a)

e7817b74d107

fix(macos): drop max_ref_frames=1 for h264_videotoolbox and enable PARALLEL_ENCODING (#5200)

(cherry picked from commit 3ee4144a8123da467cc771acc1d449e98668a8e2)
(cherry picked from commit 6c14287d38c679fadc1c61127d814fba5638b198)

eebb403be4a4

fix(linux/freebsd): truncate thread names to 15 characters (#5527)

(cherry picked from commit 9e1f089e1fc7dcbb3dd655e35157e2b633ad402a)
(cherry picked from commit 9bc9ec05e00f15012ec6f8320d472674a9a1e68f)

9535ea8a9853

fix(wayland): use the current wl_output mode (#5150)

Signed-off-by: Zach Denton <z@chdenton.com>
Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com>
(cherry picked from commit 3dfbfe0906cf5970f84b96a1451451eaa2ab1fab)
(cherry picked from commit e9f6f06e59b8242438ea1b332ecabfee9efb54ab)

53996615910a

fix(linux/publish): release the Avahi client when the poll loop stops (#5545)

(cherry picked from commit e5759171f1db97aa9f39bc2ce77746f0b1d53497)
(cherry picked from commit d2dbde03c2c3a70cd44e28a42a67da5fa287da4c)

afeb6d4d064f

feat(session): add SUNSHINE_CLIENT_NAME environment variable (#5465)

(cherry picked from commit f53f0f90c5c30482e5dfa27275a729eaa4287704)
(cherry picked from commit c51500fcb66f2b2fd72f42efcd71bb67ddfe2f73)

02cee569c7be

fix(nvapi,nvenc): Load ARM64 DLLs on RTX Spark (#5682)

(cherry picked from commit 48fca7ab644b857a409f67d8e43bc74de8705164)
(cherry picked from commit 8871e6023a2f9871d93a56bc296064bde56d353c)

de864ece9f59

fix(linux): keep optional client-name metadata from blocking app launches

(cherry picked from commit c2b05bae5ad060c9c1679bfcd02d4538b24a462b)

03dedc4d93aa

fix(macos): use session roles for launch display preparation

(cherry picked from commit c1005901224f0072a7529be48f75d8e0749d1db1)

cb330f5512cb

docs: align minimum FPS target descriptions with existing behavior

(cherry picked from commit 187bcdb95d2e20aab25569f9422ef22a8f4df5d1)

5fafebb16918

fix(display): keep exclusive stream layouts through monitor hotplug

Import Claude Code's fix/hotplug-layout-hold work for physical monitors briefly reconnecting during an exclusive virtual-display stream. Restore and persist the stream-only layout for the connected monitor set so Windows does not repeatedly reactivate another monitor.

Preserve user-enabled displays and peer virtual displays, defer to apply and restore operations, and bound repair attempts. Include policy coverage and the production-function regression harness.

(cherry picked from commit 7e38006ebcef4a5917cba7f8d4f575708a2425b3)

346cc4642b6e

fix(input): remove VHF mouse stalls and repair safe batching

Use the ordered VHF driver for the full virtual desktop and remove polling
that could stall or discard input. Correct overflow batching and schedule
Home release without blocking the shared input worker. Require the mapper
package; publishing its signed artifact and verified pins remains necessary.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit e3b52c43a0879d6ea5c86d9fe38e030b1bbe2026)

b610b42ef99a

build(vhf): pin the unsigned ordered-mouse beta.11 release

Accept the verified unsigned producer package without adding signing or
identity-allocation prerequisites. Pin its published archive, source and
DriverVer together while preserving final driver installation trust checks.

Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit d78ae061838141e4d175c0073473a0f8f40feae0)

2b038b616933

fix(migration): Preserve downstream input and display contracts

Keep ordered VHF mouse regressions compatible with Vibepollo's queued input
and recovery contracts, and expose the macOS paused-display timeout in both
settings views. Correct portable test seams and retain shutdown/startup checks.

Co-authored-by: Codex <noreply@openai.com>

23843748f625

test(ci): exercise current driver publisher trust guard

Execute the actual publisher conditional across parent-install, daily unsigned
and certificate-present cases. Verify certificate and signer arguments rather
than requiring the old conditional spelling; retain all security safeguards.

e261231fc929

test(ci): preserve driver interop assembly initialization

bce817d4e334

test(display): keep layout observation fixtures alive

Don't miss a new Vibepollo release

NewReleases is sending notifications on new releases.