Releases: Gml-Launcher/Gml.Core
v1.0.4
Release Notes - v1.0.4
📢 Gml.Core v1.0.4 — Now Released!
The latest update for **Gml.Core ** brings several exciting enhancements, with a focus on mod management, expanded platform support, and Quilt mod loader integration. The new release improves workflows and offers more flexibility when handling mods, along with several bug fixes and performance improvements.
What’s New?
🚀 Quilt Mod Loader Support
- Quilt Integration: Full support for the Quilt mod loader added to the game downloading process. The
GameLoader
enum has been updated to support Quilt, including version management and installation procedures tailored for this loader. - Seamless Quilt Experience: Mods are now managed more efficiently, with Quilt-specific logic embedded into the core modding workflows.
🔧 Enhanced Mod Management
- Modrinth API Integration: Support for querying, managing, and retrieving mods via the Modrinth API. New methods have been added to streamline the mod handling process, including GetModInfo and GetVersionsByModId, allowing users to retrieve detailed mod information and versions more effectively.
- Mod and Optional Mod Handling: New properties for Mods and OptionalMods have been introduced to IGameProfile, making mod management more versatile and user-friendly. The addition of
ModType
andId
properties further categorizes and organizes mods, while the sorting of local mods ensures a clean, ordered display.
💻 Cross-Platform Improvements
- macOS Support: Compatibility for macOS systems has been improved with support for the new osx-x64 and osx-arm64 architectures, ensuring that the launcher works smoothly across various macOS versions.
- Java Runtime Folder Fix: The Java runtime folder retrieval process has been fixed, ensuring correct OS directory identification for macOS systems, contributing to a more stable experience for users.
🛠 Other Enhancements
- Profile Mod Management: New functionality added to handle mods directly within profiles. Mods can be added, removed, and updated with ease, improving the flexibility of game profile management.
- Refined Testing & Bug Fixes: Several bug fixes and code refactors, including cleaning up redundant assertions in tests and validating Java versions retrieval for more consistent test results.
🙏 Thanks to @overlord-space!
A special thank you to @overlord-space for contributing to this release by fixing Java runtime folder retrieval, ensuring that the launcher functions smoothly on all macOS platforms. Your efforts are greatly appreciated!
🚀 Upgrade to v1.0.4 now for enhanced mod management, improved platform support, and Quilt mod loader compatibility. Enjoy a smoother, more powerful game-launching experience!
This release of Gml.Core enhances user experience with a broader range of mod management features, supports new platforms, and fixes bugs that improve the overall functionality of the launcher.
v1.0.3
Release Notes - Gml.Core v1.0.3
📢 Gml.Core v1.0.3 — Now Available!
This release brings enhanced user management, improved role-based access, new customization options, and significant refinements to authentication and testing capabilities.
What’s New?
🚀 User Management and Access Enhancements
-
Pagination and Search for Users:
- Added
GetUsers
with support for pagination (take
,offset
) and search (findName
), allowing more efficient data queries for large user datasets.
- Added
-
Whitelist Management:
- Introduced
UserWhiteListGuid
toIGameProfile
andBaseProfile
for managing user permissions via GUIDs. - Updated to support
List<string>
instead ofList<Guid>
for more flexible identifier handling.
- Introduced
🔒 Player Role and Access Control
-
JWT Token Enhancements:
- Added a "Player" role claim in JWT token generation, enabling better enforcement of role-based access controls.
-
Ban and Pardon Functionality:
- Implemented endpoints to ban and pardon players.
- Updated authentication and server access logic to respect ban statuses.
- Added error handling for empty ban/pardon input lists.
🎨 User Customization
- New
GetHead
Method:- Added functionality to fetch a user's head texture stream by their name.
- Updated
UserProcedures
andITextureProvider
interfaces, with corresponding implementations to support texture retrieval.
🛠️ Performance and Testing Improvements
-
Java Version Parsing:
- Refactored version parsing logic with
TryParseMajorVersion
for better readability and error handling. - Re-enabled server ping tests for cross-version Minecraft compatibility.
- Refactored version parsing logic with
-
MinecraftPingOptions Timeout:
- Added a
TimeOut
option (default: 3 seconds) to all test cases usingMinecraftPingOptions
, improving reliability by preventing indefinite waits.
- Added a
🐛 Bug Tracking Enhancements
- CaptureException Integration:
- Enhanced exception handling by invoking
CaptureException
before returningBugInfo
, ensuring robust error tracking.
- Enhanced exception handling by invoking
🔗 Submodule Updates
- Updated the Pingo submodule link to the latest version.
Upgrade now to take advantage of these robust features and improvements! 🚀
v1.0.2
Release Notes - v.1.0.2
📢 Gml.Core v1.0.2 — Now Available!
The latest version is here to enhance your server management experience.
What’s New?
🌐 Pingo Library Updates:
- Now supports domain names when adding servers.
- Added support for SRV records, making server configuration more flexible.
📦 Dependency Updates:
- Updated package dependencies for improved stability and compatibility.
Upgrade now to enjoy these new features and improvements! 🚀
v.1.0.1
Release Notes v.1.0.1
Fix folder white list
v0.1.0-rc2-hotfix4
Release Notes - v0.1.0-rc2-hotfix4
v0.1.0-rc2-hotfix2
Release Notes - v0.1.0-rc2-hotfix2
Bug Fixes
- Check for empty URL before assigning GUID:
Ensure GUIDs are only generated when texture URLs are successfully set. Prevents assigning GUIDs when URLs are empty, ensuring consistency in the texture application process.
v0.1.0-rc2-hotfix1
Release Notes - v0.1.0-rc2-hotfix1
New Features
-
Support for Skins and Cloaks Management:
Added full support for handling user skins and cloaks. This includes new properties in the user models for managing textures, methods to download and install skins/cloaks, and database support. These updates significantly enhance the launcher’s customization options, enabling users to manage their skins and cloaks efficiently. -
ITextureProvider and TextureProvider Implementations:
Introduced theITextureProvider
interface andTextureProvider
class to manage skin and cloak updates, along with retrieval via HTTP clients. Additionally, aTextureReadDto
class was implemented to deserialize texture response data, optimizing the handling of textures.
Changes
- Refactored Service Integration for Dynamic Texture Provider:
UpdatedServicesIntegrationProcedures
to initialize theTextureProvider
with a dynamicTextureServiceEndpoint
, which is passed via the constructor. This refactor enhances flexibility when integrating texture services, allowing customization of endpoints throughIGmlSettings
.
Bug Fixes
-
Improved Error Handling in Texture Management Methods:
Added error handling in theCreateUserSessionAsync
method to address issues when textures are not properly configured. Additionally, try-catch blocks were introduced in theSetSkin
andSetCloak
methods to handle potential exceptions, returning empty strings in case of errors and preventing crashes. -
Cleaned Up Unused Imports:
Removed an unnecessaryNotImplementedException
import fromSqliteStorageService.cs
to clean up the code and avoid confusion.
Tests
- Enhanced Unit Test Coverage:
Updated theAssert
functions in the unit tests and ensured thatGmlManager
tests specify the correctTextureServiceEndpoint
. Additionally, comments were added to improve clarity in unit tests related to the texture provider integration.
v0.1.0-rc2
Release Notes - v0.1.0-rc2
New Features
-
Skin and Cloak Management Support:
Added new features to handle user skins and cloaks. This includes properties in user models for managing textures, methods for downloading and installing textures, and database support. These updates enhance the launcher’s customization capabilities by allowing users to manage skins and cloaks efficiently. -
ITextureProvider and TextureProvider Implementations:
Introduced theITextureProvider
interface andTextureProvider
class to manage skin and cloak updates and retrievals. TheTextureProvider
uses HTTP clients for texture handling, and a newTextureReadDto
was created to deserialize texture response data, streamlining texture management.
Changes
- Refactor Service Integration for Dynamic Texture Provider:
UpdatedServicesIntegrationProcedures
to initializeTextureProvider
with dynamicTextureServiceEndpoint
passed via the constructor. This refactor improves flexibility when integrating texture services and allows customization of endpoints throughIGmlSettings
.
Bug Fixes
-
Error Handling in CreateUserSessionAsync and Texture Methods:
Added error handling forCreateUserSessionAsync
to manage issues when textures are not properly configured. Additionally, introduced try-catch blocks inSetSkin
andSetCloak
methods to handle potential exceptions gracefully and prevent crashes. -
Remove Unused NotImplementedException Import:
Cleaned up theSqliteStorageService.cs
file by removing an unusedNotImplementedException
import to improve code clarity and avoid confusion.
Tests
- Update and Comment Unit Tests:
UpdatedAssert
functions in unit tests and ensuredGmlManager
initialization in tests specifies the correctTextureServiceEndpoint
. Also added comments to clarify the purpose of unit tests related to the texture provider.
v0.1.0-rc1
Release Notes - v0.1.0-rc1
New Features
- Update MirrorsHelper URLs and Introduce MirrorPingModel:
Replaced localhost URLs with more reliable mirror sources in theMirrorsHelper
class. Introduced theMirrorPingModel
class to track URL and round-trip time. Enhanced theGetMirrorUrlAsync
method to select the fastest mirror based on ping results, improving performance.
Changes
-
Refactor MirrorsPingModel:
RenamedMirrorsPingModel
toMirrorPingModel
and relocated it from theHelpers
namespace to theModels
namespace. UpdatedSystemProcedures
to use the new class name and path, ensuring consistency across the codebase. -
Correct Logic in RemoveWhiteListFolderIfNotExists Method:
Fixed the logic in theRemoveWhiteListFolderIfNotExists
method to ensure that the correct folder is removed only if it exists, enhancing functionality and preventing errors.
Refactoring
-
Simplify Null-Forgiving Operator Usage:
Streamlined the use of the null-forgiving operator for thefiles
variable, improving code clarity and reducing potential null reference issues. -
Improve Code Readability by Removing Unnecessary Blank Lines:
Removed redundant blank lines throughout the codebase to enhance readability and maintain a clean code structure.
Bug Fixes
- Fix AzuriomAuthlibInjector Integration:
Addressed issues with theAzuriomAuthlibInjector
to ensure proper integration and functionality within the system.
v0.1.0-beta4
Release Notes - v0.1.0-beta4
New Features
-
Add support for game-specific arguments in process creation:
Enhanced profile and game downloader procedures to include game-specific arguments. Updated model interfaces and implementations to support these new arguments while maintaining backward compatibility with existing JVM arguments. -
Add support for game arguments in profile procedures:
Extended profile management functionality to handle game arguments. Updated method signatures and relevant handlers to accept and process the new game arguments parameter, allowing profiles to be configured with both game and JVM arguments. -
Add GameArguments property to GameProfileInfo:
Introduced a newGameArguments
property inGameProfileInfo
to store game-specific arguments separately from JVM arguments. This improves the clarity and flexibility of theGameProfileInfo
class. -
Add cache restoration flag to GetAllProfileFiles method:
UpdatedGetAllProfileFiles
method across multiple classes to include an optionalneedRestoreCache
parameter. This allows conditional cache restoration and enhances cache management during file retrieval.
Changes
-
Remove redundant Clear method from NotificationProcedures:
Removed the unusedClear
method fromNotificationProcedures
to streamline the class and ensure consistency in notification handling procedures. -
Refactor whitelist methods in ProfileProcedures:
Converted async methods for adding and removing files and folders to non-blocking tasks. Added bulk operations for adding and removing folders in theIProfileProcedures
interface to improve performance and maintainability. -
Update submodule link CmlLib.Core.Installer.Forge:
Updated the submodule link forCmlLib.Core.Installer.Forge
to the latest version, ensuring compatibility with current project dependencies. -
Update Minecraft server addresses in unit tests:
Replaced outdated server addresses with current ones in multiple unit tests. Commented out a redundant assertion in theGmlManager
test and added a TODO note to fix the endpoint. -
Refactor unit tests to use dynamic profile names:
Replaced hardcoded profile names with a dynamic variablename
in unit tests to increase flexibility and maintainability. Cleaned up code by commenting out a redundant assertion in the installation test method. -
Use case-insensitive comparison for profile names (#52):
Changed the profile name comparison to be case-insensitive when adding new profiles. This prevents the creation of duplicate profiles with names that differ only by case. -
Handle DirectoryNotFoundException in GameDownloader:
Added a specific catch block forDirectoryNotFoundException
to provide a detailed warning message and log unsupported operating system profile creation attempts. This improves feedback and error handling for unsupported systems. -
Ensure file existence in LocalStorage verification:
Updated the file existence check inLocalStorage
verification to confirm that the file actually exists on the filesystem before proceeding. This prevents potential runtime errors by ensuring file operations are only attempted on valid files. -
Optimize game arguments handling in profile procedures:
Improved the handling of game arguments by usingAddRange
with the split method. This ensures that individual words in the arguments string are correctly separated and added, enhancing the management of game arguments in profile procedures.
Refactoring
-
Refactor:
General code refactoring to improve readability, maintainability, and performance. -
Remove unused
useProfileCardStore
import from Profile.tsx:
Deleted the unused importuseProfileCardStore
fromProfile.tsx
to clean up the code and improve readability. -
Fix project build:
Resolved issues with the project build process to ensure successful compilation and deployment.