ArchiSteamFarm V5.1.0.6
Pre-releaseNotice
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 nowtrue
by default. The property still exists for people that would like to disable it through"IPC": false
.IdlePriorityQueueOnly
has been renamed toFarmPriorityQueueOnly
, 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 toSkipRefundableGames
, 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).- Fixed AWH retry logic not working properly with Steam Web API calls (SteamRE/SteamKit#992).
- 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 are now signed with my GPG key in order to add another layer of trust in regards to all source code modifications and releases.
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.
- The biggest change was general project reorganization, which includes the namespaces. Stuff like
Bot
is no longer inArchiSteamFarm
namespace, but ratherArchiSteamFarm.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.
- Our
WebBrowser
, and by extensionArchiWebHandler
now operates onUri request
instead ofstring 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.
-
If you're working with our
IDocument
objects as part of e.g.UrlGetToHtmlDocument
,SelectElementNodes(...)
andSelectNodes(...)
previously returnedList<IElement>
, now returnIEnumerable<IElement>
. The easiest way, just useIEnumerable<IElement>
where you've previously usedList<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. -
If you're the sad guy who had to use our
RuntimeCompatibility
class fornetf
compatibility, it has its ownArchiSteamFarm.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!