Releases: Gml-Launcher/Gml.Core
v1.0.5
Release Notes - v1.0.5
📢 Gml.Core v1.0.5 — Now Available!
This update brings improvements to user management, profile state transitions, error handling, and JVM argument validation.
What’s New?
🔑 User Management Enhancements
- User Removal by UUID: Added a method to remove users from storage using their UUID.
- Updated Storage Services: Implemented the removal method in
SqliteStorageService
and integrated it intoUserProcedures
.
🛠️ Profile State Management Improvements
- New Profile States: Introduced
NeedCompile
andPacking
states for better profile tracking. - State Transitions: Adjusted profile procedures to ensure consistency during compile and packing actions.
- Centralized State Updates: Added
SetState
method toIGameProfile
to streamline profile state management.
⚡ Improved Error Handling
- Exception Handling in GetProfileFiles: Introduced try-catch for better resilience, logging errors to the console and updating the profile state to "Error" if failures occur.
⚙️ JVM Argument Validation
- Refined Null/Empty Checks: Improved validation to handle both null and empty JVM arguments, ensuring robust profile configurations.
🚀 Upgrade to v1.0.5 now to take advantage of improved user management, better profile state handling, and enhanced error resilience!
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.