Skip to content

Noobnotfound/main UI (Some UI Implementations, + Accounts Interface)#76

Open
NoobNotFound wants to merge 17 commits intomainfrom
noobnotfound/mainUI
Open

Noobnotfound/main UI (Some UI Implementations, + Accounts Interface)#76
NoobNotFound wants to merge 17 commits intomainfrom
noobnotfound/mainUI

Conversation

@NoobNotFound
Copy link
Member

No description provided.

NoobNotFound and others added 13 commits September 25, 2025 01:44
Refactored the `Core` class to introduce `SavedGame` and
`SavedGameCollection` for managing saved games. Added `LoadGames`,
`SaveGames`, and `RemoveGame` methods, improving game lifecycle
management. Updated `InstallGame` to handle `Game` objects and
save state changes.

Enhanced the `Game` class with a `FromTuple` method, improved
error handling, and added offline mode checks.

Improved `BaseSettingsService` to support file-based storage
with `SaveToFileAsync` and `LoadFromFileAsync`. Updated `Set`
and `Get` methods to handle file-based settings.

Refined mod loader installers (`Fabric`, `Forge`, `Quilt`,
`ModLoaderRouter`) with better error handling and offline
support.

Upgraded the solution to Visual Studio 18 and removed unused
build configurations. Centralized settings keys in the new
`SettingsKeys` class.

Enhanced logging and exception handling across the codebase
for better debugging and user notifications.
Replaced direct dependency on BaseSettingsService with the
IBaseSettingsService interface across the codebase to improve
flexibility, modularity, and testability. Updated the `Core`
class constructor, `SettingsService` constructor, and
dependency injection registration in `App.xaml.cs` to use the
interface.

Introduced a new `IBaseSettingsService` interface defining the
contract for `BaseSettingsService`, including methods for
storing and retrieving values and an `APINoMatch` event.

Refactored `BaseSettingsService` to implement the new
interface. Updated `using` directives to remove unused
namespaces and add necessary ones.

Updated the project file to target .NET 9.0 for desktop
applications. Minor non-functional changes were made to the
project file.
Refactored `Extensions.Localize` to improve logging and fallback behavior. Enhanced `GameSettings` with new properties and `[NotifyPropertyChangedFor]` attributes. Introduced `MinecraftSettingsUC` user control to encapsulate Minecraft-related settings, replacing inline UI in `GeneralPage`.

Simplified `ArgumentsListView` by removing `ArgTemplate` and directly binding to `ObservableCollection<string>`. Improved dependency injection by registering `IBaseSettingsService` in `App.xaml.cs`.

Upgraded `Uno.Sdk` to `6.2.39` in `global.json`. Removed legacy code and improved UI structure in `ArgumentsListView` and `MinecraftSettingsUC`. Enhanced logging and localization across the application.
Replaces string-based argument handling with a LaunchArg model and synchronizes external/internal collections in ArgumentsListView. Updates all localization markup extensions to use KeyName instead of Name. Refactors MinecraftSettingsUC to use ShowMainSettings and adds copy path functionality. Updates target frameworks to net9.0-desktop and net9.0-windows10.0.26100. Cleans up code and improves bindings and UI logic across settings and controls.
Introduced a new GamesPage for managing Minecraft instances,
including UI, view model, and commands for game creation,
installation, launching, and settings management. Enhanced
mod loader support and improved user experience with modern
UI elements, dynamic filtering, and robust error handling.

Updated package versions and added new references. Improved
account management with the new EAccount class, AccountService,
and IAccountService interface. Enhanced dependency injection
and navigation. Improved error handling in BaseSettingsService
and removed legacy exception handlers. Added CountToVisibility
converter and updated project files for new features.
Refactored `BaseSettingsService` for improved error handling and
fallback mechanisms. Enhanced the "Add Game" wizard with a new
multi-step `AddGameDialog` for better user experience, including
dynamic navigation and validation logic. Updated `GamesPageViewModel`
to improve initialization, filtering, and mod loader handling.

