What’s new
Release highlights, newest first. The full announcements are in Release notes 1.1.0 and Release notes 1.0.0.
1.1.0 (2026-10-09)
A feature and correctness release. The public API stays compatible with 1.0.0 (checked at
pack time against the published package via PackageValidationBaselineVersion).
Formats & verification
- Legacy writers —
CisoWriter,WbfsWriterandTgcWritercomplete the container matrix and are exposed asconvert -f ciso|wbfs|tgc; all-zero blocks/clusters are stored absent, so scrubbed images shrink. - Wii verification —
DiscVerifierwalks every partition’s h0/h1/h2/h3 hash tree plus the TMD/H3 tables and reports per-partition issues (verify --partitions). - Retail ticket keys — partition keys are now decrypted from the ticket with the Wii
common key (Dolphin:
TicketReader::GetTitleKey), soverify --partitions,extractand RVZ writing work on real encrypted discs; RVZ/WIA inputs prefer the container’s authoritative partition key.WiiVolume.GetTitleKey(ticket)exposes the decryption. - Extract fixes —
tmd.bin/cert.bin/h3.binare read at their partition-relative offsets (they previously used the wrong base),h3.binis skipped for hashless discs, and partition headers are printed byextract --list. - WBFS fixes —
hd_sector_countis relative to the stream position, and the disc header copy is written at offset0x200for tools that identify discs without decoding. - Zero-group decode — RVZ/WIA partition chunks that are entirely zeroes (padding, emptied areas) are stored as zero-size groups with no exception lists; the reader decodes them back to zeroes instead of rejecting the missing lists.
- FST hardening — corrupt file-system tables fail with a format error instead of an internal exception.
CLI
--jsonforconvertandverify,-stdin/stdout piping, andrvzsharp completions bash|zsh|fish|powershell. Logs and progress go to stderr, so stdout stays machine-readable (includingconvert -f iso --json).convert --verifyhonors Ctrl+C (exit code 130) during hashing and verification, and writer progress is monotonic, reaching exactly 1.0 when the last byte is read.- Extract path safety —
-spaths and image file names can no longer escape the output folder (absolute paths stay under-o,..is rejected, hostile names fail with a format error);decode -hprints usage (exit 0), help runs skip the telemetry wait/update prompt, and Ctrl+C is observed while spooling stdin in every command.
Performance & robustness
- Thread-safe
ReadAtwith a 16 MiB LRU decoded-unit cache, binary-search area lookup and ArrayPool group reads; parallel group compression and parallel RVZ/WIA full-image decode (--threads, byte-identical output for any thread count); parser caps plus a mutation/fuzz robustness suite; Native AOT/trimming validated. IBlobReader.Length, the async API (CopyToAsync/ReadFullyAsync/WriteAsync), split plain ISO (game.part0.iso),BlobStream,DiscInfo,Scruband path overloads.- Parallel decode/encode failures now surface the original exception
(e.g.
RvzFormatException) instead ofAggregateException.
Tooling & packaging
- GitHub Actions CI (fast tests on
net8.0/net9.0/net10.0with coverage, pack with API validation + embedded SPDX 2.2 SBOM, smoke-tested CLI artifact) and Dependabot. - Release automation — pushing a
v<version>tag builds per-platform CLI bundles for six runtimes (win-x64,win-arm64,linux-x64,linux-arm64,osx-x64,osx-arm64), packs the NuGet package, creates the GitHub Release (notes fromrelease-notes-<version>.md) and pushes stable versions to nuget.org;docs/is mirrored to the repository wiki and deployed to GitHub Pages (side menu in both). - Lean CLI bundles —
rvzsharp_v<version>_<rid>.zipships theRVZSharpexecutable (RVZSharp.exeon Windows) as a framework-dependent single-file binary (the .NET 10 runtime is not embedded and is installed once on the target machine) plusLICENSE,README.md,WhatsNew.mdandTHIRD-PARTY-NOTICES.md. - 609 library tests on each target framework plus 57 CLI tests and 276 real-file slow tests (90 RVZ games).
1.0.0 (2026-08-15)
First stable release: byte-exact RVZ/WIA decoding and encoding, GCZ writing, legacy decoders (GCZ, CISO/WBI, WBFS incl. split files, TGC, NFS, plain ISO), Dolphin-compatible CLI and a fully documented library API. See Release notes 1.0.0.