refactor!: complete application rewrite, modernization, and post-refactor improvements#4
Open
Jaredl-Dev wants to merge 7 commits into
Open
refactor!: complete application rewrite, modernization, and post-refactor improvements#4Jaredl-Dev wants to merge 7 commits into
Jaredl-Dev wants to merge 7 commits into
Conversation
* update to .NET 10 and the latest C# version * overhaul the application architecture to follow layered architecture, MVVM, and dependency injection principles * modernize and improve the codebase * add logging throughout the codebase * greatly improve download performance and reliability * support only GeneralsOnline and SuperHackers clients * add support for SuperHackers world builders * replace deployment with a manifest-driven system that uses hard links, with copy/move operations as a fallback * redesign the launcher options menu * remove support for legacy launcher workflows and functionality related to GenTool, modded.exe, Vulkan, unsupported World Builder features, recommended game options, game option tweaking, custom camera height adjustment, and other features that are unnecessary or incompatible with GeneralsOnline and SuperHackers * rework content validation to be always enforced, more performant, more reliable, and stricter, and add a UI dialog to display validation deviations * switch archive extraction to SharpCompress * consolidate runtime folder creation into a single subfolder within the game directory and add support for running the application directly from that subfolder * add several quality-of-life improvements, including download ETA and speed indicators, and active addon and patch counts in tab titles * remove the application's self-updater to prevent fork installations from being overwritten by updates from the upstream repository
Adds deterministic coverage for Core version comparison, infrastructure path/catalog/update helpers, catalog image caching, and UI command/view-model behavior. Verifies the suite at 827 passing tests and coverage at 85.8% line / 72.0% branch, with Core at 100% and Infrastructure at 90.3%.
* Display operation progress on the taskbar app icon. * Show a confirmation dialog when the launcher is closed during an active operation.
# Conflicts: # GenLauncherGO.UI/Features/Launcher/Services/LauncherWindowWorkflowCoordinator.cs
Support manual GIB imports and organize by group in content verification review window.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces a complete rewrite and modernization of the GenLauncherGO codebase, along with post-refactor features, significant test coverage, logging improvements, and numerous bug fixes.
The rewrite restructures the application from the ground up around a clean layered architecture (Core / Infrastructure / UI / Tests), MVVM, and dependency injection, targeting .NET 10 and C# 14. It narrows the supported scope to the GeneralsOnline and SuperHackers community clients, removes legacy workflows, and replaces the deployment system with a manifest-driven hard-link approach.
Major Changes
GenLauncherGO.Core,GenLauncherGO.Infrastructure,GenLauncherGO.UI, andGenLauncherGO.Testsfollowing layered architecture, MVVM, and dependency injection principles.modded.exe, Vulkan support, the recommended game options prompt, automatic game options tweaking, and custom camera height adjustment, as these were either redundant or no longer applicable for the supported clients.GenLauncherGOsubfolder within the game directory.GenLauncherGO.Coreachieves 100% line coverage, whileGenLauncherGO.Infrastructureachieves 90.3%.Validation
This refactor was tested and verified by multiple people, including myself. All automated tests pass, and the launcher has been validated through real-world usage across the supported clients.
Disclaimer
This rewrite and fork began as a personal project and is being shared as a temporary solution for the community while GenHub (https://github.com/community-outpost/GenHub) continues to mature and work toward becoming the stable, community-standard launcher. As such, this rewrite of GenLauncherGO is not presented as a perfect, permanent, or definitive solution, though it should represent a substantial improvement over the existing codebase.
AI-assisted development tools were used during portions of the rewrite and feature development process. AI-generated code was never accepted without review; all resulting code and changes were manually examined, refined where necessary, and thoroughly tested before inclusion.
The rewrite was developed in batches, with commits periodically squashed and reorganized to maintain a cleaner, more meaningful commit history rather than preserving a large number of incremental commits.