Repository navigation
Releases: purelogiccode/RVZStudio
Release list
v2.5.1
RVZStudio 2.5.1 is a maintenance release that fixes out-of-memory failures when encoding with
the highest Zstd compression levels and updates the built-in RVZSharp engine to 1.1.1.
Fixes
- Fixed encoding with the maximum Zstd level (22) and many parallel workers failing with an
OutOfMemoryException. The engine no longer reserves the level's full compression window per
worker (up to ~128 MiB each at level 22); the window is now sized to the chunk being encoded. - Out-of-memory conditions during encoding, decoding or verification are now logged as expected
resource limits instead of spurious bug reports; the DolphinTool fallback still completes the
operation when memory is exhausted.
Packaging and documentation
- Release bundles keep the framework-dependent single-file layout and the
release_<version>_<rid>.zipnaming forwin-x64,win-arm64,linux-x64,linux-arm64,
osx-x64andosx-arm64; they are now written to theRVZStudio/bin/Releaserelease path so
older bundles stay available next to the new one. - The documentation site and the repository wiki are published from the same
docs/folder and
now share a side menu for easier navigation.
v2.5.0
RVZStudio 2.5.0 is the first cross-platform release: the WPF/Windows-only application has been
rebuilt on Avalonia UI and now runs on Windows, Linux and macOS on both x64 and ARM64.
Highlights
- Cross-platform UI — the same application now ships for Windows, Linux and macOS, and
automatically locates the platform-specific helper executables. - Native RVZSharp engine — the built-in RVZSharp
library is now the primary engine for encoding, decoding and verification (100% managed codecs),
with DolphinTool as an automatic fallback. Input files are pre-validated against their real
container magic bytes so invalid data is never wrapped into a broken RVZ. - Disc Explorer tab — browse the file system of ISO, RVZ, WIA, GCZ, CISO, WBFS, TGC and NFS
images without extracting them; copy files/folders out and compute per-file SHA-256 hashes. The
log viewer is hidden while this tab is active so the tree gets the full width. - Archive extraction with 7za fallback — ZIP, 7Z and RAR archives are extracted with
SharpCompress first; when SharpCompress cannot read an archive, the bundled 7-Zip7za
console tool is used as a fallback. 7-Zip 26.04 binaries are bundled for all six platforms
(Windows/Linux/macOS × x64/ARM64). - Structured logging — all logging goes through Serilog with an on-screen log viewer,
rolling daily log files and automatic bug reports for warnings and errors. - Update checks, usage statistics and bug reporting — the application checks GitHub releases on
startup, sends anonymous launch statistics and reports unexpected errors to the developer. - Screenshot capture — press F8 to save a PNG of the application window.
- Donate button — support development directly from the header.
- Compact single-file bundles — release packages are framework-dependent single-file binaries
(the .NET 10 runtime is required) with the helper tools, license, readme and these notes included.
Improvements
- Smooth overall progress bar, per-file progress, statistics cards and write-speed display.
- Drag and drop files onto the Conversion, Verification or Extraction tab.
- Wii discs with multiple partitions expose a partition selector in the Disc Explorer.
- Native extraction of ISO, WIA, GCZ, WBFS, CISO and TGC without DolphinTool.
- Scrub option zeroes non-game Wii partitions before encoding for smaller RVZ files.
- Verification logs CRC-32, MD5 and SHA-1 of the decoded image for every verified file.
Fixes
- Fixed a startup error in the tab-selection handler that logged a spurious bug report on every
launch. - Fixed message boxes failing when shown from a background thread after a batch operation.
- Fixed cancellation during verification sometimes being reported as a completed batch.
- Fixed temporary extraction folders and orphaned 7za processes being left behind when an archive
could not be extracted or an operation was cancelled. - Fixed
.nkit.gczfiles producing a.nkit.rvzoutput name instead of.rvz. - Fixed drag-and-drop of files from several folders refusing to start the operation.
- Fixed "Copy Out" of a folder from a disc image not sanitizing the folder name.
- Fixed fatal error dialogs closing before they could be read.
- Removed stale
Avalonia.Diagnostics11.x package that conflicted with Avalonia 12. - Native SkiaSharp/HarfBuzz debug symbols are no longer shipped in release packages.
release_2.4.1
Bug Fixes
-
Fixed crash when DolphinTool executable is missing or inaccessible:
WhenDolphinTool.execould not be found or launched, the error handling code itself would crash withInvalidOperationException: No process is associated with this object.instead of reporting the real problem (e.g. "file not found"). The cleanup logic now safely handles cases where the external process was never started. (292 reports) -
Fixed crash on Windows editions where
SetProcessErrorModeis unavailable:
The error dialog suppression feature (which prevents DolphinTool from showing blocking message boxes) now fails silently on systems that lack this kernel32.dll entry point, instead of crashing the application. (1 report)
Upgraded Dependencies
- SharpCompress
0.49.1→0.50.0
Full Changelog: release_2.4.0...release_2.4.1
release_2.4.0
What's New
Screenshot Capture (F8)
Press F8 to capture a screenshot of the application window. Screenshots are saved as PNG files in the Screenshot folder inside the application directory. This is handy for sharing your setup, reporting UI issues, or documenting settings.
Serilog Logging Infrastructure
The entire logging system has been migrated to Serilog with structured logging:
- On-screen log viewer — Messages still appear in real time via a custom
UiLogSink. - Rolling daily log files — All messages are written to
%LocalAppData%\BatchConvertToRVZ\logs\with 14-day retention and 10 MB size limits. - Automatic bug reporting — Warning and Error level events are automatically forwarded to the bug report API through a dedicated
BugReportSink. No more manualReportBugAsynccalls scattered across services.
Redesigned Settings Panels
GroupBox controls have been replaced with collapsible Expander panels that are collapsed by default. This reduces visual clutter in the Convert, Verify, and Extract tabs, showing only the settings you need when you need them.
Updated Color Scheme
- Terminal output is now white (
#ffffff) instead of green — cleaner and more readable. - All action buttons (Start, Cancel, About, Exit) now share a unified cyan/sky-blue color palette (
#00bcd4), replacing the previous multi-color scheme.
Process Error Dialog Suppression
A new ProcessHelper.SuppressErrorDialogs() method prevents Windows error dialogs (like "Ignore and continue?") from blocking batch operations when DolphinTool encounters issues. The error mode is set before spawning DolphinTool processes.
Improved Error Dialog Safety
The blocking .GetAwaiter().GetResult() call for showing MessageBox from non-UI threads has been replaced with a safer Application.Current.Dispatcher.Invoke() pattern, eliminating potential deadlocks.
Code Cleanup
- Removed XML documentation comments from service classes.
- Service constructors now accept
ILoggerdirectly instead ofAction<string>andFunc<string, Exception?, Task>delegates. ConversionService,ExtractionService, andVerificationServicelog through Serilog with source context via.ForContext<T>().- Global exception handlers in
App.xaml.cslog through Serilog and use a dedicatedTryReportFatalmethod for direct bug reporting on fatal crashes.
Dependencies
- Serilog 4.4.0
- Serilog.Sinks.File 7.0.0
- Microsoft.NET.Test.Sdk updated to 18.7.0
Upgrade Notes
- No migration steps required. This release is backwards-compatible with previous version settings and workflows.
- Log files are automatically created and managed — no user configuration needed.
Full Changelog: release_2.3.1...release_2.4.0
release_2.3.1
Bug Fixes
-
Fixed false bug reports for missing DolphinTool.exe - The application no longer reports missing DolphinTool.exe as a bug. It now only displays a local error message, since this is a deployment issue (the file was not included with the application) rather than an application bug.
-
Fixed crash when browsing a non-existent extraction folder - Added a directory existence check before attempting to list files. Previously, selecting or entering a folder path that doesn't exist would cause an unhandled
DirectoryNotFoundException. The application now gracefully handles this case and displays an appropriate message.
Full Changelog: release_2.3.0...release_2.3.1
release_2.3.0
Improved 7z Archive Extraction Reliability
Some 7z archives (particularly large or heavily compressed files) would fail to extract due to a limitation in SharpCompress's LZMA decoder, causing the application to crash with an OperationCanceledException.
This version adds a fallback mechanism:
- If SharpCompress fails to extract a 7z archive, the application automatically retries using
7za.exe(7-Zip standalone) - If both extractors fail, the file is marked as corrupt instead of crashing
- Native ARM64 support via
7za_arm64.exefor Windows on ARM devices
Other Changes
- Updated SharpCompress from 0.48.1 to 0.49.1
- Updated Microsoft.NET.Test.Sdk to 18.6.0
- Added standalone
7za.exeand7za_arm64.exeexecutables for ARM64 builds - Removed unused
Referencesfolder
Full Changelog: release_2.2.0...release_2.3.0
release_2.2.0
Testing
- New unit test project (
BatchConvertToRVZ.Tests) with xUnit and Coverlet coverage - Tests covering models (
FileItem,GitHubRelease) and services (FileService,BugReportService,UpdateService,SharedHttpHandler)
Bug Report Improvements
- Refactored bug report payload to match the API schema (proper
message,applicationName,version,environment,stackTracefields) - Added structured sections in bug report messages (Environment Details, Error Details, Exception Details)
- Added truncation of message (4000 chars) and stack trace (8000 chars) fields to prevent oversized requests
- Removed unused fields from
SystemInfomodel (BaseDirectory,TempPath,ExceptionType,ExceptionMessage, etc.)
Error Reporting
- Added automatic bug report calls across
ConversionService,ExtractionService, andVerificationServicewhen processing fails - Added bug report calls in
MainWindowfor drag-and-drop errors, file add failures, and URL open errors
FileService Cleanup
- Streamlined
FileServiceto a pure utility with no dependencies — removedAction<string>logger parameter and all wrapper methods (file operations now useSystem.IOdirectly at call sites)
Enhanced Shutdown Reliability
- Window closing logic no longer blocks when the app is already shutting down via
Application.Current.Shutdown() - Added fallback to
Environment.Exit(0)if graceful shutdown fails, with a 3-second force-exit timeout
Folder Path Validation
- Input folder and verification folder validation now checks for null/empty paths and folder existence before file enumeration
- Clear error messages logged when folder paths are invalid
Verification: Include Subfolders
- New "Include subfolders" checkbox on the Verification tab — allows recursive scanning for RVZ files
- Verification file count message now indicates whether subfolders were included
UI Polish
- Added tooltips across the UI: file list labels, Select/Deselect buttons, statistic cards, extraction overlay, and output format selector
- Improved drag-and-drop tooltip hints on DataGrids
Dependencies
- SharpCompress updated from 0.47.4 to 0.48.1
Internals & Maintainability
AssemblyInfo.csnow exposes internals to the test project (InternalsVisibleTo)- Async naming convention:
TryDeleteFile→TryDeleteFileAsync,TryDeleteDirectory→TryDeleteDirectoryAsync UpdateServiceandBugReportServicemethods madeinternalfor testability- Removed
.DotSettings.userfiles from tracking; added to.gitignore
Full Changelog: release_2.1.0...release_2.2.0
release_2.1.0
- Update services to pass exceptions to bug reports for better error details
- Expand SystemInfo model with processor count, paths, and structured exception fields
- Refactor exception reporting in BugReportService and remove redundant helper methods
- Remove unused methods from FileService and simplify report building in MainWindow
Full Changelog: release_2.0.1...release_2.1.0
release_2.0.1
- Add ExceptionType and ExceptionDetails properties to SystemInfo model
- Refactor BugReportService to include exception info in reports using SystemInfo
- Wrap verification files list refresh in Dispatcher.InvokeAsync for UI safety
release_2.0.0
Major Features
- New Extraction Feature: Added a dedicated tab for extracting RVZ files back to ISO, WBFS, GCZ or WIA formats
- Drag & Drop Support: Added drag-and-drop capability for file selection in all tabs
- Selectable File Lists: Added DataGrid controls to individually select/deselect files for conversion, verification, and extraction
User Interface Improvements
- Resizable Layout: Split window with resizable log viewer using a grid splitter
- Consistent Styling: Moved style definitions to App.xaml for better maintainability and consistency
- Enhanced Tooltips: Added detailed tooltips for all UI elements to improve usability
- Adjustable Window Size: Updated window dimensions optimized for the new feature set
Technical Improvements
- Modular Services: Added specialized services for file operations, conversions, verifications, and extractions
- Improved Error Handling: Enhanced bug reporting and error handling across all operations
- Asynchronous Operations: Better async file operations and thread safety
- Robust Cancellation: Improved cancellation support with proper token propagation
- Enhanced Archive Handling: Better extraction of ZIP, 7Z, and RAR archives with security improvements
Bug Fixes
- International Support: Fixed number parsing for international locale support
- UI Freeze Prevention: Added shutdown flag to skip log UI updates when closing to avoid freezes
- Better Extension Detection: Improved handling of compound extensions like .nkit.iso
- Safer Archive Extraction: Prevent ZipSlip vulnerabilities by trimming leading slashes from archive entry paths
- Smoother Progress Tracking: Fixed progress bar jumping by improving counter update logic
Code Quality
- Documentation: Added comprehensive XML documentation to classes and methods
- Thread Safety: Added locks and improved async methods to prevent UI freezes and deadlocks
- Shared HTTP Handler: Implemented SharedHttpHandler for connection pooling across services
- Proper Cleanup: Enhanced dispose pattern implementation for resources
- Validation: Added UI validations for file selection, folder nesting, and missing dependencies