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.
Source: bf8c546144f0
Since the preceding successfully published nightly Commit log
2.0.2-nightly.d20261029.4b5d3bc63028: compare exact sources.
ci: run common lint only on manual dispatch
ci(nightly): Align master workflows with canary release
Scheduled workflows start from master while the confirmed nightly source is canary. Align the reviewed reusable Windows and CI workflow definitions so the drift guard can qualify canary with the tested portable and MSI gates.
Keep feature source and tests on canary; retain the existing release identity, signing and publication safeguards.
Co-authored-by: Codex <noreply@openai.com>
fix(installer): Keep master MSI validation contract complete
The reusable Windows workflow now runs the reviewed MSI contract test on master tag builds. Bring its matching WiX validation guard and template to master so the test checks real package behavior and validation installers cannot replace an existing installation.
Keep the normal nightly package path and canary workflow parity unchanged.
Co-authored-by: Codex <noreply@openai.com>
ci(nightly): Align scheduled controls with audited Canary packaging
Scheduled runs resolve Canary from master, so both workflow trees must agree.
Copy only the reviewed release controls and regression checks; keep application
source on its existing branch and preserve master's beta.9 producer identity.
Retain exact-source qualification, scoped signing and publication safeguards.
Co-authored-by: Codex <noreply@openai.com>
fix(display): honor Remote Monitor HDR requests
fix(display): protect active monitor color state on retries
fix(display): verify color and retire abandoned monitor launches
fix(rtsp): retry abandoned monitor reconciliation
fix(display): verify effective Remote Monitor state
fix(display): compose using observed shared geometry
fix(display): retry deferred mode until geometry is observed
fix(display): preserve monitor retries after startup failure
Merge canary into Remote Monitor HDR repair
fix(display): Confirm partial snapshots in final recovery validation
fix(web-legacy): preserve Playnite fullscreen metadata on save
Carry the selected app's existing playnite-fullscreen value into the legacy
editor's replacement payload. Keep ordinary and new apps unchanged.
Cover helper preservation and actual modal hydration/save-handler wiring,
including reusing the modal for ordinary and new apps.
Adapted from Jonathan Malmaud's already merged Nonary/Vibepollo PR #690:
https://github.com/Nonary/Vibepollo/pull/690
Original head: b57fd0a1ac225ae982e94d2de03aa9f605573c0e
Original squash: 1f82fe71297c1830e92b36b42b2c3274db851651
Co-authored-by: Jonathan Malmaud <malmaud@gmail.com>
Merge pull request #371 from Nonary/dot/issue-672-hdr
fix(display): honor Remote Monitor HDR requests on Windows
Merge pull request #381 from Nonary/fix/issue653-restore-stop-20261029
fix(display): Finish recovery for partial snapshots
Merge pull request #382 from Nonary/fix/legacy-playnite-fullscreen-690
fix(web-legacy): preserve Playnite fullscreen metadata on save
test(display): Automate production recovery wrapper regression
fix(installer): Validate install folder after elevation
Existing installations can contain protected session history directories, causing the safety scan to fail before UAC. Run the full install folder checks in the elevated installer before making changes.
Generated with [Codex](https://openai.com/codex/)
Model: GPT 6.1-Terra High
fix(installer): Honor existing gamepad signer trust
Local gamepad packages can use a different signer that is already trusted by Windows. Allow verified packages with existing trust in both machine stores while preventing alternate signers from adding new trust.
Generated with [Codex](https://openai.com/codex/)
Model: GPT 6.1-Terra High
feat(input): Default to VHF-preferred automatic keyboard and mouse
Prefer a compatible VHF driver for Windows keyboard and mouse input while retaining explicit SendInput and safe fallback when the driver is unavailable. Preserve press/release ownership, native repeat, wheel detents, and absolute drag ordering to avoid stuck or duplicated input.
Keep local driver packaging isolated from pinned release assets and cover routing, recovery, and Windows key mapping with regression checks.
Generated with [Codex](https://openai.com/codex/)
Model: GPT 6.1-Sol X-High
build(driver): Pin the released VHF keyboard and mouse package
Use the verified Nonary beta.10 driver release so production installers include VHF keyboard and mouse support. Align the archive hash, source revision, runtime installer checks, and audited CI identity with driver 0.1.0.92.
Generated with [Codex](https://openai.com/codex/)
Model: GPT 6.1-Sol X-High
Merge pull request #383 from Nonary/test/issue653-recovery-wrapper-automation
test(display): Automate production recovery wrapper regression
test(input): Keep feedback fixtures compatible with VHF input
Model keyboard and mouse ownership when extracting production controller retirement, and cover keeping its shared handle alive. Make the same queue checks runnable on Windows while retaining Linux sanitizer coverage.
Generated with [Codex](https://openai.com/codex/)
Model: GPT 6.1-Sol X-High
fix(amf): keep the driver's slice count when it refuses the client's (#375)
Native AMF set the client's H.264 and HEVC slices per frame through
set_verified_int64, so a driver that refused the count, or applied another
one, failed encoder setup and the stream never started. Moonlight for
Nintendo Switch asks for four slices per frame.
The count is now a request: config_policy::request_client_slices sends it
when the client asks for more than one slice, and the encoder logs a warning
with the requested and the driver's count and keeps streaming with the
driver's own. An accepted count behaves as before. AV1 tiles are unchanged.
test_native_amf_review.cpp covers the policy (no request at one slice, a
refused, rounded or unreadable count is reported, an accepted one is
applied), and test_amf_client_slices.py pins that the encoder uses it and
no longer fails setup on a refused count.
Signed-off-by: Ramazan Kara <github@r-kara.de>
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
fix(audio): Keep continuous loopback audio on one output clock
Use WASAPI packet timestamps and elapsed time to pace silence without
replaying delayed capture packets. Bound buffered time and stall recovery,
correct device-period units, and retain paced silence on uncertain timestamps.
Cover the production buffer and capture adapter in release-mode tests.
Co-authored-by: Codex <noreply@openai.com>
fix(packaging): Stage required inputs for clean component builds
Run TrueHDR staging in the application component so component installs cannot
skip its downloader. Create the Flatpak build directory before copying generated
dependencies, and exercise complete and component installs with failed inputs.
Co-authored-by: Codex <noreply@openai.com>
fix(appimage): Keep the portable launcher unprivileged
Direct native installation and removal to the system package instead of
installing obsolete user units or granting capabilities to the public binary.
Preserve quoted launch arguments and isolate portable state with XDG_CONFIG_HOME.
Exercise legacy options and portable execution without touching host services.
Co-authored-by: Codex <noreply@openai.com>
fix(ui): Keep Linux display overrides visible in V1
Display automation could hide the legacy override editor on Linux, leaving no way to configure resolution substitutions in the guided setup. Keep the editor visible, explain when automation is disabled, and select the rule list that matches the active display policy.
Co-authored-by: Codex <noreply@openai.com>
fix(windows): Keep display-helper pipe authority in the host
Windows cannot inherit handles across sessions. Keep the preclaimed pipe server in the host and let the interactive helper connect with data-only access granted to its actual token SID. Authenticate both process identities before protocol traffic, preserve endpoint generations and restore retries, and restrict helper process and thread access independently of inheritance.
Exercise the production accept loop and endpoint parser with wrong peers, cancellation, deadlines, and endpoint rotation. Windows service-session and pipe ACL runtime qualification remain required.
Co-authored-by: Codex <noreply@openai.com>
fix(installer): Validate native MSI roots before privileged actions
Direct MSI upgrades must validate existing product roots as well as the
incoming directory before executing installed helpers. Embed a native guard
that rejects writable or redirected trees and resolves legacy roots through
the exact installed product's directory component.
Block early registry-command elevation and reject per-user replacement
registrations before recovery or uninstall dispatch. Preserve validated
machine replacements through the bootstrapper.
Co-authored-by: Codex <noreply@openai.com>
Merge concurrent Canary Linux editor fix
Preserve the published Canary update alongside the reviewed audio, packaging, IPC and installer repairs for the paired nightly migration.
Co-authored-by: Codex <noreply@openai.com>
fix(homebrew): Use the installed product executable on Linux
Linux builds expose the fork product name, while the Homebrew macOS target remains sunshine. Use the platform-specific installed name consistently for formula tests, service launch and signing.
Co-authored-by: Codex <noreply@openai.com>
test: Keep input and packaging fixtures current
Exercise the current VHF and pipe access adapters without changing the coordinate and gamepad regressions they protect. Pin the SteamOS fixture version so exported source checks reach the packaging policy rather than failing version discovery.
Co-authored-by: Codex <noreply@openai.com>
test(rtsp): Restore terminal composition fixture
Compose current monitor retirement and reconciliation paths so Canary’s terminal lifecycle regression can compile and keep exercising production behavior. Cover published and abandoned monitor handling at the controlled transport boundary.
Co-authored-by: Codex <noreply@openai.com>
ci(release): Reconcile Canary with primary release controls
Preserve the complete Canary history and primary-only safeguards while preparing the 2.0.2 release. Keep scheduled nightly dispatch on the default branch and execute the qualified build on Canary with separate concurrency groups.
Co-authored-by: Codex <noreply@openai.com>
docs(release): Summarize Vibeshine 2.0.2 changes
Describe the user-facing changes and fixes since 2.0.1 so the release artifacts have notes for the exact source tag. Qualify optional features by their client, driver, and runtime requirements.
Co-authored-by: Codex <noreply@openai.com>
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>
fix(windows): Restore display-helper pipe access
Grant the read-attributes permission Windows requires for helper pipe
connections without granting pipe creation or ACL control. Keep the grant
and client request on one tested mask, matching the live correction
reported in PR #389 for issue #387.
Co-authored-by: Codex <noreply@openai.com>
fix(windows): Restore display-helper pipe access
Grant the read-attributes permission Windows requires for helper pipe
connections without granting pipe creation or ACL control. Keep the grant
and client request on one tested mask, matching the live correction
reported in PR #389 for issue #387.
Co-authored-by: Codex <noreply@openai.com>
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>
docs(release): Add 2.0.3 stable notes
Describe the Windows virtual display access fix for the stable release.
Co-authored-by: Codex <noreply@openai.com>
fix(installer): validate volume root ACLs and report guard failures
fix(installer): Validate replacements before removing the host
The bootstrapper could remove a working installation before the incoming
MSI rejected its destination. Run the package's native preview before any
pre-uninstall, keep path rules aligned, and stop without removing the host
when validation fails. Cover failures and the actual packaged MSI preview.
Co-authored-by: Codex <noreply@openai.com>
merge(canary): Integrate installer upgrade recovery for 2.0.4
docs(release): Add 2.0.4 installer hotfix notes
Document the Windows drive-root permission fix and the pre-removal
validation that preserves the existing host when a replacement is rejected.
Co-authored-by: Codex <noreply@openai.com>
fix(installer): Warn on uncertain checks and explain blocking failures
Treat incomplete compatibility inspections as warnings while retaining
blocks for observed unsafe paths, permissions, and payloads. Show warnings
on successful completion and include the affected path, failing check, and
Windows error in the UI and logs instead of generic troubleshooting advice.
Co-authored-by: Codex <noreply@openai.com>
fix(installer): Unwrap strings in packaged MSI validation
PowerShell can retain PSObject wrappers in an untyped argument array,
so reflection rejected the test inputs before the native preview ran.
Pass a typed string array and exercise wrapped inputs before compiling.
Co-authored-by: Codex <noreply@openai.com>