Skip to content

refactor!: complete application rewrite, modernization, and post-refactor improvements#4

Open
Jaredl-Dev wants to merge 7 commits into
x64-dev:masterfrom
Jaredl-Dev:master
Open

refactor!: complete application rewrite, modernization, and post-refactor improvements#4
Jaredl-Dev wants to merge 7 commits into
x64-dev:masterfrom
Jaredl-Dev:master

Conversation

@Jaredl-Dev

Copy link
Copy Markdown

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

  • Complete architecture overhaul — Restructured into GenLauncherGO.Core, GenLauncherGO.Infrastructure, GenLauncherGO.UI, and GenLauncherGO.Tests following layered architecture, MVVM, and dependency injection principles.
  • Updated to .NET 10 and C# 14 — Modernized to take advantage of the latest language and runtime features.
  • Manifest-driven deployment with hard links — Replaced the old deployment system with a manifest-driven approach using NTFS hard links, with automatic copy/move fallbacks when necessary. This also removes the requirement to run the launcher as Administrator.
  • Reworked content validation — Always-enforced, faster, and more reliable integrity checking with a dedicated UI dialog for displaying validation deviations.
  • Improved download performance and reliability — Significantly improved S3 and single-file download pipelines, including download speed and ETA indicators.
  • Narrowed client support — Now supports only the GeneralsOnline and SuperHackers clients, while also adding SuperHackers World Builder support.
  • Removed legacy features — Removed GenTool, 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.
  • Removed the self-updater — The self-updater has been removed so that updates to the original GenLauncher cannot overwrite this fork. Updates are now expected to come through the supported community distribution channels instead.
  • Consolidated launcher folder layout — All runtime data is now stored under a single GenLauncherGO subfolder within the game directory.
  • Switched archive extraction to SharpCompress.
  • Expanded test coverage — 827 passing tests with 85.8% line coverage and 72.0% branch coverage. GenLauncherGO.Core achieves 100% line coverage, while GenLauncherGO.Infrastructure achieves 90.3%.
  • Running process overlay — Added a UI overlay showing the currently running process with a force-close option, including tracking of process handoffs across the launched process family.
  • Taskbar progress indicator — Download and repair progress is now reflected on the Windows taskbar button, including an indeterminate state when progress is unknown.
  • Close confirmation dialog — Displays a confirmation dialog when attempting to close the launcher during an active download or repair operation.
  • Logging improvements — Added structured logging throughout the Infrastructure and UI layers, including automatic redaction of sensitive data such as local paths, credentials, and S3 tokens.

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.

* 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant