Skip to content

Release v1.0.0

Choose a tag to compare

@Rodrigo-Matsuura Rodrigo-Matsuura released this 01 Sep 19:40
· 4 commits to main since this release
dce9ac3

What's Changed

New Contributors

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 CancellationTokenSource support 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 AppLogger service with automatic conversion.log file 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 IDialogService and AvaloniaDialogService to 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 Nfs2Iso2Nfs byte-buffer allocations to use ArrayPool<byte>.Shared.Rent/Return, drastically reducing Garbage Collection (GC) pressure when processing multi-gigabyte ISOs and NFS archives.

🔍 Optimized Database Lookups & Strings

  • Enhanced GameTdb database parsing with StringComparison.OrdinalIgnoreCase for fast O(1) dictionary queries.
  • Replaced redundant network downloads with lightweight HTTP HEAD checks (HttpMethod.Head) for remote icon/banner verification.

🛠️ Tool Execution & System Enhancements

  • Dynamic Java JAR & Wine Execution: BuildEngine now dynamically discovers local .jar files 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.zip assets.