Releases: nicholasraimbault/silvervine
Release list
2.0.0 - 2026-07-16
Release Notes
Added
- Added automatic, non-destructive Neon V2 → Silvervine migration for user
config, cache, and log directories before logging starts. - Added 2.x hook compatibility aliases: hooks receive both
SILVERVINE_*and
deprecated matchingNEON_*context variables without overwriting explicit
values.
Changed
- Renamed the product, repository, crate, library, binary, paths, user daemon,
and current documentation from Neon to Silvervine forv2.0.0. - Silvervine daemon migration starts the replacement registration before
retiring the retained Neon V2 registration (neon.serviceor
com.neon.tray), with rollback to the prior data and running state if
retirement fails. - Retired the Neon V1 Homebrew/AUR/deb sources. Their legacy migration paths
and package-manager guidance remain supported; no Silvervine Homebrew tap is
created.
Fixed
- Fixed macOS daemon IPC connections closing before clients could send their
request when accepted sockets inherited nonblocking mode. - Fixed macOS file-watcher events failing to match browser paths reported
through canonical aliases such as/private/varversus/var.
Removed
- Removed the unsupported experimental VM/GPU bridge, including the
neon streamcommand tree,neon doctor --bridge, libvirt dependencies,
and bridge-specific daemon/tray integration. The research implementation is
preserved on theexperimental-bridgebranch for contributors. - Removed the bridge-only CDM provider abstraction and its redundant temporary
copy of the cached Widevine payload during every browser patch. - Removed the unsigned
neon update selfmechanism. Install updates through a
supported package manager or GitHub Releases instead.
Install silvervine 2.0.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nicholasraimbault/silvervine/releases/download/v2.0.0/silvervine-installer.sh | shDownload silvervine 2.0.0
| File | Platform | Checksum |
|---|---|---|
| silvervine-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| silvervine-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| silvervine-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
2.0.0-rc.2 - 2026-05-17
Release Notes
A polish release: every change addresses a bug or UX failure surfaced
testing rc.1 on a real Linux install. No new features. Strongly
recommended for anyone running rc.1 — especially macOS users, where
rc.1 has a hard deadlock on the patch path.
Fixed
- macOS
sudo neon patchdeadlocks on the lockfile after a
redundant osascript re-prompt (#30,
reported by @yzaimoglu). The patch
flow no longer re-escalates whengeteuid() == 0, and the
--as-rootchild skips the lockfile the parent already holds. neon doctorreported "patched" for browsers whose on-disk CDM
was stale. Doctor now reads each bundle's
WidevineCdm/manifest.jsonversion, compares it to the cache, and
surfaces an inline out-of-date warning (run "Patch Now").- Daemon could enter a watcher → patch → pkexec re-prompt loop.
drive_patch_flownow checksinstalled_cdm_version()vs the
cached version up front and short-circuits browsers already at the
cached version — no patcher invocation, no root escalation, no
watcher refire. - Tray "Update Widevine" only refreshed the cache. Now it also
re-patches every detected browser, which is what users expect a
button by that name to do. - Every tray action was silent. PatchAll, PatchOne,
UpdateWidevine, and the success branch of ToggleLaunchAtLogin now
emit toast notifications. ~/.config/neon/config.tomlcarrying a legacy[reporting]
block from v1 / rc.0 crashed the daemon on first launch of rc.1
with an opaqueStateCorrupted: TOML parse error. Config schema
now silently drops deprecated top-level sections (typos in current
sections still fail loudly).- Migration silently misreported success when the elevated cleanup
script failed. Paths now route tooutcome.skippedwith the
failure reason rather than intooutcome.removed. - Watcher fired on the first event of a browser-update storm,
patching on top of an in-flight bundle. Switched to trailing-edge
debounce: the callback only fires after the install path has been
quiet for the full debounce window. - Widevine cache TOCTOU between
target_dir.exists()and the
staging→target rename let two concurrent neon invocations (CLI +
daemon, double-clicked installer) corrupt the cache. New
<cache>/download.lockserializes the slow path. platform::format_exit_status: replaces the opaque
(exit None)error message on signal-killed escalation children
with a readablekilled by signal N.
Added
- Auto-discover Helium installed via the official
aptrepo (lands
at/opt/heliumon Debian / Ubuntu / Pop!_OS) in addition to the
existing AUR path/opt/helium-browser-bin. Thanks to
@PeterDrakulic (#3).
Performance
- Tray PatchAll / PatchOne reuse the daemon's shared browser list
rather than running a freshdetect_browsersfilesystem walk on
every click. - CDM cache: clean orphaned CRX3 archives after a successful
extraction, and haveprunesweep any stale ones left by older
neon versions (each was ~5–7 MB; they piled up indefinitely).
Install neon 2.0.0-rc.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nicholasraimbault/neon/releases/download/v2.0.0-rc.2/neon-installer.sh | shDownload neon 2.0.0-rc.2
| File | Platform | Checksum |
|---|---|---|
| neon-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| neon-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| neon-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
2.0.0-rc.1 - 2026-05-13
Neon v2.0.0-rc.1 — Rust rewrite
Release candidate. Please file issues if you hit anything on the v1→v2 migration path before this promotes to v2.0.0.
What changed
v2 is a complete rewrite. The bash scripts (install.sh, fix-drm.sh, download-widevine.sh) and the Go/Swift tray apps are replaced by a single Rust binary (neon) with a structured CLI and a system tray daemon.
cargo install neon
# or grab a release artifact for your platform
neon setup # non-interactive install
# or: neon init # interactive wizard
Breaking changes
- CLI surface:
bash install.sh→neon setup.bash fix-drm.sh→neon patch.neon-tray→neon(daemon mode auto-started by the user systemd unit). - Install layout:
/usr/lib/neon/is no longer used by the new binary — it lives wherevercargo installor your package manager places it (typically~/.cargo/binor/usr/bin). - Daemon: replaces v1's system-wide
neon-fix-drm.{path,service}units with a per-user~/.config/systemd/user/neon.servicethat also serves the tray. - Tray: speaks SNI directly over D-Bus via
ksni(Linux). Nolibayatana-appindicator3runtime dep. Native support on KDE Plasma, sway/Hyprland + waybar, Quickshell-based shells (noctalia, Caelestia), Cinnamon. Vanilla GNOME still needs the AppIndicator extension.
v1 → v2 migration
neon setup automatically detects a legacy v1 install and surfaces the correct uninstall command for your distro:
- Arch (AUR):
pacman -R neon-drm(orparu -R neon-drm/yay -R neon-drm). - Debian / Ubuntu:
dpkg -r neon-drm(orapt remove neon-drm). - Fedora / RHEL:
rpm -e neon-drm(ordnf remove neon-drm).
Run the suggested command, then re-run neon doctor — the legacy warning should clear.
Raw bash install (install.sh)? neon setup cleans it up automatically.
V3 streaming bridge (experimental, opt-in)
A new neon stream subcommand provisions a Windows IoT LTSC VM with GPU + TPM passthrough and streams the desktop back via Looking Glass for premium 4K HDR playback. Default builds don't include any V3 code; enable with:
cargo install neon --features experimental-bridge
Limitations: dual-GPU required (the passthrough GPU is unavailable to the host while V3 runs); HDR is tone-mapped to SDR for the Looking Glass copy. See ROADMAP.md.
Supported platforms
- Linux: tested on Arch (CachyOS). Debian and Fedora users — your feedback on the migration path is especially welcome; please open an issue if
neon setupdoesn't cleanly handle your v1 install. - macOS: build + smoke-tested. The v1
xattrquirk that surfaced in #1 is moot under the new binary path.
Rolling back to v1
If v2 misbehaves and you need to fall back:
neon uninstall— removes the v2 daemon + config; leaves browsers patched.- Re-install v1 via your package manager (
paru -S neon-drm,apt install neon-drm, etc.) or runbash install.shfrom the v1.0.0 source tarball. - Open an issue with the
neon doctoroutput (from before uninstalling, ideally) so we can fix the rc.
Credits
- @bfayers (#1) — caught the Mozilla widevine URL rotation +
xattr -rregression in the v1 bash scripts.
Full machine-readable changelog: CHANGELOG.md.