Bot releases are visible (Hide)
Published by JustArchi-ArchiBot 7 months ago
This is stable release candidate. Check out ASF release cycle if you'd like to learn more.
Changes since V6.0.0.3:
PluginsUpdateMode
and PluginsUpdateList
global config properties (@JustArchi #3151).update
command, simply append !
character to the end of update channel (@JustArchi).updateplugins
command, which allows to update plugins manually on demand, similar to update
command that updates ASF - also supports !
downgrading (@JustArchi).FamilySharing
access to the bot instance automatically on top of the old family sharing system, which is still being used (@JustArchi #3162).FamilyJoin
2FA confirmation type (@ezhevita #3166).--minimized
command-line switch also for Linux and OS X (@ezhevita #3158 #3159).Changes for plugin creators:
IGitHubPluginUpdates
and IPluginUpdates
. First one allows you to easily implement GitHub-based updates based on project structure derived from our plugin template, you need only to specify RepositoryName
in majority of cases. Second one allows you to implement custom logic for updates, especially those that are not provided through GitHub.ArchiHandler.GetMyInventoryAsync()
method for fetching bot's own inventory now. While previous method in ArchiWebHandler
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 in ArchiHandler
as well as ArchiWebHandler
- you might need to do some small code edits to satisfy previous functionality. Significant change includes moving EType
and ERarity
enums to their own definitions of EAssetType
and EAssetRarity
.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!
Published by JustArchi-ArchiBot 7 months ago
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.
Changes since V6.0.0.3:
PluginsUpdateMode
and PluginsUpdateList
global config properties (@JustArchi #3151).updateplugins
command, which allows to update plugins manually on demand, similar to update
command that updates ASF.FamilySharing
access to the bot instance automatically on top of the old family sharing system, which is still being used (@JustArchi #3162).FamilyJoin
2FA confirmation type (@ezhevita #3166).update
command, simply append !
character to the end of update channel (@JustArchi).--minimized
command-line switch also for Linux and OS X (@ezhevita #3158 #3159).Changes for plugin creators:
IGitHubPluginUpdates
and IPluginUpdates
. First one allows you to easily implement GitHub-based updates based on project structure derived from our plugin template, you need only to specify RepositoryName
in majority of cases. Second one allows you to implement custom logic for updates, especially those that are not provided through GitHub.ArchiHandler.GetMyInventoryAsync()
method for fetching bot's own inventory now. While previous method in ArchiWebHandler
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 in ArchiHandler
as well as ArchiWebHandler
- you might need to do some small code edits to satisfy previous functionality. Significant change includes moving EType
and ERarity
enums to their own definitions of EAssetType
and EAssetRarity
.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!
Published by JustArchi-ArchiBot 7 months ago
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.
Changes since V6.0.0.3:
PluginsUpdateMode
and PluginsUpdateList
global config properties (@JustArchi #3151).updateplugins
command, which allows to update plugins manually on demand, similar to update
command that updates ASF.FamilySharing
access to the bot instance automatically on top of the old family sharing system, which is still being used (@JustArchi #3162).FamilyJoin
2FA confirmation type (@ezhevita #3166).update
command, simply append !
character to the end of update channel (@JustArchi).--minimized
command-line switch also for Linux and OS X (@ezhevita #3158 #3159).Changes for plugin creators:
IGitHubPluginUpdates
and IPluginUpdates
. First one allows you to easily implement GitHub-based updates based on project structure derived from our plugin template, you need only to specify RepositoryName
in majority of cases. Second one allows you to implement custom logic for updates, especially those that are not provided through GitHub.ArchiHandler.GetMyInventoryAsync()
method for fetching bot's own inventory now. While previous method in ArchiWebHandler
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 in ArchiHandler
as well as ArchiWebHandler
- you might need to do some small code edits to satisfy previous functionality. Significant change includes moving EType
and ERarity
enums to their own definitions of EAssetType
and EAssetRarity
.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!
Published by JustArchi-ArchiBot 7 months ago
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.
Changes since V6.0.0.3:
PluginsUpdateMode
and PluginsUpdateList
global config properties (@JustArchi #3151).FamilySharing
access to the bot instance automatically on top of the old family sharing system, which is still being used (@JustArchi #3162).--minimized
command-line switch also for Linux and OS X (@ezhevita #3158 #3159).Changes for plugin creators:
IGitHubPluginUpdates
and IPluginUpdates
. First one allows you to easily implement GitHub-based updates based on project structure derived from our plugin template, you need only to specify RepositoryName
in majority of cases. Second one allows you to implement custom logic for updates, especially those that are not provided through GitHub.ArchiHandler.GetMyInventoryAsync()
method for fetching bot's own inventory now. While previous method in ArchiWebHandler
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 in ArchiHandler
as well as ArchiWebHandler
- you might need to do some small code edits to satisfy previous functionality. Significant change includes moving EType
and ERarity
enums to their own definitions of EAssetType
and EAssetRarity
.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!
Published by JustArchi-ArchiBot 7 months ago
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.
Changes since V6.0.0.3:
PluginsUpdateMode
and PluginsUpdateList
global config properties (@JustArchi #3151).FamilySharing
access to the bot instance automatically on top of the old family sharing system, which is still being used (@JustArchi #3162).--minimized
command-line switch also for Linux and OS X (@ezhevita #3158 #3159).Changes for plugin creators:
IGitHubPluginUpdates
and IPluginUpdates
. First one allows you to easily implement GitHub-based updates based on project structure derived from our plugin template, you need only to specify RepositoryName
in majority of cases. Second one allows you to implement custom logic for updates, especially those that are not provided through GitHub.ArchiHandler.GetMyInventoryAsync()
method for fetching bot's own inventory now. While previous method in ArchiWebHandler
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 in ArchiHandler
as well as ArchiWebHandler
- you might need to do some small code edits to satisfy previous functionality. Significant change includes moving EType
and ERarity
enums to their own definitions of EAssetType
and EAssetRarity
.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!
Published by JustArchi-ArchiBot 7 months ago
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.
Changes since V6.0.0.3:
PluginsUpdateMode
and PluginsUpdateList
global config properties (@JustArchi #3151).FamilySharing
access to the bot instance automatically on top of the old family sharing system, which is still being used (@JustArchi #3162).--minimized
command-line switch also for Linux and OS X (@ezhevita #3158 #3159).Changes for plugin creators:
IGitHubPluginUpdates
and IPluginUpdates
. First one allows you to easily implement GitHub-based updates based on project structure derived from our plugin template, you need only to specify RepositoryName
in majority of cases. Second one allows you to implement custom logic for updates, especially those that are not provided through GitHub.ArchiHandler.GetMyInventoryAsync()
method for fetching bot's own inventory now. While previous method in ArchiWebHandler
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 in ArchiHandler
as well as ArchiWebHandler
- you might need to do some small code edits to satisfy previous functionality. Significant change includes moving EType
and ERarity
enums to their own definitions of EAssetType
and EAssetRarity
.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!
Published by JustArchi-ArchiBot 7 months ago
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.
Changes since V6.0.0.3:
PluginsUpdateMode
and PluginsUpdateList
global config properties (@JustArchi #3151).--minimized
command-line switch also for Linux and OS X (@ezhevita #3158 #3159).Changes for plugin creators:
IGitHubPluginUpdates
and IPluginUpdates
. First one allows you to easily implement GitHub-based updates based on project structure derived from our plugin template, you need only to specify RepositoryName
in majority of cases. Second one allows you to implement custom logic for updates, especially those that are not provided through GitHub.ArchiHandler.GetMyInventoryAsync()
method for fetching bot's own inventory now. While previous method in ArchiWebHandler
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 in ArchiHandler
as well as ArchiWebHandler
- you might need to do some small code edits to satisfy previous functionality. Significant change includes moving EType
and ERarity
enums to their own definitions of EAssetType
and EAssetRarity
.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!
Published by JustArchi-ArchiBot 7 months ago
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.
Changes since V6.0.0.3:
PluginsUpdateMode
and PluginsUpdateList
global config properties (@JustArchi #3151).--minimized
command-line switch also for Linux and OS X (@ezhevita #3158 #3159).Changes for plugin creators:
IGitHubPluginUpdates
and IPluginUpdates
. First one allows you to easily implement GitHub-based updates based on project structure derived from our plugin template, you need only to specify RepositoryName
in majority of cases. Second one allows you to implement custom logic for updates, especially those that are not provided through GitHub.ArchiHandler.GetMyInventoryAsync()
method for fetching bot's own inventory now. While previous method in ArchiWebHandler
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 in ArchiHandler
as well as ArchiWebHandler
- you might need to do some small code edits to satisfy previous functionality. Significant change includes moving EType
and ERarity
enums to their own definitions of EAssetType
and EAssetRarity
.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!
Published by JustArchi-ArchiBot 7 months ago
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.
Changes since V6.0.0.3:
PluginsUpdateMode
and PluginsUpdateList
global config properties (@JustArchi #3151).--minimized
command-line switch also for Linux and OS X (@ezhevita #3158 #3159).Changes for plugin creators:
IGitHubPluginUpdates
and IPluginUpdates
. First one allows you to easily implement GitHub-based updates based on project structure derived from our plugin template, you need only to specify RepositoryName
in majority of cases. Second one allows you to implement custom logic for updates, especially those that are not provided through GitHub.ArchiHandler.GetMyInventoryAsync()
method for fetching bot's own inventory now. While previous method in ArchiWebHandler
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 in ArchiHandler
as well as ArchiWebHandler
- you might need to do some small code edits to satisfy previous functionality. Significant change includes moving EType
and ERarity
enums to their own definitions of EAssetType
and EAssetRarity
.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!
Published by JustArchi-ArchiBot 7 months ago
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.
Changes since V6.0.0.3:
PluginsUpdateMode
and PluginsUpdateList
global config properties (@JustArchi #3151).--minimized
command-line switch also for Linux and OS X (@ezhevita #3158 #3159).Changes for plugin creators:
IGitHubPluginUpdates
and IPluginUpdates
. First one allows you to easily implement GitHub-based updates based on project structure derived from our plugin template, you need only to specify RepositoryName
in majority of cases. Second one allows you to implement custom logic for updates, especially those that are not provided through GitHub.ArchiHandler.GetMyInventoryAsync()
method for fetching bot's own inventory now. While previous method in ArchiWebHandler
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 in ArchiHandler
as well as ArchiWebHandler
- you might need to do some small code edits to satisfy previous functionality. Significant change includes moving EType
and ERarity
enums to their own definitions of EAssetType
and EAssetRarity
.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!
Published by JustArchi-ArchiBot 7 months ago
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.
Changes since V6.0.0.3:
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!
Published by JustArchi-ArchiBot 7 months ago
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.
Changes since V6.0.0.3:
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!
Published by JustArchi-ArchiBot 8 months ago
This is stable release candidate. Check out ASF release cycle if you'd like to learn more.
Changes since V5.5.3.4:
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).Changes for plugin creators:
OnASFInit()
and OnBotInitModules()
found in IASF
and IBotModules
plugin interfaces have changed the signature of additionalConfigProperties
from JToken
to JsonElement
. 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.Newtonsoft.Json
reference in your code, and correct it as per instructions below.<PackageReference Include="Newtonsoft.Json">
reference in all your csproj
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.using Newtonsoft.Json
from each of your cs
files, those files will need a correction.[JsonProperty]
you have with [JsonInclude]
from System.Text.Json
namespace.[JsonProperty]
included custom property name, like [JsonProperty("custom")]
, add additional attribute, [JsonPropertyName("custom")]
.[JsonProperty]
was always required, like [JsonProperty(Required = Required.Always)]
, add additional attribute, [JsonRequired]
.[JsonProperty]
used disallowed nulls, like [JsonProperty(Required = Required.DisallowNull)]
, then either:DateTime
), nullable class (e.g. object?
), or otherwise null-allowed property (including System.Nullable<T>
, e.g. DateTime?
), don't add additional attribute, leave it as it is.object
) and you expect to always have a value there (extra bulletproofing against "Prop": null
), add additional [JsonDisallowNull]
attribute.{ get; }
-only before, make it { get; private init; }
instead.readonly
before, drop readonly
and make it { get; private init; }
instead.static
before, drop it, STJ doesn't serialize those, even if they're same for every instance.private MyClass() { }
, ensure it's annotated with [JsonConstructor]
- this wasn't required before in Newtonsoft, but it's mandatory in STJ now.[JsonExtensionData]
, use the same attribute from STJ, add additional [JsonInclude]
and correct JToken
to JsonElement
- also remember about { get; private init; }
.JsonConverter
before, use ToJsonObject<T>()
, ToJsonText()
(and in rare occurances, ToJsonElement()
) helper methods from ASF namespace. You can also use standard JsonSerializer
, but then you should always include custom JsonUtilities.DefaultJsonSerialierOptions
from ASF namespace, which add support for otherwise missing STJ features, such as [JsonDisallowNull]
attribute or ShouldSerializeXYZ()
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 https://github.com/JustArchiNET/ArchiSteamFarm/commit/6b0bf0f9c17f7a69c7dc2a39b7986e9a19cd85cd, 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.
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!
Published by JustArchi-ArchiBot 8 months ago
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.
Changes since V5.5.3.4:
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).Changes for plugin creators:
OnASFInit()
and OnBotInitModules()
found in IASF
and IBotModules
plugin interfaces have changed the signature of additionalConfigProperties
from JToken
to JsonElement
. 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.Newtonsoft.Json
reference in your code, and correct it as per instructions below.<PackageReference Include="Newtonsoft.Json">
reference in all your csproj
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.using Newtonsoft.Json
from each of your cs
files, those files will need a correction.[JsonProperty]
you have with [JsonInclude]
from System.Text.Json
namespace.[JsonProperty]
included custom property name, like [JsonProperty("custom")]
, add additional attribute, [JsonPropertyName("custom")]
.[JsonProperty]
was always required, like [JsonProperty(Required = Required.Always)]
, add additional attribute, [JsonRequired]
.[JsonProperty]
used disallowed nulls, like [JsonProperty(Required = Required.DisallowNull)]
, then either:System.Nullable<T>
), don't add additional attribute, leave it as it is."Prop": null
), add additional [JsonDisallowNull]
attribute.{ get; }
-only before, make it { get; private init; }
instead.readonly
before, drop readonly
and make it { get; private init; }
instead.static
before, drop it, STJ doesn't serialize those, even if they're same for every instance.private MyClass() { }
, ensure it's annotated with [JsonConstructor]
- this wasn't required before in Newtonsoft, but it's mandatory in STJ now.[JsonExtensionData]
, use the same attribute from STJ, add additional [JsonInclude]
and correct JToken
to JsonElement
- also remember about { get; private init; }
.JsonConverter
before, use ToJsonObject<T>()
, ToJsonText()
(and in rare occurances, ToJsonElement()
) helper methods from ASF namespace. You can also use standard JsonSerializer
, but then you should always include custom JsonUtilities.DefaultJsonSerialierOptions
from ASF namespace, which add support for otherwise missing STJ features, such as [JsonDisallowNull]
attribute or ShouldSerializeXYZ()
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 https://github.com/JustArchiNET/ArchiSteamFarm/commit/6b0bf0f9c17f7a69c7dc2a39b7986e9a19cd85cd, 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.
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!
Published by JustArchi-ArchiBot 8 months ago
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.
Changes since V5.5.3.4:
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).Changes for plugin creators:
OnASFInit()
and OnBotInitModules()
found in IASF
and IBotModules
plugin interfaces have changed the signature of additionalConfigProperties
from JToken
to JsonElement
. 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.Newtonsoft.Json
reference in your code, and correct it as per instructions below.<PackageReference Include="Newtonsoft.Json">
reference in all your csproj
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.using Newtonsoft.Json
from each of your cs
files, those files will need a correction.[JsonProperty]
you have with [JsonInclude]
from System.Text.Json
namespace.[JsonProperty]
included custom property name, like [JsonProperty("custom")]
, add additional attribute, [JsonPropertyName("custom")]
.[JsonProperty]
was always required, like [JsonProperty(Required = Required.Always)]
, add additional attribute, [JsonRequired]
.[JsonProperty]
used disallowed nulls, like [JsonProperty(Required = Required.DisallowNull)]
, then either:[JsonDisallowNull]
attribute.{ get; }
-only before, make it { get; private init; }
instead.readonly
before, drop readonly
and make it { get; private init; }
instead.internal MyClass() { ... }
, ensure it's annotated with [JsonConstructor]
- this wasn't required before in Newtonsoft, but it's mandatory in STJ now.[JsonExtensionData]
, use the same attribute from STJ, add additional [JsonInclude]
and correct JToken
to JsonElement
- also remember about { get; private init; }
.JsonConverter
before, use ToJsonObject<T>()
, ToJsonText()
(and in rare occurances, ToJsonElement()
) helper methods from ASF namespace. You can also use JsonSerializer
with ASF-provided JsonUtilities.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 https://github.com/JustArchiNET/ArchiSteamFarm/commit/6b0bf0f9c17f7a69c7dc2a39b7986e9a19cd85cd, 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.
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!
Published by JustArchi-ArchiBot 8 months ago
Changes since V5.5.2.3:
/asf
rather than /app
. There is no change in usage for the users, since /app
is still being used as a working directory through ASF_PATH
like before (@JustArchi).IPCPassword
side-channel attempts (@LRFLEW #3142).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!
Published by JustArchi-ArchiBot 9 months ago
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.
Changes since V5.5.2.3:
/asf
rather than /app
. There is no change in usage for the users, since /app
is still being used as a working directory through ASF_PATH
like before (@JustArchi).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!
Published by JustArchi-ArchiBot 9 months ago
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.
This is automated GitHub deployment, human-readable changelog should be available soon. In the meantime please refer to GitHub commits.
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!
Published by JustArchi-ArchiBot 9 months ago
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.
Changes since V5.5.2.3:
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!
Published by JustArchi-ArchiBot 9 months ago
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.
Changes since V5.5.2.3:
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!