Skip to content

Releases: nicholasraimbault/silvervine

2.0.0 - 2026-07-16

Choose a tag to compare

@github-actions github-actions released this 16 Jul 16:17

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 matching NEON_* context variables without overwriting explicit
    values.

Changed

  • Renamed the product, repository, crate, library, binary, paths, user daemon,
    and current documentation from Neon to Silvervine for v2.0.0.
  • Silvervine daemon migration starts the replacement registration before
    retiring the retained Neon V2 registration (neon.service or
    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/var versus /var.

Removed

  • Removed the unsupported experimental VM/GPU bridge, including the
    neon stream command tree, neon doctor --bridge, libvirt dependencies,
    and bridge-specific daemon/tray integration. The research implementation is
    preserved on the experimental-bridge branch 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 self mechanism. 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 | sh

Download 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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 17 May 16:26

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 patch deadlocks on the lockfile after a
    redundant osascript re-prompt
    (#30,
    reported by @yzaimoglu). The patch
    flow no longer re-escalates when geteuid() == 0, and the
    --as-root child skips the lockfile the parent already holds.
  • neon doctor reported "patched" for browsers whose on-disk CDM
    was stale.
    Doctor now reads each bundle's
    WidevineCdm/manifest.json version, 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_flow now checks installed_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.toml carrying a legacy [reporting]
    block from v1 / rc.0 crashed the daemon on first launch of rc.1

    with an opaque StateCorrupted: 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 to outcome.skipped with the
    failure reason rather than into outcome.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.lock serializes the slow path.
  • platform::format_exit_status: replaces the opaque
    (exit None) error message on signal-killed escalation children
    with a readable killed by signal N.

Added

  • Auto-discover Helium installed via the official apt repo (lands
    at /opt/helium on 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 fresh detect_browsers filesystem walk on
    every click.
  • CDM cache: clean orphaned CRX3 archives after a successful
    extraction, and have prune sweep 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 | sh

Download 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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 May 22:11

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.shneon setup. bash fix-drm.shneon patch. neon-trayneon (daemon mode auto-started by the user systemd unit).
  • Install layout: /usr/lib/neon/ is no longer used by the new binary — it lives wherever cargo install or your package manager places it (typically ~/.cargo/bin or /usr/bin).
  • Daemon: replaces v1's system-wide neon-fix-drm.{path,service} units with a per-user ~/.config/systemd/user/neon.service that also serves the tray.
  • Tray: speaks SNI directly over D-Bus via ksni (Linux). No libayatana-appindicator3 runtime 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 (or paru -R neon-drm / yay -R neon-drm).
  • Debian / Ubuntu: dpkg -r neon-drm (or apt remove neon-drm).
  • Fedora / RHEL: rpm -e neon-drm (or dnf 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 setup doesn't cleanly handle your v1 install.
  • macOS: build + smoke-tested. The v1 xattr quirk that surfaced in #1 is moot under the new binary path.

Rolling back to v1

If v2 misbehaves and you need to fall back:

  1. neon uninstall — removes the v2 daemon + config; leaves browsers patched.
  2. Re-install v1 via your package manager (paru -S neon-drm, apt install neon-drm, etc.) or run bash install.sh from the v1.0.0 source tarball.
  3. Open an issue with the neon doctor output (from before uninstalling, ideally) so we can fix the rc.

Credits

  • @bfayers (#1) — caught the Mozilla widevine URL rotation + xattr -r regression in the v1 bash scripts.

Full machine-readable changelog: CHANGELOG.md.