Release v1.0.0
What's Changed
- Renaming files and fix for creating a build by @lara25gomes-cpu in #1
- updating .NET Framework 4.8.1 to .NET 9 by @lara25gomes-cpu in #3
- feat: complete modernization to .NET 9, Avalonia UI, and MVVM architecture by @Rodrigo-Matsuura in #4
New Contributors
- @lara25gomes-cpu made their first contribution in #1
Full Changelog: v4.0.0...1.0.0
🚀 Moon WiiVC Injector - v1.0.0 (Stable Release)
This release marks the stable milestone of the modernized .NET 9 and Avalonia UI rewrite. It introduces a clean MVVM architecture, build cancellation support, native drag-and-drop capabilities, a dedicated real-time logs viewer, low-level memory optimizations, and numerous reliability improvements.
🌟 Highlights & New Features
🛑 1. Safe Build Cancellation
- Implemented full
CancellationTokenSourcesupport across the injection pipeline (BuildEngine). - Users can safely cancel in-progress conversions at any time with automatic cleanup of temporary files and external processes.
📂 2. Native Drag-and-Drop Support
- Added intuitive drag-and-drop functionality: drop game disk images (ISO, WBFS, GC), banner artwork, icons, or audio files directly into the application window.
📋 3. Dedicated Real-Time Logs Tab
- Added a dedicated in-app Logs tab to monitor the conversion process in real time (
Nfs2Iso2Nfs,wit, auxiliary tool output). - Introduced a centralized
AppLoggerservice with automaticconversion.logfile generation.
🏗️ Architecture & Refactoring
🧱 Full MVVM Pattern with CommunityToolkit.Mvvm
- Refactored the entire codebase away from monolithic code-behind files into a decoupled Model-View-ViewModel (MVVM) architecture.
- Introduced dedicated ViewModels:
MainViewModel: Manages injection modes, game paths, remote art retrieval, and build triggers.SdCardViewModel: Controls the Nintendont SD card preparation workflow and assets downloader.SettingsViewModel: Handles user preferences and persistent default paths.ViewModelBase: Unified observable foundation.
- Leveraged modern XAML data bindings and reactive commands (
[RelayCommand],[ObservableProperty]).
💬 Decoupled Dialog Architecture (IDialogService)
- Implemented
IDialogServiceandAvaloniaDialogServiceto abstract message boxes, folder pickers, and prompt dialogs away from business logic.
📜 File-Scoped Namespaces
- Modernized all C# source files using C# 10+/13 file-scoped namespaces, streamlining indentation and improving code readability.
⚡ Performance & Memory Efficiency
🧠 Zero-Allocation Buffer Pooling (ArrayPool<byte>)
- Refactored
Nfs2Iso2Nfsbyte-buffer allocations to useArrayPool<byte>.Shared.Rent/Return, drastically reducing Garbage Collection (GC) pressure when processing multi-gigabyte ISOs and NFS archives.
🔍 Optimized Database Lookups & Strings
- Enhanced
GameTdbdatabase parsing withStringComparison.OrdinalIgnoreCasefor fastO(1)dictionary queries. - Replaced redundant network downloads with lightweight HTTP
HEADchecks (HttpMethod.Head) for remote icon/banner verification.
🛠️ Tool Execution & System Enhancements
- Dynamic Java JAR & Wine Execution:
BuildEnginenow dynamically discovers local.jarfiles prior to resolving system binaries or Wine wrappers, improving cross-platform compatibility. - Robust File Operations (
FileUtil): Added safe deletion and retry mechanisms to prevent locked-file exceptions during temporary workspace cleanup. - Updated Tool Resources: Refreshed internal
TOOLDIR.zipassets.