Reorganized and cleaned up `GamesPage.xaml` and `GamesPage.xaml.cs`
for better readability and maintainability. Introduced new UI
elements like `StepToVisibilityConverter` and `SettingsDialog`.
Removed legacy code, redundant comments, and unused imports.

Fixed a bug in `GetModLoaderInstaller` to handle missing installers
gracefully. Improved consistency in formatting, logging, and code
style across the codebase.
Refactored the Add Game Wizard to improve modularity, maintainability,
and user experience. Introduced `AddGameWizardControl` as a reusable
`UserControl` to encapsulate the wizard's UI and logic. Simplified
`GamesPageViewModel` by consolidating button state logic and streamlining
navigation commands. Updated `GamesPage.xaml` and `GamesPage.xaml.cs`
to integrate the new control and remove legacy inline wizard code.

Enhanced dialog state management to dynamically update button states
based on the wizard's step and ViewModel properties. Removed redundant
logic and event handlers, and relocated step-specific logic to the new
control. Updated the project file to include `AddGameWizardControl`.

These changes improve code clarity, reduce redundancy, and make the
wizard easier to maintain and extend.
Refactored the `Version` class by replacing `Metadata` with a
`ReleaseTime` property, simplifying dependencies and logic.
Updated `GamesPageViewModel` and `GamesPage` to align with
these changes.

Simplified `BaseSettingsService` by replacing async file
operations with synchronous ones, adding fallback mechanisms,
and improving error handling.

Streamlined UI logic in `GamesPage` by replacing `Command`
bindings with `Click` event handlers and delegating logic to
code-behind.
Introduced a new "Accounts" feature with a dedicated page for
managing Microsoft and offline accounts. Added `AccountsPage`,
its view model, and navigation integration. Enhanced user
experience with loading indicators, error handling, and
notifications.

Refactored `Core.cs` and `Game.cs` to improve modularity by
delegating launcher creation to a new `CreateMCLauncher`
method. Ensured proper initialization of game launchers and
moved critical logging to a `finally` block.

Enhanced `ToContentDialog` extension to support customizable
primary button text. Updated dependency injection setup and
project file to include new pages and services.
Introduces the RealVersion property to the Version class and ensures it is set during game installation. Updates game launch logic to use RealVersion instead of BasedOn, and saves games after installation. Also adds an inverse BoolToVisibility converter in AccountsPage and changes game installation command execution to run in a background task.
Refactored the `Core` class to manage refresh state with a new
`IsRefreshing` property and `VersionsRefreshed` event. Updated
the `GamesPageViewModel` to react to these changes, simplifying
state management and reducing redundant code. Added the
`UpdateAvailableVersions` method to centralize version filtering
logic. Adjusted `BaseSettingsService` to use a more appropriate
file path for settings storage.
@NoobNotFound NoobNotFound requested a review from a team as a code owner November 20, 2025 19:35
@github-project-automation github-project-automation bot moved this to 📋 To do in Emerald Nov 20, 2025
NoobNotFound and others added 4 commits November 21, 2025 01:21
Signed-off-by: NoobNotFound <82730163+NoobNotFound@users.noreply.github.com>
The `InstallGame` method in `Core.cs` was updated to remove a duplicate instantiation of the `game` object. Previously, the `game` object was instantiated twice, which was unnecessary. This change eliminates the redundant instantiation, improving code clarity, maintainability, and readability.
Removed dual in-memory and file-based storage from BaseSettingsService, now persisting all settings to files under LocalApplicationData/Emerald/Settings. Updated interface and usages to remove file/in-memory flags. Also includes minor UI tweaks in AccountsPage and a bugfix to update available versions after path selection in GamesPageViewModel.
@NoobNotFound NoobNotFound changed the title Noobnotfound/main UI (Some UI Implementations) Noobnotfound/main UI (Some UI Implementations, + Accounts Interface) Nov 21, 2025
@NoobNotFound NoobNotFound added the enhancement New feature or request label Jan 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: 📋 To do

Development

Successfully merging this pull request may close these issues.

2 participants