github Nonary/vibeshine 2.2.0
Vibeshine 2.2.0 (Nightly)

pre-releaseone hour ago

This is a nightly release of Vibeshine 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: 4de692efe277

Since the preceding successfully published nightly 2.0.5-nightly.d20261106.062d0ac0291b: compare exact sources.

48973f0105de

fix(installer): Scope path checks and explain install rejections

Keep drive-root metadata informational and inspect package/action inputs
instead of unrelated user files. Preserve critical checks and log the
actual rejected path, permissions and API evidence.

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

04ed57964cff

docs(release): Describe the 2.0.5 installer fixes

Explain the narrower Windows path checks and improved failure evidence
so users know which installation problems this release addresses.

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

e65887513067

test(installer): Match the packaged preflight reflection signature

The preview now accepts an optional short-filename setting. Extract the
object-array assignment and exercise all four reflection arguments so the
release check reaches the production preview instead of failing in its fixture.

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

ea96872ec229

merge(canary): Replace scoped install checks with repairs for 2.0.5

Supersede the unpublished scoped-check approach, which still blocked installs
over permissions, with the repair design from canary. Keep the SHORTFILENAMES
preflight handling and the updated preflight reflection test. Drop the scoped
guard's tests and validation document, which described the replaced code, and
rewrite the 2.0.5 notes to match what ships.

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

3767aedb0dad

docs(release): Describe the 2.0.6 installer fixes

2.0.5 was tagged but never released, and this replaces its installer changes,
so its notes move to 2.0.6 instead of appearing in the new release.

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

e9c02f666f65

test(installer): Register the restored product in the per-user rollback case

The case cleared native registration without letting the restore create it,
so a correct restore could never be verified and the check always failed.

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

9c02f262a799

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.

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

2e7efbc4818f

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.

2d072b75b58e

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.

fcde508c8997

fix(release): persist build channel and protect numeric packages

270fd4f2e2d8

feat(release): allocate immutable numeric versions

65294174e367

fix(release): support local-only nightly validation tags

f04d45da1383

fix(release): verify validation tags and dispatched artifacts

b623dd24d6ac

fix(release): close numeric publication gaps

195d75864626

fix(release): preserve notes framing and draft identity

12c0eb1fa7b0

test(release): align Windows validation workflow contracts

80251fe8b5f0

fix(validation): resolve numeric nightly stable anchor

ba47380d06bd

test(validation): preserve legacy qualification fallback

4a3d938e8cab

test(validation): cover numeric and legacy nightly qualification

2962c47e38f9

merge(release): reconcile stable 2.0.6 with Canary

7a5bb9cabc02

fix(gamepad): Stop DualSense rumble when emulation is disabled (#708)

03dbc3f15437

fix(audio): Honor Steam capture endpoint mute across buffered audio

6f4549ff386f

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>

260d3e59bac5

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>

6769dc5719ab

merge(release): Bring numeric nightly versioning to Canary

8acd02a2f490

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>

a67ec4ba3949

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>

d61083430b8d

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>

4de692efe277

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>

Don't miss a new vibeshine release

NewReleases is sending notifications on new releases.