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: 4144ad2969a3
Since the preceding successfully published nightly Commit log
2.0.2-nightly.d20261106.r.1.37d6742f42f4: compare exact sources.
revert(installer): Restore the 2.0.1 stable install flow
Repeated installer failures need a longer Canary test period. Restore the 2.0.1 Windows bootstrapper and MSI actions for 2.0.6, removing the newer guard and its test/build wiring from master. Keep application and driver updates, migration data preservation, and nightly security work intact.
Use Vibepollo's own 2.0.1 installer baseline to preserve Apollo migration, service and reinstall behavior; retain hotkey cleanup and downstream tests.
Co-authored-by: Codex <noreply@openai.com>
(cherry picked from commit 9c02f262a799acd2733c203cbb7c4e59a55dd8fc)
(cherry picked from commit 5e6ed8594184212d429bb093d7fd47904c9a6fa6)
fix(nightly): anchor version to reconciled published stable
Derive the nightly base from the highest published stable release and require its commit in the source before assigning a newer upgrade version. Recheck the anchor at publication and rebuild unchanged source if the stable base advances.
Cover release filtering, version ordering, divergent branches and publication races.
(cherry picked from commit 2e7efbc4818f53fba56c925cf7cd0979b2e575e3)
fix(nightly): preserve existing source eligibility checks
Keep unchanged-source and migration checks unchanged while anchoring the version to the latest published stable. Align the two hosts' version policy.
(cherry picked from commit 2d072b75b58ea4530ad3e2aa3705d588ed256d48)
fix(release): persist build channel and protect numeric packages
(cherry picked from commit fcde508c8997db17304ed68db7aedc7da856e765)
feat(release): allocate immutable numeric versions
(cherry picked from commit 270fd4f2e2d8d0de53e8fdcd905ca263f3fb5f8a)
fix(release): support local-only nightly validation tags
(cherry picked from commit 65294174e3678c6ba50beb612b181b1f6d7c0486)
fix(release): verify validation tags and dispatched artifacts
(cherry picked from commit f04d45da138347c8bee86ad7257fbc1563ff944d)
fix(release): close numeric publication gaps
(cherry picked from commit b623dd24d6ac7fa260276a4fa26e12750dfcf888)
fix(release): preserve notes framing and draft identity
(cherry picked from commit 195d758646265d6109742e79684a76f9bd53f75d)
test(release): align Windows validation workflow contracts
(cherry picked from commit 12c0eb1fa7b0aec746bf5bd1d0fba94a4975c869)
fix(validation): resolve numeric nightly stable anchor
(cherry picked from commit 80251fe8b5f07508902a0769a7535e94c379081b)
test(validation): preserve legacy qualification fallback
(cherry picked from commit ba47380d06bd4bda312c4e51f8c247404c082893)
test(validation): cover numeric and legacy nightly qualification
(cherry picked from commit 4a3d938e8caba1e8184842937d9b7e52bf9a8751)
fix(gamepad): Stop DualSense rumble when emulation is disabled (#708)
(cherry picked from commit 7a5bb9cabc02b8baf177ad135489b35a8da1ce7e)
fix(audio): Honor Steam capture endpoint mute across buffered audio
(cherry picked from commit 03dbc3f1543714fa7b33573d3e994e1d3017cadd)
fix(display): Move a virtual display out of a Duplicate group before applying
Windows can activate the virtual display at the same origin as a Duplicate
pair of physical monitors. libdisplaydevice groups displays by origin and
rejects any group larger than two, including the layout it starts from, so
every APPLY failed and capture waited for a display that never appeared.
Before applying, move the configured display to the right edge of the
desktop when it is the only display on its adapter in an oversized group.
The user's own displays never move. Both helper engines do this.
Refs: Nonary/Vibepollo#702
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 6f4549ff386f8324b75b8e2c6a886129a31eaa19)
feat(linux): Run commands by their elevated setting, not an approval list
Linux machine-service hosts required `sudo vibeshine authorize-commands`
after every command change, and the approval list missed sources such as
global prep commands, so saved commands failed with exit 126. Windows has
no such step: the Web UI login is the trust boundary and the elevated flag
alone decides privilege.
Match that on Linux:
- The session broker drops the /etc/vibeshine/session-commands check.
Requests now carry <working-directory> <command>; an empty directory
still resolves from the command's executable.
- New app-elevated verb: "Run elevated" commands run as root in a
transient system unit (no app supervisor, which drops all capabilities),
with SUDO_USER/SUDO_UID/SUDO_GID set. Other commands still run as the
desktop user through the user manager.
- Upgrades delete the retired allowlist; authorize-commands only prints
that approval is no longer needed.
- Both Web UIs show the elevated toggle for Linux hosts.
- session-exec logs failed broker requests to the journal.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 260d3e59bac571755add2eb509d16e42331ab664)
fix(nightly): Number nightlies above every published release
The numeric allocator refused to run unless the source contained the latest
stable, the highest published version and the previous release source. Canary
does not contain stable 2.0.6, so tonight's nightly would have failed instead
of numbering above it, and the build-time CMake gate had the same dependency.
Take the base from the highest version any published release carries (stable,
prerelease or nightly, with legacy 2.0.5-nightly.* counting as 2.0.5) and keep
the feat/fix rules unchanged. Ancestry now only produces a warning, since the
feat/fix count already excludes commits from every published release source.
A number claimed by another tag, such as a reservation left by a failed build,
is skipped by taking the next patch instead of failing. A retry reuses its own
reservation only while it still outranks everything published, and the
pre-publication re-resolve still stops a nightly that a newer release overtook.
The stable anchor is now informational: publication, Windows versioninfo and
validate-windows no longer fail when the source lacks the latest stable.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 8acd02a2f490de39d4e6322091b2c6ebc559ab55)
test(nightly): Keep allocator test warnings out of run annotations
The allocator prints ::warning:: lines, and the nightly workflow runs its tests
in the same job as the real resolve. Fixture warnings such as "canary does not
contain stable 2.0.6" surfaced as run annotations. Capture them in the tests
and assert on them instead.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit a67ec4ba39492260038e8883febc8d9207fff7be)
fix(nightly): Verify the reservation tag without MSYS2 brace expansion
Windows CI generates versioninfo with MSYS2 git launched from native
cmake.exe, and the MSYS2 runtime brace-expands unquoted arguments.
"2.2.0^{commit}" reached git as "2.2.0^commit", so the reservation check
always failed and every numeric nightly build stopped with "requires its
annotated reservation tag to peel exactly to HEAD". Legacy -nightly builds
never used that syntax, which is why they kept working.
Peel the tag with "rev-list -n 1 refs/tags/<version>" instead, and make the
versioninfo test reject ^{...} peel syntax in the generator.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit d61083430b8d160ee1fa85870dc109863e048d89)
fix(audio): Mark the endpoint mute callback final for the Windows build
The Windows MinGW build treats -Wdelete-non-virtual-dtor as an error. The COM
callback's Release() does "delete this" on a polymorphic type with a
non-virtual destructor, so the Windows build failed in audio.cpp. Mark the
class final so the delete cannot skip a derived destructor.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 4de692efe2770c2a9a8f3310aed14456a707dbbd)
fix(migration): Preserve Vibepollo nightly and launch contracts
Adapt numeric release allocation, tag annotations and CI dispatch to Vibepollo while retaining independent Canary eligibility and exact dispatched-source checks. Keep legacy nightly update compatibility and restore downstream shutdown/profile regressions with coverage for launch metadata and elevated arity.
Reconcile the installer directly to the downstream 2.0.6 result instead of replaying superseded scoped-check and repair history. Skip source merge commits; their retained release behavior is represented by the individual picks and the reconciled installer.
Co-authored-by: Codex <noreply@openai.com>