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.
Source: 8f834eaba38d
Since the preceding successfully published nightly Commit log
2.0.2-daily.d20261014.1: compare exact sources.
Fix Linux package transaction shutdown and recovery
Quiesce managed streams before replacement, retain verified resource ownership gates, and recover transaction-owned admission fences safely across failure, retry and removal. Add qualified 2.0.x installer migrations and controlled shell/process regression coverage.
Implementation: Codex (GPT-6). Independent lifecycle and recovery review plus Claude Code Opus 5.5 xhigh review recorded separately.
(cherry picked from commit da86c911b8c7f1e81f5c94ff899112527706d492)
Preserve administrator hooks beside package shutdown guard
Query effective Pacman HookDir values before replacement or removal and carry each directory as a quoted argument. Retain administrator precedence, refuse unavailable or invalid queries before a transaction, and cover all three installer transaction entrypoints against official Pacman merge semantics.
Implementation: Codex (GPT-6). Source-first correction with independent shell audit.
(cherry picked from commit e60bc5bed8e98c2b356ddb004e4c77196e88028e)
Refuse administrator collisions with the required shutdown guard
An administrator dummy or same-name hook can disable an AbortOnFail guard, while ALPM ignores outgoing removal scriptlet failures. Preserve that policy and the replacement safety gate by refusing exact-name conflicts before transaction or runtime fencing. Check the private guard and cover default/configured directories, ordinary/qualified names, files and disabling or broken symlinks.
Implementation: Codex (GPT-6). Correction informed by independent shell audit of official Pacman source.
(cherry picked from commit bb1f5de7f79889bb10659f2e26223f96721e39f6)
Reject relative Pacman hook paths before package shutdown
Pacman-conf preserves relative HookDir values, but the package client runs from root while the installer may check from another directory. Require absolute effective paths so administrator collisions cannot evade the required AbortOnFail guard. Exercise native private config parsing and refusal through all three installer transaction routes.
Implementation: Codex (GPT-6). Corrects the independent final recovery reviewer finding.
(cherry picked from commit 5f1688091a39bb053bfbf220b3531d1ffdfb63ab)
Recover interrupted Linux package shutdown without overriding masks
Preserve verified idle administrator masks and defer startup after complete resource proof. Reconcile partially adopted legacy barriers across missing fences, rotate native retry ownership only after full unwind, and restore every owned barrier after aborted removal. Keep changed identities and uncertain resources blocked. Add direct production-hook regressions for the confirmed Claude and independent recovery findings.
Implementation: Codex (GPT-6). Exact Claude Code Opus 5.5 xhigh final re-review recorded separately.
(cherry picked from commit a238d9bfd553135c03054c95ccadd5a56b9fecaa)
Preserve interrupted legacy fence authority during rollback
An in-place fence edit during partial adoption must not be accepted or removed by rollback. Recheck the pending exact legacy contract before release and retain the authority record until verified reconciliation completes. Cover same-inode comments/extra newlines, marker-only initialization, and safe direct recovery.
Implementation: Codex (GPT-6). Corrects independent final recovery review.
(cherry picked from commit 301b1cdfeb41ac09b3af35858d59f95baf7d6ba8)
Recheck legacy barrier identity after resource proof
Resource inspection and ownership publication leave time for administrator fence or mask changes. Recheck exact fence bytes after proof, compare original identities as each record is published, and verify the fence again before clearing pending authority. Refuse a new fence appearing during missing-fence reconciliation. Add proof-time and publication-time change regressions.
Implementation: Codex (GPT-6). Corrects independent paired final recovery review.
(cherry picked from commit c5fb25ca022da458063d48715cca3e10bbac657f)
Ship the required installed Arch shutdown guard in both products
Vibeshine lacked Vibepollo's default AbortOnFail pretransaction guard. Install the helper, function library and hook so future direct Pacman upgrades/removals stop before replacement on unsafe quiescence. Preserve the incoming installer boundary for older packages without a working guard. Add shared CMake/ALPM contract and private complete-library boundary checks.
Implementation: Codex (GPT-6). Existing Vibepollo native guard remains equivalent; shared regression coverage migrates one-to-one.
(cherry picked from commit e145bf618aad8923fe4f6ee1bb965053975c0778)
Exclude Arch-only shutdown guards from RPM staging
Remove the three ALPM-only artifacts from COPR staging and verify the cleanup contract in both products.
Implementation: Codex (GPT-6).
(cherry picked from commit fcdfebd74e265e94aca959b72b77c1fb97abbe86)
Preserve masks added during interrupted package transactions
Refresh external-mask baselines without claiming them. Publish new mask inodes exclusively from private staging with recorded ownership intent, and verify their identities after the manager call. Recover interrupted staging under the transaction lock.
Cover all standalone hook contexts and real retry/postinstall paths, publication collisions, changed owners, and SIGKILL cut points.
Implementation: Codex (GPT-6).
(cherry picked from commit 460bacceae4090545534b0cdc4ae0a093d2953b1)
fix(linux): reconcile external masks during idle package recovery
An idle Arch retry can bypass mask creation after a failed transaction. Preserve an external runtime mask added after the saved snapshot while completing cleanup of package-owned barriers, using the held transaction lock, a fresh complete shutdown proof, and ownership and inode rechecks. Report deferred activation when recovery cannot finish.
Exercise actual idle retry and full postinstall callers, repeated retries, atomic publication failures and ownership/identity races in private fixtures.
Implementation: Codex (GPT-6).
(cherry picked from commit d97a3baa0da521f314d96667eab6c4e5892066d4)
docs(readme): describe 2.0.x features and current AI context
Add Remote Monitor/Input, VRR capture, PyroWave, the Windows virtual
gamepad driver, Steam/Lutris library sync, eight virtual display
clients, and Linux beta capabilities. Refresh the AI sections with
current models and sourced industry examples.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs: install Linux from master instead of retired vibe-test
Point the README, getting started, and Linux install guide at the
installer on master, and describe master as the release-candidate
source in the maintainer release guide.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix(playnite): authenticate the SYSTEM host without elevation
Normal-user Playnite cannot inspect the service host process image.
Adopt the reviewed connection-token fallback only for host access denial,
retain PID, role, executable and ACL checks, and restrict host pipe tokens
to identification. Publish connector 0.5.2 so existing copies can update.
Addresses Nonary/Vibepollo#608
Addresses Nonary/Vibepollo#618
Addresses Nonary/vibeshine#311
(cherry picked from commit 3ed0834514b8e7cdc55e1e814dbb4578cdd875e3)
Generated with [Codex](https://openai.com/codex/)
Model: GPT-6.1-Sol X-High
(cherry picked from commit 3014409eb1039f021f96d3fb7e956a21df1175cc)
fix(installer): preserve large environments during interop builds
Windows PowerShell CodeDOM rejects otherwise valid large environments.
Invoke the Framework compiler directly for both driver interop wrappers,
while preserving the environment, verification policy and visible errors.
Exercise the original limit and production wrappers without installing drivers.
Addresses Nonary/Vibepollo#610
Generated with [Codex](https://openai.com/codex/)
Model: GPT-6.1-Sol X-High
(cherry picked from commit 700ec813223b4cd42ece839e09bd4330346f5d49)
fix(ui): keep historical stats within the mobile viewport
The fixed 680-pixel drawer pushed session details off the left edge of
phone screens. Cap its width at the viewport while retaining the desktop
width so metadata, charts, and actions remain reachable.
Refs: Nonary/Vibepollo#612
Generated with [Codex](https://openai.com/codex/)
Model: GPT 6.1-Sol X-High
(cherry picked from commit 37cde2d3e87941feb47f4c15fe7777ee8927ccb5)
(cherry picked from commit dbee6a7ba8c25a95448d599f086a17bbdbafd5da)
fix(steam): discover Windows libraries from service sessions
LocalSystem could not see the desktop user's SteamPath, leaving non-default
installs undiscovered. Resolve the selected user hive and both machine registry
views, retain folder fallbacks, and scope library/artwork reads to that user
while preserving protected service cache writes and nested failure handling.
Addresses Nonary/vibeshine#314
Generated with [Codex](https://openai.com/codex/)
Model: GPT 6.1-Sol X-High
(cherry picked from commit 451aee7735c5939f497bc14aa34d33bc3c2bb0cd)
(cherry picked from commit 806ad929fde99d2a8ab6e9df59cf9b14a9800853)
fix(tray): cancel startup waits during Windows shutdown
Stopping before Explorer appeared left the tray waiting for a shell while
the shutdown watchdog forced a crash. Cancel startup waits, serialize owned
thread joins, and cover early main returns before process resources disappear.
Exercise missing/delayed desktops, initialization races and repeated teardown.
Addresses Nonary/Vibepollo#614 and Nonary/Vibepollo#615
Generated with [Codex](https://openai.com/codex/)
Model: GPT 6.1-Sol X-High
(cherry picked from commit fc37d8b9ccd771dbe3c3606c9d7cbb8f2be6ab22)
(cherry picked from commit 3eae3c0b5d659cb44f4ccd8d59f425a478d8195f)
fix(kms): refresh display maps before capture initialization
Encoder probes could consume empty or stale connector maps before an
output query. Refresh maps for the requested device before capture starts
and serialize enumeration with initialization so concurrent probes cannot
replace shared routing state. Cover factory routing and transaction locking
without opening GPUs or changing the live display.
Addresses Nonary/Vibepollo#611
Generated with [Codex](https://openai.com/codex/)
Model: GPT-6.1-Sol X-High
(cherry picked from commit b82e5f1d005ad643f2eb7a03d09769872acce78d)
fix(capture): Retry transient output observation failures
Failed DXGI observations immediately latched a capture restart even when the
output recovered unchanged. Retry null observations in a bounded window while
preserving confirmed display changes and capture backend errors. Keep retries
active under event subscription and report recovery or exhausted observations.
Replay the production worker for transient, repeated, initial and persistent
faults, including the populated capability-change boundary. This fixes the
conditional capture regression; #301's reported periodic cause remains unproven.
Generated with [Codex](https://openai.com/codex/)
Model: GPT-6.1 Sol X-High
(cherry picked from commit 145d5e27ea3556d9b9fb96f1ae059d25b75f04be)
(cherry picked from commit c61ffc72e37579823ffe25b92f58d8e75948c61d)
fix(display): preserve owned inactive displays during recovery
Recovery replaced responsive control transports and treated missing Windows
mode data as unsupported, unnecessarily cycling securely owned displays.
Preserve healthy transport provenance and consult the live exact preferred
descriptor when enumeration is unavailable. Keep ownership, adapter and
explicit mode checks strict; cover both recovery paths with portable tests.
Addresses recovery defects in Nonary/Vibepollo#617; the initiating fullscreen
deactivation remains unproven.
Generated with [Codex](https://openai.com/codex/)
Model: GPT-6.1 Sol X-High
(cherry picked from commit 8dd058b005d171b608b83c4594681d745ac54350)
(cherry picked from commit 2d74f8057d70dcdbe74e25196868bc39c7f5f941)
fix(input): retain touch for automatic PlayStation profiles
Automatic VHF can still select DualSense for a PlayStation client with
both selection heuristics off. Keep controller-touch negotiation enabled
for that reachable profile while preserving fixed touchless profiles and
composite overrides. Cover the selection and capability contract in tests.
Generated with [Codex](https://openai.com/codex/)
Model: GPT-6.1 Sol X-High
(cherry picked from commit a3434b0a708bf5e7e5f78dae8247b5053f8c6049)
(cherry picked from commit c841ff19e4c7cb1ec3deb2b5a56af799d5103530)
test(installer): isolate the CodeDOM environment size control
The Windows regression combined oversized environment and Unicode scratch
paths, and failed with a path error before proving the expected size limit.
Establish a working baseline and vary environment size first; then require
both production compilers to handle the full Unicode fixture without
altering the environment or hiding compiler failures.
Related: Nonary/Vibepollo#610
Generated with [Codex](https://openai.com/codex/)
Model: GPT-6.1-Sol X-High
(cherry picked from commit 5baa8089c5231b8dbcdea2feb1ab860170d67061)
fix(amf): retain fresh captures when older output wins submission
An older completion can race the output drain and discard the latest
unaccepted capture. Deliver that output, then retry the retained capture
once with its original pixels, frame ID and timestamps. Preserve bounded
backpressure and recovery, with extracted production-code replay coverage.
Ported from Nonary/Vibepollo commit
886ef840d82003e3225242ed241c6ca64b5e5832. Preserve Vibeshine's two-timestamp
API and register only the new AMF regression; this addresses the demonstrated
submission race, not the full reported loss symptom.
Related: Nonary/Vibepollo#613
(cherry picked from commit 886ef840d82003e3225242ed241c6ca64b5e5832)
Vibepollo adaptation: retain the downstream three-timestamp API and
its original reviewed replay fixture.
Generated with [Codex](https://openai.com/codex/)
Model: GPT-6.1-Sol X-High
(cherry picked from commit 14bd5bad337d014922c151b2722973fc463a4deb)
test(installer): load package constants after helper declarations
The inline interop helper now precedes the package constants. The nightly
MSI fixture stopped at that helper and compared a valid manifest with an
empty expected list. Load all direct top-level assignments while keeping
installer entry points inert and all package/security checks intact.
Generated with [Codex](https://openai.com/codex/)
Model: GPT 6.1-Sol High
(cherry picked from commit 8b29dbacf790cf1cbbd4d8c5eb845efa3b0235e0)
test(linux): make wedged app polling independent of scheduler delays
A one-second wall-clock budget can expire before the first mocked stop,
incorrectly reporting a repeated request. Control time only in this fixture
and require one stop, three polling passes and deadline rejection. Preserve
the separate real command-timeout checks and propagate subshell failures.
Generated with [Codex](https://openai.com/codex/)
Model: GPT 6.1-Sol High
(cherry picked from commit fa218c69d881322167beaacb88ef3c1fd38beabd)