Release Notes
Added
- Added
doctor --media-stack [--browser]passive browser/CDM provenance,
binary architecture, codec, VA-API, and macOS VideoToolbox diagnostics
with stable JSON evidence sources and failure domains. The passive path
performs no migration, log initialization, network access, or browser launch. - Added an explicit
test --browser <name>normal-profile EME probe for
temporary Widevine key-system access, SW/HW robustness, cenc/cbcs schemes,
AVC/HEVC/VP9/AV1 codec matrix (720p/1080p/4K), MSE/direct playback,
MediaCapabilities, and HDCP 1.4/2.2 policy evidence. Rust returns one
bounded assessment to the page and terminal. Automatictest --jsonemits
exactly oneStoredProbeReport; cache write failures are warnings with a
null cache path.test --urlremains a manual page launcher. - Added
BrowserProbeFailederror category/exit code for live probe timeout,
malformed transport, and software-playback baseline failure.
Changed
- Batched patching now resolves the CDM, acquires the patch lock, and snapshots
running processes once per operation; watcher scheduling uses one deadline
loop instead of a separate ticker thread. - Streamed CLI JSON directly to its destination, centralized platform CDM
layout constants, and aligned the macOS Objective-C dependency graph. - Raised the minimum supported Rust version from 1.85 to 1.88 so the locked
dependency graph can include current security fixes. - Browser patching now records and validates a Silvervine ownership marker
bound to the installed manifest, platform, version, and CDM library SHA-512.
Existing unmarked CDMs are preserved unless the user passes the explicit
--replace-external-cdmoverride.
Fixed
- Published Linux CDM directories and macOS application bundles through
staged transactions, with verification before publication and rollback on
failed live verification. - Removed crash-vulnerable non-native filesystem-exchange fallbacks; filesystems
without native atomic exchange now fail closed before either path moves. - Added versioned cache-integrity metadata for corruption detection; reuse now
requires current library and root-manifest digests to match the exact payload
extracted from a manifest-authenticated CRX.
Security
- Updated
timeto 0.3.54, resolving
RUSTSEC-2026-0009
in the notification and rolling-log dependency graph. - The live EME probe uses an ephemeral IPv4 loopback server with a random
single-use token, strict same-origin POST validation, CSP, bounded request
size/count/output, and a fixed timeout. Probe data never leaves the device. - Privileged patch children now inherit the parent's exact CDM replacement
consent, and invalid ownership markers cannot bypass provenance checks. - Elevated patching now passes only a bounded, parent-authenticated payload,
rejects writable or symlinked install ancestry, and revalidates Linux
install/parent device and inode identities around publication. - Manifest retrieval now fails closed when both fixed Mozilla HTTPS origins
fail; mutable on-disk manifest snapshots are write-only and cannot authorize
executable content. - CRX downloads now enforce strict SHA-512 syntax and a 256 MiB bound, reject
symlink cache entries, and extract from the exact verified buffer rather than
reopening a mutable pathname.
Install silvervine 2.1.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nicholasraimbault/silvervine/releases/download/v2.1.0/silvervine-installer.sh | shDownload silvervine 2.1.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 |