github Nonary/Vibepollo 2.0.2-nightly.d20261031.r.1.b739553a9653

pre-release3 hours 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: b739553a9653

Since the preceding successfully published nightly 2.0.2-nightly.d20261030.r.1.45109fb4fb38: compare exact sources.

b739553a9653

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>

Don't miss a new Vibepollo release

NewReleases is sending notifications on new releases.