github JustArchiNET/ArchiSteamFarm 5.1.0.3
ArchiSteamFarm V5.1.0.3

latest releases: 6.0.9.1, 6.0.9.0, 6.0.8.7...
pre-release3 years ago

Notice

This is stable release candidate. Check out ASF release cycle if you'd like to learn more.


Changelog

Changes since V5.0.6.6:

  • [!] ASF V5.1, while fairly compatible for the users, has gone through extensive refactor and maintenance internally which was crucial for the future development. We've reorganized the whole project structure, re-evaluated the decisions made in the past and corrected those that were vastly suboptimal given time. All third-party plugins will need to be recompiled in order to work with this release. For plugin developers, we've also prepared a small "developer changelog" below.
  • Our SteamTokenDumperPlugin now supports advanced config that might come useful for the developers and other people having access to potentially sensitive apps on Steam. As of today the config includes various exclusion options.
  • Upon loading a config file, ASF will now automatically migrate it to the latest syntax, if needed. This covers especially the below config property changes, but also the general cleanup of removing default properties and re-ordering the file to follow ASF scheme. All custom plugin properties (such as our SteamTokenDumperPluginEnabled) are left in-tact.
  • Added --no-config-migrate command-line argument for setups that can't or don't want to utilize automatic migration explained above.
  • IPC is now true by default. The property still exists for people that would like to disable it through "IPC": false.
  • IdlePriorityQueueOnly has been renamed to FarmPriorityQueueOnly, other than that it acts the same as before. ASF will automatically migrate this change if config migration is enabled (default behaviour).
  • IdleRefundableGames has been renamed to SkipRefundableGames, other than that it acts as a negation now, as it was counter-intuitive (to deactivate) before. ASF will automatically migrate this change if config migration is enabled (default behaviour).
  • Latest ASF-ui with new features, improvements and bugfixes.
  • Updated localization provided by our community.
  • Usual amount of other core improvements, optimizations and bugfixes.

It's also worth mentioning that we've launched GitHub discussions, official support channel related to ASF where we'll try to answer all ASF questions and technical issues like on our Steam group (which remains our second support channel).

In addition to that, ASF commits (and tags starting from the next version) are now signed with my GPG key in order to add another layer of trust in regards to all source code modifications.


Developer changelog

This changelog covers third-party plugin developers only, easing the migration of the plugins from ASF V5.0 to V5.1. You might want to skip over that if you're not a programmer... And maybe even if you are...

Changelog

The good news is, everything you were using in the past still exists, so you don't have to reimplement anything yourself. The bad news is, you will have some work to do regardless.

  1. The biggest change was general project reorganization, which includes the namespaces. Stuff like Bot is no longer in ArchiSteamFarm namespace, but rather ArchiSteamFarm.Steam now. Refer to the source code in order to find other parts you might be interested in. This is easy adaptation to do, but breaking change regardless.

If you've been using our huge abomination called Steam.cs for some JSON structures, they're now available as standalone classes in ArchiSteamFarm.Steam.Data namespace. Likewise with our WebBrowser responses, they're under ArchiSteamFarm.Web.Responses now. Pretty much everything migrated somewhere deeper.

  1. Our WebBrowser, and by extension ArchiWebHandler now operates on Uri request instead of string host, string request.

If you currently have a code like that:

string request = "/somerequest";

// Extra entry for sessionID
Dictionary<string, string> data = new(3, StringComparer.Ordinal) {
	{ "breaking", "yes" },
	{ "optional", "no" }
};

ObjectResponse<SomeResponse>? response = await UrlPostToJsonObjectWithSession<SomeResponse>(ArchiWebHandler.SteamCommunityURL, request, data: data).ConfigureAwait(false);

You need to adapt it to this now:

Uri request = new(ArchiWebHandler.SteamCommunityURL, "/somerequest");

// Extra entry for sessionID
Dictionary<string, string> data = new(3, StringComparer.Ordinal) {
	{ "breaking", "yes" },
	{ "optional", "no" }
};

ObjectResponse<SomeResponse>? response = await UrlPostToJsonObjectWithSession<SomeResponse>(request, data: data).ConfigureAwait(false);

This therefore mostly involves constructing Uri out of the host and request yourself now, then passing it to the rest of the logic as previously.

  1. If you're working with our IDocument objects as part of e.g. UrlGetToHtmlDocument, SelectElementNodes(...) and SelectNodes(...) previously returned List<IElement>, now return IEnumerable<IElement>. The easiest way, just use IEnumerable<IElement> where you've previously used List<IElement>. If you're only enumerating over results, you don't need a full collection, we didn't need it anywhere in ASF code when doing this change. Alternatively, if you're lazy or otherwise in need of it, just call .ToList() on the result yourself.

  2. If you're the sad guy who had to use our RuntimeCompatibility class for netf compatibility, it has its own ArchiSteamFarm.Compatibility namespace with a few new functions we had to re-implement.

Questions? Issues? Existential crisis? Hop on to our GitHub discussions general section and we'll try to help, there is non-zero chance you'll even avoid getting yelled at! I mean, as long as your issue comes from those breaking changes... 😁


Support

ASF is available for free, this release was made possible thanks to the people that decided to support the project. If you're grateful for what we're doing, please consider donating. Developing ASF requires massive amount of time and knowledge, especially when it comes to Steam (and its problems). Even $1 is highly appreciated and shows that you care. Thank you!

GitHub sponsor Patreon support Crypto donate PayPal.me donate PayPal donate Revolut donate Steam donate

Don't miss a new ArchiSteamFarm release

NewReleases is sending notifications on new releases.