Grunt 0.1.10 Is Available Now

Header for the blog post, with a Halo grunt in the background and text that says “Grunt 0.1.10 Is Available Now”

Few weeks have passed and the new release of Grunt for .NET developers is out - I am hitting double digits with the versions now, which is a good sign. 0.1.10 is nothing groundbreaking, but it does introduce quite a few small changes and quality of life improvements. This is also the first release of the library that I worked through on a macOS box, meaning that I was not relying on Visual Studio but rather Visual Studio Code and its integrated .NET Core tooling.

NuGet download link for OpenSpartan.Grunt

NuGet download link for OpenSpartan.Grunt with download counter

Here are some of the highlights of what you get with the updated library build:

  • Text templating-based version updates are gone. This is just too brittle of an approach that does not work well with .NET Core and required quite a bit of custom configuration to work properly with GitHub Actions, where the code for the project is built. I’ve removed that code entirely - you can now build the entire solution across supported .NET platforms (macOS, Windows, Linux) without worrying about setting up custom MS Build flags.
  • In-repo package publishing is no-more. There just wasn’t any reason to have two separate places where a NuGet package is published. Everything on the main branch is in the production version of the package. Everything else you can clone locally, build with .NET Core and use in your project if you’re keen on more experimental releases.
  • The JSON parser configuration in ClientBase now properly accounts for case-insensitive properties, which is very important for the Halo API data models.
  • There is now GameCmsGetGenericWaypointFile that enables you to get any file from Waypoint as long as you have its path.
  • There is now GetUserSettings in the WaypointClient implementation that enables you to get the snapshot for Waypoint user settings like email, Halo Insider enrollment status, and XUID.
  • Also in WaypointClient there is now a GetMyProfile function that does exactly what it says - gets your profile (XUID, gamertag, available profile pictures).
  • Lastly in the WaypointClient improvements, there is now the GetUserProfile function that enables you to get the profile of other Waypoint users. You can use a gamertag or a XUID as a user ID here.
  • A number of properties were converted from object to dynamic to make it easier to infer the underlying data model at runtime.
  • MedalMetadata is now properly tagged with the IsAutomaticallySerializable attribute so that you can get the contents of the data model correctly populated when it’s returned through HaloInfiniteClient.
  • In ParticipationInfo, FirstJoinedTime and LastLeaveTime are nullable, helping developers avoid issues where the players that don’t leave games cause the API to return an error. Thank you to @HaloDataHive for catching this issue.

As always, you can take a look at the source code for everything that I am building with Grunt on GitHub.