Releases: JustArchiNET/ArchiSteamFarm
ArchiSteamFarm V6.0.1.2
Notice
Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features and rewritten implementations. If you don't consider yourself advanced user, please download latest stable release instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF release cycle if you'd like to learn more.
Changelog
Changes since V6.0.0.3:
- Added automatic plugin updates functionality. This feature requires appropriate support at plugin level, and allows their authors to issue updates easily through unified ASF mechanisms. Plugin updates are disabled by default, you can control their behaviour with
PluginsUpdateMode
andPluginsUpdateList
global config properties (@JustArchi #3151). - Dramatically improved performance of loading own inventories by moving logic over to Steam network. This also makes some breaking changes for plugin creators (@ezhevita #3155).
- ASF will now try to flash its console window on Windows when expecting user input (@ezhevita #3158 #2998).
- Added limited support for
--minimized
command-line switch also for Linux and OS X (@ezhevita #3158 #3159). - ASF now uses minimal amount of dependencies for its IPC initialization. This is currently experimental, please report issues if any (@JustArchi).
- Latest ASF-ui with new features, improvements and bugfixes (@MrBurrBurr).
- Updated localization provided by our community (@JustArchi-ArchiBot).
- Usual amount of other core improvements, optimizations and bugfixes (@JustArchi).
Changes for plugin creators:
- There are now two additional plugin interfaces:
IGitHubPluginUpdates
andIPluginUpdates
. First one allows you to easily implement GitHub-based updates based on project structure derived from our plugin template, you need only to specifyRepositoryName
in majority of cases. Second one allows you to implement custom logic for updates, especially those that are not provided through GitHub. - There is new
ArchiHandler.GetMyInventoryAsync()
method for fetching bot's own inventory now. While previous method inArchiWebHandler
remains operative, you should consider migrating to that one for increased performance and compatibility. Asset
entries representing Steam items found in inventory as well as trade offers were slightly refactored to add required compatibility for being used both inArchiHandler
as well asArchiWebHandler
- you might need to do some small code edits to satisfy previous functionality. Significant change includes movingEType
andERarity
enums to their own definitions ofEAssetType
andEAssetRarity
.- We've updated our plugin template with all required changes for supporting plugin updates. If you want to apply those manually, you can view appropriate commit for doing so.
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 a donation. 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!
ArchiSteamFarm V6.0.1.1
Notice
Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features and rewritten implementations. If you don't consider yourself advanced user, please download latest stable release instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF release cycle if you'd like to learn more.
Changelog
Changes since V6.0.0.3:
- ASF now uses minimal amount of dependencies for its IPC initialization. This is currently experimental, please report issues if any (@JustArchi).
- Latest ASF-ui with new features, improvements and bugfixes (@MrBurrBurr).
- Updated localization provided by our community (@JustArchi-ArchiBot).
- Usual amount of other core improvements, optimizations and bugfixes (@JustArchi).
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 a donation. 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!
ArchiSteamFarm V6.0.1.0
Notice
Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features and rewritten implementations. If you don't consider yourself advanced user, please download latest stable release instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF release cycle if you'd like to learn more.
Changelog
Changes since V6.0.0.3:
- ASF now uses minimal amount of dependencies for its IPC initialization. This is currently experimental, please report issues if any (@JustArchi).
- Latest ASF-ui with new features, improvements and bugfixes (@MrBurrBurr).
- Updated localization provided by our community (@JustArchi-ArchiBot).
- Usual amount of other core improvements, optimizations and bugfixes (@JustArchi).
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 a donation. 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!
ArchiSteamFarm V6.0.0.3
Changelog
Changes since V5.5.3.4:
- [!] ASF V6 comes with modern
System.Text.Json
replacement of previously used since the very first ASF version,Newtonsoft.Json
library. This is core foundation that ASF is based on - while it should be mostly transparent for end-users, it's breaking change for existing ASF plugins, and it also has far bigger scope than usual in terms of ASF codebase, hence V6 major version bump. If you're plugin creator, you can find notes below for technical details in regards to upgrade (@JustArchi #3145 #3061). - Latest ASF-ui with new features, improvements and bugfixes (@MrBurrBurr).
- Updated localization provided by our community (@JustArchi-ArchiBot).
- Usual amount of other core improvements, optimizations and bugfixes (@JustArchi).
Changes for plugin creators:
- V6 upgrade version may require more changes than usual, especially in regards to breaking changes that are not outright visible during compilation, as well as extensive testing.
OnASFInit()
andOnBotInitModules()
found inIASF
andIBotModules
plugin interfaces have changed the signature ofadditionalConfigProperties
fromJToken
toJsonElement
. If you're not using additional config props, change in signature is sufficient, otherwise, you'll need to correct existing usage a bit to the new API.- Apart from above, you should search for every
Newtonsoft.Json
reference in your code, and correct it as per instructions below. - Remove
<PackageReference Include="Newtonsoft.Json">
reference in all yourcsproj
files - there is no need for any other additional custom dependency for JSON parsing anymore. ASF uses STJ exclusively now, which means that your Newtonsoft attributes, if any, are ignored anyway - this is why code that compiles, but doesn't use STJ, might not serialize/deserialize properly in V6 (if using ASF integration such asArchiWebHandler
,WebBrowser
,SerializableFile
or anything else that ASF provides to you). - Drop
using Newtonsoft.Json
from each of yourcs
files, those files will need a correction. - Replace every
[JsonProperty]
you have with[JsonInclude]
fromSystem.Text.Json
namespace. - If your
[JsonProperty]
included custom property name, like[JsonProperty("custom")]
, add additional attribute,[JsonPropertyName("custom")]
. - If your
[JsonProperty]
was always required, like[JsonProperty(Required = Required.Always)]
, add additional attribute,[JsonRequired]
. - If your
[JsonProperty]
used disallowed nulls, like[JsonProperty(Required = Required.DisallowNull)]
, then either: -
- If it's a struct (e.g.
DateTime
), nullable class (e.g.object?
), or otherwise null-allowed property (includingSystem.Nullable<T>
, e.g.DateTime?
), don't add additional attribute, leave it as it is.
- If it's a struct (e.g.
-
- Only if it's non-nullable class (e.g.
object
) and you expect to always have a value there (extra bulletproofing against"Prop": null
), add additional[JsonDisallowNull]
attribute.
- Only if it's non-nullable class (e.g.
- If your property was
{ get; }
-only before, make it{ get; private init; }
instead. - If your field was
readonly
before, dropreadonly
and make it{ get; private init; }
instead. - If your property was
static
before, drop it, STJ doesn't serialize those, even if they're same for every instance. - If you're using custom parameterless constructor, including internal/private one i.e.
private MyClass() { }
, ensure it's annotated with[JsonConstructor]
- this wasn't required before in Newtonsoft, but it's mandatory in STJ now. - If you've used
[JsonExtensionData]
, use the same attribute from STJ, add additional[JsonInclude]
and correctJToken
toJsonElement
- also remember about{ get; private init; }
. - If you've used
JsonConvert
before, useToJsonObject<T>()
,ToJsonText()
(and in rare occurances,ToJsonElement()
) helper methods from ASF namespace. You can also use standardJsonSerializer
, but then you should always include customJsonUtilities.DefaultJsonSerialierOptions
from ASF namespace, which add support for otherwise missing STJ features, such as[JsonDisallowNull]
attribute, customGuid
formats orShouldSerializeXYZ()
conditional methods - everything we needed ourselves in ASF.
Depending on how big your plugin is and what it does, you most likely won't have as much work as it might seem like from our notes above - we've included comprehensive guide to aid you with upgrade, but it's expected that majority of plugin developers will be fine just changing [JsonProperty]
to [JsonInclude]
, and maybe adding [JsonPropertyName]
on top of it.
Like you, we also needed to adapt all of our existing ASF code to STJ - this is why you can find a lot of examples of expected/required changes in our commit 6b0bf0f, feel free to use it as a reference in regards to notes above, and if you need help, remember you can always reach us through usual support channels, especially #dev-plugins
on our Discord server.
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 a donation. 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!
ArchiSteamFarm V6.0.0.2
Notice
Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features and rewritten implementations. If you don't consider yourself advanced user, please download latest stable release instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF release cycle if you'd like to learn more.
Changelog
Changes since V5.5.3.4:
- [!] ASF V6 comes with modern
System.Text.Json
replacement of previously used since the very first ASF version,Newtonsoft.Json
library. This is core foundation that ASF is based on - while it should be mostly transparent for end-users, it's breaking change for existing ASF plugins, and it also has far bigger scope than usual in terms of ASF codebase, hence V6 major version bump. If you're plugin creator, you can find notes below for technical details in regards to upgrade (@JustArchi #3145 #3061). - Latest ASF-ui with new features, improvements and bugfixes (@MrBurrBurr).
- Updated localization provided by our community (@JustArchi-ArchiBot).
- Usual amount of other core improvements, optimizations and bugfixes (@JustArchi).
Changes for plugin creators:
- V6 upgrade version may require more changes than usual, especially in regards to breaking changes that are not outright visible during compilation, as well as extensive testing.
OnASFInit()
andOnBotInitModules()
found inIASF
andIBotModules
plugin interfaces have changed the signature ofadditionalConfigProperties
fromJToken
toJsonElement
. If you're not using additional config props, change in signature is sufficient, otherwise, you'll need to correct existing usage a bit to the new API.- Apart from above, you should search for every
Newtonsoft.Json
reference in your code, and correct it as per instructions below. - Remove
<PackageReference Include="Newtonsoft.Json">
reference in all yourcsproj
files - there is no need for any other additional custom dependency for JSON parsing anymore. ASF uses STJ exclusively now, which means that your Newtonsoft attributes, if any, are ignored anyway - this is why code that compiles, but doesn't use STJ, might not serialize/deserialize properly in V6. - Drop
using Newtonsoft.Json
from each of yourcs
files, those files will need a correction. - Replace every
[JsonProperty]
you have with[JsonInclude]
fromSystem.Text.Json
namespace. - If your
[JsonProperty]
included custom property name, like[JsonProperty("custom")]
, add additional attribute,[JsonPropertyName("custom")]
. - If your
[JsonProperty]
was always required, like[JsonProperty(Required = Required.Always)]
, add additional attribute,[JsonRequired]
. - If your
[JsonProperty]
used disallowed nulls, like[JsonProperty(Required = Required.DisallowNull)]
, then either: -
- If it's a struct, nullable class, or otherwise null-allowed property (including
System.Nullable<T>
), don't add additional attribute, leave it as it is.
- If it's a struct, nullable class, or otherwise null-allowed property (including
-
- Only if it's non-nullable class and you expect to always have a value there (extra bulletproofing against
"Prop": null
), add additional[JsonDisallowNull]
attribute.
- Only if it's non-nullable class and you expect to always have a value there (extra bulletproofing against
- If your property was
{ get; }
-only before, make it{ get; private init; }
instead. - If your field was
readonly
before, dropreadonly
and make it{ get; private init; }
instead. - If your property was
static
before, drop it, STJ doesn't serialize those, even if they're same for every instance. - If you're using custom parameterless constructor, including internal/private one i.e.
private MyClass() { }
, ensure it's annotated with[JsonConstructor]
- this wasn't required before in Newtonsoft, but it's mandatory in STJ now. - If you've used
[JsonExtensionData]
, use the same attribute from STJ, add additional[JsonInclude]
and correctJToken
toJsonElement
- also remember about{ get; private init; }
. - If you've used
JsonConverter
before, useToJsonObject<T>()
,ToJsonText()
(and in rare occurances,ToJsonElement()
) helper methods from ASF namespace. You can also use standardJsonSerializer
, but then you should always include customJsonUtilities.DefaultJsonSerialierOptions
from ASF namespace, which add support for otherwise missing STJ features, such as[JsonDisallowNull]
attribute orShouldSerializeXYZ()
methods.
Depending on how big your plugin is and what it does, you most likely won't have as much work as it might seem like from our notes above - we've included comprehensive guide to aid you with upgrade, but it's expected that majority of plugin developers will be fine just changing [JsonProperty]
to [JsonInclude]
, and maybe adding [JsonPropertyName]
on top of it.
Like you, we also needed to adapt all of our existing ASF code to STJ - this is why you can find a lot of examples of expected/required changes in our commit 6b0bf0f, feel free to use it as a reference in regards to notes above, and if you need help, remember you can always reach us through usual support channels, especially #dev-plugins
on our Discord server.
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 a donation. 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!
ArchiSteamFarm V6.0.0.0
Notice
Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features and rewritten implementations. If you don't consider yourself advanced user, please download latest stable release instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF release cycle if you'd like to learn more.
Changelog
Changes since V5.5.3.4:
- [!] ASF V6 comes with modern
System.Text.Json
replacement of previously used since the very first ASF version,Newtonsoft.Json
library. This is core foundation that ASF is based on - while it should be mostly transparent for end-users, it's breaking change for existing ASF plugins, and it also has far bigger scope than usual in terms of ASF codebase, hence V6 major version bump. If you're plugin creator, you can find notes below for technical details in regards to upgrade (@JustArchi #3145 #3061). - Latest ASF-ui with new features, improvements and bugfixes (@MrBurrBurr).
- Updated localization provided by our community (@JustArchi-ArchiBot).
- Usual amount of other core improvements, optimizations and bugfixes (@JustArchi).
Changes for plugin creators:
- V6 upgrade version may require more changes than usual, especially in regards to breaking changes that are not outright visible during compilation, as well as extensive testing.
OnASFInit()
andOnBotInitModules()
found inIASF
andIBotModules
plugin interfaces have changed the signature ofadditionalConfigProperties
fromJToken
toJsonElement
. If you're not using additional config props, change in signature is sufficient, otherwise, you'll need to correct existing usage a bit to the new API.- Apart from above, you should search for every
Newtonsoft.Json
reference in your code, and correct it as per instructions below. - Remove
<PackageReference Include="Newtonsoft.Json">
reference in all yourcsproj
files - there is no need for any other additional custom dependency for JSON parsing anymore. ASF uses STJ exclusively now, which means that your Newtonsoft attributes, if any, are ignored anyway - this is why code that compiles, but doesn't use STJ, might not serialize/deserialize properly in V6. - Drop
using Newtonsoft.Json
from each of yourcs
files, those files will need a correction. - Replace every
[JsonProperty]
you have with[JsonInclude]
fromSystem.Text.Json
namespace. - If your
[JsonProperty]
included custom property name, like[JsonProperty("custom")]
, add additional attribute,[JsonPropertyName("custom")]
. - If your
[JsonProperty]
was always required, like[JsonProperty(Required = Required.Always)]
, add additional attribute,[JsonRequired]
. - If your
[JsonProperty]
used disallowed nulls, like[JsonProperty(Required = Required.DisallowNull)]
, then either: -
- If it's non-nullable and you expect to always have a value there, add additional
[JsonDisallowNull]
attribute.
- If it's non-nullable and you expect to always have a value there, add additional
-
- If it's nullable, null by default, or null-allowed, don't add additional attribute, leave it as it is.
- If your property was
{ get; }
-only before, make it{ get; private init; }
instead. - If your field was
readonly
before, dropreadonly
and make it{ get; private init; }
instead. - If your property was
static
before, drop it, STJ doesn't serialize those, even if they're same for every instance. - If you're using custom parameterless constructor, including internal/private one i.e.
internal MyClass() { ... }
, ensure it's annotated with[JsonConstructor]
- this wasn't required before in Newtonsoft, but it's mandatory in STJ now. - If you've used
[JsonExtensionData]
, use the same attribute from STJ, add additional[JsonInclude]
and correctJToken
toJsonElement
- also remember about{ get; private init; }
. - If you've used
JsonConverter
before, useToJsonObject<T>()
,ToJsonText()
(and in rare occurances,ToJsonElement()
) helper methods from ASF namespace. You can also useJsonSerializer
with ASF-providedJsonUtilities.DefaultJsonSerialierOptions
.
Depending on how big your plugin is and what it does, you most likely won't have as much work as it might seem like from our notes above - we've included comprehensive guide to aid you with upgrade, but it's expected that majority of plugin developers will be fine just changing [JsonProperty]
to [JsonInclude]
, and maybe adding [JsonPropertyName]
on top of it.
Like you, we also needed to adapt all of our existing ASF code to STJ - this is why you can find a lot of examples of expected/required changes in our commit 6b0bf0f, feel free to use it as a reference in regards to notes above, and if you need help, remember you can always reach us through usual support channels, especially #dev-plugins
on our Discord server.
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 a donation. 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!
ArchiSteamFarm V5.5.3.4
Changelog
Changes since V5.5.2.3:
- Added support for private games. ASF will now detect and skip private games from farming, as per your privacy preferences (@JustArchi #3109).
- Added built-in crash protection. The process will now freeze by default with an error if it detects constant crashing upon each restart (@JustArchi).
- Added slight delay upon receiving new items notification during farming, to fight with potential cache issues - this might help ASF not detecting updated cards remaining right away (@JustArchi).
- Our docker containers now include main ASF binary files in
/asf
rather than/app
. There is no change in usage for the users, since/app
is still being used as a working directory throughASF_PATH
like before (@JustArchi). - Slightly improved load-balancing in STD module to avoid excessive work right after login (@JustArchi).
- Slightly improved security against
IPCPassword
side-channel attempts (@LRFLEW #3142). - Removed deprecated in the previous release functions and mappings (@JustArchi).
- Latest ASF-ui with new features, improvements and bugfixes (@MrBurrBurr).
- Updated localization provided by our community (@JustArchi-ArchiBot).
- Usual amount of other core improvements, optimizations and bugfixes (@JustArchi).
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 a donation. 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!
ArchiSteamFarm V5.5.3.3
Notice
Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features and rewritten implementations. If you don't consider yourself advanced user, please download latest stable release instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF release cycle if you'd like to learn more.
Changelog
Changes since V5.5.2.3:
- Added support for private games. ASF will now detect and skip private games from farming, as per your privacy preferences (@JustArchi #3109).
- Added built-in crash protection. The process will now freeze by default with an error if it detects constant crashing upon each restart (@JustArchi).
- Added slight delay upon receiving new items notification during farming, to fight with potential cache issues - this might help ASF not detecting updated cards remaining right away (@JustArchi).
- Our docker containers now include main ASF binary files in
/asf
rather than/app
. There is no change in usage for the users, since/app
is still being used as a working directory throughASF_PATH
like before (@JustArchi). - Slightly improved load-balancing in STD module to avoid excessive work right after login (@JustArchi).
- Removed deprecated in the previous release functions and mappings (@JustArchi).
- Latest ASF-ui with new features, improvements and bugfixes (@MrBurrBurr).
- Updated localization provided by our community (@JustArchi-ArchiBot).
- Usual amount of other core improvements, optimizations and bugfixes (@JustArchi).
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 a donation. 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!
ArchiSteamFarm V5.5.3.2
Notice
Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features and rewritten implementations. If you don't consider yourself advanced user, please download latest stable release instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF release cycle if you'd like to learn more.
Changelog
Changes since V5.5.2.3:
- Added support for private games. ASF will now detect and skip private games from farming, as per your privacy preferences (@JustArchi #3109).
- Added built-in crash protection. The process will now freeze by default with an error if it detects constant crashing upon each restart (@JustArchi).
- Our docker containers now include main ASF binary files in
/asf
rather than/app
. There is no change in usage for the users, since/app
is still being used as a working directory throughASF_PATH
like before (@JustArchi). - Added slight delay upon receiving new items notification during farming, to fight with potential cache issues - this might help ASF not detecting updated cards remaining right away (@JustArchi).
- Slightly improved load-balancing in STD module to avoid excessive work right after login (@JustArchi).
- Removed deprecated in the previous release functions and mappings (@JustArchi).
- Latest ASF-ui with new features, improvements and bugfixes (@MrBurrBurr).
- Updated localization provided by our community (@JustArchi-ArchiBot).
- Usual amount of other core improvements, optimizations and bugfixes (@JustArchi).
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 a donation. 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!
ArchiSteamFarm V5.5.3.1
Notice
Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features and rewritten implementations. If you don't consider yourself advanced user, please download latest stable release instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF release cycle if you'd like to learn more.
Changelog
Changes since V5.5.2.3:
- Added built-in crash protection. The process will now freeze by default with an error if it detects constant crashing upon each restart (@JustArchi).
- Slightly improved load-balancing in STD module to avoid excessive work right after login (@JustArchi).
- Removed deprecated in the previous release functions and mappings (@JustArchi).
- Latest ASF-ui with new features, improvements and bugfixes (@MrBurrBurr).
- Updated localization provided by our community (@JustArchi-ArchiBot).
- Usual amount of other core improvements, optimizations and bugfixes (@JustArchi).
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 a donation. 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!