Compare commits

...

2280 Commits

Author SHA1 Message Date
Łukasz Domeradzki
4a9ecc52c1 Bump 2025-12-11 20:22:46 +01:00
Łukasz Domeradzki
10fc914ac1 Add Winter Sale 2025 to SalesBlacklist 2025-12-11 20:22:25 +01:00
renovate[bot]
7e9c49cc79 chore(deps): update dependency scalar.aspnetcore to 2.11.5 2025-12-11 06:32:14 +00:00
renovate[bot]
ab58886d29 chore(deps): update asf-ui digest to c703223 2025-12-11 02:38:02 +00:00
ArchiBot
a5740a43db Automatic translations update 2025-12-11 02:30:45 +00:00
renovate[bot]
223f2b98cb chore(deps): update dotnet monorepo to 10.0.1 2025-12-10 06:31:16 +00:00
renovate[bot]
69b150c8a0 chore(deps): update dependency scalar.aspnetcore to 2.11.3 2025-12-10 02:52:39 +00:00
ArchiBot
f4ea1d44ac Automatic translations update 2025-12-10 02:29:24 +00:00
renovate[bot]
d02504b914 chore(deps): update dependency scalar.aspnetcore to 2.11.2 2025-12-09 03:35:28 +00:00
ArchiBot
c363af8c3a Automatic translations update 2025-12-09 02:27:11 +00:00
Łukasz Domeradzki
c06a22ec93 Bump 2025-12-08 23:33:24 +01:00
Łukasz Domeradzki
ed19d7e3bf Misc, bump 2025-12-08 23:32:17 +01:00
Łukasz Domeradzki
4eee2e2ac7 Fix authentication flow when reaching max failures in credentials provider
This one is tricky, previously we've properly handled max failures, and told SK2 to abort the request with operation canceled exception, which we even handled back in bot flow, so it looked OK at first, but the bot didn't do anything with that, which resulted in forced TryAnotherCM disconnection after 1 minute of inactivity.

Since we need to be informed what to do in such case, simple cancellation of flow is not enough, we require a custom exception to handle, which will tell us the precise reason for failure + possible count of them, and that will in result allow us to react accordingly in the bot flow, e.g. by stopping the bot if needed.
2025-12-08 23:25:15 +01:00
Łukasz Domeradzki
90fe1a9448 Bump 2025-12-08 21:55:29 +01:00
Łukasz Domeradzki
8c26dcb7c2 Misc 2025-12-08 21:55:24 +01:00
ArchiBot
ba8150b27a Automatic translations update 2025-12-08 02:28:30 +00:00
ArchiBot
612b3dd3ef Automatic translations update 2025-12-06 02:23:51 +00:00
renovate[bot]
a551568f2b chore(deps): update dependency scalar.aspnetcore to 2.11.1 2025-12-04 20:53:14 +00:00
renovate[bot]
31615ef64d chore(deps): update asf-ui digest to 00bfe2e 2025-12-03 13:05:45 +00:00
renovate[bot]
0f0f1bfcd3 chore(deps): update actions/setup-node action to v6.1.0 2025-12-03 08:41:07 +00:00
renovate[bot]
702e27c466 chore(deps): update asf-ui digest to 93e8a77 2025-12-03 04:40:17 +00:00
renovate[bot]
921263674d chore(deps): update actions/checkout action to v6.0.1 2025-12-02 17:32:57 +00:00
renovate[bot]
5110d6d9f9 chore(deps): update crowdin/github-action action to v2.13.0 2025-12-02 10:40:58 +00:00
ArchiBot
5f622128e4 Automatic translations update 2025-11-30 02:33:42 +00:00
ArchiBot
6eee3fb4d9 Automatic translations update 2025-11-29 02:23:49 +00:00
ArchiBot
0aa777734a Automatic translations update 2025-11-28 02:24:18 +00:00
renovate[bot]
be789d706b chore(deps): update wiki digest to afb2ccd 2025-11-27 15:36:14 +00:00
renovate[bot]
03bfc169bb chore(deps): update dependency jetbrains.annotations.sources to 2025.2.4 2025-11-27 03:43:34 +00:00
ArchiBot
12d26bfd60 Automatic translations update 2025-11-27 02:23:56 +00:00
ArchiBot
cb31836c34 Automatic translations update 2025-11-26 02:25:47 +00:00
renovate[bot]
f091707b0d chore(deps): update dependency markdig.signed to 0.44.0 2025-11-25 09:44:27 +00:00
renovate[bot]
f4467fcd38 chore(deps): update actions/setup-dotnet action to v5.0.1 2025-11-25 05:45:11 +00:00
ArchiBot
f00b6bfdf1 Automatic translations update 2025-11-25 02:25:49 +00:00
Łukasz Domeradzki
bbfe0e40c5 Misc 2025-11-24 12:03:28 +01:00
Łukasz Domeradzki
e1e928c4ca Misc
Thanks @xPaw
2025-11-24 11:12:30 +01:00
Pavel Djundik
29cb094430 Optimize generating totp codes (#3512) 2025-11-24 11:11:46 +01:00
Łukasz Domeradzki
dfd2bd9ac4 Add additional OSes to test CI for 2025-11-24 10:42:52 +01:00
ArchiBot
c65ffa44d9 Automatic translations update 2025-11-24 02:30:30 +00:00
Łukasz Domeradzki
cf84c19a1a Bump 2025-11-23 23:48:18 +01:00
renovate[bot]
252e498d8b chore(deps): update asf-ui digest to e2d9422 2025-11-23 05:43:21 +00:00
ArchiBot
1e3a5a5176 Automatic translations update 2025-11-23 02:35:10 +00:00
ArchiBot
c21ca7dbb3 Automatic translations update 2025-11-22 02:22:37 +00:00
renovate[bot]
f7b5699172 chore(deps): update asf-ui digest to 5456569 2025-11-21 18:35:58 +00:00
renovate[bot]
2793775f26 chore(deps): update asf-ui digest to 64ee4fe 2025-11-20 18:29:23 +00:00
renovate[bot]
ab54040d3b chore(deps): update actions/checkout action to v6 (#3509)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-20 19:28:43 +01:00
renovate[bot]
36225c5b93 chore(deps): update dependency humanizer to 3.0.1 2025-11-20 05:06:44 +00:00
renovate[bot]
647dcb5834 chore(deps): update dependency scalar.aspnetcore to 2.11.0 2025-11-19 21:48:11 +00:00
renovate[bot]
12e59a649a chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.15.0 2025-11-19 09:59:04 +00:00
renovate[bot]
f85c36e8ee chore(deps): update actions/checkout action to v5.0.1 2025-11-19 06:02:04 +00:00
ArchiBot
7e4878a3f1 Automatic translations update 2025-11-19 02:24:20 +00:00
renovate[bot]
35aeee1b63 chore(deps): update asf-ui digest to e0c8543 2025-11-18 13:10:03 +00:00
ArchiBot
6f1dffbc01 Automatic translations update 2025-11-18 02:24:16 +00:00
ArchiBot
f6ae839a2f Automatic translations update 2025-11-17 02:26:06 +00:00
renovate[bot]
4d97862ec8 chore(deps): update wiki digest to 8dfa02f 2025-11-16 18:13:49 +00:00
renovate[bot]
84a0b59aba chore(deps): update opentelemetry-dotnet-contrib monorepo to 1.14.0 2025-11-14 05:02:20 +00:00
ArchiBot
1c9a3dbf36 Automatic translations update 2025-11-14 02:24:47 +00:00
renovate[bot]
4540b4a2da chore(deps): update dependency nlog.web.aspnetcore to 6.1.0 2025-11-13 10:02:31 +00:00
renovate[bot]
1e814a63cc chore(deps): update dependency anglesharp to 1.4.0 2025-11-13 08:03:50 +00:00
ArchiBot
f4f70ec802 Automatic translations update 2025-11-13 02:26:29 +00:00
renovate[bot]
41656011a6 chore(deps): update opentelemetry-dotnet monorepo 2025-11-12 18:46:30 +00:00
renovate[bot]
f061be0798 chore(deps): update asf-ui digest to e91078e 2025-11-12 04:50:09 +00:00
ArchiBot
c0a253213d Automatic translations update 2025-11-12 02:24:45 +00:00
Łukasz Domeradzki
67757178c1 Silence yet another warn 2025-11-11 22:42:07 +01:00
Łukasz Domeradzki
03350ce879 Misc 2025-11-11 22:22:06 +01:00
Łukasz Domeradzki
55bc802d59 Misc Rider improvements 2025-11-11 22:13:13 +01:00
Łukasz Domeradzki
a436c053a3 Bump 2025-11-11 20:30:15 +01:00
Łukasz Domeradzki
8547097e78 Closes #3508 2025-11-11 20:24:03 +01:00
Łukasz Domeradzki
a8d9844b01 JsonSerializerDefaults.Strict improvements 2025-11-11 19:50:44 +01:00
Łukasz Domeradzki
867b7270ec Further misc BGR improvements 2025-11-11 19:50:05 +01:00
Łukasz Domeradzki
970998fb4b Rewrite BGR to new OrderedDictionary<T,V> type 2025-11-11 19:27:10 +01:00
Łukasz Domeradzki
1ac4dfd6c8 Bump 2025-11-11 17:22:05 +01:00
Łukasz Domeradzki
ea2bec2f3e Big bump 2025-11-11 17:11:41 +01:00
Łukasz Domeradzki
ee0eef3761 Merge remote-tracking branch 'origin/renovate/mstest-monorepo' 2025-11-11 17:11:15 +01:00
renovate[bot]
fc7ac69fb1 chore(deps): update dotnet monorepo to 10.0.0 2025-11-11 15:38:40 +00:00
renovate[bot]
a32e7639ed chore(deps): update dependency mstest to 4.0.2 2025-11-11 15:38:37 +00:00
Łukasz Domeradzki
c8e8cd27b8 .NET 10 (#3482)
* Initial .NET 10 bump

* Use KnownIPNetworks

* .NET 10 library updates

* First round of trimming fixes

* Fix docker in .NET 10

* Resolve trimming warning

* Bump packages to rc2
2025-11-11 16:37:43 +01:00
renovate[bot]
245daec72e chore(deps): update dependency nlog.web.aspnetcore to 6.0.6 2025-11-09 21:55:39 +00:00
Łukasz Domeradzki
02d18aecf4 Bump 2025-11-09 22:55:23 +01:00
Łukasz Domeradzki
469dee4595 Bump 2025-11-09 22:55:08 +01:00
Łukasz Domeradzki
2e0df5c82b Change the bot when distributing, not keeping missing games and having invalid key 2025-11-09 22:53:47 +01:00
renovate[bot]
677a5503e2 chore(deps): update dependency scalar.aspnetcore to 2.10.3 2025-11-09 01:56:39 +00:00
renovate[bot]
566195129f chore(deps): update dependency anglesharp to 1.3.1 (#3507)
* chore(deps): update dependency anglesharp to 1.3.1

* Resolve new warnings

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Łukasz Domeradzki <JustArchi@JustArchi.net>
2025-11-08 23:46:36 +01:00
Łukasz Domeradzki
b872340c5d Add more debug logging 2025-11-06 21:02:11 +01:00
renovate[bot]
1c4fba6b2e chore(deps): update dependency humanizer to 3.0.0-rc.30 (#3505)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-05 11:59:28 +00:00
renovate[bot]
2adb552618 chore(deps): update asf-ui digest to 184a7a2 2025-11-05 02:01:53 +00:00
renovate[bot]
59e27bc41d chore(deps): update dependency scalar.aspnetcore to 2.10.1 2025-11-04 22:40:01 +00:00
Vita Chumakova
5d1234e2d6 fix: add workaround for .NET 10 SDK breaking change (#3506) 2025-11-04 23:39:12 +01:00
ArchiBot
1f74f9c721 Automatic translations update 2025-11-04 02:23:52 +00:00
renovate[bot]
fb2dcb04ae chore(deps): update dependency scalar.aspnetcore to 2.10.0 2025-11-03 19:43:09 +00:00
ArchiBot
abdaa38389 Automatic translations update 2025-11-03 02:27:14 +00:00
ArchiBot
0830678526 Automatic translations update 2025-11-02 02:27:42 +00:00
renovate[bot]
cb827c7ab5 chore(deps): update wiki digest to 0b57c9c 2025-11-01 21:51:56 +00:00
renovate[bot]
e7ae287f38 chore(deps): update asf-ui digest to 5d50aca 2025-10-31 20:31:26 +00:00
ArchiBot
ffb5322ecb Automatic translations update 2025-10-30 02:24:56 +00:00
renovate[bot]
1ec78cf6a2 chore(deps): update asf-ui digest to 90434c7 2025-10-29 03:58:27 +00:00
ArchiBot
681bd7abcf Automatic translations update 2025-10-28 02:23:31 +00:00
renovate[bot]
1a906aac74 chore(deps): update asf-ui digest to 78842da 2025-10-27 21:37:33 +00:00
ArchiBot
57553fbbb3 Automatic translations update 2025-10-27 02:28:23 +00:00
Łukasz Domeradzki
738d949f1f Misc 2025-10-26 23:15:38 +01:00
Łukasz Domeradzki
b362408704 Bump 2025-10-26 11:28:36 +01:00
Łukasz Domeradzki
32238ba07c Closes #3483 2025-10-26 11:26:48 +01:00
renovate[bot]
2172f8b9eb chore(deps): update asf-ui digest to 3e71e0a 2025-10-24 20:24:29 +00:00
renovate[bot]
609b4914bd chore(deps): update github artifact actions (#3497)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 22:23:44 +02:00
Łukasz Domeradzki
e23e507a68 Bump 2025-10-24 21:50:55 +02:00
renovate[bot]
f69ee6364d chore(deps): update asf-ui digest to a46fdc3 2025-10-24 04:45:55 +00:00
renovate[bot]
a468f9301d chore(deps): update opentelemetry-dotnet-contrib monorepo to 1.13.0 2025-10-22 11:11:05 +00:00
renovate[bot]
efa541d68d chore(deps): update dependency markdig.signed to 0.43.0 2025-10-21 11:34:18 +00:00
ArchiBot
068ad1b06a Automatic translations update 2025-10-21 02:23:27 +00:00
renovate[bot]
f3bec05e1f chore(deps): update asf-ui digest to c906498 2025-10-20 18:34:44 +00:00
renovate[bot]
a84dc1b01e chore(deps): update crowdin/github-action action to v2.12.0 2025-10-20 09:46:36 +00:00
renovate[bot]
ca4a3ee972 chore(deps): update dependency scalar.aspnetcore to 2.9.0 2025-10-15 13:53:30 +00:00
Łukasz Domeradzki
1c817426b8 Misc 2025-10-15 13:06:14 +02:00
Łukasz Domeradzki
5ec9bc14a9 Misc 2025-10-15 09:09:46 +02:00
renovate[bot]
67f451069a chore(deps): update dotnet monorepo to 9.0.10 2025-10-15 03:41:02 +00:00
ArchiBot
4eb73af250 Automatic translations update 2025-10-15 02:23:14 +00:00
renovate[bot]
ef60e23a53 chore(deps): update dependency mstest to 4.0.1 2025-10-14 20:09:53 +00:00
renovate[bot]
2b57d0a9e6 chore(deps): update asf-ui digest to 4386078 2025-10-14 14:05:08 +00:00
Łukasz Domeradzki
ae183ae3ad Slightly improve error-reporting related to cross-process semaphore 2025-10-14 13:01:34 +02:00
renovate[bot]
725a3a5106 chore(deps): update actions/setup-node action to v6 (#3494)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-14 12:30:12 +02:00
ArchiBot
289f573b00 Automatic translations update 2025-10-14 02:22:34 +00:00
renovate[bot]
a8a6e658e2 chore(deps): update wiki digest to da954cf 2025-10-13 21:56:40 +00:00
Łukasz Domeradzki
797bb6fc98 Bump 2025-10-11 17:00:21 +02:00
Łukasz Domeradzki
41f61503fb Misc 2025-10-11 16:59:06 +02:00
ArchiBot
764c979560 Automatic translations update 2025-10-11 02:20:05 +00:00
renovate[bot]
a0531ff1f3 chore(deps): update dependency opentelemetry.exporter.prometheus.aspnetcore to 1.13.1-beta.1 2025-10-10 10:40:31 +00:00
renovate[bot]
30d5a4cdc2 chore(deps): update dependency opentelemetry.extensions.hosting to 1.13.1 2025-10-09 20:56:31 +00:00
renovate[bot]
750ff1a09a chore(deps): update dependency nlog.web.aspnetcore to 6.0.5 2025-10-09 14:30:11 +00:00
renovate[bot]
c5cc247e2d chore(deps): update dependency humanizer to 3.0.0-rc.6 2025-10-09 11:32:16 +00:00
renovate[bot]
813bac5e52 chore(deps): update dependency scalar.aspnetcore to 2.8.11 2025-10-08 21:59:49 +00:00
renovate[bot]
267cf1597e chore(deps): update dependency mstest to v4 (#3493)
* chore(deps): update dependency mstest to v4

* Misc improvement

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Łukasz Domeradzki <JustArchi@JustArchi.net>
2025-10-07 22:12:51 +02:00
Łukasz Domeradzki
4716312c3f Handle super rare login failure 2025-10-07 21:35:01 +02:00
renovate[bot]
31b735c3d3 chore(deps): update dependency scalar.aspnetcore to 2.8.10 2025-10-03 01:33:33 +00:00
renovate[bot]
e9baae4d03 chore(deps): update opentelemetry-dotnet monorepo 2025-10-02 06:26:19 +00:00
ArchiBot
f97142200f Automatic translations update 2025-10-02 02:21:12 +00:00
renovate[bot]
34bc25b023 chore(deps): update dependency mstest to 3.11.0 2025-10-01 21:18:07 +00:00
renovate[bot]
ede24b9fd5 chore(deps): update peter-evans/dockerhub-description action to v5 (#3490)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-01 23:17:07 +02:00
ArchiBot
c656b61ce2 Automatic translations update 2025-10-01 02:25:26 +00:00
renovate[bot]
3fb804fbd1 chore(deps): update dependency mstest to 3.10.5 2025-09-30 15:43:59 +00:00
ArchiBot
eb5f126c76 Automatic translations update 2025-09-30 02:21:04 +00:00
renovate[bot]
815d0732c3 chore(deps): update dependency scalar.aspnetcore to 2.8.8 2025-09-29 20:30:19 +00:00
renovate[bot]
a517cf216d chore(deps): update docker/login-action action to v3.6.0 2025-09-29 11:06:26 +00:00
ArchiBot
e5a6eede24 Automatic translations update 2025-09-29 02:22:48 +00:00
ArchiBot
7a3c28f3f6 Automatic translations update 2025-09-28 02:24:01 +00:00
Łukasz Domeradzki
49381cea84 Bump 2025-09-27 14:28:20 +02:00
renovate[bot]
9afa92a22d chore(deps): update dependency scalar.aspnetcore to 2.8.7 2025-09-26 18:39:59 +00:00
ArchiBot
6719903012 Automatic translations update 2025-09-26 02:21:47 +00:00
ArchiBot
2f0047e6c0 Automatic translations update 2025-09-25 02:23:09 +00:00
Łukasz Domeradzki
71a708b515 Misc 2025-09-24 23:22:16 +02:00
Łukasz Domeradzki
50b9011323 Add hashing unit test 2025-09-24 23:17:25 +02:00
renovate[bot]
e4bd4e2371 chore(deps): update wiki digest to 9a11b24 2025-09-24 13:30:51 +00:00
renovate[bot]
f662dc29ed chore(deps): update asf-ui digest to d3b89fc 2025-09-24 04:56:16 +00:00
renovate[bot]
e4ffd5c6ab chore(deps): update dependency scalar.aspnetcore to 2.8.6 2025-09-24 02:34:56 +00:00
ArchiBot
588bc9e691 Automatic translations update 2025-09-24 02:22:26 +00:00
renovate[bot]
3e98887954 chore(deps): update asf-ui digest to 812f732 2025-09-23 11:02:33 +00:00
renovate[bot]
78319f65eb chore(deps): update wiki digest to 4d6696e 2025-09-23 05:12:49 +00:00
Łukasz Domeradzki
c467fd39c1 Add donation section to README 2025-09-23 04:59:56 +02:00
renovate[bot]
896bd82f97 chore(deps): update asf-ui digest to f671af8 2025-09-20 08:24:51 +00:00
renovate[bot]
3a87d7536b chore(deps): update dependency scalar.aspnetcore to 2.8.5 2025-09-19 22:54:28 +00:00
Łukasz Domeradzki
1b245a568f Apply selected .NET 10 improvements 2025-09-19 23:19:24 +02:00
ArchiBot
95eb6b2c63 Automatic translations update 2025-09-19 02:22:16 +00:00
ArchiBot
616d5d2cdb Automatic translations update 2025-09-18 02:20:49 +00:00
renovate[bot]
9e1edc58ab chore(deps): update asf-ui digest to 65a5f0e 2025-09-16 17:57:48 +00:00
renovate[bot]
7df227b584 chore(deps): update dependency scalar.aspnetcore to 2.8.4 2025-09-16 14:30:09 +00:00
ArchiBot
be0f2ab537 Automatic translations update 2025-09-16 02:20:50 +00:00
ArchiBot
885c679033 Automatic translations update 2025-09-15 02:23:39 +00:00
renovate[bot]
0575e714ae chore(deps): update asf-ui digest to 6797c76 2025-09-14 21:07:28 +00:00
renovate[bot]
d1f3074c90 chore(deps): update dependency markdig.signed to 0.42.0 2025-09-14 13:58:14 +00:00
renovate[bot]
3f3a3b161b chore(deps): update dependency scalar.aspnetcore to 2.8.3 2025-09-14 09:42:27 +00:00
renovate[bot]
c5af29ddde chore(deps): update asf-ui digest to 3d70e36 2025-09-14 03:27:08 +00:00
ArchiBot
40dd6100ab Automatic translations update 2025-09-14 02:22:58 +00:00
ArchiBot
42cd1a85d9 Automatic translations update 2025-09-13 02:21:32 +00:00
ArchiBot
c196b46337 Automatic translations update 2025-09-12 02:20:35 +00:00
renovate[bot]
e5e133475b chore(deps): update dependency nlog.web.aspnetcore to 6.0.4 2025-09-11 09:30:41 +00:00
ArchiBot
67d191bbf3 Automatic translations update 2025-09-11 02:22:07 +00:00
renovate[bot]
c9502f8462 chore(deps): update dependency scalar.aspnetcore to 2.8.1 2025-09-10 21:33:08 +00:00
ArchiBot
3dbc3b1c5a Automatic translations update 2025-09-10 02:20:41 +00:00
renovate[bot]
c54928bb64 chore(deps): update dependency scalar.aspnetcore to 2.8.0 2025-09-09 22:34:05 +00:00
renovate[bot]
d40d7f0566 chore(deps): update dotnet monorepo to 9.0.9 2025-09-09 16:38:08 +00:00
renovate[bot]
b73ddab2e2 chore(deps): update dependency scalar.aspnetcore to 2.7.4 2025-09-09 14:34:49 +00:00
Łukasz Domeradzki
069523adcd Misc 2025-09-09 15:37:36 +02:00
renovate[bot]
fc310ee24c chore(deps): update dependency scalar.aspnetcore to 2.7.3 2025-09-09 03:27:57 +00:00
ArchiBot
b53d9a0f6f Automatic translations update 2025-09-09 02:22:25 +00:00
Łukasz Domeradzki
035ff7dfe7 Bump 2025-09-08 23:42:26 +02:00
Łukasz Domeradzki
2bbf197108 Add extra synchronization to IPC state management
Thanks @ezhevita
2025-09-08 23:39:29 +02:00
Łukasz Domeradzki
5d2665207a Handle one more case of Steam being down
Thanks @ezhevita
2025-09-08 23:30:11 +02:00
Łukasz Domeradzki
8618b01800 Fix for edge case of MatchableTypes being empty
Thanks @ezhevita
2025-09-08 23:17:23 +02:00
Łukasz Domeradzki
d59d51ae33 Bump 2025-09-08 22:51:03 +02:00
Łukasz Domeradzki
a313a19cec Add support for machine name 2025-09-08 22:50:23 +02:00
Łukasz Domeradzki
c5f7565ac0 Misc 2025-09-08 03:42:12 +02:00
Łukasz Domeradzki
f52486528b Cache generated swagger.json by default 2025-09-08 03:29:17 +02:00
Łukasz Domeradzki
d17399d98b Misc 2025-09-08 02:42:33 +02:00
Łukasz Domeradzki
1eadaad9bd Fix rp command not working with badge upgrades
Of course volvo had to use different endpoint for that, it'd be too easy otherwise
2025-09-08 02:41:31 +02:00
ArchiBot
22e424a78c Automatic translations update 2025-09-07 02:22:59 +00:00
renovate[bot]
712b57e46b chore(deps): update asf-ui digest to 96606b8 2025-09-06 08:37:05 +00:00
renovate[bot]
bc914f0a09 chore(deps): update asf-ui digest to 64ee49e 2025-09-05 21:29:58 +00:00
renovate[bot]
1da2ccbb1c chore(deps): update asf-ui digest to 4e72d57 2025-09-05 03:11:25 +00:00
Łukasz Domeradzki
c58d802c30 Enable immutable releases 2025-09-05 00:43:05 +02:00
Łukasz Domeradzki
8cdd5c69e6 Remove workaround after JB fixes 2025-09-04 23:55:41 +02:00
renovate[bot]
2b61e80336 chore(deps): update ncipollo/release-action action to v1.20.0 2025-09-04 20:24:07 +00:00
renovate[bot]
d831c47fcd chore(deps): update crowdin/github-action action to v2.11.0 2025-09-04 17:11:33 +00:00
renovate[bot]
53955cb9d2 chore(deps): update dependency mstest to 3.10.4 2025-09-04 15:59:08 +00:00
renovate[bot]
2d9c68c10a chore(deps): update dependency jetbrains.annotations.sources to 2025.2.2 2025-09-04 15:15:48 +00:00
renovate[bot]
c987db7941 chore(deps): update asf-ui digest to 62ed8b8 2025-09-04 12:33:08 +00:00
Łukasz Domeradzki
b1d4eb5c8c Cleanup obsolete parts (#3471) 2025-09-04 14:32:34 +02:00
renovate[bot]
c929efbf24 chore(deps): update actions/setup-node action to v5 (#3478)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 14:32:13 +02:00
renovate[bot]
0c3f379fb3 chore(deps): update actions/setup-dotnet action to v5 (#3477)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 14:32:03 +02:00
Łukasz Domeradzki
2d79ae9e7a Bump 2025-09-04 13:46:33 +02:00
ArchiBot
d0ac9b3a94 Automatic translations update 2025-09-04 02:20:39 +00:00
ArchiBot
719824b518 Automatic translations update 2025-09-01 02:32:04 +00:00
ArchiBot
f6f290878a Automatic translations update 2025-08-31 02:23:59 +00:00
renovate[bot]
4ee9bfc450 chore(deps): update actions/attest-build-provenance action to v3 (#3476)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-29 10:38:20 +02:00
Łukasz Domeradzki
d3f45fc33d JetBrains.Annotations.Sources updates 2025-08-29 09:22:54 +02:00
renovate[bot]
ee4cefc813 chore(deps): update dependency mstest to 3.10.3 (#3475)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-27 09:42:40 +02:00
renovate[bot]
4b7f570ba5 chore(deps): update asf-ui digest to 25f5d5e 2025-08-26 06:11:27 +00:00
renovate[bot]
6981018003 chore(deps): update dependency scalar.aspnetcore to 2.7.2 2025-08-26 00:53:57 +00:00
ArchiBot
380f27a0bc Automatic translations update 2025-08-25 02:26:46 +00:00
Łukasz Domeradzki
d489bebb85 Misc 2025-08-24 19:09:03 +02:00
Łukasz Domeradzki
2df1c439c4 Misc optimization 2025-08-24 15:04:20 +02:00
renovate[bot]
83ac485f19 chore(deps): update asf-ui digest to 75a61d2 2025-08-24 06:15:00 +00:00
ArchiBot
1c6bf2e828 Automatic translations update 2025-08-24 02:30:35 +00:00
renovate[bot]
bfdab76d71 chore(deps): update crowdin/github-action action to v2.10.0 (#3472)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-23 08:42:03 +00:00
ArchiBot
90dba00c07 Automatic translations update 2025-08-23 02:22:51 +00:00
renovate[bot]
1d38521819 chore(deps): update dependency scalar.aspnetcore to 2.7.0 2025-08-22 22:57:31 +00:00
ArchiBot
bc8b56018d Automatic translations update 2025-08-22 02:24:26 +00:00
renovate[bot]
073b22de40 chore(deps): update wiki digest to 44fb363 2025-08-21 19:39:18 +00:00
Łukasz Domeradzki
8bc8efe6c0 Bump 2025-08-21 13:06:33 +02:00
Łukasz Domeradzki
fe80d3029b Add support for GamingDeviceType, kill OnlinePreferences 2025-08-21 13:01:38 +02:00
ArchiBot
86410d4407 Automatic translations update 2025-08-20 02:23:58 +00:00
ArchiBot
aba19cf986 Automatic translations update 2025-08-19 02:25:24 +00:00
renovate[bot]
0a2ca64bf7 chore(deps): update wiki digest to 396caad 2025-08-18 11:30:00 +00:00
ArchiBot
4761393e88 Automatic translations update 2025-08-18 02:35:59 +00:00
renovate[bot]
298026491a chore(deps): update wiki digest to ee43c97 2025-08-17 16:49:10 +00:00
ArchiBot
2fe2c47289 Automatic translations update 2025-08-17 02:34:57 +00:00
Łukasz Domeradzki
2d968c6c14 Don't generate or publish xml documentation files by default 2025-08-16 14:05:06 +02:00
renovate[bot]
0708a4a1e2 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.14.0 2025-08-16 02:28:43 +00:00
renovate[bot]
d2c234db1f chore(deps): update asf-ui digest to 41d408b 2025-08-15 06:29:07 +00:00
ArchiBot
d2b7ffba3b Automatic translations update 2025-08-15 02:31:09 +00:00
Łukasz Domeradzki
ff2a2a728d Use new C# features for serializable files 2025-08-13 22:15:41 +02:00
ArchiBot
2b43cec8fe Automatic translations update 2025-08-13 02:29:47 +00:00
renovate[bot]
6359014017 chore(deps): update asf-ui digest to 63dc959 2025-08-12 19:12:15 +00:00
renovate[bot]
d305c3d6e5 chore(deps): update dependency mstest to 3.10.2 2025-08-12 09:38:54 +00:00
renovate[bot]
9b5c5f39a4 chore(deps): update asf-ui digest to f3053c2 2025-08-11 20:40:55 +00:00
renovate[bot]
627f88508a chore(deps): update dependency scalar.aspnetcore to 2.6.9 2025-08-11 19:49:36 +00:00
renovate[bot]
6e6f2c5675 chore(deps): update actions/checkout action to v5 (#3465)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-11 21:49:11 +02:00
renovate[bot]
7d5aaed8fb chore(deps): update actions/checkout action to v4.3.0 2025-08-11 13:07:56 +00:00
renovate[bot]
eac98c4846 chore(deps): update dependency nlog.web.aspnetcore to 6.0.3 2025-08-10 20:55:16 +00:00
Łukasz Domeradzki
f048513338 Misc optimization 2025-08-10 22:02:00 +02:00
Łukasz Domeradzki
4780031b87 Misc 2025-08-10 03:05:24 +02:00
Łukasz Domeradzki
f54d30ff42 Misc 2025-08-10 02:38:37 +02:00
renovate[bot]
17e97afb97 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.13.1 2025-08-09 04:27:32 +00:00
Łukasz Domeradzki
d79db74385 Clean unused code
It seems this call is pointless, if trade check timer is not null, it's already running, as we never initialize it without enabling it too.
2025-08-09 03:22:48 +02:00
Łukasz Domeradzki
c412a47139 Optimize memory allocations when dealing with Steam items
This removes totally unnecessary allocation of asset and description when we already have it in the response and merely initializing to correct reference.
2025-08-08 23:10:35 +02:00
Łukasz Domeradzki
2387f2462e Update ArchiSteamFarm.sln.DotSettings 2025-08-08 20:51:09 +02:00
Łukasz Domeradzki
6bd2e088fc Misc 2025-08-08 19:37:57 +02:00
Łukasz Domeradzki
b4874a05c6 Code cleanups 2025-08-08 19:32:32 +02:00
Łukasz Domeradzki
a77586ec95 Misc 2025-08-08 17:49:04 +02:00
Łukasz Domeradzki
ed9efe8d72 Misc 2025-08-08 01:05:46 +02:00
Łukasz Domeradzki
f7431b0b10 Bump 2025-08-08 01:04:34 +02:00
Łukasz Domeradzki
a340de9da8 Top commit of all time
This is how you avoid doing breaking changes, kids
2025-08-08 01:02:50 +02:00
renovate[bot]
bf11cf8a7b chore(deps): update asf-ui digest to 5c8cf52 2025-08-06 07:20:38 +00:00
renovate[bot]
b4dc8b493a chore(deps): update actions/download-artifact action to v5 (#3462)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-06 09:19:41 +02:00
renovate[bot]
ce1cf6f4b1 chore(deps): update dependency mstest to 3.10.1 2025-08-05 20:32:28 +00:00
renovate[bot]
8d6422e8b4 chore(deps): update dotnet monorepo to 9.0.8 2025-08-05 01:55:47 +00:00
renovate[bot]
b3c28266cb chore(deps): update docker/login-action action to v3.5.0 2025-08-04 15:28:12 +00:00
Łukasz Domeradzki
074f2e343f Misc optimization 2025-08-03 22:49:50 +02:00
renovate[bot]
8f6f7334a0 chore(deps): update dependency scalar.aspnetcore to 2.6.8 2025-08-03 17:30:21 +00:00
Łukasz Domeradzki
b467c22baa Misc 2025-08-03 15:19:49 +02:00
Łukasz Domeradzki
15d3dd8c74 Bump 2025-08-03 15:12:37 +02:00
Łukasz Domeradzki
2010f3e455 Bump 2025-08-03 15:12:19 +02:00
Łukasz Domeradzki
cc95917d53 Misc cleanups 2025-08-03 15:12:05 +02:00
Łukasz Domeradzki
f918fbb504 Make /Api/NLog/File more flexible in terms of log file location 2025-08-03 15:05:02 +02:00
Łukasz Domeradzki
6d4d644900 Add support for detecting history target in wrapper 2025-08-03 14:24:10 +02:00
ArchiBot
a046af7b8d Automatic translations update 2025-08-03 02:43:27 +00:00
renovate[bot]
bde00df3ad chore(deps): update dependency scalar.aspnetcore to 2.6.7 2025-08-02 19:00:59 +00:00
renovate[bot]
d1080bbb42 chore(deps): update dependency scalar.aspnetcore to 2.6.6 2025-08-02 11:15:01 +00:00
renovate[bot]
875d9be7e5 chore(deps): update asf-ui digest to f6e8455 2025-08-02 04:51:40 +00:00
ArchiBot
e683b3b9ad Automatic translations update 2025-08-02 02:33:10 +00:00
renovate[bot]
199e098704 chore(deps): update asf-ui digest to 73d10a1 2025-08-01 22:26:42 +00:00
renovate[bot]
b4cdfa3011 chore(deps): update crowdin/github-action action to v2.9.1 2025-08-01 10:07:26 +00:00
ArchiBot
92bfeb96e2 Automatic translations update 2025-08-01 02:44:48 +00:00
ArchiBot
f4c9c9de1a Automatic translations update 2025-07-31 02:37:08 +00:00
renovate[bot]
e60293a0ce chore(deps): update dependency scalar.aspnetcore to 2.6.5 2025-07-30 01:14:46 +00:00
renovate[bot]
5659818313 chore(deps): update dependency mstest to 3.10.0 (#3458)
* chore(deps): update dependency mstest to 3.10.0

* Adapt to new analyzers

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Łukasz Domeradzki <JustArchi@JustArchi.net>
2025-07-30 03:14:13 +02:00
renovate[bot]
1de5bfd809 chore(deps): update asf-ui digest to 11faf95 2025-07-29 04:46:21 +00:00
Łukasz Domeradzki
0fa3b25f12 Bump 2025-07-28 12:21:55 +02:00
Łukasz Domeradzki
02f505d962 Change null purchase_receipt_info to BadResponse 2025-07-28 12:17:10 +02:00
Łukasz Domeradzki
abdb303069 Fix for edge case that is more edge than nowadays teenagers 2025-07-28 12:03:45 +02:00
Łukasz Domeradzki
c1e5cd5d59 Add fix against null purchase_receipt_info 2025-07-28 11:57:04 +02:00
renovate[bot]
7ea0dda562 chore(deps): update asf-ui digest to cd42a02 2025-07-26 02:52:18 +00:00
ArchiBot
947e63fc61 Automatic translations update 2025-07-26 02:32:34 +00:00
Łukasz Domeradzki
882e561416 Bump 2025-07-25 13:49:41 +02:00
Łukasz Domeradzki
1e531a7259 Misc reorder 2025-07-25 13:49:12 +02:00
Outzzz
2967ae167b public api (#3456) 2025-07-25 13:47:57 +02:00
ArchiBot
089840438d Automatic translations update 2025-07-25 02:35:53 +00:00
renovate[bot]
bcd9ae047e chore(deps): update dependency opentelemetry.exporter.prometheus.aspnetcore to 1.12.0-beta.1 2025-07-24 15:55:39 +00:00
renovate[bot]
20de66a3be chore(deps): update wiki digest to ecb0e1f 2025-07-24 15:07:18 +00:00
renovate[bot]
7587f5f07a chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to v5 (#3454)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-24 17:06:40 +02:00
Łukasz Domeradzki
4ad450f0ba Update renovate.json5 2025-07-24 15:22:14 +02:00
Łukasz Domeradzki
2883f42a19 Update renovate.json5
As per https://github.com/renovatebot/renovate/discussions/37142
2025-07-24 15:17:13 +02:00
Łukasz Domeradzki
d788efbaf6 Workaround Jetbrains.Annotations issues 2025-07-24 15:06:58 +02:00
Łukasz Domeradzki
ca0bd87357 Move from JetBrains.Annotations to JetBrains.Annotations.Sources 2025-07-24 14:05:07 +02:00
renovate[bot]
e246d0dfa0 chore(deps): update asf-ui digest to 9869857 2025-07-24 08:46:15 +00:00
renovate[bot]
f93c319427 chore(deps): update asf-ui digest to d9173d5 2025-07-23 23:04:20 +00:00
renovate[bot]
eb591e3b4a chore(deps): update dependency jetbrains.annotations to v2025 (#3448)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-23 00:44:38 +02:00
renovate[bot]
37d7f14148 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.13.0 2025-07-21 23:36:17 +00:00
renovate[bot]
86b1814698 chore(deps): update dependency scalar.aspnetcore to 2.6.4 2025-07-21 13:35:49 +00:00
renovate[bot]
d15fae3674 chore(deps): update dependency nlog.web.aspnetcore to 6.0.2 2025-07-20 17:40:12 +00:00
Łukasz Domeradzki
6d3a6168d2 Bump 2025-07-19 14:41:57 +02:00
Łukasz Domeradzki
0467dc1da3 Make trade message disappear for all non-steam appids 2025-07-19 14:36:03 +02:00
Łukasz Domeradzki
d81e8d2de0 Bump 2025-07-19 13:22:05 +02:00
Łukasz Domeradzki
ec59e2e556 Add support for new trade messages acknowledge 2025-07-18 09:52:31 +02:00
ArchiBot
cfdb8c06f3 Automatic translations update 2025-07-18 02:35:51 +00:00
Łukasz Domeradzki
32bf5cd0a7 Bump 2025-07-17 13:45:20 +02:00
Łukasz Domeradzki
a0401a3962 Improve efficiency of MatchActively
Trade hold duration check made sense, but back when we were fetching inventories ourselves. Now, it's much better to find match first, as we have the full data loaded, and only if match is found, check user next.
2025-07-17 13:40:35 +02:00
renovate[bot]
4def44ed1e chore(deps): update dependency scalar.aspnetcore to 2.6.3 2025-07-17 03:52:21 +00:00
ArchiBot
bd472b68a1 Automatic translations update 2025-07-17 02:34:52 +00:00
renovate[bot]
142bac7275 chore(deps): update asf-ui digest to 1d94b49 2025-07-16 04:44:45 +00:00
ArchiBot
80d4ab1dea Automatic translations update 2025-07-16 02:34:20 +00:00
Outzzz
481c995481 new confirmation type (#3442) 2025-07-15 18:56:19 +02:00
ArchiBot
76e3059b34 Automatic translations update 2025-07-14 02:36:38 +00:00
renovate[bot]
9c6157563e chore(deps): update dependency scalar.aspnetcore to 2.6.1 2025-07-13 18:02:53 +00:00
renovate[bot]
c362900290 chore(deps): update asf-ui digest to 0822736 2025-07-12 03:10:35 +00:00
ArchiBot
1573707d39 Automatic translations update 2025-07-12 02:33:47 +00:00
ArchiBot
acce592f02 Automatic translations update 2025-07-11 02:34:06 +00:00
renovate[bot]
24cc03e4ed chore(deps): update asf-ui digest to 75cb11d 2025-07-10 22:00:47 +00:00
renovate[bot]
aec1f45023 chore(deps): update dependency scalar.aspnetcore to 2.6.0 2025-07-10 18:01:49 +00:00
renovate[bot]
e208a3cce0 chore(deps): update crowdin/github-action action to v2.9.0 2025-07-10 11:33:24 +00:00
ArchiBot
2f275e19bd Automatic translations update 2025-07-10 02:32:36 +00:00
renovate[bot]
ac8f12f438 chore(deps): update asf-ui digest to 7a782d7 2025-07-09 23:58:29 +00:00
renovate[bot]
c14580965f chore(deps): update wiki digest to c122ded 2025-07-09 17:02:47 +00:00
renovate[bot]
436a5ab3f9 chore(deps): update dotnet monorepo to 9.0.7 2025-07-09 04:24:15 +00:00
ArchiBot
3e1fde4515 Automatic translations update 2025-07-09 02:31:52 +00:00
renovate[bot]
9beec69e85 chore(deps): update asf-ui digest to 5c24f54 2025-07-08 05:00:15 +00:00
ArchiBot
a1116a87df Automatic translations update 2025-07-08 02:31:32 +00:00
renovate[bot]
cd4bc01d66 chore(deps): update dependency scalar.aspnetcore to 2.5.6 2025-07-07 20:07:16 +00:00
renovate[bot]
7e30601246 chore(deps): update wiki digest to 70b21c1 2025-07-07 13:06:35 +00:00
ArchiBot
708b3792c9 Automatic translations update 2025-07-07 02:34:03 +00:00
renovate[bot]
3c52408579 chore(deps): update wiki digest to f30f4d5 2025-07-06 12:35:34 +00:00
ArchiBot
ea5f729d58 Automatic translations update 2025-07-06 02:36:06 +00:00
renovate[bot]
4d3f7f0b5a chore(deps): update wiki digest to 522bba8 2025-07-05 14:26:30 +00:00
Łukasz Domeradzki
078f6eabdd Bump 2025-07-05 16:25:46 +02:00
Łukasz Domeradzki
6d6da98e8c Bump 2025-07-05 16:05:31 +02:00
renovate[bot]
49f1910425 chore(deps): update dependency nlog.web.aspnetcore to 6.0.1 2025-07-05 13:40:07 +00:00
renovate[bot]
4ba034f988 chore(deps): update dependency nlog.web.aspnetcore to v6 (#3438)
* chore(deps): update dependency nlog.web.aspnetcore to v6

* Adapt ASF to NLog v6

* Use another approach for NLog file archiving

* Use cached ${currentdir} to improve performance

* Misc fix

* Update suffix format

* Misc

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Łukasz Domeradzki <JustArchi@JustArchi.net>
2025-07-05 15:39:37 +02:00
ArchiBot
e93ea74def Automatic translations update 2025-07-05 02:26:37 +00:00
Łukasz Domeradzki
5dadbe9090 Allow plugins to initialize new configs with some changed properties 2025-07-03 13:12:10 +02:00
renovate[bot]
e3c1a8c5fb chore(deps): update asf-ui digest to 545f9e1 2025-07-02 23:39:29 +00:00
Łukasz Domeradzki
8e50e9553a Misc fix 2025-07-02 16:55:09 +02:00
Łukasz Domeradzki
ed47c8268b Add optional cookies to WebAPI base 2025-07-02 08:57:44 +02:00
Łukasz Domeradzki
e0cdeaf09e Bump 2025-07-01 16:14:16 +02:00
Łukasz Domeradzki
fc198d6eae Update MaxItemsInSingleInventoryRequest 2025-07-01 16:13:47 +02:00
ArchiBot
977816baa9 Automatic translations update 2025-07-01 02:37:39 +00:00
renovate[bot]
758c0a0385 chore(deps): update asf-ui digest to b984a9d 2025-06-30 07:31:35 +00:00
ArchiBot
e4d7e9dda7 Automatic translations update 2025-06-30 02:33:41 +00:00
renovate[bot]
baadfee9e0 chore(deps): update ncipollo/release-action action to v1.18.0 2025-06-29 21:11:10 +00:00
renovate[bot]
25620603b5 chore(deps): update ncipollo/release-action action to v1.17.0 2025-06-29 06:24:51 +00:00
ArchiBot
a5e306ccae Automatic translations update 2025-06-29 02:36:53 +00:00
Łukasz Domeradzki
e09801442e Bump 2025-06-28 13:11:58 +02:00
Łukasz Domeradzki
08fb3ccb76 Fix serializable files not always getting written on change
In some cases, STJ might decide to replace the object rather than populating it. This will work for majority of properties and use cases, however, we actually set up events on some properties to notify us back if they change during runtime. That event registration did not work properly, as the object was replaced with the new, that did not have appropriate listeners set up.

Populate rather than replacing those selected properties, which fixes the problem.
2025-06-28 13:10:13 +02:00
ArchiBot
e9887cf89e Automatic translations update 2025-06-28 02:26:50 +00:00
renovate[bot]
de33bd057f chore(deps): update asf-ui digest to 49b98a8 2025-06-27 04:14:17 +00:00
ArchiBot
e04d37a694 Automatic translations update 2025-06-27 02:29:29 +00:00
renovate[bot]
6e7a1ea09b chore(deps): update dependency scalar.aspnetcore to 2.5.3 2025-06-26 16:37:37 +00:00
Łukasz Domeradzki
08b2c3186d Misc 2025-06-26 14:23:12 +02:00
renovate[bot]
6ca3989635 chore(deps): update dependency scalar.aspnetcore to 2.5.1 2025-06-26 02:58:11 +00:00
ArchiBot
c3019bed16 Automatic translations update 2025-06-26 02:29:26 +00:00
renovate[bot]
7f5615d109 chore(deps): update asf-ui digest to 220a8ec 2025-06-25 18:05:14 +00:00
renovate[bot]
43c76dc1af chore(deps): update crowdin/github-action action to v2.8.0 2025-06-25 07:11:07 +00:00
renovate[bot]
89deff7e06 chore(deps): update dependency markdig.signed to 0.41.3 2025-06-24 11:03:02 +00:00
ArchiBot
d536f7f56c Automatic translations update 2025-06-24 02:29:43 +00:00
renovate[bot]
8f43575a19 chore(deps): pin dependencies (#3439)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-22 17:46:37 +02:00
Łukasz Domeradzki
53adc67be1 Misc 2025-06-22 17:46:18 +02:00
Łukasz Domeradzki
e4addcadc8 Update renovate.json5 2025-06-22 16:23:21 +02:00
Łukasz Domeradzki
c48c1e6acd Kill build environment
It causes only unnecessary spam in PRs, the other environments still make sense
2025-06-22 15:47:17 +02:00
ArchiBot
cd2baa25c8 Automatic translations update 2025-06-22 02:35:38 +00:00
renovate[bot]
93e19d0f82 chore(deps): update dependency scalar.aspnetcore to 2.5.0 2025-06-21 17:53:08 +00:00
renovate[bot]
a8527dee70 chore(deps): update asf-ui digest to 622b78e 2025-06-21 10:10:38 +00:00
ArchiBot
b209be1618 Automatic translations update 2025-06-21 02:26:29 +00:00
renovate[bot]
fa55d9f402 chore(deps): update wiki digest to fb78823 2025-06-20 19:56:55 +00:00
renovate[bot]
c1aeb0b0a1 chore(deps): update dependency scalar.aspnetcore to 2.4.22 2025-06-19 22:56:09 +00:00
Łukasz Domeradzki
6e2bd99600 Bump 2025-06-20 00:55:39 +02:00
Jack Nolddor
a99c1f93e1 chore: blacklist summer sale 2025 appid (#3437) 2025-06-20 00:54:11 +02:00
ArchiBot
abc2e2be69 Automatic translations update 2025-06-19 02:28:53 +00:00
renovate[bot]
7aff1f857b chore(deps): update docker/setup-buildx-action action to v3.11.1 2025-06-18 11:50:02 +00:00
renovate[bot]
e47a94aeaa chore(deps): update dependency scalar.aspnetcore to 2.4.19 2025-06-18 02:34:15 +00:00
renovate[bot]
12730e6cb5 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.12.1 2025-06-17 23:46:43 +00:00
renovate[bot]
9909a211a4 chore(deps): update dependency mstest to 3.9.3 2025-06-17 16:53:55 +00:00
renovate[bot]
32591514de chore(deps): update dependency system.linq.async to 6.0.3 2025-06-17 03:14:00 +00:00
ArchiBot
05f65e0d9d Automatic translations update 2025-06-17 02:29:31 +00:00
renovate[bot]
353b032efd chore(deps): update dependency scalar.aspnetcore to 2.4.17 2025-06-16 20:08:55 +00:00
renovate[bot]
fb16a9e50c chore(deps): update docker/setup-buildx-action action to v3.11.0 2025-06-16 16:08:38 +00:00
ArchiBot
32165af41d Automatic translations update 2025-06-15 02:35:26 +00:00
renovate[bot]
3860d8d2fc chore(deps): update asf-ui digest to 6a9af77 2025-06-14 19:20:54 +00:00
Łukasz Domeradzki
dd6a8cdb80 Bump 2025-06-14 21:19:36 +02:00
Łukasz Domeradzki
27562e52ef Respect LastAnnouncement fully in public listing
I don't recall why we needed that ShouldSendHeartBeats condition here before, it causes the routine to run always if the bot is currently not listed, which is unwanted e.g. if the server tells user to go away, or due to any other reason.
2025-06-14 21:10:00 +02:00
renovate[bot]
693c9d67dc chore(deps): update dependency scalar.aspnetcore to 2.4.16 2025-06-14 09:50:47 +00:00
renovate[bot]
71cd68d38f chore(deps): update asf-ui digest to ecaf0d8 2025-06-14 06:15:43 +00:00
ArchiBot
624283cee7 Automatic translations update 2025-06-14 02:26:04 +00:00
renovate[bot]
0bf9d2f040 chore(deps): update dependency scalar.aspnetcore to 2.4.15 2025-06-13 21:38:40 +00:00
renovate[bot]
c01d893b6b chore(deps): update dependency scalar.aspnetcore to 2.4.14 2025-06-13 15:54:48 +00:00
renovate[bot]
3b9d5c7ab6 chore(deps): update wiki digest to 4dd4924 2025-06-13 12:00:30 +00:00
Łukasz Domeradzki
05d5d90e3e Bump 2025-06-13 13:59:41 +02:00
Łukasz Domeradzki
53b84a9271 Closes #3436 2025-06-13 13:41:36 +02:00
Łukasz Domeradzki
44688a4ce8 Misc 2025-06-13 09:44:18 +02:00
ArchiBot
908f7f5ccb Automatic translations update 2025-06-13 02:29:04 +00:00
Łukasz Domeradzki
79c3ce14e8 Misc 2025-06-12 23:33:47 +02:00
ArchiBot
d8d0b1deb8 Automatic translations update 2025-06-12 02:28:23 +00:00
renovate[bot]
22b9f92663 chore(deps): update actions/attest-build-provenance action to v2.4.0 2025-06-11 22:41:25 +00:00
renovate[bot]
0900480e62 chore(deps): update wiki digest to 6a30b79 2025-06-11 19:44:23 +00:00
renovate[bot]
6b41f91543 chore(deps): update dotnet monorepo to 9.0.6 2025-06-11 02:39:44 +00:00
ArchiBot
708de736e0 Automatic translations update 2025-06-11 02:28:49 +00:00
renovate[bot]
816b23e277 chore(deps): update dependency mstest to 3.9.2 2025-06-10 17:29:17 +00:00
renovate[bot]
b1e472879f chore(deps): update asf-ui digest to ec7099f 2025-06-10 09:26:25 +00:00
Łukasz Domeradzki
714f734e58 Bump 2025-06-10 11:25:30 +02:00
Łukasz Domeradzki
4f279f1068 Misc 2025-06-10 11:19:20 +02:00
Łukasz Domeradzki
e2194894ce Reset temporary account credentials upon turning off bot for wrong ones 2025-06-10 11:07:37 +02:00
ArchiBot
6bfc7d5c7f Automatic translations update 2025-06-10 02:29:39 +00:00
Łukasz Domeradzki
0018da8f8e Bump 2025-06-09 21:38:58 +02:00
renovate[bot]
a4ddac5039 chore(deps): update dependency steamkit2 to 3.3.0 (#3435)
* chore(deps): update dependency steamkit2 to 3.3.0

* Adapt to SK2 breaking changes

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Łukasz Domeradzki <JustArchi@JustArchi.net>
2025-06-09 21:34:16 +02:00
ArchiBot
839bc06f88 Automatic translations update 2025-06-09 02:31:55 +00:00
Łukasz Domeradzki
2a1228c949 Bump 2025-06-09 00:23:01 +02:00
Łukasz Domeradzki
921d56a13d Bump 2025-06-09 00:15:16 +02:00
Łukasz Domeradzki
9fa1549e09 Closes #3434 2025-06-09 00:05:58 +02:00
ArchiBot
e0d19e256f Automatic translations update 2025-06-08 02:34:31 +00:00
renovate[bot]
18e8bf56e6 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.12.0 2025-06-07 18:52:25 +00:00
renovate[bot]
83500b7af5 chore(deps): update dependency scalar.aspnetcore to 2.4.13 2025-06-07 12:49:10 +00:00
renovate[bot]
548e8af27b chore(deps): update crowdin/github-action action to v2.7.1 2025-06-07 09:47:16 +00:00
renovate[bot]
54afced00a chore(deps): update asf-ui digest to 2526417 2025-06-07 05:05:49 +00:00
ArchiBot
b89967ecac Automatic translations update 2025-06-07 02:26:38 +00:00
renovate[bot]
130a25deaa chore(deps): update wiki digest to 5ef3932 2025-06-06 22:02:59 +00:00
ArchiBot
bc52dad3f5 Automatic translations update 2025-06-06 02:27:28 +00:00
renovate[bot]
4ce75e3ab0 chore(deps): update dependency markdig.signed to 0.41.2 2025-06-05 11:01:51 +00:00
renovate[bot]
a681b31630 chore(deps): update dependency scalar.aspnetcore to 2.4.8 2025-06-05 04:46:49 +00:00
ArchiBot
9777e87b0f Automatic translations update 2025-06-05 02:27:57 +00:00
renovate[bot]
8647201b1e chore(deps): update asf-ui digest to c0e3f38 2025-06-04 22:12:31 +00:00
Łukasz Domeradzki
543d3f2f85 Bump 2025-06-05 00:11:50 +02:00
Łukasz Domeradzki
0cd02d8de8 Misc chat ack improvements 2025-06-05 00:11:33 +02:00
ArchiBot
e93a486a85 Automatic translations update 2025-06-04 02:29:00 +00:00
ArchiBot
2225903719 Automatic translations update 2025-06-03 02:28:32 +00:00
ArchiBot
a854ba3ddf Automatic translations update 2025-06-02 02:30:53 +00:00
renovate[bot]
bededf4bec chore(deps): update asf-ui digest to e90f82b 2025-05-31 09:36:33 +00:00
ArchiBot
2fcb35e46c Automatic translations update 2025-05-31 02:24:32 +00:00
renovate[bot]
120509a02e chore(deps): update dependency scalar.aspnetcore to 2.4.7 2025-05-30 19:50:18 +00:00
renovate[bot]
6aca3ea0cc chore(deps): update dependency scalar.aspnetcore to 2.4.6 2025-05-30 11:50:30 +00:00
renovate[bot]
93ab09f6c5 chore(deps): update dependency scalar.aspnetcore to 2.4.5 2025-05-29 21:34:12 +00:00
Łukasz Domeradzki
c9fe2eb1d5 Bump 2025-05-29 23:33:36 +02:00
Łukasz Domeradzki
5d4666d538 Adapt to yet another Steam's breaking change 2025-05-29 23:29:40 +02:00
renovate[bot]
44549e2b2a chore(deps): update dependency nlog.web.aspnetcore to 5.5.0 (#3429)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-29 21:38:13 +02:00
ArchiBot
b20f8adb5f Automatic translations update 2025-05-29 02:26:58 +00:00
renovate[bot]
0983ef309f chore(deps): update docker/build-push-action action to v6.18.0 2025-05-28 08:44:36 +00:00
renovate[bot]
8a24c037ed chore(deps): update dependency scalar.aspnetcore to 2.4.4 2025-05-28 03:29:38 +00:00
renovate[bot]
dad1d7fda9 chore(deps): update asf-ui digest to 9920764 2025-05-27 23:04:44 +00:00
renovate[bot]
cce7c1c7c8 chore(deps): update dependency mstest to 3.9.1 2025-05-27 16:45:59 +00:00
ArchiBot
ac209cfefb Automatic translations update 2025-05-27 02:25:49 +00:00
Łukasz Domeradzki
62e9058966 Bump 2025-05-25 19:21:24 +02:00
Łukasz Domeradzki
21a202e47d Misc 2025-05-25 19:18:36 +02:00
Łukasz Domeradzki
274c63c166 Log less info about failing request by default
Some URLs can expose potentially-sensitive details otherwise, such as GetTradeOffers
2025-05-25 19:15:58 +02:00
ArchiBot
207d10c2be Automatic translations update 2025-05-25 02:32:04 +00:00
Łukasz Domeradzki
9dc220e0d5 Bump 2025-05-24 21:50:14 +02:00
Łukasz Domeradzki
73f0cf23f8 Add workaround for 429 in trade offers 2025-05-24 21:49:45 +02:00
Łukasz Domeradzki
0b24380b2e Improve logging of api calls 2025-05-24 18:51:51 +02:00
Łukasz Domeradzki
ff485845bf Log less info about failing request by default
Some URLs can expose potentially-sensitive details otherwise, such as GetTradeOffers
2025-05-24 18:33:23 +02:00
ArchiBot
198e408ba4 Automatic translations update 2025-05-24 02:23:52 +00:00
renovate[bot]
2f5f4661c2 chore(deps): update dependency scalar.aspnetcore to 2.4.3 2025-05-23 22:45:17 +00:00
renovate[bot]
430dad82db chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.11.0 2025-05-23 18:27:09 +00:00
renovate[bot]
9fce02c2ef chore(deps): update dependency scalar.aspnetcore to 2.4.2 2025-05-23 02:53:14 +00:00
ArchiBot
9d2d7e33e3 Automatic translations update 2025-05-23 02:26:27 +00:00
renovate[bot]
fc390e0b4c chore(deps): update wiki digest to 9d8da2b 2025-05-22 16:52:03 +00:00
Łukasz Domeradzki
2d3fbf3080 Bump 2025-05-22 13:49:52 +02:00
Łukasz Domeradzki
b7152bfb0a Closes #3428 2025-05-22 13:46:19 +02:00
renovate[bot]
b3f216d25d chore(deps): update dependency scalar.aspnetcore to 2.4.1 2025-05-22 07:51:36 +00:00
ArchiBot
1caa12c7e8 Automatic translations update 2025-05-22 02:25:48 +00:00
renovate[bot]
94e3a9a5f8 chore(deps): update asf-ui digest to 30223b6 2025-05-20 23:32:22 +00:00
renovate[bot]
9cf20708e6 chore(deps): update dependency mstest to 3.9.0 2025-05-20 12:52:58 +00:00
ArchiBot
c60b7b0252 Automatic translations update 2025-05-20 02:26:56 +00:00
ArchiBot
3477bcefc3 Automatic translations update 2025-05-19 02:29:36 +00:00
ArchiBot
549a76ee7e Automatic translations update 2025-05-18 02:30:19 +00:00
renovate[bot]
6c32cebe83 chore(deps): update wiki digest to 2cd6a9f 2025-05-17 18:31:15 +00:00
renovate[bot]
d30d4d202a chore(deps): update asf-ui digest to 9eee3d3 2025-05-16 11:19:02 +00:00
renovate[bot]
d545622d0c chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.10.0 2025-05-16 02:44:52 +00:00
renovate[bot]
f33016d523 chore(deps): update dependency scalar.aspnetcore to 2.3.1 2025-05-15 23:53:22 +00:00
renovate[bot]
8a531262e7 chore(deps): update docker/build-push-action action to v6.17.0 2025-05-15 18:52:16 +00:00
ArchiBot
cf0dd510c2 Automatic translations update 2025-05-15 02:24:28 +00:00
renovate[bot]
d735d1bda8 chore(deps): update dotnet monorepo 2025-05-14 02:54:23 +00:00
ArchiBot
e4dc83fc86 Automatic translations update 2025-05-14 02:25:22 +00:00
renovate[bot]
13263a8d1e chore(deps): update asf-ui digest to 0b5af7a 2025-05-13 07:05:57 +00:00
renovate[bot]
3e06b5f8c8 chore(deps): update dependency scalar.aspnetcore to 2.3.0 2025-05-13 03:08:45 +00:00
ArchiBot
857fc6a3c6 Automatic translations update 2025-05-13 02:26:39 +00:00
Łukasz Domeradzki
ad461e5b8c Misc 2025-05-12 21:51:06 +02:00
Łukasz Domeradzki
5464ef4353 Misc 2025-05-12 21:35:13 +02:00
Łukasz Domeradzki
e8f4737e81 Misc 2025-05-12 21:31:30 +02:00
Łukasz Domeradzki
1dcaf98774 Always update app change numbers 2025-05-12 10:14:54 +02:00
ArchiBot
e081267a9b Automatic translations update 2025-05-12 02:27:47 +00:00
Łukasz Domeradzki
6ec7f4609a Even further misc 2025-05-11 22:25:15 +02:00
Łukasz Domeradzki
0bef5ccfa9 Misc
Edge case if previously-store-only package suddenly pops up in license list (normally would fix itself only after 7 days)
2025-05-11 22:21:43 +02:00
Łukasz Domeradzki
512545b657 Bump 2025-05-11 21:45:16 +02:00
Łukasz Domeradzki
390d9ac57c Use LINQ chunks in STD 2025-05-11 21:42:00 +02:00
Łukasz Domeradzki
10abfb847f Closes #3415 (#3427)
* Closes #3415

* Misc

* Refresh tokens always for non-listed packages
2025-05-11 21:36:16 +02:00
renovate[bot]
a19611c3ae chore(deps): update asf-ui digest to f2af2b8 2025-05-11 06:46:09 +00:00
ArchiBot
44840aa0ff Automatic translations update 2025-05-11 02:28:49 +00:00
ArchiBot
f0945efd3a Automatic translations update 2025-05-10 02:23:04 +00:00
Łukasz Domeradzki
cba29bb2c5 Resolve misc TODOs 2025-05-09 23:31:27 +02:00
ArchiBot
08c9636cd9 Automatic translations update 2025-05-09 02:24:46 +00:00
renovate[bot]
d940c4ac82 chore(deps): update asf-ui digest to 1205ace (#3425)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-08 12:41:38 +02:00
ArchiBot
208e844c97 Automatic translations update 2025-05-08 02:25:45 +00:00
renovate[bot]
9f808a42a3 chore(deps): update dependency humanizer to 3.0.0-beta.96 2025-05-07 21:58:53 +00:00
Łukasz Domeradzki
cf9a578815 Misc tests improvement 2025-05-07 23:58:11 +02:00
Łukasz Domeradzki
449f3556a7 Add extra unit test 2025-05-07 23:49:08 +02:00
Łukasz Domeradzki
a3736d6cd6 Misc optimization 2025-05-07 23:21:04 +02:00
Łukasz Domeradzki
f975af721e Misc 2025-05-07 23:18:41 +02:00
Łukasz Domeradzki
e23dfe7846 Be more strict with plugin asset names 2025-05-07 18:55:32 +02:00
renovate[bot]
255a72e2ae chore(deps): update asf-ui digest to afc4c5a 2025-05-07 03:42:36 +00:00
renovate[bot]
de3aa36b1f chore(deps): update opentelemetry-dotnet-contrib monorepo to 1.12.0 2025-05-05 19:33:15 +00:00
renovate[bot]
ea844f6501 chore(deps): update dependency scalar.aspnetcore to 2.2.7 2025-05-05 15:42:53 +00:00
ArchiBot
9bbdc5f8d9 Automatic translations update 2025-05-05 02:26:45 +00:00
Łukasz Domeradzki
0644e634e7 Bump 2025-05-05 00:49:37 +02:00
Łukasz Domeradzki
66774631e7 Closes #3424 2025-05-05 00:48:48 +02:00
ArchiBot
735982ce4e Automatic translations update 2025-05-03 02:23:17 +00:00
Łukasz Domeradzki
0c207b4e2f Make NowFarming property public 2025-05-02 23:49:34 +02:00
Łukasz Domeradzki
cf5d7fd192 Misc 2025-05-02 13:23:59 +02:00
Łukasz Domeradzki
a19aadd826 Bump 2025-05-02 12:59:21 +02:00
Łukasz Domeradzki
f62da0e273 Closes #3420 2025-05-02 12:56:54 +02:00
Łukasz Domeradzki
af6f9466a8 Misc 2025-05-02 09:27:24 +02:00
ArchiBot
2ee53d8318 Automatic translations update 2025-05-02 02:23:48 +00:00
Łukasz Domeradzki
b6a5989770 Misc 2025-05-01 23:54:03 +02:00
Łukasz Domeradzki
193811cb9b Add support for Japanese Steam client language 2025-05-01 23:50:07 +02:00
Łukasz Domeradzki
0c23177455 Bump 2025-05-01 21:23:05 +02:00
Łukasz Domeradzki
c525ca5642 Bump 2025-05-01 21:22:33 +02:00
renovate[bot]
e4a726672d chore(deps): update dependency scalar.aspnetcore to 2.2.5 2025-05-01 14:53:32 +00:00
renovate[bot]
a897615d0e chore(deps): update asf-ui digest to af94f76 2025-05-01 09:09:15 +00:00
Łukasz Domeradzki
3e5ffe10b7 Misc further improvements to cross-process semaphores 2025-05-01 10:14:23 +02:00
ArchiBot
13131c769c Automatic translations update 2025-05-01 02:29:48 +00:00
renovate[bot]
449050b6df chore(deps): update dependency opentelemetry.extensions.hosting to 1.12.0 2025-04-30 08:35:30 +00:00
renovate[bot]
01b5251a39 chore(deps): update dependency scalar.aspnetcore to 2.2.2 2025-04-30 04:02:17 +00:00
Łukasz Domeradzki
6b6c976061 Modernize access modes upon creation
We can make use of some newly introduced overloads, not only improving on performance but also fixing potential (impossible to achieve in practice) crash between creation and mode setting
2025-04-29 18:34:25 +02:00
Łukasz Domeradzki
eeed61a9f6 Avoid some extra overhead if www folder is not found 2025-04-29 16:24:22 +02:00
Łukasz Domeradzki
4afe7654af Misc
The execute permission is unnecessary on temporary files, only directories need it
2025-04-29 15:37:30 +02:00
renovate[bot]
acdd504a7c chore(deps): update actions/attest-build-provenance action to v2.3.0 2025-04-28 16:58:21 +00:00
renovate[bot]
65c9477bb9 chore(deps): update dependency markdig.signed to 0.41.1 2025-04-28 11:50:58 +00:00
ArchiBot
eaa11c76ab Automatic translations update 2025-04-27 02:26:09 +00:00
ArchiBot
2ba0eb77ad Automatic translations update 2025-04-26 02:22:25 +00:00
renovate[bot]
3761e07c6d chore(deps): update asf-ui digest to 7c49cd8 2025-04-25 23:31:21 +00:00
renovate[bot]
c787c8ece7 chore(deps): update docker/build-push-action action to v6.16.0 2025-04-25 19:27:04 +00:00
renovate[bot]
f8e8e2c8a4 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.9.0 2025-04-25 13:54:23 +00:00
renovate[bot]
3960ec16b4 chore(deps): update asf-ui digest to 5165da4 2025-04-25 07:26:01 +00:00
Łukasz Domeradzki
ddb04b97a8 Bump 2025-04-25 09:25:24 +02:00
ArchiBot
868d593c5c Automatic translations update 2025-04-25 02:23:51 +00:00
renovate[bot]
e6a5524cbc chore(deps): update actions/download-artifact action to v4.3.0 2025-04-24 16:54:03 +00:00
renovate[bot]
cf179878ae chore(deps): update dependency scalar.aspnetcore to 2.2.1 2025-04-24 02:53:43 +00:00
ArchiBot
394f10f384 Automatic translations update 2025-04-24 02:23:45 +00:00
renovate[bot]
df814b1acb chore(deps): update wiki digest to cb76466 2025-04-23 16:44:22 +00:00
renovate[bot]
b7439693fc chore(deps): update dependency scalar.aspnetcore to 2.1.18 2025-04-22 19:25:42 +00:00
renovate[bot]
c009fc8dc8 chore(deps): update asf-ui digest to 6f0393c 2025-04-22 13:10:44 +00:00
renovate[bot]
cf62c0802f chore(deps): update dependency steamkit2 to 3.1.0 2025-04-21 15:29:13 +00:00
renovate[bot]
5f19372429 chore(deps): update dependency anglesharp to 1.3.0 2025-04-19 01:52:51 +00:00
renovate[bot]
adf2eccc9c chore(deps): update dependency scalar.aspnetcore to 2.1.17 2025-04-18 23:31:32 +00:00
renovate[bot]
ce463bf780 chore(deps): update asf-ui digest to 992890b 2025-04-18 18:58:10 +00:00
renovate[bot]
31fe442476 chore(deps): update dependency scalar.aspnetcore to 2.1.16 2025-04-17 01:36:25 +00:00
renovate[bot]
45daa46cf9 chore(deps): update dependency scalar.aspnetcore to 2.1.15 2025-04-16 19:57:00 +00:00
ArchiBot
83c12f5636 Automatic translations update 2025-04-16 02:23:33 +00:00
renovate[bot]
1683729772 chore(deps): update dependency markdig.signed to 0.41.0 2025-04-15 11:44:30 +00:00
renovate[bot]
21cd3d8dbb chore(deps): update asf-ui digest to c4ddfac 2025-04-14 11:09:57 +00:00
renovate[bot]
4b34905358 chore(deps): update actions/setup-node action to v4.4.0 2025-04-14 07:30:15 +00:00
Łukasz Domeradzki
c0214f16fc Bump 2025-04-14 09:29:37 +02:00
Łukasz Domeradzki
458cb95422 Bump 2025-04-14 09:29:09 +02:00
Łukasz Domeradzki
ef844c168c Bump 2025-04-14 09:18:23 +02:00
Łukasz Domeradzki
96e5924c0c Misc bulletproofing 2025-04-14 09:17:52 +02:00
Outzzz
d20fa79897 get inventory with language (#3409)
* get inventory with language

* get inventory with language

* edit

* edit
2025-04-14 09:15:11 +02:00
renovate[bot]
f1a49cdff0 chore(deps): update dependency scalar.aspnetcore to 2.1.13 2025-04-11 22:01:40 +00:00
renovate[bot]
baa1339573 chore(deps): update dependency scalar.aspnetcore to 2.1.11 2025-04-11 02:24:16 +00:00
renovate[bot]
53802829b6 chore(deps): update dependency scalar.aspnetcore to 2.1.10 2025-04-10 18:53:30 +00:00
renovate[bot]
ee7866590f chore(deps): update dotnet monorepo to 9.0.4 2025-04-10 01:48:00 +00:00
renovate[bot]
94cb4e4e0a chore(deps): update dependency scalar.aspnetcore to 2.1.9 2025-04-09 22:33:44 +00:00
renovate[bot]
78e5ab2cbb chore(deps): update asf-ui digest to 6596a83 2025-04-09 16:37:01 +00:00
renovate[bot]
a52bf7774c chore(deps): update dependency scalar.aspnetcore to 2.1.8 2025-04-09 10:52:51 +00:00
renovate[bot]
4aed278f9c chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to 3.11.0-beta1.25123.3 2025-04-09 07:37:20 +00:00
renovate[bot]
1631e1687b chore(deps): update asf-ui digest to e425aab 2025-04-09 03:19:38 +00:00
ArchiBot
4738171fd3 Automatic translations update 2025-04-09 02:23:30 +00:00
renovate[bot]
001eabe25d chore(deps): update asf-ui digest to fdcd3c3 2025-04-08 11:07:38 +00:00
renovate[bot]
3d535c4c72 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.8.0 2025-04-08 06:32:55 +00:00
renovate[bot]
f59a3ca233 chore(deps): update asf-ui digest to cda7dfa 2025-04-07 23:28:05 +00:00
renovate[bot]
d3134afc5a chore(deps): update dependency scalar.aspnetcore to 2.1.7 2025-04-07 20:02:29 +00:00
ArchiBot
39bf821f78 Automatic translations update 2025-04-07 02:23:52 +00:00
ArchiBot
5324dad0c6 Automatic translations update 2025-04-06 02:24:03 +00:00
renovate[bot]
ab92bbf3d3 chore(deps): update dependency scalar.aspnetcore to 2.1.6 2025-04-04 19:35:03 +00:00
renovate[bot]
63a481629e chore(deps): update asf-ui digest to e9c6a29 2025-04-04 06:36:58 +00:00
renovate[bot]
d44d075b20 chore(deps): update peter-evans/dockerhub-description action to v4.0.2 2025-04-03 16:06:11 +00:00
renovate[bot]
030d71c52a chore(deps): update asf-ui digest to a69ee58 2025-04-03 10:06:29 +00:00
renovate[bot]
2fe0a2635e chore(deps): update dependency scalar.aspnetcore to 2.1.5 2025-04-03 02:41:38 +00:00
ArchiBot
ae45f474e3 Automatic translations update 2025-04-03 02:22:55 +00:00
renovate[bot]
33e98a995e chore(deps): update crowdin/github-action action to v2.7.0 (#3404)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-02 09:21:24 +02:00
renovate[bot]
92b0e4bfb6 chore(deps): update asf-ui digest to 2771a20 (#3406)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-02 05:30:59 +00:00
ArchiBot
2403ac17dc Automatic translations update 2025-04-02 02:23:43 +00:00
ArchiBot
ca74047828 Automatic translations update 2025-04-01 08:23:24 +00:00
Łukasz Domeradzki
21e951092d Update translations.yml 2025-04-01 10:22:47 +02:00
renovate[bot]
3ba97b49ba chore(deps): update peter-evans/dockerhub-description action to v4.0.1 2025-04-01 03:16:02 +00:00
renovate[bot]
5e739e483e chore(deps): update dependency scalar.aspnetcore to 2.1.4 2025-03-31 23:41:00 +00:00
renovate[bot]
992a4563c2 chore(deps): update asf-ui digest to b0cf3f0 2025-03-31 18:26:47 +00:00
renovate[bot]
3e9e1cb6ed chore(deps): update wiki digest to 55469ee 2025-03-31 12:35:58 +00:00
Łukasz Domeradzki
61f876480a General code cleanups 2025-03-31 00:06:05 +02:00
Łukasz Domeradzki
c2b1d1356c Misc optimization 2025-03-30 21:12:24 +02:00
Łukasz Domeradzki
d5ac569a6a Bump 2025-03-30 21:06:57 +02:00
Łukasz Domeradzki
0b1ddd39d5 Optimize serializable file writes 2025-03-30 21:06:33 +02:00
renovate[bot]
cbe0502154 chore(deps): update asf-ui digest to c311378 2025-03-30 06:14:12 +00:00
renovate[bot]
816914dd10 chore(deps): update crazy-max/ghaction-import-gpg action to v6.3.0 2025-03-30 02:09:52 +00:00
renovate[bot]
bcb4320f5d chore(deps): update dependency scalar.aspnetcore to 2.1.3 2025-03-28 22:48:05 +00:00
renovate[bot]
bc4d5d37ff chore(deps): update asf-ui digest to c16acf5 2025-03-27 12:04:46 +00:00
renovate[bot]
1996763751 chore(deps): update dependency scalar.aspnetcore to 2.1.2 2025-03-26 18:53:18 +00:00
renovate[bot]
99a0a5cc48 chore(deps): update asf-ui digest to a93167e 2025-03-26 05:57:09 +00:00
ArchiBot
63c91d2d19 Automatic translations update 2025-03-26 02:22:32 +00:00
renovate[bot]
d6be6cf435 chore(deps): update asf-ui digest to ee55958 2025-03-25 03:00:04 +00:00
renovate[bot]
8f7f9a27ee chore(deps): update asf-ui digest to 0b9c0c2 2025-03-22 06:46:28 +00:00
ArchiBot
b776d4d882 Automatic translations update 2025-03-22 02:21:23 +00:00
renovate[bot]
63c81c2403 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.7.0 2025-03-21 19:49:13 +00:00
renovate[bot]
ad9a77ff19 chore(deps): update dependency scalar.aspnetcore to 2.1.1 2025-03-20 19:28:04 +00:00
renovate[bot]
2e17a15d60 chore(deps): update asf-ui digest to 5dcfb93 2025-03-20 03:09:58 +00:00
renovate[bot]
3fae20673b chore(deps): update actions/upload-artifact action to v4.6.2 2025-03-19 22:42:10 +00:00
renovate[bot]
5b36c1c286 chore(deps): update actions/download-artifact action to v4.2.1 2025-03-19 17:14:20 +00:00
renovate[bot]
4fc4d011f2 chore(deps): update dependency scalar.aspnetcore to 2.1.0 2025-03-19 07:40:28 +00:00
ArchiBot
91aa9754bb Automatic translations update 2025-03-19 02:22:16 +00:00
renovate[bot]
a6ba407ebf chore(deps): update actions/download-artifact action to v4.2.0 2025-03-18 18:54:59 +00:00
Łukasz Domeradzki
1cdb128c6b Bump 2025-03-18 19:54:28 +01:00
Łukasz Domeradzki
38ca6b7642 Update Scalar.AspNetCore 2025-03-18 19:50:45 +01:00
Łukasz Domeradzki
65c7a60c92 Switch to scalar for swagger-ui generation (#3391) 2025-03-18 19:47:43 +01:00
renovate[bot]
77c802ee5f chore(deps): update dependency swashbuckle.aspnetcore.swaggerui to 7.3.2 2025-03-18 11:31:12 +00:00
renovate[bot]
a8f23159f4 chore(deps): update asf-ui digest to d847829 2025-03-18 03:09:59 +00:00
renovate[bot]
ee8a7a6f61 chore(deps): update actions/setup-node action to v4.3.0 2025-03-17 23:28:51 +00:00
renovate[bot]
4a612b9436 chore(deps): update dependency mstest to 3.8.3 2025-03-17 16:55:26 +00:00
renovate[bot]
4d89995016 chore(deps): update asf-ui digest to f2393a2 2025-03-17 12:10:41 +00:00
renovate[bot]
368c453504 chore(deps): update actions/setup-dotnet action to v4.3.1 2025-03-17 05:46:02 +00:00
ArchiBot
1694851395 Automatic translations update 2025-03-16 02:23:25 +00:00
renovate[bot]
1ed4f3f456 chore(deps): update docker/login-action action to v3.4.0 2025-03-14 11:57:11 +00:00
renovate[bot]
588d49eeb9 chore(deps): update asf-ui digest to 41bfaf0 2025-03-12 19:26:11 +00:00
renovate[bot]
22d4f22da6 chore(deps): update asf-ui digest to 2c3829f (#3396)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-12 11:39:52 +00:00
renovate[bot]
ced640f024 chore(deps): update dotnet monorepo to 9.0.3 2025-03-11 21:54:46 +00:00
renovate[bot]
7b8804b53c chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to 3.11.0-beta1.25076.3 2025-03-11 19:08:49 +00:00
renovate[bot]
5d25742faf chore(deps): update asf-ui digest to bc98426 2025-03-11 03:22:59 +00:00
ArchiBot
4460b18c5e Automatic translations update 2025-03-11 02:21:55 +00:00
ArchiBot
cb5eb499d9 Automatic translations update 2025-03-10 02:11:40 +00:00
Łukasz Domeradzki
9382c6d390 Bump 2025-03-09 23:51:11 +01:00
Łukasz Domeradzki
7cd091cfa2 Implement dummy answer to ClientGetClientAppList request 2025-03-09 23:47:10 +01:00
renovate[bot]
961dc4cf5d chore(deps): update asf-ui digest to c1e8e5b 2025-03-09 05:32:53 +00:00
ArchiBot
f77193dc48 Automatic translations update 2025-03-09 02:10:59 +00:00
renovate[bot]
a4b31d2cdc chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.6.1 (#3393)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-08 21:50:56 +00:00
renovate[bot]
83b3edae86 chore(deps): update asf-ui digest to a48983b (#3394)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-08 17:55:33 +00:00
Łukasz Domeradzki
ebc4601ed4 Add another useful json helper 2025-03-08 15:00:38 +01:00
Łukasz Domeradzki
a478c02967 Remove qodana support 2025-03-08 11:56:56 +01:00
renovate[bot]
aac1f81704 chore(deps): update opentelemetry-dotnet-contrib monorepo to 1.11.1 2025-03-06 05:37:39 +00:00
ArchiBot
100b85abe0 Automatic translations update 2025-03-06 02:21:28 +00:00
renovate[bot]
bb52122db1 chore(deps): update actions/attest-build-provenance action to v2.2.3 2025-03-05 23:37:03 +00:00
renovate[bot]
397b36c557 chore(deps): update asf-ui digest to 4cba2a6 2025-03-05 12:14:04 +00:00
renovate[bot]
77b041ea67 chore(deps): update dependency opentelemetry.extensions.hosting to 1.11.2 2025-03-04 22:34:48 +00:00
renovate[bot]
b1d896ae70 chore(deps): update asf-ui digest to c8faaa2 2025-03-04 03:28:37 +00:00
ArchiBot
8f5157d8dd Automatic translations update 2025-03-03 08:39:18 +00:00
Łukasz Domeradzki
c5cf5f70c8 Bump 2025-03-02 22:17:40 +01:00
ArchiBot
88f7856c9b Automatic translations update 2025-03-02 11:26:14 +00:00
Łukasz Domeradzki
d843d1d5b1 Remove deprecated functionalities, bump 2025-03-01 15:22:04 +01:00
renovate[bot]
921b416374 chore(deps): update asf-ui digest to e0efa0f 2025-02-28 22:08:34 +00:00
renovate[bot]
c2eac39145 chore(deps): update dependency swashbuckle.aspnetcore.swaggerui to 7.3.1 2025-02-27 23:10:42 +00:00
renovate[bot]
467dbf723d chore(deps): update actions/attest-build-provenance action to v2.2.2 2025-02-27 19:21:44 +00:00
renovate[bot]
9460b476dd chore(deps): update docker/setup-buildx-action action to v3.10.0 2025-02-27 06:38:29 +00:00
renovate[bot]
16fb5a7d98 chore(deps): update actions/attest-build-provenance action to v2.2.1 2025-02-27 01:35:23 +00:00
renovate[bot]
c17da5951d chore(deps): update asf-ui digest to 19776b3 2025-02-26 22:25:40 +00:00
renovate[bot]
66a959d21c chore(deps): update docker/build-push-action action to v6.15.0 2025-02-26 16:27:29 +00:00
renovate[bot]
480037b84b chore(deps): update dependency swashbuckle.aspnetcore.swaggerui to 7.3.0 2025-02-26 11:52:42 +00:00
renovate[bot]
fa7867ab18 chore(deps): update actions/download-artifact action to v4.1.9 2025-02-26 02:52:48 +00:00
ArchiBot
0c5cdfae0a Automatic translations update 2025-02-26 02:20:45 +00:00
renovate[bot]
7e5f82d65b chore(deps): update asf-ui digest to 9546310 2025-02-25 07:33:09 +00:00
Łukasz Domeradzki
9753b36769 Misc 2025-02-23 19:56:23 +01:00
Łukasz Domeradzki
fd2c1e8c24 Bump 2025-02-23 19:21:50 +01:00
Łukasz Domeradzki
e5c9defac8 Closes #3184 2025-02-23 19:13:44 +01:00
Łukasz Domeradzki
33c8c0f0d6 Rewrite GitHub service from xpath to css selectors 2025-02-23 17:28:36 +01:00
renovate[bot]
197b41d96f chore(deps): update ncipollo/release-action action to v1.16.0 2025-02-22 17:50:41 +00:00
renovate[bot]
52a8bcbbfe chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.6.0 2025-02-22 05:46:28 +00:00
renovate[bot]
e102b6c565 chore(deps): update asf-ui digest to 687959a 2025-02-22 02:49:10 +00:00
renovate[bot]
f899508253 chore(deps): update actions/upload-artifact action to v4.6.1 2025-02-21 23:35:02 +00:00
renovate[bot]
ab20d5fccf chore(deps): update github/codeql-action action to v3.28.10 2025-02-21 19:00:23 +00:00
ArchiBot
3c9827b1e1 Automatic translations update 2025-02-21 02:19:55 +00:00
renovate[bot]
9636fa1da1 chore(deps): update docker/build-push-action action to v6.14.0 2025-02-19 18:45:04 +00:00
renovate[bot]
b5ad577821 chore(deps): update dependency mstest to 3.8.2 2025-02-19 15:02:36 +00:00
renovate[bot]
ca483a91f3 chore(deps): update dependency mstest to 3.8.1 2025-02-18 21:39:39 +00:00
renovate[bot]
49e904c25a chore(deps): update asf-ui digest to b1b2d2e 2025-02-18 19:24:37 +00:00
renovate[bot]
9a0c0bfff5 chore(deps): update crowdin/github-action action to v2.6.1 2025-02-18 12:03:05 +00:00
ArchiBot
2ed1214d37 Automatic translations update 2025-02-18 02:19:06 +00:00
ArchiBot
adf417e2f1 Automatic translations update 2025-02-17 02:20:41 +00:00
Łukasz Domeradzki
ab333dc0b3 Bump 2025-02-16 17:44:42 +01:00
Łukasz Domeradzki
3f079a8fea Add new ASF API endpoint for inventory summary, add inventory command
Wow, new features in ASF?!
2025-02-16 17:26:51 +01:00
renovate[bot]
90db25e4de chore(deps): update asf-ui digest to 6908495 2025-02-16 06:46:41 +00:00
ArchiBot
ec793e22a1 Automatic translations update 2025-02-16 02:21:22 +00:00
renovate[bot]
c76f6caa2b chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.5.0 2025-02-15 01:25:06 +00:00
renovate[bot]
60245d5399 chore(deps): update asf-ui digest to 9b20a8f 2025-02-14 19:41:41 +00:00
renovate[bot]
8fb2ec61b4 chore(deps): update asf-ui digest to 41e8159 2025-02-14 11:02:36 +00:00
renovate[bot]
4a939ad607 chore(deps): update asf-ui digest to 6e74737 2025-02-14 02:59:21 +00:00
renovate[bot]
ba1be3df10 chore(deps): update asf-ui digest to 88995f5 2025-02-13 03:25:18 +00:00
ArchiBot
93333f0ece Automatic translations update 2025-02-13 02:19:24 +00:00
Łukasz Domeradzki
dcde5d9d54 Misc test improvements 2025-02-13 00:20:10 +01:00
renovate[bot]
52af5c85f0 chore(deps): update dependency mstest to 3.8.0 2025-02-12 15:13:10 +00:00
Łukasz Domeradzki
d47f17c7ad Bump 2025-02-12 16:12:41 +01:00
Łukasz Domeradzki
8533659b74 Misc cleanup 2025-02-12 16:12:01 +01:00
Łukasz Domeradzki
2f658a3d4e Closes #3376 2025-02-12 16:11:10 +01:00
renovate[bot]
2c31b5f11f chore(deps): update dotnet monorepo to 9.0.2 2025-02-11 22:08:26 +00:00
renovate[bot]
c66bd6259c chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to 3.11.0-beta1.24629.2 2025-02-11 20:08:15 +00:00
renovate[bot]
145c64389d chore(deps): update asf-ui digest to 1bf87dd 2025-02-11 16:12:08 +00:00
renovate[bot]
23263e634e chore(deps): update crowdin/github-action action to v2.6.0 2025-02-11 11:55:35 +00:00
renovate[bot]
2074865a7c chore(deps): update asf-ui digest to a5471a6 2025-02-11 05:32:13 +00:00
ArchiBot
4cb9f54204 Automatic translations update 2025-02-11 02:19:51 +00:00
renovate[bot]
78b1d7de0f chore(deps): update dependency anglesharp.xpath to 2.0.5 2025-02-10 21:36:42 +00:00
Łukasz Domeradzki
c296790226 Bump 2025-02-09 21:16:40 +01:00
Łukasz Domeradzki
d7fec15597 Bump 2025-02-09 21:16:25 +01:00
Łukasz Domeradzki
f33fda8313 Misc 2025-02-09 21:15:24 +01:00
Łukasz Domeradzki
62ce58e148 Closes #3378 2025-02-09 21:14:05 +01:00
renovate[bot]
db70633721 chore(deps): update asf-ui digest to 3b86172 2025-02-09 09:56:32 +00:00
ArchiBot
8c62b01d19 Automatic translations update 2025-02-08 02:17:22 +00:00
renovate[bot]
5f3b2c9a0d chore(deps): update github/codeql-action action to v3.28.9 2025-02-07 18:33:48 +00:00
Łukasz Domeradzki
1afac53318 Closes #3384 2025-02-07 15:31:11 +01:00
renovate[bot]
78d2ff1645 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.4.0 2025-02-07 05:57:00 +00:00
renovate[bot]
31082e0184 chore(deps): update docker/setup-buildx-action action to v3.9.0 2025-02-06 17:30:45 +00:00
renovate[bot]
7e942d6481 chore(deps): update asf-ui digest to d006b23 (#3383)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-06 13:43:03 +01:00
ArchiBot
af0659595e Automatic translations update 2025-02-06 02:19:05 +00:00
ArchiBot
89962bd393 Automatic translations update 2025-02-05 02:18:55 +00:00
Sebastian Göls
c71fe556a3 Fix typo (#3382) 2025-02-04 09:08:24 +01:00
ArchiBot
4c88e098c6 Automatic translations update 2025-02-04 02:18:24 +00:00
renovate[bot]
8069c19eef chore(deps): update wiki digest to 6603a8e 2025-02-03 21:46:23 +00:00
Łukasz Domeradzki
91fd6a1014 Bump 2025-02-03 11:15:30 +01:00
renovate[bot]
18be38352f chore(deps): update dependency steamkit2 to 3.0.2 2025-02-03 04:55:35 +00:00
renovate[bot]
e5029c983c chore(deps): update dependency nlog.web.aspnetcore to 5.4.0 2025-02-02 20:35:59 +00:00
renovate[bot]
e8bbaabc01 chore(deps): update asf-ui digest to fbdc518 2025-02-02 05:17:52 +00:00
ArchiBot
e62e3be68a Automatic translations update 2025-02-02 02:19:26 +00:00
ArchiBot
3c48bc1756 Automatic translations update 2025-01-31 02:18:21 +00:00
renovate[bot]
00a02f2be4 chore(deps): update actions/setup-dotnet action to v4.3.0 2025-01-30 12:42:26 +00:00
renovate[bot]
2c09757086 chore(deps): update asf-ui digest to 83b9d20 2025-01-30 04:21:04 +00:00
ArchiBot
73a4e8acd3 Automatic translations update 2025-01-30 02:17:28 +00:00
renovate[bot]
7b98fea247 chore(deps): update github/codeql-action action to v3.28.8 2025-01-29 20:39:05 +00:00
renovate[bot]
3cf25f6385 chore(deps): update github/codeql-action action to v3.28.7 2025-01-29 14:41:10 +00:00
ArchiBot
69d666b24d Automatic translations update 2025-01-29 02:17:55 +00:00
renovate[bot]
0a234166f6 chore(deps): update github/codeql-action action to v3.28.6 2025-01-28 05:56:43 +00:00
ArchiBot
68d63853f4 Automatic translations update 2025-01-28 02:18:08 +00:00
renovate[bot]
f3551594c3 chore(deps): update dependency mstest to 3.7.3 2025-01-27 21:11:56 +00:00
renovate[bot]
6effcc0d4f chore(deps): update asf-ui digest to 99a0294 2025-01-27 19:31:08 +00:00
Łukasz Domeradzki
1e3f535330 Bump 2025-01-27 20:30:37 +01:00
Łukasz Domeradzki
0a2ce30c82 Misc 2025-01-27 20:24:43 +01:00
Łukasz Domeradzki
dd37914703 Apply feedback 2025-01-27 20:12:35 +01:00
Łukasz Domeradzki
67c2e9c6d3 Record input from the user in the logs as well 2025-01-27 19:57:42 +01:00
Łukasz Domeradzki
ec151c383b Ensure rare console writes leave trace in the log as of what is happening 2025-01-27 19:44:47 +01:00
renovate[bot]
05079eb941 chore(deps): update opentelemetry-dotnet-contrib monorepo to 1.11.0 2025-01-27 09:50:46 +00:00
renovate[bot]
38ebfc9345 chore(deps): update actions/setup-node action to v4.2.0 2025-01-27 04:35:19 +00:00
renovate[bot]
fc4f4092f2 chore(deps): update docker/build-push-action action to v6.13.0 2025-01-26 17:30:19 +00:00
renovate[bot]
59f00714d6 chore(deps): update github/codeql-action action to v3.28.5 2025-01-26 13:06:44 +00:00
renovate[bot]
7d84599d0a chore(deps): update asf-ui digest to 907e0fb 2025-01-26 09:43:31 +00:00
renovate[bot]
da1e49ffde chore(deps): update crowdin/github-action action to v2.5.2 2025-01-24 08:25:11 +00:00
renovate[bot]
30498df864 chore(deps): update actions/attest-build-provenance action to v2.2.0 2025-01-24 04:30:18 +00:00
renovate[bot]
9ad08bd028 chore(deps): update github/codeql-action action to v3.28.4 2025-01-24 01:04:48 +00:00
renovate[bot]
70d190488f chore(deps): update dependency opentelemetry.extensions.hosting to 1.11.1 2025-01-23 23:16:35 +00:00
renovate[bot]
274136e3e1 chore(deps): update asf-ui digest to ad215c8 2025-01-22 05:58:53 +00:00
ArchiBot
9b81c390bf Automatic translations update 2025-01-22 02:19:11 +00:00
renovate[bot]
c649edf051 chore(deps): update github/codeql-action action to v3.28.2 2025-01-21 20:58:29 +00:00
renovate[bot]
7bb1528e78 chore(deps): update dependency mstest to 3.7.2 2025-01-21 18:58:00 +00:00
renovate[bot]
b8fb66c7fe chore(deps): update asf-ui digest to bbeba04 2025-01-21 05:56:07 +00:00
ArchiBot
075a234e14 Automatic translations update 2025-01-21 02:18:06 +00:00
Łukasz Domeradzki
7e6a79dac2 Misc rename 2025-01-20 12:32:09 +01:00
Łukasz Domeradzki
ff6473dbe6 Bump 2025-01-20 11:54:41 +01:00
Łukasz Domeradzki
ac01cca55e Go back to swagger in regards to #3376, add cmdline switch to force openapi 2025-01-20 11:49:35 +01:00
renovate[bot]
2a66fce878 chore(deps): update asf-ui digest to 3e24284 2025-01-19 05:05:53 +00:00
ArchiBot
9d5d6b792d Automatic translations update 2025-01-19 02:20:36 +00:00
renovate[bot]
7927ff859f chore(deps): update asf-ui digest to 9cd1203 2025-01-18 04:34:13 +00:00
renovate[bot]
f2992fa6dd chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.3.1 2025-01-18 00:24:41 +00:00
renovate[bot]
af27952ced chore(deps): update crowdin/github-action action to v2.5.1 2025-01-17 09:54:22 +00:00
ArchiBot
2f92a80bd6 Automatic translations update 2025-01-17 02:17:34 +00:00
renovate[bot]
786dc16bbd chore(deps): update dependency opentelemetry.extensions.hosting to 1.11.0 2025-01-16 13:11:57 +00:00
ArchiBot
947ed6234e Automatic translations update 2025-01-16 02:18:00 +00:00
renovate[bot]
6e8ee64918 chore(deps): update docker/build-push-action action to v6.12.0 2025-01-15 15:02:14 +00:00
renovate[bot]
ce0d423497 chore(deps): update dotnet monorepo to 9.0.1 2025-01-15 11:13:32 +00:00
renovate[bot]
851c8bdbf8 chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to 3.11.0-beta1.24605.2 2025-01-15 05:05:22 +00:00
ArchiBot
9ed6586b93 Automatic translations update 2025-01-15 02:18:20 +00:00
renovate[bot]
fcb965e492 chore(deps): update asf-ui digest to e18599e 2025-01-14 20:55:47 +00:00
ArchiBot
32cde62815 Automatic translations update 2025-01-14 02:17:39 +00:00
renovate[bot]
d83e4fceca chore(deps): update dependency mstest to 3.7.1 2025-01-13 18:01:12 +00:00
ArchiBot
af1d017123 Automatic translations update 2025-01-13 02:20:56 +00:00
Sebastian Göls
3759e906cc Improve monitoring plugin (#3374) 2025-01-12 23:18:05 +01:00
renovate[bot]
764ec31559 chore(deps): update ncipollo/release-action action to v1.15.0 2025-01-12 05:12:51 +00:00
renovate[bot]
b3754fc32c chore(deps): update asf-ui digest to 9028c68 2025-01-11 06:42:38 +00:00
renovate[bot]
4780aa7601 chore(deps): update actions/upload-artifact action to v4.6.0 2025-01-11 01:24:26 +00:00
renovate[bot]
7c67a7409f chore(deps): update asf-ui digest to 345fe2b 2025-01-10 22:33:08 +00:00
renovate[bot]
db9969558f chore(deps): update github/codeql-action action to v3.28.1 2025-01-10 18:50:15 +00:00
renovate[bot]
78fd2ae333 chore(deps): update dependency markdig.signed to 0.40.0 2025-01-10 09:50:23 +00:00
renovate[bot]
6f4337c91e chore(deps): update docker/build-push-action action to v6.11.0 2025-01-08 14:52:37 +00:00
ArchiBot
a92430b4f0 Automatic translations update 2025-01-08 02:19:48 +00:00
Łukasz Domeradzki
f18a1d584d Misc monitoring stuff 2025-01-07 14:59:31 +01:00
Łukasz Domeradzki
1302fd8984 Misc monitoring plugin improvements 2025-01-07 14:38:29 +01:00
ArchiBot
289010ba88 Automatic translations update 2025-01-07 02:20:15 +00:00
ArchiBot
99f994b4b5 Automatic translations update 2025-01-06 02:21:19 +00:00
renovate[bot]
cd63f14f97 chore(deps): update wiki digest to 871cf91 2025-01-05 19:44:13 +00:00
Łukasz Domeradzki
b38748de18 Misc 2025-01-05 19:04:55 +01:00
Łukasz Domeradzki
730814f4f6 Use new field keyword 2025-01-05 16:51:43 +01:00
Łukasz Domeradzki
ccec47c8bd Resolve some qodana warnings 2025-01-05 16:22:54 +01:00
Łukasz Domeradzki
90ae809bbe Bump 2025-01-05 15:35:06 +01:00
Łukasz Domeradzki
30a48b08fe Don't trim tags, needed for STD plugin 2025-01-05 15:28:05 +01:00
Łukasz Domeradzki
9e207025c5 Happy new year 2025-01-05 02:40:56 +01:00
Łukasz Domeradzki
3f98337459 Closes #3343 2025-01-05 02:32:05 +01:00
Łukasz Domeradzki
8c9cf69353 Misc warnings cleanup 2025-01-04 19:30:24 +01:00
renovate[bot]
d9b4bd5aca chore(deps): update asf-ui digest to bd81c92 2025-01-04 13:58:20 +00:00
Łukasz Domeradzki
96407018fb Don't allow to run with invalid IPCPassword
This scenario would throw when IPC is required to compare provided password with hash in the config. Instead, yell at user and prevent them from running with such config at all.
2025-01-04 14:47:53 +01:00
ArchiBot
1f78dbb553 Automatic translations update 2025-01-04 02:18:30 +00:00
renovate[bot]
3ef582ef84 chore(deps): update wiki digest to 17137f3 2025-01-03 17:09:53 +00:00
Łukasz Domeradzki
5be6e8ccda Add flags resources for wiki 2025-01-03 16:37:47 +01:00
ArchiBot
12cea2303c Automatic translations update 2025-01-03 02:19:54 +00:00
ArchiBot
ab11e10c5c Automatic translations update 2025-01-02 02:19:10 +00:00
Łukasz Domeradzki
a97d761f46 Bump, remove obsolete functionalities 2025-01-01 15:05:17 +01:00
Łukasz Domeradzki
7bf2dab4d0 Closes #3370 2025-01-01 14:49:19 +01:00
Łukasz Domeradzki
13567d4aaa Copy over bundled plugins to main ASF dir as well 2025-01-01 14:33:36 +01:00
Łukasz Domeradzki
c4ef7e6872 Misc corrections to solution 2025-01-01 14:31:57 +01:00
ArchiBot
bf83b4807d Automatic translations update 2024-12-31 02:19:27 +00:00
renovate[bot]
69b3e460ef chore(deps): update dependency steamkit2 to 3.0.1 2024-12-29 11:07:39 +00:00
ArchiBot
6aa32cdd32 Automatic translations update 2024-12-29 02:22:08 +00:00
renovate[bot]
626f3c6a0a chore(deps): update actions/setup-dotnet action to v4.2.0 2024-12-27 01:22:27 +00:00
renovate[bot]
5f34a16dd7 chore(deps): update asf-ui digest to 8b93e22 2024-12-25 16:02:20 +00:00
Łukasz Domeradzki
4beff6fc22 Bump 2024-12-25 14:46:22 +01:00
Łukasz Domeradzki
cb08e05d62 Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-12-25 14:45:38 +01:00
Łukasz Domeradzki
fca28d30cd Bump ASF-ui 2024-12-25 14:45:27 +01:00
Sebastian Göls
7df37649b7 Update grafana-dashboard.json (#3366) 2024-12-25 14:37:02 +01:00
Łukasz Domeradzki
ba68d1010f Add optional filtering for plugins GET endpoint 2024-12-25 14:34:18 +01:00
Łukasz Domeradzki
711cda2d90 Revert "Misc"
This reverts commit b5039d6308.
2024-12-25 14:30:02 +01:00
Łukasz Domeradzki
b5039d6308 Misc 2024-12-25 14:22:24 +01:00
renovate[bot]
89bea12f9b chore(deps): update jetbrains/qodana-action action to v2024.3.4 2024-12-22 16:39:24 +00:00
renovate[bot]
53d7876d47 chore(deps): update asf-ui digest to 57b98e6 2024-12-21 10:05:04 +00:00
renovate[bot]
a0a8018527 chore(deps): update github/codeql-action action to v3.28.0 2024-12-20 23:02:00 +00:00
renovate[bot]
475daf5183 chore(deps): update dependency mstest to 3.7.0 2024-12-20 15:43:58 +00:00
Łukasz Domeradzki
b6597ce468 Bump 2024-12-20 15:21:22 +01:00
Łukasz Domeradzki
61fdbcfa9f Skip borrowed games from owned packages 2024-12-20 15:08:17 +01:00
Łukasz Domeradzki
f7f7dbdab8 Misc 2024-12-20 14:54:33 +01:00
Łukasz Domeradzki
267384ad59 Decrease memory consumption from owned packages 2024-12-20 14:50:56 +01:00
Łukasz Domeradzki
7dc3d16666 Properly resolve #3358 2024-12-20 14:17:53 +01:00
Łukasz Domeradzki
b251598ca4 Revert "Use different URL to resolve #3358"
This reverts commit 328a3748f5.
2024-12-20 13:45:14 +01:00
Łukasz Domeradzki
96279a96bb Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-12-20 13:34:11 +01:00
Łukasz Domeradzki
328a3748f5 Use different URL to resolve #3358 2024-12-20 13:34:09 +01:00
ArchiBot
5b30a29e09 Automatic translations update 2024-12-20 02:20:19 +00:00
renovate[bot]
c97fbe4256 chore(deps): update wiki digest to d57f0d1 2024-12-19 22:19:30 +00:00
Łukasz Domeradzki
713971ced6 Remove AutoSteamSaleEvent farming preference (#3360) 2024-12-19 21:28:50 +01:00
Łukasz Domeradzki
b28c3e368e Bump 2024-12-19 13:27:10 +01:00
renovate[bot]
d5045ce737 chore(deps): update dependency markdig.signed to 0.39.1 2024-12-19 05:48:01 +00:00
renovate[bot]
4acb6eda07 chore(deps): update actions/upload-artifact action to v4.5.0 2024-12-18 07:32:05 +00:00
renovate[bot]
74aeb89afa chore(deps): update asf-ui digest to 10e22ad 2024-12-18 04:57:17 +00:00
renovate[bot]
545d15c4c6 chore(deps): update jetbrains/qodana-action action to v2024.3.3 2024-12-18 01:59:58 +00:00
Łukasz Domeradzki
054a317777 Try to address #3362 2024-12-17 23:59:32 +01:00
renovate[bot]
dd7ae5801d chore(deps): update dependency markdig.signed to 0.39.0 2024-12-17 12:01:20 +00:00
renovate[bot]
d3d003b00e chore(deps): update asf-ui digest to eb1efb2 2024-12-17 06:12:39 +00:00
renovate[bot]
c3b431d573 chore(deps): update asf-ui digest to c465c58 2024-12-16 17:03:33 +00:00
renovate[bot]
865668f6b1 chore(deps): update docker/setup-buildx-action action to v3.8.0 2024-12-16 12:16:34 +00:00
renovate[bot]
2f15569ddc chore(deps): update crowdin/github-action action to v2.5.0 2024-12-16 10:10:16 +00:00
renovate[bot]
6c2fd10b2f chore(deps): update asf-ui digest to 551378e 2024-12-16 03:58:02 +00:00
ArchiBot
7dee5b9998 Automatic translations update 2024-12-16 02:24:12 +00:00
ArchiBot
1f1dcbe39c Automatic translations update 2024-12-15 02:25:58 +00:00
Łukasz Domeradzki
acd081775d Misc Rider enhancements 2024-12-14 17:51:03 +01:00
renovate[bot]
0db414d608 chore(deps): update asf-ui digest to 9905d3e 2024-12-14 03:57:34 +00:00
ArchiBot
09d715c03d Automatic translations update 2024-12-14 02:22:17 +00:00
renovate[bot]
b776aa48cd chore(deps): update asf-ui digest to b6c7dc8 2024-12-13 04:40:56 +00:00
renovate[bot]
d4eef759fb chore(deps): update github/codeql-action action to v3.27.9 2024-12-13 02:30:35 +00:00
Łukasz Domeradzki
c1005134b0 Bump 2024-12-12 22:15:55 +01:00
Łukasz Domeradzki
fc525c5619 Bump 2024-12-12 22:15:36 +01:00
Jack Nolddor
1f27cb37f2 feat: blacklist winter sale 2024 app (#3359)
refer to https://steamdb.info/app/2861720/
2024-12-12 22:14:32 +01:00
renovate[bot]
58f2b8e45c chore(deps): update jetbrains/qodana-action action to v2024.3.2 2024-12-11 18:23:28 +00:00
renovate[bot]
57c8533303 chore(deps): update asf-ui digest to addd6c6 2024-12-11 16:28:20 +00:00
renovate[bot]
aa1302c058 chore(deps): update dependency opentelemetry.instrumentation.aspnetcore to 1.10.1 2024-12-11 00:53:58 +00:00
renovate[bot]
ac31004074 chore(deps): update swashbuckle-aspnetcore monorepo to 7.2.0 2024-12-10 23:35:15 +00:00
renovate[bot]
755ab226c3 chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to 3.11.0-beta1.24527.2 2024-12-10 20:22:39 +00:00
renovate[bot]
78195e6913 chore(deps): update github/codeql-action action to v3.27.7 2024-12-10 15:05:44 +00:00
Łukasz Domeradzki
0f48b92b47 Misc 2024-12-10 12:14:44 +01:00
renovate[bot]
3de504192b chore(deps): update actions/attest-build-provenance action to v2.1.0 2024-12-09 23:28:56 +00:00
renovate[bot]
eea71a9ecf chore(deps): update dependency opentelemetry.instrumentation.aspnetcore to 1.10.0 2024-12-09 11:58:44 +00:00
ArchiBot
b9b93caf50 Automatic translations update 2024-12-08 02:26:04 +00:00
renovate[bot]
d06e69055a chore(deps): update actions/attest-build-provenance action to v2.0.1 2024-12-06 18:55:21 +00:00
renovate[bot]
6f528990c3 chore(deps): update dependency opentelemetry.instrumentation.runtime to 1.10.0 2024-12-06 02:01:40 +00:00
renovate[bot]
46c720ae23 chore(deps): update asf-ui digest to 1e52298 2024-12-05 23:24:12 +00:00
Łukasz Domeradzki
a8982581b7 Bump 2024-12-05 20:22:37 +01:00
Łukasz Domeradzki
d21912dcd9 Add workaround for #3352 2024-12-05 20:20:30 +01:00
renovate[bot]
f74e6bff39 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.3.0 2024-12-05 04:51:28 +00:00
ArchiBot
9bad87c576 Automatic translations update 2024-12-05 02:23:35 +00:00
renovate[bot]
af6354c62a chore(deps): update asf-ui digest to c316254 2024-12-04 21:19:54 +00:00
renovate[bot]
9621339ac4 chore(deps): update actions/attest-build-provenance action to v2 (#3356)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-04 22:19:16 +01:00
renovate[bot]
ecf00aded6 chore(deps): update asf-ui digest to c7a10da 2024-12-04 13:14:37 +00:00
renovate[bot]
3b04524dbc chore(deps): update asf-ui digest to bfdb3fb 2024-12-04 04:22:58 +00:00
renovate[bot]
5f86d7fca0 chore(deps): update dependency mstest to 3.6.4 2024-12-03 23:05:13 +00:00
renovate[bot]
d85945e664 chore(deps): update asf-ui digest to 11c980c 2024-12-03 20:18:15 +00:00
renovate[bot]
82f1ded4a1 chore(deps): update github/codeql-action action to v3.27.6 2024-12-03 12:21:13 +00:00
renovate[bot]
00393279ed chore(deps): update asf-ui digest to dcdb4aa 2024-12-03 07:40:10 +00:00
ArchiBot
4fc72bf56e Automatic translations update 2024-12-03 02:23:29 +00:00
Łukasz Domeradzki
d373cfb9ae Bump 2024-12-02 14:20:40 +01:00
Łukasz Domeradzki
90ead36184 Merge branch 'stable' 2024-12-02 14:20:08 +01:00
Łukasz Domeradzki
a4e46d9451 Bump 2024-12-02 09:25:10 +01:00
Łukasz Domeradzki
ea53975acf Attempt to resolve #3348 2024-12-02 09:17:26 +01:00
ArchiBot
29709abc62 Automatic translations update 2024-12-02 02:23:18 +00:00
ArchiBot
26b09f3f8a Automatic translations update 2024-12-01 02:31:06 +00:00
renovate[bot]
c98a177909 chore(deps): update asf-ui digest to 5a3591d 2024-11-30 11:03:51 +00:00
ArchiBot
57ceba2134 Automatic translations update 2024-11-30 02:21:27 +00:00
ArchiBot
1801f8d62a Automatic translations update 2024-11-29 02:23:43 +00:00
renovate[bot]
840cf03441 chore(deps): update wiki digest to 2c27b3d 2024-11-28 18:57:08 +00:00
renovate[bot]
8de27db858 chore(deps): update dependency opentelemetry.instrumentation.http to 1.10.0 2024-11-27 21:29:51 +00:00
renovate[bot]
ba3b49cfbd chore(deps): update docker/build-push-action action to v6.10.0 2024-11-26 15:23:49 +00:00
renovate[bot]
df94dee4cd chore(deps): update asf-ui digest to d361815 2024-11-26 05:28:28 +00:00
renovate[bot]
9dbd835600 chore(deps): update swashbuckle-aspnetcore monorepo to 7.1.0 2024-11-25 15:51:49 +00:00
renovate[bot]
c714dcdd69 chore(deps): update asf-ui digest to c0c518c 2024-11-25 13:39:45 +00:00
renovate[bot]
d291b9479d chore(deps): update crowdin/github-action action to v2.4.0 2024-11-25 09:32:54 +00:00
ArchiBot
ddf6bb29bf Automatic translations update 2024-11-25 02:22:41 +00:00
ArchiBot
4f38b8174d Automatic translations update 2024-11-24 02:24:21 +00:00
renovate[bot]
4abb2cf526 chore(deps): update wiki digest to 0dcdb24 2024-11-23 21:38:16 +00:00
Citrinate
837ca6a805 Fix typo (#3344) 2024-11-23 17:30:58 +01:00
renovate[bot]
08eebdf24f chore(deps): update dependency nlog.web.aspnetcore to 5.3.15 2024-11-21 21:33:59 +00:00
Łukasz Domeradzki
2d4ee1c9f8 Improve COPY in our dockerfiles
https://docs.docker.com/reference/dockerfile/#copy---link

> If you don't rely on the behavior of following symlinks in the destination path, using --link is always recommended. The performance of --link is equivalent or better than the default behavior and, it creates much better conditions for cache reuse.

Also recommended in aspnet samples: https://github.com/dotnet/dotnet-docker/blob/main/samples/aspnetapp/Dockerfile
2024-11-21 22:33:32 +01:00
renovate[bot]
448cdda23d chore(deps): update asf-ui digest to 28133ae 2024-11-20 21:46:06 +00:00
renovate[bot]
ccbb830538 chore(deps): update github/codeql-action action to v3.27.5 2024-11-20 16:35:42 +00:00
ArchiBot
bdb94b8f0b Automatic translations update 2024-11-20 02:22:06 +00:00
renovate[bot]
0f4626557e chore(deps): update asf-ui digest to 6cfb52e 2024-11-19 15:57:11 +00:00
renovate[bot]
0c091ea5a5 chore(deps): update asf-ui digest to b10ccf2 2024-11-19 04:31:36 +00:00
ArchiBot
cdaa1a6374 Automatic translations update 2024-11-19 02:22:10 +00:00
renovate[bot]
857c81e0bc chore(deps): update wiki digest to dc8e632 2024-11-18 15:09:05 +00:00
Łukasz Domeradzki
6ab1e40826 Bump 2024-11-18 11:10:07 +01:00
Łukasz Domeradzki
8aa017050e Fix trimmed HttpContext in ASF API 2024-11-18 11:08:31 +01:00
ArchiBot
b1b04b3ebe Automatic translations update 2024-11-18 02:23:09 +00:00
renovate[bot]
4fc277221e chore(deps): update wiki digest to 59de868 2024-11-17 23:00:15 +00:00
Łukasz Domeradzki
082beb5763 Bump 2024-11-17 20:16:01 +01:00
Łukasz Domeradzki
607b380ddd Bump 2024-11-17 20:15:42 +01:00
Łukasz Domeradzki
1ec9118af2 Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-11-15 23:54:42 +01:00
renovate[bot]
c911ad45bf chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.2.1 2024-11-15 19:50:58 +00:00
renovate[bot]
0dee3e311a chore(deps): update asf-ui digest to 1f0b191 2024-11-15 08:05:11 +00:00
ArchiBot
17ef5e3aee Automatic translations update 2024-11-15 02:22:07 +00:00
renovate[bot]
1505e2dbd4 chore(deps): update github/codeql-action action to v3.27.4 2024-11-14 16:57:46 +00:00
Łukasz Domeradzki
1ea5913f3d Misc 2024-11-14 12:02:18 +01:00
renovate[bot]
7f548a1982 chore(deps): update asf-ui digest to e83c58e 2024-11-14 05:07:08 +00:00
ArchiBot
d1b7133db3 Automatic translations update 2024-11-14 02:19:56 +00:00
renovate[bot]
c5bee672d1 chore(deps): update dependency opentelemetry.extensions.hosting to 1.10.0 2024-11-13 03:04:04 +00:00
renovate[bot]
50b054890a chore(deps): update asf-ui digest to 33319ed 2024-11-13 01:34:12 +00:00
renovate[bot]
ef9d269660 chore(deps): update github/codeql-action action to v3.27.3 2024-11-12 23:30:37 +00:00
renovate[bot]
f01b0d6641 chore(deps): update swashbuckle-aspnetcore monorepo to v7 (#3338)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 00:30:07 +01:00
renovate[bot]
f9519141b1 chore(deps): update dotnet monorepo to v9 (#3337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 00:29:18 +01:00
Łukasz Domeradzki
1b626caa53 .NET ⑨ (strongest version) (#3244)
* Initial .NET 9 bump

* Resolve selected .NET 9 analyzer warnings

* Fill TODO

* Fix build errors

* Misc

* Use new methods

* .NET 9 changes

* Dockerfiles no longer preview

* Misc

* Trimming works again

* Trimming works in docker too

* Test fix

* Update Directory.Build.props
2024-11-13 00:28:52 +01:00
renovate[bot]
4167b6be54 chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to 3.11.0-beta1.24508.2 2024-11-12 20:39:22 +00:00
renovate[bot]
8305ba92c3 chore(deps): update dependency mstest to 3.6.3 2024-11-12 17:30:32 +00:00
renovate[bot]
8efe6d7f70 chore(deps): update github/codeql-action action to v3.27.2 2024-11-12 14:46:50 +00:00
renovate[bot]
8cd9587ab7 chore(deps): update asf-ui digest to 406694f 2024-11-12 04:44:09 +00:00
ArchiBot
ed0da062df Automatic translations update 2024-11-12 02:18:36 +00:00
ArchiBot
83daa09c80 Automatic translations update 2024-11-11 02:20:07 +00:00
renovate[bot]
5599bf179b chore(deps): update wiki digest to 5d6bb1d 2024-11-10 18:15:44 +00:00
Łukasz Domeradzki
44cf96ce70 Bump 2024-11-10 15:42:19 +01:00
Łukasz Domeradzki
540408a3d0 Fix kestrel deadlock in update procedure when using update command 2024-11-10 15:36:41 +01:00
ArchiBot
9058898f3b Automatic translations update 2024-11-10 02:20:43 +00:00
ArchiBot
4643529e7f Automatic translations update 2024-11-09 02:17:54 +00:00
renovate[bot]
b0f9268996 chore(deps): update github/codeql-action action to v3.27.1 2024-11-08 18:34:33 +00:00
ArchiBot
b863a7e523 Automatic translations update 2024-11-08 02:19:25 +00:00
renovate[bot]
4a77c987ed chore(deps): update dependency steamkit2 to 3.0.0 2024-11-07 13:32:41 +00:00
ArchiBot
7d7c4ba3a5 Automatic translations update 2024-11-07 02:19:45 +00:00
renovate[bot]
f2e8fd0ec4 chore(deps): update wiki digest to 50688c7 2024-11-06 19:33:17 +00:00
Łukasz Domeradzki
a8f1cef5b8 Remove obsolete functionalities, bump 2024-11-06 18:47:39 +01:00
Łukasz Domeradzki
7c481de811 Closes #3327 2024-11-06 17:40:05 +01:00
ArchiBot
b66d883c1c Automatic translations update 2024-11-06 02:18:56 +00:00
renovate[bot]
48a742add5 chore(deps): update actions/attest-build-provenance action to v1.4.4 2024-11-05 21:02:39 +00:00
renovate[bot]
adddc1b5ba chore(deps): update asf-ui digest to 3cc6e93 2024-11-03 05:10:14 +00:00
ArchiBot
d63ef5e58c Automatic translations update 2024-11-03 02:22:03 +00:00
renovate[bot]
765651d94d chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.2.0 2024-11-02 22:07:14 +00:00
renovate[bot]
8c9462d387 chore(deps): update asf-ui digest to aed20b6 2024-11-02 07:27:55 +00:00
renovate[bot]
04bfe96e16 chore(deps): update asf-ui digest to bc7d0a9 2024-11-01 00:35:11 +00:00
renovate[bot]
2f8ef39ead chore(deps): update dependency mstest to 3.6.2 2024-10-31 16:15:08 +00:00
Łukasz Domeradzki
35cdfbf169 Misc 2024-10-31 11:58:18 +01:00
ArchiBot
fd69303a0e Automatic translations update 2024-10-31 02:20:54 +00:00
renovate[bot]
271311eeaf chore(deps): update asf-ui digest to a047b72 2024-10-30 04:28:28 +00:00
ArchiBot
00b2b24e54 Automatic translations update 2024-10-29 02:21:03 +00:00
renovate[bot]
c8e6b9efa5 chore(deps): update asf-ui digest to 7ffa683 2024-10-28 23:00:38 +00:00
renovate[bot]
b22f2f6420 chore(deps): update asf-ui digest to 3a33033 2024-10-28 16:16:27 +00:00
renovate[bot]
fa5c65f927 chore(deps): update crowdin/github-action action to v2.3.0 2024-10-28 14:34:25 +00:00
renovate[bot]
98f29b485b chore(deps): update jetbrains/qodana-action action to v2024.2.6 2024-10-28 11:29:07 +00:00
ArchiBot
712a38c70f Automatic translations update 2024-10-28 02:21:46 +00:00
Łukasz Domeradzki
c4dc037b3b Bump 2024-10-27 19:08:23 +01:00
Łukasz Domeradzki
6dddaa5992 Fix kestrel deadlock in update procedure
This time for good
2024-10-27 18:48:26 +01:00
renovate[bot]
8879ed71c5 chore(deps): update asf-ui digest to 7c5eb33 2024-10-27 03:40:36 +00:00
renovate[bot]
b4c4f73e5e chore(deps): update crazy-max/ghaction-import-gpg action to v6.2.0 2024-10-26 22:39:09 +00:00
renovate[bot]
17e64803c6 chore(deps): update dependency markdig.signed to 0.38.0 2024-10-25 22:22:01 +00:00
renovate[bot]
9c3b354fa2 chore(deps): update asf-ui digest to a45b124 2024-10-25 18:22:10 +00:00
renovate[bot]
040caa1f40 chore(deps): update dependency jetbrains.annotations to 2024.3.0 2024-10-25 03:01:44 +00:00
renovate[bot]
4cd8a7cb46 chore(deps): update actions/setup-node action to v4.1.0 2024-10-25 02:10:00 +00:00
renovate[bot]
782b54ac33 chore(deps): update actions/setup-dotnet action to v4.1.0 2024-10-24 21:50:51 +00:00
renovate[bot]
6437575763 chore(deps): update jetbrains/qodana-action action to v2024.2.5 2024-10-24 19:22:31 +00:00
renovate[bot]
df8856454a chore(deps): update asf-ui digest to 515711c 2024-10-24 16:55:33 +00:00
renovate[bot]
132f47d86f chore(deps): update asf-ui digest to 1cdd235 2024-10-24 05:14:34 +00:00
renovate[bot]
07f8dc543f chore(deps): update asf-ui digest to 7b3c90f 2024-10-23 23:17:51 +00:00
renovate[bot]
9a2fd8c91d chore(deps): update actions/checkout action to v4.2.2 2024-10-23 16:33:07 +00:00
renovate[bot]
6867f69909 chore(deps): update asf-ui digest to 61541c9 2024-10-23 10:29:16 +00:00
renovate[bot]
2c80f35388 chore(deps): update github/codeql-action action to v3.27.0 2024-10-22 21:42:13 +00:00
renovate[bot]
4e855011bc chore(deps): update asf-ui digest to 238c527 2024-10-22 18:46:50 +00:00
ArchiBot
a46dd753ba Automatic translations update 2024-10-22 02:20:44 +00:00
Łukasz Domeradzki
d7f3a0bf7e Bump 2024-10-21 13:08:52 +02:00
Łukasz Domeradzki
411c49addd Add proper support for server list provider cache 2024-10-21 12:56:17 +02:00
Łukasz Domeradzki
6bc29e8c3f Squashed commit of the following:
commit 7501fd264b7248633c6853a6f232dfbf894b944a
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Oct 21 12:18:54 2024 +0200

    Remove CI artifact

commit d6ad6e78e386d08b2b7aeb53992b4b987b08d729
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Oct 21 10:23:04 2024 +0200

    Bump experiments

commit d5553a52f3bc656c5dd1c280b9189bc48e4d417e
Merge: 6e34cdc2 4b3224a7
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Oct 21 10:19:16 2024 +0200

    Merge branch 'main' into unified-experiments

commit 6e34cdc26c0804852c2b0cbadedcafbe45afb787
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Thu Oct 17 17:28:08 2024 +0200

    Update experiments

commit 70b1c6e367c697ee669b16bf4d18b17aef4c2bb0
Merge: c22eb587 def6b675
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Thu Oct 17 17:18:34 2024 +0200

    Merge branch 'main' into unified-experiments

commit c22eb5872ebcd1a284e354b645d4dc634412513b
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Oct 14 20:07:23 2024 +0200

    Make it work

commit 9907d375040ca5a0750b70df541597be29abc21f
Merge: de4b33c2 d166e198
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Oct 14 19:31:06 2024 +0200

    Merge branch 'main' into unified-experiments

commit de4b33c2c458d516b1945dd7ea24db321f15f7f9
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Sun Oct 13 20:22:32 2024 +0200

    Fix docker build again

commit 60f3be0bd89375d19333f017389c0ba223ea721a
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Sun Oct 13 20:18:27 2024 +0200

    Fix docker build

commit 07502180c4eb32549533917efca661e13ccf1a2f
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Sun Oct 13 20:15:18 2024 +0200

    Commit missing part

commit 75fd1b867511419fa11d224042f5bc761571ac8d
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Sun Oct 13 20:12:12 2024 +0200

    Craft some experiments
2024-10-21 12:19:23 +02:00
ArchiBot
4b3224a748 Automatic translations update 2024-10-21 02:21:09 +00:00
renovate[bot]
1b95433cb6 chore(deps): update asf-ui digest to 7aba78d 2024-10-20 21:59:26 +00:00
Łukasz Domeradzki
64db3f4c09 Misc
https://docs.docker.com/reference/build-checks/redundant-target-platform/
2024-10-20 23:59:02 +02:00
renovate[bot]
22509fed14 chore(deps): update asf-ui digest to 2485e01 2024-10-20 04:25:22 +00:00
ArchiBot
819b5f3dbf Automatic translations update 2024-10-20 02:22:33 +00:00
renovate[bot]
2c1975d203 chore(deps): update asf-ui digest to 2e68b90 2024-10-19 04:59:45 +00:00
ArchiBot
46d6aa44d1 Automatic translations update 2024-10-19 02:19:31 +00:00
renovate[bot]
17130b7215 chore(deps): update wiki digest to bc10b9e 2024-10-18 23:23:50 +00:00
renovate[bot]
3b0d0e033f chore(deps): update asf-ui digest to 499e1c4 2024-10-18 02:27:53 +00:00
renovate[bot]
def6b6751b chore(deps): update asf-ui digest to c289dc1 2024-10-17 09:56:10 +00:00
ArchiBot
90756bde27 Automatic translations update 2024-10-17 02:20:15 +00:00
renovate[bot]
a28c431dcd chore(deps): update swashbuckle-aspnetcore monorepo to 6.9.0 2024-10-15 13:32:00 +00:00
renovate[bot]
50fc619d92 chore(deps): update github/codeql-action action to v3.26.13 2024-10-15 00:19:55 +00:00
renovate[bot]
2475c040b9 chore(deps): update asf-ui digest to 867bd21 2024-10-14 21:12:28 +00:00
ArchiBot
d166e198de Automatic translations update 2024-10-14 12:36:26 +00:00
Łukasz Domeradzki
5a9750a4b6 Workaround stale cache of CM servers 2024-10-14 13:42:29 +02:00
ArchiBot
fc64511268 Automatic translations update 2024-10-14 02:21:05 +00:00
Łukasz Domeradzki
f2b8897ed1 Misc 2024-10-13 18:36:50 +02:00
Łukasz Domeradzki
dae03afc2d Bump 2024-10-13 18:27:20 +02:00
renovate[bot]
5d383dcae6 chore(deps): update dependency steamkit2 to 3.0.0-beta.4 2024-10-13 09:54:17 +00:00
ArchiBot
3e4c7ac9f8 Automatic translations update 2024-10-13 02:21:36 +00:00
Łukasz Domeradzki
f48caa08e9 Misc 2024-10-12 21:05:00 +02:00
Łukasz Domeradzki
f32fafdf15 Resolve eternal TODO with ASF API update routine 2024-10-12 21:03:11 +02:00
Łukasz Domeradzki
f427b89617 Bump 2024-10-12 18:55:44 +02:00
Łukasz Domeradzki
b0e36948c5 Misc
Don't force reconnect if we're somehow already connected during Start()
2024-10-12 16:11:10 +02:00
Łukasz Domeradzki
b0254aea2d Implement extra bullet-proofing and synchronization over connect/disconnect logic
Address @ezhevita findings in regards to race conditions:

- NRE in this lambda function: 1a9f2a23c4/ArchiSteamFarm/Steam/Bot.cs (L1962)
- NRE in the ArchiSteamFarm.Steam.Bot.StopHandlingCallbacks (probably race condition?)

In general, both are caused by race conditions which can happen if user attempts to start/stop bot while critical section of handling callbacks loop is going. The code is overly complex unfortunately, so debugging it/guarantee of safety is problematic.

This commit therefore attempts to fix the underlying issue by synchronizing the code that starts/stops the underlying callbacks handling loop. While the loop itself is already thread-safe, the code that starts/stops it was not before. Now Start() as well as Stop() can not occur concurrently. On top of that, the only other place which has potential to stop the loop - final disconnect, is also guarded with additional condition that it can fire only if we're NOT set to KeepRunning at the time of calling, which should fix the situation where late disconnected callback could potentially stop already triggered new loop.

As usual in such complex situations, time will tell if this fixes all the issues we have.
2024-10-12 16:06:11 +02:00
renovate[bot]
a84b9ca395 chore(deps): update asf-ui digest to 3c6cb34 2024-10-11 15:38:43 +00:00
ArchiBot
1a9f2a23c4 Automatic translations update 2024-10-11 02:19:45 +00:00
renovate[bot]
e6cb7ceb7b chore(deps): update asf-ui digest to 0e3c497 2024-10-10 19:21:22 +00:00
renovate[bot]
ec28ae562b chore(deps): update asf-ui digest to 30aa298 2024-10-10 00:20:42 +00:00
renovate[bot]
74b832ea4e chore(deps): update actions/upload-artifact action to v4.4.3 2024-10-09 18:16:55 +00:00
renovate[bot]
32c107ae53 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.1.2 2024-10-09 06:24:49 +00:00
renovate[bot]
87d28aea81 chore(deps): update actions/upload-artifact action to v4.4.2 2024-10-09 03:37:16 +00:00
ArchiBot
79b81ac5d1 Automatic translations update 2024-10-09 02:24:33 +00:00
renovate[bot]
57489bc9cb chore(deps): update asf-ui digest to 1d4a3f6 2024-10-08 21:43:48 +00:00
renovate[bot]
e45b09b675 chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to 3.11.0-beta1.24454.1 2024-10-08 15:31:53 +00:00
renovate[bot]
c3d579a835 chore(deps): update asf-ui digest to 178501e 2024-10-08 03:58:21 +00:00
ArchiBot
9d2f4fd795 Automatic translations update 2024-10-08 02:21:10 +00:00
renovate[bot]
a173c84ffb chore(deps): update github/codeql-action action to v3.26.12 2024-10-07 22:00:26 +00:00
renovate[bot]
94ed85914a chore(deps): update actions/checkout action to v4.2.1 2024-10-07 19:05:34 +00:00
renovate[bot]
90c2986277 chore(deps): update actions/upload-artifact action to v4.4.1 2024-10-07 16:08:28 +00:00
ArchiBot
3cff63193d Automatic translations update 2024-10-07 02:21:23 +00:00
renovate[bot]
53066b1f14 chore(deps): update wiki digest to 9bef679 2024-10-06 16:49:08 +00:00
Łukasz Domeradzki
c7524af07a Misc 2024-10-06 15:58:38 +02:00
Łukasz Domeradzki
500a148632 Bump 2024-10-06 15:24:57 +02:00
Łukasz Domeradzki
33c9aeda21 Closes #3304 2024-10-06 15:14:48 +02:00
ArchiBot
9b40ab3b52 Automatic translations update 2024-10-06 02:21:58 +00:00
Łukasz Domeradzki
5a115f1822 Bump 2024-10-05 13:50:42 +02:00
Sebastian Göls
de9900ad14 Revert JSON serialization to how it was with Newtonsoft (#3302) 2024-10-05 13:49:48 +02:00
renovate[bot]
731fbca87c chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.1.1 2024-10-05 03:44:52 +00:00
ArchiBot
8ed27013a4 Automatic translations update 2024-10-05 02:19:08 +00:00
renovate[bot]
9590afa752 chore(deps): update docker/setup-buildx-action action to v3.7.1 2024-10-04 16:27:37 +00:00
Łukasz Domeradzki
f534997e0e Close log endpoints upon graceful shutdown request
Previously we've kept websocket connection open for as long as caller requested it. During graceful shutdown, ASP.NET normally waits for all pending requests to finish, while no longer accepting new ones - this is a very good approach. In our case however, since we didn't do anything with that event before, the graceful shutdown was timing out after 30 seconds before eventually forcefully killing any still-ongoing requests, websocket connection in our case.

Hook into application lifetime in order to be notified when the graceful shutdown happens. This way we can create linked cancellation token for request abort and graceful shutdown and close the websocket connection when any of those two happens.
2024-10-04 17:58:56 +02:00
Łukasz Domeradzki
d609a68dc4 Bump 2024-10-04 14:34:58 +02:00
Łukasz Domeradzki
92456aa838 Avoid terminating the process if not mandatory 2024-10-04 14:32:42 +02:00
Łukasz Domeradzki
d074f47659 Ignore unobserved HttpIOException 2024-10-04 14:27:02 +02:00
renovate[bot]
4cc16897cf chore(deps): update github/codeql-action action to v3.26.11 2024-10-04 04:29:31 +00:00
ArchiBot
8cabec1aff Automatic translations update 2024-10-04 02:20:05 +00:00
renovate[bot]
e7650ab10e chore(deps): update dependency mstest to 3.6.1 2024-10-03 21:23:55 +00:00
renovate[bot]
97ecba07bb chore(deps): update asf-ui digest to 6a1e814 2024-10-03 18:44:34 +00:00
renovate[bot]
061413303a chore(deps): update docker/setup-buildx-action action to v3.7.0 2024-10-03 09:41:06 +00:00
ArchiBot
6bb3d4b48a Automatic translations update 2024-10-03 02:20:14 +00:00
renovate[bot]
90a27b2a4d chore(deps): update asf-ui digest to 615cc1a 2024-10-02 19:24:54 +00:00
renovate[bot]
61aa656611 chore(deps): update wiki digest to 36a8184 2024-10-02 07:23:08 +00:00
renovate[bot]
c6ae45f6ab chore(deps): update asf-ui digest to ef73b2a 2024-10-02 03:33:55 +00:00
ArchiBot
d72eb0b06d Automatic translations update 2024-10-02 02:20:03 +00:00
renovate[bot]
5c728127f1 chore(deps): update wiki digest to 545a92c 2024-10-01 10:09:58 +00:00
ArchiBot
a64472188c Automatic translations update 2024-10-01 02:23:36 +00:00
renovate[bot]
39f7f0a1c6 chore(deps): update docker/build-push-action action to v6.9.0 2024-09-30 21:30:10 +00:00
Łukasz Domeradzki
1e3461918e Misc 2024-09-30 22:49:03 +02:00
Łukasz Domeradzki
ae0704e2bb Remove obsolete alias 2024-09-30 22:46:48 +02:00
Łukasz Domeradzki
42e07c2445 Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-09-30 22:45:57 +02:00
Łukasz Domeradzki
641cf5a350 Rewrite points balance from AWH to AH 2024-09-30 22:45:02 +02:00
renovate[bot]
f984a9122e chore(deps): update wiki digest to 66d2709 (#3295)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-30 22:25:50 +02:00
Łukasz Domeradzki
889795a326 Bump 2024-09-30 22:24:40 +02:00
Łukasz Domeradzki
d5df9e0af9 Bump 2024-09-30 22:24:04 +02:00
Łukasz Domeradzki
b7a6cc5158 Activate multiple definitions in parallel 2024-09-30 22:15:38 +02:00
Łukasz Domeradzki
55d49f87ff Closes #3299 2024-09-30 22:02:09 +02:00
Łukasz Domeradzki
c2abbf0fc0 Misc optimization 2024-09-30 19:19:26 +02:00
Łukasz Domeradzki
ba11952945 Handle exceptions in ArchiCacheable
While our code does not throw them, this is public helper and we don't need to enforce from other callers exceptions-less flow. We can use it for a failure.
2024-09-30 19:16:52 +02:00
renovate[bot]
a7f2556b48 chore(deps): update github/codeql-action action to v3.26.10 2024-09-30 13:49:28 +00:00
renovate[bot]
b66dd2c01b chore(deps): update swashbuckle-aspnetcore monorepo to 6.8.1 2024-09-30 10:22:56 +00:00
ArchiBot
c6261af03c Automatic translations update 2024-09-30 02:21:42 +00:00
ArchiBot
e44d1ac62e Automatic translations update 2024-09-29 02:21:59 +00:00
renovate[bot]
37afe1959a chore(deps): update asf-ui digest to fa46e12 2024-09-28 10:46:57 +00:00
ArchiBot
da04f6b100 Automatic translations update 2024-09-28 02:19:20 +00:00
renovate[bot]
168dc5cb35 chore(deps): update asf-ui digest to faa5f79 2024-09-27 22:19:00 +00:00
Łukasz Domeradzki
9f4d5df8d2 Bump 2024-09-28 00:18:33 +02:00
Łukasz Domeradzki
0c21c223be Closes #3294 2024-09-28 00:03:15 +02:00
Łukasz Domeradzki
1fc4ac8e07 Update GlobalConfig.cs 2024-09-27 23:31:01 +02:00
Łukasz Domeradzki
088161e9ba Experimental update channel rebrand 2024-09-27 23:23:55 +02:00
renovate[bot]
246429f7a1 chore(deps): update docker/build-push-action action to v6.8.0 2024-09-27 12:36:42 +00:00
ArchiBot
2478dd6c10 Automatic translations update 2024-09-27 02:20:15 +00:00
ArchiBot
ee234001f1 Automatic translations update 2024-09-26 02:19:53 +00:00
renovate[bot]
9325959358 chore(deps): update asf-ui digest to 9f5672d 2024-09-25 22:49:39 +00:00
renovate[bot]
aed6784f55 chore(deps): update actions/checkout action to v4.2.0 2024-09-25 19:41:36 +00:00
Łukasz Domeradzki
b5f916dbac Add support for desktop.ini on Windows 2024-09-25 11:59:41 +02:00
renovate[bot]
2555623064 chore(deps): update github/codeql-action action to v3.26.9 2024-09-24 18:08:58 +00:00
renovate[bot]
83aa57a764 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.1.0 2024-09-24 16:36:14 +00:00
ArchiBot
44ed1b1547 Automatic translations update 2024-09-24 02:20:24 +00:00
renovate[bot]
1b91674f9b chore(deps): update dependency nlog.web.aspnetcore to 5.3.14 2024-09-23 22:05:05 +00:00
renovate[bot]
cc363c2f51 chore(deps): update asf-ui digest to 975f624 2024-09-23 17:01:59 +00:00
renovate[bot]
0982943799 chore(deps): update crowdin/github-action action to v2.2.0 2024-09-23 14:24:50 +00:00
renovate[bot]
c79faf6c0e chore(deps): update swashbuckle-aspnetcore monorepo to 6.8.0 2024-09-23 11:11:54 +00:00
ArchiBot
ea110d5da9 Automatic translations update 2024-09-23 02:19:31 +00:00
Łukasz Domeradzki
40dc70e8c7 Misc 2024-09-22 20:42:44 +02:00
Łukasz Domeradzki
5cc684f4b6 .NET 9 improvements 2024-09-22 20:11:50 +02:00
Łukasz Domeradzki
3f605d59d4 Misc 2024-09-22 19:49:22 +02:00
renovate[bot]
d79af97dfc chore(deps): update asf-ui digest to c79c3a1 2024-09-21 03:25:56 +00:00
Łukasz Domeradzki
a701e14a62 Bump 2024-09-20 21:50:46 +02:00
renovate[bot]
8e30183d7c chore(deps): update dependency steamkit2 to 3.0.0-beta.3 2024-09-20 10:54:53 +00:00
renovate[bot]
7d21795c2f chore(deps): update asf-ui digest to 54a84d6 2024-09-20 06:07:16 +00:00
renovate[bot]
26765f31f7 chore(deps): update jetbrains/qodana-action action to v2024.2.3 2024-09-20 02:00:58 +00:00
renovate[bot]
708c523b57 chore(deps): update github/codeql-action action to v3.26.8 2024-09-19 21:58:05 +00:00
renovate[bot]
d05c6b996c chore(deps): update actions/setup-node action to v4.0.4 2024-09-19 18:22:17 +00:00
renovate[bot]
f2f83b0a60 chore(deps): update asf-ui digest to 338bd57 2024-09-19 17:13:20 +00:00
Łukasz Domeradzki
2c0e14fb55 Force github plugins re-update due to compatibility reasons 2024-09-19 16:43:26 +02:00
Łukasz Domeradzki
dca2e6f060 Bump 2024-09-19 14:09:10 +02:00
Łukasz Domeradzki
440e43935a Misc 2024-09-19 14:08:45 +02:00
Łukasz Domeradzki
1dff9a48a8 Closes #3291
As presented in the issue, we might end up in situation when parallel-processing and accepting two neutral+ trade offers will result in unwanted inventory state, because while they're both neutral+ and therefore OK to accept standalone, the combination of them both causes active badge progress degradation.

Considering the requirements we have, e.g. still processing trades in parallel, being performant, low on resources and with limited Steam servers overhead, the solution that I came up with in regards to this issue is quite simple:

- After we determine the trade to be neutral+, but before we tell the parse trade routine to accept it, we check if shared with other parallel processes set of handled sets contains any sets that we're currently processing.
- If no, we update that set to include everything we're dealing with, and tell the caller to accept this trade.
- If yes, we tell the caller to retry this trade after (other) accepted trades are confirmed and handled as usual.

This solves some issues and creates some optimistic assumptions:
- First of all, it solves the original issue, since if trade A and B both touch set S, then only one of them will be accepted. It's not deterministic which one (the one that gets to the check first), and not important anyway.
- We do not "lock" the sets before we determine that trade is neutral+, because otherwise unrelated users could spam us with non-neutral+ trades in order to lock the bot in infinite retry. This way they can't, as if the trade is determined to not be neutral+ then it never checks for concurrent processing.
- We are optimistic about resources usage. This routine could be made much more complicated to be more synchronous in order to avoid unnecessary calls to inventory and matching, however, that'd slow down the whole process only because the next call MAYBE will be determined as unneeded. Due to that, ASF is optimistic that trades will (usually) be unrelated, and can be processed in parallel, and if the conflict happens then simply we end up in a situation where we did some extra work for no reason, which is better than waiting with the work till all previous trades are processed.
- As soon as the conditions are met, the conflicting trades are retried to check if the conditions allow to accept them. If yes, they'll be accepted almost immediately after previous ones, if not, they'll be rejected as non-neutral+ anymore.

This way the additional code does not hurt the performance, parallel processing or anything else in usually expected optimistic scenarios, while adding some additional overhead in pessimistic ones, which is justified considering we don't want to degrade the badge progress.
2024-09-19 13:53:11 +02:00
renovate[bot]
85e90bb8d5 chore(deps): update asf-ui digest to 122393d 2024-09-19 00:13:45 +00:00
renovate[bot]
b62b2382fd chore(deps): update crowdin/github-action action to v2.1.3 2024-09-18 13:51:51 +00:00
renovate[bot]
07f64a0107 chore(deps): update asf-ui digest to 7ae118c 2024-09-18 11:33:46 +00:00
ArchiBot
dcdb2cb175 Automatic translations update 2024-09-18 08:49:16 +00:00
Łukasz Domeradzki
33e7ae83dc Fix wiki push 2024-09-18 10:48:24 +02:00
renovate[bot]
ac0a1da140 chore(deps): update jetbrains/qodana-action action to v2024.2.2 2024-09-17 16:55:13 +00:00
ArchiBot
1ad03ac61c Automatic translations update 2024-09-17 02:06:16 +00:00
renovate[bot]
b28736cb84 chore(deps): update asf-ui digest to 39127c2 2024-09-16 21:53:31 +00:00
Łukasz Domeradzki
602c01e2d9 Misc localization improvement 2024-09-16 20:51:32 +02:00
Łukasz Domeradzki
7b65c1aeb7 Add support for telling plugins if runtime is trimmed 2024-09-16 17:58:35 +02:00
Łukasz Domeradzki
a27973800c Provide extra info when failing to initialize plugins with TypeLoadException 2024-09-16 16:45:52 +02:00
Łukasz Domeradzki
cb4580c0d9 Remove github-push-action 2024-09-16 16:18:01 +02:00
renovate[bot]
1a74d83eae chore(deps): update github/codeql-action action to v3.26.7 2024-09-13 15:16:25 +00:00
Łukasz Domeradzki
319ee49c67 Bump 2024-09-13 14:47:07 +02:00
Łukasz Domeradzki
cefa3e1e1e Fix reconnection with connection being lost
After changes regarding to callbacks handling, we accidentally broke the reconnection logic. In particular, forced connection implicitly did disconnect with disconnect callback, but disconnect callback killed our callbacks handling loop for future connection since it was instructed to not reconnect... Pretty convulated logic.

Let's attempt to fix and simplify it. There is no forced connection concept anymore, but rather a new reconnect function which either, triggers reconnection through usual disconnection logic, or connects in edge case if we attempted to reconnect with already disconnnected client.

This way the status transition is more predictable, as we Connect() only in 3 cases:
- Initial start, including !start command, when we actually spawn the callbacks handling loop
- Upon disconnection, if we're configured to reconnect
- Reconnection, in case we're already disconnected and can't use above

And we use reconnect when:
- Failure in heartbeats to detect disconnections sooner
- Failure in refreshing access tokens, since if we lose our refresh token then the only way to get a new one is to reconnect

And finally disconnect is triggered when:
- Stopping the bot, especially !stop
- Bulletproofing against trying to connect when !KeepRunning and likewise
- Usual Steam maintenance and other network issues (which usually trigger reconnection)

The codebase is too huge to analyze every possible edge case, but with this logic I can no longer reproduce the previous issue
2024-09-13 14:41:11 +02:00
Łukasz Domeradzki
061e61b740 Closes #3289 2024-09-13 13:42:20 +02:00
Łukasz Domeradzki
73d756f211 Bump 2024-09-13 12:50:21 +02:00
Łukasz Domeradzki
3bb83610b8 Misc refactor after #3287 2024-09-13 10:04:56 +02:00
dm1tz
8e85b87764 Add loot& and transfer& commands (#3287)
* Add `loot&` and `transfer&` commands

* Remove trailing comment
2024-09-13 09:20:35 +02:00
renovate[bot]
4d0f5a56ed chore(deps): update dependency nlog.web.aspnetcore to 5.3.13 2024-09-12 22:51:20 +00:00
ArchiBot
a8359e3e00 Automatic translations update 2024-09-12 02:17:57 +00:00
renovate[bot]
3812331901 chore(deps): update dependency mstest to 3.6.0 2024-09-11 10:21:01 +00:00
ArchiBot
1714bd26f9 Automatic translations update 2024-09-11 02:18:09 +00:00
renovate[bot]
d8ad42f760 chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to 3.11.0-beta1.24415.1 2024-09-10 20:03:11 +00:00
renovate[bot]
c477bd2bae chore(deps): update wiki digest to c7cb49b 2024-09-10 11:38:24 +00:00
ArchiBot
aa1cd98646 Automatic translations update 2024-09-10 02:18:00 +00:00
ArchiBot
5f545a9bbc Automatic translations update 2024-09-09 02:18:15 +00:00
ArchiBot
0d3bc2cf47 Automatic translations update 2024-09-07 02:16:32 +00:00
renovate[bot]
8e65142d4c chore(deps): update asf-ui digest to e6ac58d 2024-09-06 14:15:24 +00:00
renovate[bot]
c26a758825 chore(deps): update crowdin/github-action action to v2.1.2 2024-09-06 07:28:01 +00:00
ArchiBot
a02d8cee86 Automatic translations update 2024-09-06 02:17:32 +00:00
renovate[bot]
2c4d2981cd chore(deps): update actions/attest-build-provenance action to v1.4.3 2024-09-05 18:44:30 +00:00
ArchiBot
6c5e0a20f1 Automatic translations update 2024-09-05 02:17:28 +00:00
renovate[bot]
db920da4b8 chore(deps): update wiki digest to 70757b8 2024-09-04 22:58:17 +00:00
Łukasz Domeradzki
efdc3eb7bb Misc 2024-09-04 22:24:31 +02:00
renovate[bot]
c0da86e4ca chore(deps): update asf-ui digest to 65b5c0c (#3281)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-04 14:46:51 +02:00
ArchiBot
720a24e9ad Automatic translations update 2024-09-04 02:17:13 +00:00
renovate[bot]
7dc6096e07 chore(deps): update asf-ui digest to 2997f0d 2024-09-03 22:00:17 +00:00
renovate[bot]
7910205674 chore(deps): update asf-ui digest to 8d4b148 2024-09-03 17:03:59 +00:00
Łukasz Domeradzki
1fbc51d02b Update ArchiSteamFarm.sln.DotSettings 2024-09-03 17:46:17 +02:00
renovate[bot]
a3d968c6af chore(deps): update asf-ui digest to 486401d (#3279)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 08:57:43 +02:00
Łukasz Domeradzki
63c61f8e47 Misc 2024-09-01 23:56:25 +02:00
Łukasz Domeradzki
1ae59f4229 Bump 2024-09-01 14:07:27 +02:00
Łukasz Domeradzki
4a95a6928b Bump 2024-09-01 14:05:18 +02:00
Łukasz Domeradzki
54a092a822 Take into account extended_onlyallowrunincountries when deciding upon region locks 2024-09-01 14:05:08 +02:00
renovate[bot]
9898d47db4 chore(deps): update asf-ui digest to ef232d5 (#3277)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-01 13:43:21 +02:00
renovate[bot]
b46e55c57b chore(deps): update asf-ui digest to f16eae1 2024-08-30 22:07:03 +00:00
renovate[bot]
cb6f9f3e00 chore(deps): update actions/upload-artifact action to v4.4.0 2024-08-30 19:47:10 +00:00
renovate[bot]
d750ba5f99 chore(deps): update github/codeql-action action to v3.26.6 2024-08-29 14:23:00 +00:00
ArchiBot
c84db87532 Automatic translations update 2024-08-27 02:15:43 +00:00
renovate[bot]
3da662ef61 chore(deps): update swashbuckle-aspnetcore monorepo to v6.7.3 2024-08-26 09:26:01 +00:00
Łukasz Domeradzki
2f42c75df7 Update Directory.Build.props 2024-08-26 11:25:11 +02:00
Łukasz Domeradzki
14388487fd Fix build 2024-08-26 10:07:31 +02:00
Łukasz Domeradzki
a155748f88 Misc 2024-08-26 10:04:54 +02:00
renovate[bot]
c7fa69a25b chore(deps): update dependency steamkit2 to v3.0.0-beta.2 2024-08-26 08:00:56 +00:00
renovate[bot]
5194cb103a chore(deps): update swashbuckle-aspnetcore monorepo to v6.7.2 2024-08-24 14:13:46 +00:00
renovate[bot]
77ec0d1c78 chore(deps): update github/codeql-action action to v3.26.5 2024-08-24 02:34:08 +00:00
renovate[bot]
d85c9a3c0a chore(deps): update asf-ui digest to 1641151 2024-08-23 18:03:25 +00:00
renovate[bot]
97a8e6f5c2 chore(deps): update actions/attest-build-provenance action to v1.4.2 2024-08-22 23:37:30 +00:00
renovate[bot]
3d73b42c15 chore(deps): update asf-ui digest to 2b37add 2024-08-22 20:06:49 +00:00
renovate[bot]
4156dfcd4e chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v8.0.2 2024-08-22 06:39:35 +00:00
renovate[bot]
9fb19bffc1 chore(deps): update github/codeql-action action to v3.26.4 2024-08-21 20:32:34 +00:00
ArchiBot
fe1cdce59d Automatic translations update 2024-08-21 02:13:51 +00:00
ArchiBot
c07caf6be8 Automatic translations update 2024-08-20 02:13:43 +00:00
renovate[bot]
cab8c60fcb chore(deps): update github/codeql-action action to v3.26.3 2024-08-19 19:59:22 +00:00
renovate[bot]
023c7da52b chore(deps): update wiki digest to e7c71c7 2024-08-19 12:37:17 +00:00
Łukasz Domeradzki
6b2bcbee6e Drop VS public signing workaround
They had enough of time to fix their stupidity
2024-08-19 14:36:19 +02:00
ArchiBot
ebac577ede Automatic translations update 2024-08-19 02:15:10 +00:00
renovate[bot]
0846291779 chore(deps): update swashbuckle-aspnetcore monorepo to v6.7.1 2024-08-18 07:55:58 +00:00
Łukasz Domeradzki
fab9d95096 Allow nullable T for concurrent list
Even if we don't use it, no reason to not support it, since it is in underlying collection
2024-08-18 03:21:03 +02:00
Łukasz Domeradzki
2dc853ebfc Misc 2024-08-18 03:17:30 +02:00
Łukasz Domeradzki
5867a351a8 Misc 2024-08-18 03:14:11 +02:00
Łukasz Domeradzki
5605e9a666 Misc 2024-08-18 01:59:25 +02:00
Łukasz Domeradzki
337b720d31 Misc deduplication 2024-08-18 01:53:13 +02:00
Łukasz Domeradzki
06185d5f7d Misc 2024-08-17 22:19:17 +02:00
Łukasz Domeradzki
90cfdd140b Bump 2024-08-17 21:45:40 +02:00
Łukasz Domeradzki
5a41d559a3 Misc
No point in making this available for all IEnumerables, only ICollections are affected
2024-08-16 03:35:09 +02:00
Łukasz Domeradzki
b6805a94a3 Add workaround for LINQ race condition with concurrent collections
This is some next-level race condition, so for those interested:
- Concurrent collections are thread-safe in a way that each operation is atomic
- Naturally if you call two atomic operations in a row, the result is no longer atomic, since there could be some changes between the first and the last
- Certain LINQ operations such as OrderBy(), Reverse(), ToArray(), among more, use internal buffer for operation with certain optimization that checks if input is ICollection, if yes, it calls Count and CopyTo(), for OrderBy in this example
- In result, such LINQ call is not guaranteed to be thread-safe, since it assumes those two calls to be atomic, while they're not in reality.

This issue is quite hard to spot in real applications, since it's not that easy to trigger it (you need to call the operation on ICollection and then have another thread modifying it while enumerating). This is probably why we've never had any real problem until I've discovered this madness with @Aareksio in entirely different project.

As a workaround, we'll explicitly convert some ICollection inputs to IEnumerable, in particular around OrderBy(), so the optimization is skipped and the result is not corrupted.

I've added unit tests which ensure this workaround works properly, and you can easily reproduce the problem by removing AsLinqThreadSafeEnumerable() in them.

See https://github.com/dotnet/runtime/discussions/50687 for more insight

I have no clue who thought that ignoring this issue is a good idea, at the very least concurrent collections should have opt-out mechanism from those optimizations, there is no reason for them to not do that.
2024-08-16 03:25:58 +02:00
renovate[bot]
6a678cd5a9 chore(deps): update github/codeql-action action to v3.26.2 2024-08-14 16:30:56 +00:00
renovate[bot]
ecaf61252a chore(deps): update asf-ui digest to 6900304 2024-08-14 08:46:01 +00:00
ArchiBot
85c4e4ac37 Automatic translations update 2024-08-14 02:14:19 +00:00
renovate[bot]
16394182b2 chore(deps): update github/codeql-action action to v3.26.1 2024-08-13 23:09:58 +00:00
renovate[bot]
a0cc53cbb7 chore(deps): update docker/build-push-action action to v6.7.0 2024-08-13 19:17:41 +00:00
renovate[bot]
f331ee2c24 chore(deps): update dependency mstest to v3.5.2 2024-08-13 17:39:50 +00:00
renovate[bot]
cb0767f28e chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to v3.11.0-beta1.24324.1 2024-08-13 13:40:40 +00:00
renovate[bot]
91aaf3be19 chore(deps): update dependency nlog.web.aspnetcore to v5.3.12 2024-08-13 04:29:59 +00:00
ArchiBot
9540e564fc Automatic translations update 2024-08-13 02:15:24 +00:00
renovate[bot]
2100d6287c chore(deps): update asf-ui digest to 184c664 2024-08-12 01:06:04 +00:00
ArchiBot
8ad8183d4f Automatic translations update 2024-08-11 02:16:59 +00:00
Łukasz Domeradzki
90f2d93768 Optimize mobile authenticator, add unit tests 2024-08-11 02:21:00 +02:00
renovate[bot]
bae8dc330c chore(deps): update asf-ui digest to 1136a49 2024-08-10 04:23:27 +00:00
ArchiBot
599ca4d2c9 Automatic translations update 2024-08-10 02:13:43 +00:00
Łukasz Domeradzki
ff7a1e7c0e Misc optimization 2024-08-09 23:03:56 +02:00
renovate[bot]
216cd51c4a chore(deps): update actions/attest-build-provenance action to v1.4.1 2024-08-09 17:47:24 +00:00
Łukasz Domeradzki
568e9935ac Bump 2024-08-08 14:19:46 +02:00
renovate[bot]
28e9247c9a chore(deps): update docker/build-push-action action to v6.6.1 2024-08-07 21:16:33 +00:00
renovate[bot]
df3f16d424 chore(deps): update jetbrains/qodana-action action to v2024.1.9 2024-08-07 15:40:18 +00:00
renovate[bot]
41d03a15ac chore(deps): update docker/build-push-action action to v6.6.0 2024-08-07 12:26:35 +00:00
renovate[bot]
3f0e67075f chore(deps): update asf-ui digest to eb4cb97 2024-08-07 03:57:07 +00:00
ArchiBot
67329ec668 Automatic translations update 2024-08-07 02:14:49 +00:00
Łukasz Domeradzki
f28d783272 Misc 2024-08-07 03:15:22 +02:00
Łukasz Domeradzki
2c9d015f38 Fix @xPaw breaking changes
How could you!
2024-08-07 03:02:04 +02:00
renovate[bot]
5ad8a93d48 chore(deps): update dependency steamkit2 to v3.0.0-beta.1 2024-08-06 22:11:53 +00:00
renovate[bot]
ac9c1504e9 chore(deps): update github/codeql-action action to v3.26.0 2024-08-06 18:12:59 +00:00
renovate[bot]
4cde913453 chore(deps): update actions/upload-artifact action to v4.3.6 2024-08-06 15:22:49 +00:00
Łukasz Domeradzki
f05d041e6d Bump 2024-08-06 12:31:56 +02:00
Łukasz Domeradzki
ce4b41ee73 Misc 2024-08-06 12:04:52 +02:00
Łukasz Domeradzki
0c3c4c08ea Rewrite callbacks handling loop to new mechanism 2024-08-06 12:02:38 +02:00
renovate[bot]
67d9486495 chore(deps): update asf-ui digest to bd3816f 2024-08-06 04:11:38 +00:00
ArchiBot
bd00911f85 Automatic translations update 2024-08-06 02:12:59 +00:00
Łukasz Domeradzki
4cb3123ff6 Update BotConfig.cs 2024-08-06 03:12:06 +02:00
Łukasz Domeradzki
4ff1411c38 Closes #3261 2024-08-06 03:07:41 +02:00
Łukasz Domeradzki
f983a2eab2 Refactor UserInterfaceMode, kill SetCurrentMode() 2024-08-06 03:00:14 +02:00
renovate[bot]
fd7c86c2da chore(deps): update dependency mstest to v3.5.1 2024-08-05 22:17:22 +00:00
renovate[bot]
d90aa1798b chore(deps): update dependency steamkit2 to v3.0.0-alpha.3 2024-08-05 11:59:40 +00:00
Łukasz Domeradzki
afa602f940 Resolve remainings of CA1863 2024-08-05 02:45:53 +02:00
Łukasz Domeradzki
773698a0d4 Closes #3264
THANKS @ezhevita
2024-08-05 02:37:50 +02:00
Łukasz Domeradzki
08907e8953 Emit format methods for ItemsMatcher, #3264 2024-08-05 02:15:58 +02:00
Łukasz Domeradzki
332e9a53d7 Misc 2024-08-05 01:44:34 +02:00
Łukasz Domeradzki
7a8e2091a6 Use Microsoft.CodeAnalysis.ResxSourceGenerator for localization 2024-08-05 01:42:09 +02:00
Łukasz Domeradzki
3ed05b8e26 Bump 2024-08-03 15:55:53 +02:00
Łukasz Domeradzki
d3dbfc5e9e Closes #3262 2024-08-03 15:36:45 +02:00
renovate[bot]
30c84efb57 chore(deps): update asf-ui digest to 2985427 2024-08-03 01:40:41 +00:00
renovate[bot]
3ba8602156 chore(deps): update actions/upload-artifact action to v4.3.5 2024-08-02 19:48:01 +00:00
renovate[bot]
9d2aacab58 chore(deps): update swashbuckle-aspnetcore monorepo to v6.7.0 2024-08-01 19:50:26 +00:00
Łukasz Domeradzki
c7b9751e0e Bump, remove obsolete prop 2024-08-01 19:18:35 +02:00
renovate[bot]
9cfbc35ac4 chore(deps): update asf-ui digest to 540ac67 2024-07-31 22:58:09 +00:00
ArchiBot
ba618dc2b6 Automatic translations update 2024-07-31 02:01:32 +00:00
renovate[bot]
f3c870b8c7 chore(deps): update actions/attest-build-provenance action to v1.4.0 2024-07-30 22:15:50 +00:00
renovate[bot]
46ec3e51b0 chore(deps): update asf-ui digest to 745b067 2024-07-30 06:48:35 +00:00
ArchiBot
4ca93c3c45 Automatic translations update 2024-07-30 02:12:35 +00:00
renovate[bot]
7ab499e2c0 chore(deps): update docker/setup-buildx-action action to v3.6.1 2024-07-29 18:19:14 +00:00
renovate[bot]
102f3de120 chore(deps): update wiki digest to d8213b7 2024-07-29 15:49:53 +00:00
renovate[bot]
01fd6f3ad6 chore(deps): update asf-ui digest to 07ceace 2024-07-29 03:52:32 +00:00
ArchiBot
cca465d30d Automatic translations update 2024-07-29 02:14:46 +00:00
renovate[bot]
dc7f2acc50 chore(deps): update wiki digest to d2c0479 2024-07-28 17:25:29 +00:00
renovate[bot]
79a15ad781 chore(deps): update asf-ui digest to a138b8c 2024-07-27 14:45:36 +00:00
Łukasz Domeradzki
4e6905d562 Bump 2024-07-27 16:44:55 +02:00
renovate[bot]
03a5853a91 chore(deps): update github/codeql-action action to v3.25.15 2024-07-26 19:15:33 +00:00
renovate[bot]
f3fae74bde chore(deps): update crowdin/github-action action to v2.1.1 2024-07-26 15:05:06 +00:00
Łukasz Domeradzki
8bbff388d2 Misc fix against case-sensitivity for 2fafinalized 2024-07-26 16:20:31 +02:00
renovate[bot]
40d5fe75e7 chore(deps): update asf-ui digest to 74f0f71 2024-07-26 10:44:35 +00:00
ArchiBot
cdbabc0a0b Automatic translations update 2024-07-26 02:12:12 +00:00
renovate[bot]
97ecfc03c8 chore(deps): update github/codeql-action action to v3.25.14 2024-07-25 10:46:48 +00:00
ArchiBot
70d35bfeb8 Automatic translations update 2024-07-25 02:12:20 +00:00
renovate[bot]
a11866c544 chore(deps): update asf-ui digest to 62a5689 2024-07-24 04:31:10 +00:00
ArchiBot
5aaf5476e0 Automatic translations update 2024-07-24 02:11:50 +00:00
renovate[bot]
7e78922056 chore(deps): update crowdin/github-action action to v2.1.0 2024-07-23 12:47:54 +00:00
renovate[bot]
e7dad02c63 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v8.0.1 2024-07-23 01:16:03 +00:00
renovate[bot]
da5fb391a4 chore(deps): update docker/setup-buildx-action action to v3.5.0 2024-07-22 17:54:28 +00:00
renovate[bot]
3b48b79997 chore(deps): update docker/login-action action to v3.3.0 2024-07-22 14:38:23 +00:00
renovate[bot]
30e887a85b chore(deps): update docker/build-push-action action to v6.5.0 2024-07-22 11:18:24 +00:00
Łukasz Domeradzki
c737c792f6 Misc SK2 improvements 2024-07-21 18:09:47 +02:00
renovate[bot]
64f4853b13 chore(deps): update dependency steamkit2 to v3.0.0-alpha.2 2024-07-21 11:22:10 +00:00
Łukasz Domeradzki
0c890e590c Misc 2024-07-20 01:21:06 +02:00
Łukasz Domeradzki
b664b85495 Remove ConfigureAwaitChecker.Analyzer
Appropriate detecion is now available in Roslyn
2024-07-20 01:01:45 +02:00
renovate[bot]
3894a6a2d1 chore(deps): update github/codeql-action action to v3.25.13 2024-07-19 16:11:56 +00:00
renovate[bot]
ae8224b734 chore(deps): update docker/build-push-action action to v6.4.1 2024-07-17 11:06:17 +00:00
renovate[bot]
bd5739d7a0 chore(deps): update asf-ui digest to a1d6bea 2024-07-17 01:52:28 +00:00
renovate[bot]
3a8a8efbd1 chore(deps): update dependency mstest to v3.5.0 2024-07-16 20:39:31 +00:00
renovate[bot]
4fc1f4c60e chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v8 (#3252)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-16 12:58:46 +02:00
renovate[bot]
079bbc8e78 chore(deps): update asf-ui digest to bd5cdf0 2024-07-16 04:30:34 +00:00
ArchiBot
70bfbd7d8e Automatic translations update 2024-07-16 02:12:58 +00:00
renovate[bot]
f0c7222055 chore(deps): update docker/build-push-action action to v6.4.0 2024-07-15 14:33:35 +00:00
Łukasz Domeradzki
7b1b3d4d8e Misc 2024-07-14 21:19:08 +02:00
Łukasz Domeradzki
7d6b4b7a23 Bump 2024-07-14 21:14:11 +02:00
Łukasz Domeradzki
a4d0b7d1cb Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-07-14 21:13:28 +02:00
Łukasz Domeradzki
62e786b9b8 Bring back deprecated function 2024-07-14 21:13:26 +02:00
Sebastian Göls
38ae309285 Monitoring (#3251)
* Add more plugin metrics

* Update dashboard to account for changed labels in upstream library and new plugin metrics
2024-07-14 21:11:07 +02:00
Łukasz Domeradzki
f87b63d6ee Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-07-14 17:25:05 +02:00
Łukasz Domeradzki
3b3f1caf84 Misc 2024-07-14 17:25:03 +02:00
ArchiBot
724be4c1cf Automatic translations update 2024-07-14 02:11:19 +00:00
ArchiBot
b4ab287994 Automatic translations update 2024-07-13 02:11:00 +00:00
renovate[bot]
19d17940c0 chore(deps): update wiki digest to 0b5412c 2024-07-12 21:22:38 +00:00
renovate[bot]
aa46079ed4 chore(deps): update github/codeql-action action to v3.25.12 2024-07-12 09:07:51 +00:00
renovate[bot]
5e81e3a6a6 chore(deps): update asf-ui digest to 6df84ff 2024-07-12 03:14:56 +00:00
ArchiBot
e2f2b6aa5d Automatic translations update 2024-07-12 02:10:43 +00:00
renovate[bot]
a7c67b04ca chore(deps): update asf-ui digest to 3aab5a4 2024-07-11 23:03:27 +00:00
Łukasz Domeradzki
465207034d Misc 2024-07-11 22:45:58 +02:00
ArchiBot
93b9cf4b76 Automatic translations update 2024-07-11 02:13:17 +00:00
Łukasz Domeradzki
dc57860f0d Misc optimization 2024-07-11 01:34:49 +02:00
renovate[bot]
f71b0bc945 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v7.6.3 2024-07-10 12:24:48 +00:00
renovate[bot]
1c9132627b chore(deps): update actions/setup-node action to v4.0.3 2024-07-10 11:08:35 +00:00
Vita Chumakova
b14d5de641 Fix struct reordering (#3247) 2024-07-10 13:08:06 +02:00
renovate[bot]
530743cf97 chore(deps): update actions/attest-build-provenance action to v1.3.3 2024-07-10 06:56:06 +00:00
renovate[bot]
d1ab859621 chore(deps): update asf-ui digest to 329c79b 2024-07-10 03:26:55 +00:00
ArchiBot
fe76ada8d0 Automatic translations update 2024-07-10 02:11:36 +00:00
renovate[bot]
e096f4f081 chore(deps): update asf-ui digest to 29f16e8 2024-07-09 22:59:45 +00:00
Łukasz Domeradzki
0d8f7b854d Misc 2024-07-10 00:21:56 +02:00
Łukasz Domeradzki
b9beb6ec16 Fix ASF trying to create www folder if it doesn't exist yet
It seems that ASP.NET is trying to create initialized WebRootPath if it doesn't exist yet. This might be unwanted, as user might want to explicitly disable www directory while still having interest in IPC. On top of that, ASF will outright crash if creating such directory will be impossible, e.g. because of insufficient permission.

It makes sense for us to check first if the directory exists - if not, we can omit it entirely, so ASP.NET will default to NullFileProvider and simply respond 404 to everything unhandled from the code perspective.

@SuperSandro2000 will resolve https://github.com/NixOS/nixpkgs/issues/312242 without a need of disabling IPC. In other words, you can use IPC with no www folder attached in order to still have ASF API and /swagger available. ASF will no longer crash in this scenario, it also won't try to create a directory on read-only filesystem.
2024-07-10 00:18:44 +02:00
Łukasz Domeradzki
7afcf82c32 Update config.yml 2024-07-09 23:32:26 +02:00
Łukasz Domeradzki
b27dd345af Misc 2024-07-09 23:02:29 +02:00
renovate[bot]
9fdf8c6a75 chore(deps): update actions/setup-dotnet action to v4.0.1 2024-07-09 16:12:12 +00:00
ArchiBot
1010f270a0 Automatic translations update 2024-07-09 02:12:18 +00:00
Łukasz Domeradzki
0db051a251 Misc 2024-07-09 01:36:55 +02:00
Łukasz Domeradzki
890a431e24 Cleanup main csproj file 2024-07-08 17:28:44 +02:00
ArchiBot
173e0ea157 Automatic translations update 2024-07-08 02:12:23 +00:00
renovate[bot]
4c99ce4ab2 chore(deps): update wiki digest to 7539ff8 2024-07-07 20:14:46 +00:00
renovate[bot]
6f98228c41 chore(deps): update wiki digest to 469c6c7 2024-07-07 02:56:47 +00:00
Łukasz Domeradzki
95d15aa107 Bump 2024-07-07 04:56:15 +02:00
Łukasz Domeradzki
2f09e74f1a Update prometheus exporter to fixed version
Apparently all of our issues should be resolved by now
2024-07-07 04:52:10 +02:00
ArchiBot
f30fcb3941 Automatic translations update 2024-07-07 02:14:46 +00:00
renovate[bot]
06254a9afc chore(deps): update dependency jetbrains.annotations to v2024 (#3243)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-06 23:29:44 +02:00
renovate[bot]
fd95c6cac7 chore(deps): update asf-ui digest to cd60876 2024-07-06 03:38:32 +00:00
ArchiBot
2196bccda5 Automatic translations update 2024-07-06 02:08:42 +00:00
renovate[bot]
b0ac2b4147 chore(deps): update actions/upload-artifact action to v4.3.4 2024-07-05 18:17:25 +00:00
renovate[bot]
5322321944 chore(deps): update actions/download-artifact action to v4.1.8 2024-07-05 16:24:38 +00:00
renovate[bot]
2f951e0ef6 chore(deps): update wiki digest to 743294a 2024-07-05 14:26:37 +00:00
renovate[bot]
1e6dcc88d2 chore(deps): update docker/setup-buildx-action action to v3.4.0 2024-07-04 11:47:22 +00:00
ArchiBot
8bbcfc40dc Automatic translations update 2024-07-04 02:10:45 +00:00
Łukasz Domeradzki
811ea46523 Remove deprecated functionality, bump 2024-07-04 01:33:45 +02:00
renovate[bot]
c37e54cf9b chore(deps): update jetbrains/qodana-action action to v2024.1.8 2024-07-03 16:30:15 +00:00
renovate[bot]
4c095e8eb5 chore(deps): update docker/build-push-action action to v6.3.0 2024-07-03 09:04:29 +00:00
ArchiBot
c580ec7b92 Automatic translations update 2024-07-03 02:09:58 +00:00
renovate[bot]
0c45d3c5ba chore(deps): update asf-ui digest to 6a4b92a 2024-07-02 21:48:17 +00:00
ArchiBot
2bc8a4cefd Automatic translations update 2024-07-02 02:10:59 +00:00
ArchiBot
92d28adb07 Automatic translations update 2024-06-30 02:14:26 +00:00
renovate[bot]
cc2b1dbbaa chore(deps): update asf-ui digest to 91c39f3 2024-06-29 03:30:07 +00:00
ArchiBot
bd98cadab3 Automatic translations update 2024-06-29 02:08:57 +00:00
renovate[bot]
c417f88e3b chore(deps): update github/codeql-action action to v3.25.11 2024-06-28 19:30:05 +00:00
renovate[bot]
b26a9af49b chore(deps): update docker/build-push-action action to v6.2.0 2024-06-26 15:51:30 +00:00
Łukasz Domeradzki
e4b00b35f2 Bump 2024-06-26 17:50:58 +02:00
Łukasz Domeradzki
11bab46b8b Add deprecation helper 2024-06-26 13:53:48 +02:00
ArchiBot
7eb24d7bd6 Automatic translations update 2024-06-25 02:10:23 +00:00
Łukasz Domeradzki
9a26366ff8 Misc 2024-06-25 00:34:13 +02:00
Łukasz Domeradzki
0058bc6fa5 Move dockerfiles from legacy KV format
https://docs.docker.com/reference/build-checks/legacy-key-value-format/
2024-06-25 00:32:15 +02:00
Łukasz Domeradzki
ca3f3e0cab Resolve selected .NET 9 analyzer warnings 2024-06-25 00:18:38 +02:00
ArchiBot
cf51ca454d Automatic translations update 2024-06-24 02:11:32 +00:00
ArchiBot
35c3c2a2b3 Automatic translations update 2024-06-23 02:12:06 +00:00
renovate[bot]
12bb61c23d chore(deps): update docker/build-push-action action to v6.1.0 2024-06-21 09:36:21 +00:00
ArchiBot
2e5a2a1393 Automatic translations update 2024-06-21 02:09:19 +00:00
Łukasz Domeradzki
4259bb088e Bump 2024-06-21 02:36:20 +02:00
Jack Nolddor
0768765f21 chore: blacklist summer sale 2024 appid (#3226)
refers to https://steamcommunity.com/my/gamecards/2861690
2024-06-21 00:22:06 +02:00
renovate[bot]
dc7ee7fadc Update docker/build-push-action action to v6.0.2 2024-06-20 15:04:34 +00:00
Łukasz Domeradzki
7665a1c339 Bump 2024-06-20 12:44:15 +02:00
renovate[bot]
6015cd5cb7 Update dependency Microsoft.IdentityModel.JsonWebTokens to v7.6.2 2024-06-20 08:03:03 +00:00
renovate[bot]
08aa8f2136 Update ASF-ui digest to 3ae4df4 2024-06-20 04:09:34 +00:00
ArchiBot
c27e447f57 Automatic translations update 2024-06-20 02:08:54 +00:00
Łukasz Domeradzki
9f1a3a0304 Add support for selected bot groups 2024-06-19 23:46:03 +02:00
renovate[bot]
7714478fdc Update docker/build-push-action action to v6.0.1 2024-06-18 16:00:11 +00:00
renovate[bot]
91bca33a54 Update dependency OpenTelemetry.Instrumentation.Runtime to v1.9.0 2024-06-18 11:13:05 +00:00
renovate[bot]
c67b967817 Update ASF-ui digest to 1c49bcf 2024-06-18 07:00:45 +00:00
renovate[bot]
150ed2c733 Update dependency Microsoft.IdentityModel.JsonWebTokens to v7.6.1 2024-06-18 04:30:51 +00:00
renovate[bot]
1c23e4b5b3 Update opentelemetry-dotnet-contrib monorepo to v1.9.0 2024-06-18 01:47:02 +00:00
renovate[bot]
77c4dee6a8 Update actions/attest-build-provenance action to v1.3.2 2024-06-17 18:19:05 +00:00
renovate[bot]
d6fe8eec38 Update docker/build-push-action action to v6 (#3222)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-17 12:18:15 +02:00
Łukasz Domeradzki
c12d83bbf0 Bump 2024-06-17 09:22:34 +02:00
Łukasz Domeradzki
0e6b75aa5c Update IBotTradeOffer2.cs 2024-06-17 09:19:54 +02:00
Łukasz Domeradzki
dd1dfdcf34 Closes #3221 2024-06-17 09:17:14 +02:00
ArchiBot
792d8dab34 Automatic translations update 2024-06-16 02:13:31 +00:00
Łukasz Domeradzki
4f23434f81 Update renovate.json5 2024-06-15 21:54:23 +02:00
renovate[bot]
7797c4e0b0 Update dependency OpenTelemetry.Extensions.Hosting to v1.9.0 2024-06-14 21:20:44 +00:00
renovate[bot]
6463a2be2d Update actions/attest-build-provenance action to v1.3.1 2024-06-13 22:55:17 +00:00
renovate[bot]
972a46ac2e Update github/codeql-action action to v3.25.10 2024-06-13 16:58:07 +00:00
renovate[bot]
db3091b21b Update ASF-ui digest to 51952a3 2024-06-13 01:16:01 +00:00
renovate[bot]
476733ca19 Update github/codeql-action action to v3.25.9 2024-06-12 22:57:22 +00:00
renovate[bot]
d0c302c1f1 Update actions/checkout action to v4.1.7 2024-06-12 20:57:14 +00:00
renovate[bot]
164deb1096 Update ASF-ui digest to 7efd77d 2024-06-12 06:22:34 +00:00
ArchiBot
b39ea679e7 Automatic translations update 2024-06-12 02:09:52 +00:00
renovate[bot]
062a5f470c Update ASF-ui digest to 185cc47 2024-06-11 22:28:20 +00:00
Łukasz Domeradzki
48fb388da2 Make PICS changes happen a bit more often 2024-06-11 10:11:15 +02:00
ArchiBot
a23cdc9605 Automatic translations update 2024-06-11 02:09:42 +00:00
renovate[bot]
1c7eb0f5a1 Update docker/build-push-action action to v5.4.0 2024-06-10 11:56:11 +00:00
Łukasz Domeradzki
58050c9ec3 CI: Fix failure when in PR mode 2024-06-10 13:55:47 +02:00
ArchiBot
5908cc40a8 Automatic translations update 2024-06-09 02:13:14 +00:00
Łukasz Domeradzki
bffb5e53bf Bump 2024-06-08 00:08:14 +02:00
Łukasz Domeradzki
4a0b79f1a1 Misc
Paused could be flipped in the meantime between starting the background check and finishing it, we can check it again after having games to farm.
2024-06-08 00:07:11 +02:00
renovate[bot]
3ddb77e9f8 Update ASF-ui digest to c5a2ac4 2024-06-07 11:09:07 +00:00
renovate[bot]
16f7bccb11 Update dependency Humanizer to v3.0.0-beta.54 2024-06-06 19:53:34 +00:00
ArchiBot
ecec5cdde2 Automatic translations update 2024-06-06 02:08:48 +00:00
renovate[bot]
cf4fca9836 Update ASF-ui digest to 1e68294 2024-06-05 16:44:47 +00:00
ArchiBot
e5d61b2796 Automatic translations update 2024-06-05 02:08:55 +00:00
renovate[bot]
fc493ea510 Update github/codeql-action action to v3.25.8 2024-06-04 17:07:49 +00:00
ArchiBot
7983dc01f1 Automatic translations update 2024-06-04 02:09:03 +00:00
renovate[bot]
09f914cecd Update actions/attest-build-provenance action to v1.2.0 2024-06-03 18:21:05 +00:00
renovate[bot]
9968b0ac36 Update wiki digest to f05654b 2024-06-03 10:46:12 +00:00
ArchiBot
969a5f711c Automatic translations update 2024-06-03 02:09:44 +00:00
Łukasz Domeradzki
ccb4601c85 Bump 2024-06-03 00:19:16 +02:00
Łukasz Domeradzki
25aabe7553 Use native Rfc2898DeriveBytes for Pbkdf2 instead of CryptSharp implementation
I've verified it generates the same results
2024-06-02 21:54:45 +02:00
Łukasz Domeradzki
13755d4d06 Make ASF compatible with global invariant mode
Requires Humanizer update
2024-06-02 21:33:44 +02:00
Łukasz Domeradzki
1d6e87d103 Bump 2024-05-31 23:22:59 +02:00
Łukasz Domeradzki
8673ef8420 Closes #3210 2024-05-31 23:21:33 +02:00
renovate[bot]
ab1fb70f4c Update github/codeql-action action to v3.25.7 2024-05-31 11:07:58 +00:00
renovate[bot]
31fe6923ff Update ASF-ui digest to 7818887 2024-05-31 03:38:49 +00:00
renovate[bot]
0b07b7c4a7 Update ASF-ui digest to 605cbf7 2024-05-30 19:23:31 +00:00
renovate[bot]
0abe05b7bd Update dependency MSTest to v3.4.3 2024-05-30 15:29:53 +00:00
renovate[bot]
45ff19f9ae Update dependency MSTest to v3.4.2 2024-05-30 11:07:17 +00:00
renovate[bot]
d25883ff1b Update ASF-ui digest to a72c668 2024-05-29 12:29:08 +00:00
Łukasz Domeradzki
d2f43e4e50 CI: Misc 2024-05-29 14:28:18 +02:00
Łukasz Domeradzki
792167a71c CI: Misc 2024-05-29 11:21:39 +02:00
renovate[bot]
f2586d7cb0 Update crowdin/github-action action to v2 (#3209)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-29 11:21:17 +02:00
Łukasz Domeradzki
c37846b4cd Bump 2024-05-28 22:50:04 +02:00
Łukasz Domeradzki
17c4ec6790 Fix observable counters 2024-05-28 21:38:56 +02:00
Łukasz Domeradzki
7023040882 Add initial support for build attestations 2024-05-28 19:34:47 +02:00
Łukasz Domeradzki
8c38de1b26 Downgrade prometheus exporter again 2024-05-28 19:10:34 +02:00
Łukasz Domeradzki
1917c9da95 Misc 2024-05-28 19:07:48 +02:00
Sebastian Göls
668bf5009b Monitor incoming trades (#3201)
* Monitor incoming trades

* Apply feedback

* Misc.
2024-05-28 19:03:52 +02:00
renovate[bot]
e9ca1e3537 Update docker/login-action action to v3.2.0 2024-05-28 09:56:27 +00:00
renovate[bot]
ebdb412adf Update dependency Microsoft.IdentityModel.JsonWebTokens to v7.6.0 2024-05-28 02:07:48 +00:00
renovate[bot]
e73c72d148 Update dependency MSTest to v3.4.1 2024-05-27 17:05:17 +00:00
ArchiBot
d1d843c583 Automatic translations update 2024-05-27 02:08:42 +00:00
renovate[bot]
464e375529 Update ASF-ui digest to 8e361ae 2024-05-26 01:02:04 +00:00
Łukasz Domeradzki
2b12f8a294 Update donation options 2024-05-26 01:19:53 +02:00
renovate[bot]
b305e98519 Update ASF-ui digest to 491227c 2024-05-24 16:36:11 +00:00
renovate[bot]
5431e49c2a Update ASF-ui digest to b1521b7 2024-05-23 22:01:31 +00:00
Łukasz Domeradzki
6098cdc31d Bump 2024-05-23 20:10:29 +02:00
Łukasz Domeradzki
308d7c2c1c Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-05-23 20:06:11 +02:00
Łukasz Domeradzki
454f40ffb9 CI: Divide environments further 2024-05-23 20:06:09 +02:00
renovate[bot]
dd3b3dec33 Update ASF-ui digest to 63254c3 2024-05-23 13:49:00 +00:00
renovate[bot]
bc2831c066 Update dependency MSTest to v3.4.0 2024-05-23 10:20:09 +00:00
renovate[bot]
905d2acdbd Update swashbuckle-aspnetcore monorepo to v6.6.2 2024-05-22 12:27:49 +00:00
renovate[bot]
54c2b6b6d5 Update github/codeql-action action to v3.25.6 2024-05-22 05:05:58 +00:00
ArchiBot
b6a4ccac7f Automatic translations update 2024-05-22 02:08:08 +00:00
Łukasz Domeradzki
3fce1cc934 Monitoring: Bump OpenTelemetry dependencies, since the upstream issue is fixed 2024-05-21 22:57:13 +02:00
Łukasz Domeradzki
375a888a37 CI: Run first part of publish in test environment 2024-05-21 22:25:29 +02:00
Łukasz Domeradzki
0d62034f32 CI: Run qodana in different environment 2024-05-21 22:21:47 +02:00
Łukasz Domeradzki
f7d722aaf0 CI: Switch to using environment variables 2024-05-21 22:18:55 +02:00
Łukasz Domeradzki
56759bc710 Make some inventory description properties public 2024-05-21 12:12:31 +02:00
renovate[bot]
d27b5c28ef chore(deps): update asf-ui digest to fe1f167 2024-05-20 19:33:05 +00:00
renovate[bot]
a0d1cada54 chore(deps): update asf-ui digest to 2b02ee9 2024-05-20 00:29:51 +00:00
Łukasz Domeradzki
ca7e1da585 CI: Misc 2024-05-20 02:29:23 +02:00
Łukasz Domeradzki
5f097c4002 CI: Split crowdin to standalone action 2024-05-20 02:25:35 +02:00
Łukasz Domeradzki
203dc6daf6 Misc 2024-05-19 21:36:37 +02:00
Łukasz Domeradzki
e895850f17 Misc 2024-05-19 21:35:20 +02:00
Łukasz Domeradzki
f776e7947c Misc corrections of ASF API structures 2024-05-19 20:07:52 +02:00
Łukasz Domeradzki
416ec920cb Add AddLicense to ASF API 2024-05-19 20:07:41 +02:00
renovate[bot]
b5da72eb40 chore(deps): update asf-ui digest to a885733 2024-05-18 05:56:09 +00:00
ArchiBot
3dde77608e Automatic translations update 2024-05-18 02:07:36 +00:00
renovate[bot]
a0407553ec chore(deps): update jetbrains/qodana-action action to v2024.1.5 (#3207)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-18 03:37:15 +02:00
renovate[bot]
8d594fe0b6 chore(deps): update crowdin/github-action action to v1.20.4 2024-05-17 09:18:01 +00:00
renovate[bot]
e68e87d388 chore(deps): update actions/checkout action to v4.1.6 2024-05-17 02:23:30 +00:00
ArchiBot
4cabd42c0b Automatic translations update 2024-05-17 02:07:31 +00:00
ArchiBot
df33f7d0fc Automatic translations update 2024-05-16 02:07:07 +00:00
Łukasz Domeradzki
d6b5e3981c Misc swagger UI enhancements 2024-05-15 15:59:09 +02:00
ArchiBot
6aa0300c85 Automatic translations update 2024-05-15 02:09:46 +00:00
renovate[bot]
264ca84513 chore(deps): update swashbuckle-aspnetcore monorepo to v6.6.1 2024-05-14 12:02:17 +00:00
Łukasz Domeradzki
816306872d Misc 2024-05-14 13:14:14 +02:00
renovate[bot]
13aced705a chore(deps): update github/codeql-action action to v3.25.5 2024-05-14 05:03:02 +00:00
ArchiBot
95d0f879ca Automatic translations update 2024-05-14 02:07:17 +00:00
renovate[bot]
f37d2297bb chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v7.5.2 2024-05-13 22:47:12 +00:00
renovate[bot]
0d90a53b8e chore(deps): update wiki digest to fa6284b 2024-05-13 16:10:04 +00:00
Łukasz Domeradzki
f91dfe7efa Misc optimization 2024-05-13 17:01:33 +02:00
Łukasz Domeradzki
ec757e3ef8 Bump 2024-05-13 09:53:14 +02:00
Łukasz Domeradzki
3b2ca10b05 Closes #3203
When excessive amount of "missing amounts", so items in the set was missing on our side, there was a possibility for our logic to classify a good trade as bad one, because we didn't fill in enough holes, as the subtraction in the condition was calculated on each loop rather than once initially.

Since this could only worsen the neutrality score, but never improve it (as the amounts were sorted ascending), there was no abusive possibility due to that, only ignoring otherwise valid trades classifying them as worse than they were in reality.
2024-05-13 09:29:30 +02:00
ArchiBot
b438e38268 Automatic translations update 2024-05-12 02:08:51 +00:00
renovate[bot]
bb405f2824 chore(deps): update asf-ui digest to eae2d67 2024-05-11 08:24:00 +00:00
ArchiBot
1d640fbec0 Automatic translations update 2024-05-11 02:06:27 +00:00
renovate[bot]
ecc820333e chore(deps): update asf-ui digest to f09861b 2024-05-10 18:35:22 +00:00
Łukasz Domeradzki
9cc227aa61 Misc 2024-05-10 19:40:46 +02:00
Łukasz Domeradzki
93420eebc0 Misc 2024-05-10 19:40:02 +02:00
Łukasz Domeradzki
6014b3bdc6 Add missing LicenseID inheritance from current 2024-05-10 13:27:49 +02:00
Sebastian Göls
81789c717f Misc. security improvements (#3200)
* Add x-security-critical to swagger schema and do not serialize LicenseID on IPC

* Apply feedback

* Misc.
2024-05-10 13:22:26 +02:00
renovate[bot]
dfa6330821 chore(deps): update crowdin/github-action action to v1.20.3 2024-05-10 07:54:33 +00:00
renovate[bot]
1d5d9c12a7 chore(deps): update actions/checkout action to v4.1.5 2024-05-08 23:34:56 +00:00
renovate[bot]
2cbbbe7359 chore(deps): update github/codeql-action action to v3.25.4 2024-05-08 14:36:22 +00:00
renovate[bot]
4706cedbf9 chore(deps): update jetbrains/qodana-action action to v2024.1.4 2024-05-07 21:52:16 +00:00
renovate[bot]
a11b955a9d chore(deps): update dependency nlog.web.aspnetcore to v5.3.11 2024-05-07 20:25:51 +00:00
renovate[bot]
e1366f6267 chore(deps): update asf-ui digest to 34bbcc9 2024-05-07 11:50:49 +00:00
ArchiBot
6bff839821 Automatic translations update 2024-05-07 02:08:46 +00:00
renovate[bot]
0b37acf16e chore(deps): update asf-ui digest to 073867b 2024-05-05 03:11:22 +00:00
ArchiBot
70c39eef0a Automatic translations update 2024-05-05 02:07:59 +00:00
ArchiBot
1988b18053 Automatic translations update 2024-05-04 02:06:04 +00:00
renovate[bot]
67f87396e8 chore(deps): update wiki digest to 4029f5f 2024-05-03 16:17:08 +00:00
Łukasz Domeradzki
3734721c58 Bump 2024-05-03 15:52:00 +02:00
Łukasz Domeradzki
0f6a3f2ec8 Misc 2024-05-03 15:18:17 +02:00
Łukasz Domeradzki
ab9ca4b9c3 Bump 2024-05-03 13:52:55 +02:00
ArchiBot
c05cffbd88 Automatic translations update 2024-05-03 02:07:39 +00:00
renovate[bot]
0e3f3d1143 chore(deps): update jetbrains/qodana-action action to v2024.1.3 2024-05-02 19:55:25 +00:00
Łukasz Domeradzki
ff02a4a8d4 Remove zxcvbn dependency
Pushing external lib purely to save user's from eventual stupidity is just simply not worth the bytes in the final zip archive.
2024-05-02 21:54:54 +02:00
renovate[bot]
c8c35b5bf7 chore(deps): update asf-ui digest to f537840 2024-05-01 09:33:49 +00:00
renovate[bot]
18daa6a8c7 chore(deps): update dependency nlog.web.aspnetcore to v5.3.10 2024-04-30 23:00:34 +00:00
renovate[bot]
c95b58852c chore(deps): update asf-ui digest to d857ce5 2024-04-30 02:25:57 +00:00
ArchiBot
80ccceb9b0 Automatic translations update 2024-04-29 02:06:57 +00:00
renovate[bot]
eaa308d3ce chore(deps): update asf-ui digest to 491c89d 2024-04-28 03:10:41 +00:00
ArchiBot
d05ac7e10d Automatic translations update 2024-04-28 02:08:21 +00:00
renovate[bot]
a80aef16a0 chore(deps): update dependency nlog.web.aspnetcore to v5.3.9 2024-04-27 19:55:05 +00:00
ArchiBot
338560fedb Automatic translations update 2024-04-27 02:06:20 +00:00
Łukasz Domeradzki
632830278f Misc 2024-04-26 20:57:57 +02:00
Łukasz Domeradzki
8b614bd3c4 Misc 2024-04-26 20:56:17 +02:00
renovate[bot]
657354c2e8 chore(deps): update jetbrains/qodana-action action to v2024.1.2 2024-04-26 04:07:53 +00:00
renovate[bot]
7a0d9f2325 chore(deps): update github/codeql-action action to v3.25.3 2024-04-26 02:14:43 +00:00
ArchiBot
ae45c0c7ae Automatic translations update 2024-04-26 02:06:28 +00:00
renovate[bot]
c3b0e31a0a chore(deps): update asf-ui digest to 6dd170c 2024-04-25 20:28:00 +00:00
renovate[bot]
f7207c1326 chore(deps): update actions/checkout action to v4.1.4 2024-04-25 14:19:37 +00:00
ArchiBot
9a9817c6b3 Automatic translations update 2024-04-25 02:06:39 +00:00
Łukasz Domeradzki
1b4ac9da8b Squashed commit of the following:
commit 2f206cd822f615ad215c6e09f83ceb653c0dbd75
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Wed Apr 24 20:16:24 2024 +0200

    Further improvements

commit 66b60c028c652db1644c3efd400dd00f6559ba40
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Wed Apr 24 20:00:13 2024 +0200

    Try new heredoc syntax
2024-04-24 20:27:22 +02:00
renovate[bot]
d98310fc0e chore(deps): update actions/download-artifact action to v4.1.7 2024-04-24 15:25:40 +00:00
Łukasz Domeradzki
3240fca63e Misc qodana improvements 2024-04-24 15:22:38 +02:00
renovate[bot]
f1631b7f06 chore(deps): update jetbrains/qodana-action action to v2024 (#3195)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-24 15:14:48 +02:00
ArchiBot
30e5c5f91b Automatic translations update 2024-04-24 02:06:35 +00:00
Łukasz Domeradzki
257026144d Misc 2024-04-23 21:15:40 +02:00
Łukasz Domeradzki
9f786dce97 Misc 2024-04-23 21:11:32 +02:00
Łukasz Domeradzki
c2f582164c Misc 2024-04-23 20:54:07 +02:00
Łukasz Domeradzki
464ed3b614 Misc 2024-04-23 19:27:39 +02:00
renovate[bot]
5bb9494ecc chore(deps): update github/codeql-action action to v3.25.2 2024-04-23 08:22:38 +00:00
renovate[bot]
0fb583a094 chore(deps): update actions/upload-artifact action to v4.3.3 2024-04-23 04:51:37 +00:00
ArchiBot
358b1a7dbe Automatic translations update 2024-04-23 02:06:47 +00:00
renovate[bot]
bd91f439c8 chore(deps): update asf-ui digest to d7e3ef5 2024-04-22 23:04:12 +00:00
renovate[bot]
4181ada887 chore(deps): update actions/download-artifact action to v4.1.6 2024-04-22 19:50:54 +00:00
renovate[bot]
32d116d106 chore(deps): update actions/checkout action to v4.1.3 2024-04-22 16:27:01 +00:00
Łukasz Domeradzki
30c27f9faf Misc, documentation day! 2024-04-22 16:29:02 +02:00
Łukasz Domeradzki
b332d576ab Misc 2024-04-22 15:20:01 +02:00
Łukasz Domeradzki
9def43cef0 Update README.md 2024-04-22 15:03:29 +02:00
ArchiBot
0820b39a35 Automatic translations update 2024-04-22 02:06:52 +00:00
Łukasz Domeradzki
2a0be85d14 Bump 2024-04-21 21:35:22 +02:00
Łukasz Domeradzki
efb7262113 Prevent official plugins from updating to unmatched versions 2024-04-21 21:31:37 +02:00
renovate[bot]
1a732bbb93 chore(deps): update wiki digest to 74ee175 2024-04-21 16:10:17 +00:00
Łukasz Domeradzki
b8fe380b61 Bump 2024-04-21 18:09:47 +02:00
Łukasz Domeradzki
8670cea7a3 Misc 2024-04-21 18:09:21 +02:00
Sebastian Göls
e2a5ec3616 Fix monitoring plugin (#3191)
* Misc.

* Fix ASF crash

* Remove warning about automatic update of custom plugins if there is only official plugins enabled

* Fix previous mistake

* Revert "Fix ASF crash"

This reverts commit 42209e93ce.
2024-04-21 16:21:33 +02:00
renovate[bot]
d013366c9a chore(deps): update asf-ui digest to d64880d 2024-04-21 03:05:41 +00:00
ArchiBot
e9093cda6d Automatic translations update 2024-04-21 02:07:18 +00:00
Łukasz Domeradzki
0f30a0ef3d Fix IWebInterface with root WebPath 2024-04-20 23:37:57 +02:00
ArchiBot
b1a64e346c Automatic translations update 2024-04-20 02:05:36 +00:00
ArchiBot
c524a89c5e Automatic translations update 2024-04-19 02:06:39 +00:00
renovate[bot]
e73d90e697 chore(deps): update asf-ui digest to 0714df0 2024-04-18 21:40:19 +00:00
renovate[bot]
ee470d9ce9 chore(deps): update actions/upload-artifact action to v4.3.2 2024-04-18 20:16:48 +00:00
renovate[bot]
aab5b3aaab chore(deps): update actions/download-artifact action to v4.1.5 2024-04-18 17:09:08 +00:00
renovate[bot]
86281b5fdb chore(deps): update dependency opentelemetry.extensions.hosting to v1.8.1 2024-04-18 04:45:31 +00:00
ArchiBot
ddabf7db49 Automatic translations update 2024-04-18 02:06:09 +00:00
Łukasz Domeradzki
1c7523e98e Modernize docker builds, add attestations 2024-04-18 01:46:49 +02:00
Łukasz Domeradzki
120d084b12 Misc CI 2024-04-18 01:04:54 +02:00
renovate[bot]
1e69ec4634 chore(deps): update github/codeql-action action to v3.25.1 2024-04-17 15:33:32 +00:00
renovate[bot]
31a680ce1c chore(deps): update wiki digest to 7ec0ec5 2024-04-17 14:36:06 +00:00
Łukasz Domeradzki
3bad19530e Bump 2024-04-17 12:14:38 +02:00
Łukasz Domeradzki
10986289e6 Make --process-required default, add ShutdownIfPossible instead 2024-04-17 12:02:26 +02:00
ArchiBot
656c1b8d5d Automatic translations update 2024-04-17 02:06:21 +00:00
renovate[bot]
ef0037aa25 chore(deps): update asf-ui digest to 46a15c5 2024-04-16 22:20:35 +00:00
renovate[bot]
af02ccbd6f chore(deps): update wiki digest to dc78a43 2024-04-16 14:20:48 +00:00
Łukasz Domeradzki
978f3f63bd Bump 2024-04-16 11:39:51 +02:00
Łukasz Domeradzki
e550cc0f43 Misc 2024-04-16 10:39:03 +02:00
Łukasz Domeradzki
5894226e93 Add optional health checks to ASF API 2024-04-16 10:37:32 +02:00
ArchiBot
d50fa8eeb7 Automatic translations update 2024-04-16 02:05:41 +00:00
renovate[bot]
6efd333684 chore(deps): update github/codeql-action action to v3.25.0 2024-04-15 16:57:49 +00:00
renovate[bot]
05701b60c1 chore(deps): update wiki digest to 60a1965 2024-04-15 12:55:35 +00:00
ArchiBot
f8e7e55a00 Automatic translations update 2024-04-15 02:52:50 +00:00
renovate[bot]
20663f0226 chore(deps): update wiki digest to 05e8868 2024-04-14 22:52:10 +00:00
renovate[bot]
ad175ba2ac chore(deps): update asf-ui digest to 58779f5 2024-04-14 16:09:13 +00:00
Łukasz Domeradzki
bdf90a5e51 Enable ArchiSteamFarm.OfficialPlugins.Monitoring for publishing 2024-04-14 16:58:05 +02:00
Łukasz Domeradzki
49618534ce Ship grafana dashboard together with the plugin 2024-04-14 16:54:57 +02:00
Łukasz Domeradzki
f2bb2a6bee Create grafana_dashboard.json 2024-04-14 16:46:48 +02:00
ArchiBot
ba4f3aea7b Automatic translations update 2024-04-14 02:27:34 +00:00
Łukasz Domeradzki
b30068103b Bump 2024-04-13 23:54:05 +02:00
renovate[bot]
7062928c32 chore(deps): update opentelemetry-dotnet monorepo to v1.8.1 2024-04-13 03:38:50 +00:00
ArchiBot
7f0764b7b1 Automatic translations update 2024-04-13 01:56:55 +00:00
Łukasz Domeradzki
8b21f4f869 Misc 2024-04-12 11:58:46 +02:00
renovate[bot]
8d634b9b1b chore(deps): update asf-ui digest to d3082d3 2024-04-12 04:53:14 +00:00
ArchiBot
698e567c63 Automatic translations update 2024-04-12 02:06:30 +00:00
Łukasz Domeradzki
6d697c3dda Misc bulletproofing 2024-04-12 01:29:32 +02:00
Łukasz Domeradzki
746e28c3a2 Misc 2024-04-12 01:00:05 +02:00
Łukasz Domeradzki
df0f087505 Misc code style 2024-04-12 00:21:49 +02:00
Łukasz Domeradzki
0ccec4c8c1 Address latest Rider code inspections 2024-04-11 23:24:01 +02:00
renovate[bot]
e18e1533e3 chore(deps): update asf-ui digest to 386bfeb 2024-04-11 02:15:55 +00:00
ArchiBot
c077381e45 Automatic translations update 2024-04-11 02:06:12 +00:00
Łukasz Domeradzki
a0ecb78086 Misc 2024-04-10 15:42:00 +02:00
Łukasz Domeradzki
e47bd9faa4 Revert "Closes #3180"
This reverts commit 5d83807357.
2024-04-10 01:57:35 +02:00
Łukasz Domeradzki
e2bf6117dd Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-04-10 01:52:17 +02:00
Łukasz Domeradzki
14b0b332c5 Fix 2024-04-10 01:52:11 +02:00
renovate[bot]
76f74dabbe chore(deps): update dependency markdig.signed to v0.37.0 2024-04-09 19:54:33 +00:00
Łukasz Domeradzki
42dec2de39 Misc
Thanks @xPaw
2024-04-09 16:33:54 +02:00
renovate[bot]
b965971c79 chore(deps): update asf-ui digest to 1c055dc 2024-04-09 02:36:57 +00:00
ArchiBot
3a7ab02f88 Automatic translations update 2024-04-09 02:05:31 +00:00
Łukasz Domeradzki
b931e935b5 Misc MonitoringPlugin enhancements 2024-04-09 03:45:06 +02:00
renovate[bot]
521a1b7d34 chore(deps): update docker/setup-buildx-action action to v3.3.0 2024-04-08 10:20:58 +00:00
Łukasz Domeradzki
fffcef2d30 Misc 2024-04-08 09:33:27 +02:00
ArchiBot
cf1216a667 Automatic translations update 2024-04-08 02:06:13 +00:00
Łukasz Domeradzki
68ee647ed2 Misc 2024-04-08 03:08:37 +02:00
Łukasz Domeradzki
2eda952cd0 Misc 2024-04-08 03:03:35 +02:00
Łukasz Domeradzki
7fac4ac298 Misc 2024-04-08 00:32:18 +02:00
Sebastian Göls
9016a5109d Fix monitoring integration with actual prometheus (#3183)
* Downgrade OpenTelemetry.Exporter.Prometheus.AspNetCore due to issues with latest version

* Add unit to asf_bot_farming_minutes_remaining

* Upgrade some packages released last night (already tested to work)

* Don't forget about unit suffix

* Add build and runtime information metrics

It is not recommended to include this information as labels in all
metrics. Instead, we add two special metrics with a constant value of
"1" and restrict those static pieces of information to them

* Remove module version from metrics as it does not work

* Apply feedback

* Deduplicate code

* Reference related issue in upstream repo
2024-04-07 23:56:44 +02:00
Łukasz Domeradzki
8e055fe587 Kill unused packageRules 2024-04-07 16:46:50 +02:00
renovate[bot]
3b2bb0590f chore(deps): update opentelemetry-dotnet monorepo to v1.8.0 2024-04-06 13:14:22 +00:00
renovate[bot]
134d3e2d0d chore(deps): update dependency opentelemetry.instrumentation.runtime to v1.8.0 2024-04-06 11:22:56 +00:00
renovate[bot]
b735f8e567 chore(deps): update github/codeql-action action to v3.24.10 2024-04-06 07:03:44 +00:00
renovate[bot]
3992ea6656 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v7.5.1 2024-04-06 03:04:47 +00:00
Łukasz Domeradzki
03840990be Bump 2024-04-06 05:04:18 +02:00
Łukasz Domeradzki
27bafb1552 Resolve files in-use during update on Windows 2024-04-06 04:53:16 +02:00
ArchiBot
9b3ab17902 Automatic translations update 2024-04-06 02:04:31 +00:00
Łukasz Domeradzki
df0ede4ccc Remove unnecessary logging confusing people 2024-04-06 01:13:09 +02:00
Łukasz Domeradzki
ecf6846255 Misc 2024-04-05 12:29:41 +02:00
Łukasz Domeradzki
173e22dde2 Misc 2024-04-05 11:48:42 +02:00
renovate[bot]
c5799c561a chore(deps): update dependency mstest to v3.3.1 2024-04-05 04:44:28 +00:00
renovate[bot]
6736ca8fd4 chore(deps): update asf-ui digest to c74b93b 2024-04-05 02:14:52 +00:00
ArchiBot
8f3cacd32f Automatic translations update 2024-04-05 02:05:30 +00:00
Łukasz Domeradzki
d3cb3a1486 Bump 2024-04-04 23:05:27 +02:00
Łukasz Domeradzki
ae9dfca3b3 Closes #3156 (#3182)
* Closes #3156

* Misc

* Misc

* Rewrite update mechanism ONCE AGAIN, this time to eradicate FSW

* Make creating debug directory non-fatal again, like it used to be

* Deduplicate code

* Remove dead code

* Print update cleanup just once

* Address remaining feedback, go back to _old and _new

* One more nice improvement
2024-04-04 21:21:58 +02:00
Łukasz Domeradzki
edc7c38ba0 Misc 2024-04-04 21:20:23 +02:00
Łukasz Domeradzki
54e76cf559 Handle EResult.Fail in inventory request 2024-04-04 19:08:23 +02:00
Łukasz Domeradzki
477cc8ba74 Reduce AngleSharp overhead 2024-04-04 15:35:54 +02:00
renovate[bot]
573d4c8151 chore(deps): update asf-ui digest to e1b4949 2024-04-04 09:16:02 +00:00
renovate[bot]
5bdaec6980 chore(deps): update dependency mstest to v3.3.0 2024-04-04 03:20:35 +00:00
ArchiBot
400ff1ff6a Automatic translations update 2024-04-04 02:06:01 +00:00
Łukasz Domeradzki
1841cde776 Misc code enhancements 2024-04-04 02:15:16 +02:00
renovate[bot]
990e696b37 chore(deps): update wiki digest to 5ab9665 2024-04-03 20:08:37 +00:00
Łukasz Domeradzki
d591c67276 Remove ArchiSteamFarm.OfficialPlugins.Monitoring from publishing 2024-04-03 22:07:54 +02:00
Łukasz Domeradzki
423cd154a7 Better sessionID generation 2024-04-03 17:25:00 +02:00
renovate[bot]
44dec3ab3f chore(deps): update dependency opentelemetry.extensions.hosting to v1.8.0 2024-04-03 04:19:18 +00:00
ArchiBot
7fb7c9146b Automatic translations update 2024-04-03 02:05:45 +00:00
Łukasz Domeradzki
f060ba2094 Bump 2024-04-03 01:16:43 +02:00
Łukasz Domeradzki
457828260b Merge remote-tracking branch 'origin/renovate/asf-ui-digest' 2024-04-03 01:04:50 +02:00
renovate[bot]
4b080d4d0b chore(deps): update asf-ui digest to f70253c 2024-04-02 22:47:24 +00:00
Łukasz Domeradzki
5d83807357 Closes #3180 2024-04-03 00:46:46 +02:00
Łukasz Domeradzki
2b794becff Clear GamesToFarm on farming stopped
GamesToFarm is not used after farming has stopped, so this doesn't solve any bug or misbehaviour, but some plugin creators might prefer to have up-to-date state just in case.
2024-04-03 00:32:59 +02:00
renovate[bot]
e69c5a0138 chore(deps): update crowdin/github-action action to v1.20.2 2024-04-02 09:40:38 +00:00
ArchiBot
90a11c2ffc Automatic translations update 2024-04-02 02:07:14 +00:00
renovate[bot]
497da6487d chore(deps): update dependency anglesharp.xpath to v2.0.4 2024-04-01 23:24:14 +00:00
renovate[bot]
8ffabf3db3 chore(deps): update wiki digest to 9303271 2024-04-01 19:43:33 +00:00
ArchiBot
bf42605f88 Automatic translations update 2024-04-01 02:08:38 +00:00
Łukasz Domeradzki
7e12f17c48 Create ASF-troll.png
I'm not going to look after it each year!
2024-04-01 01:05:13 +02:00
Łukasz Domeradzki
9360a588ea Bump 2024-04-01 00:05:55 +02:00
Łukasz Domeradzki
e02e597102 Apply similar logic to build checksums 2024-04-01 00:03:11 +02:00
Łukasz Domeradzki
a952a2e1e7 Bump 2024-03-31 23:40:49 +02:00
Łukasz Domeradzki
cb8668ffb8 Resolve trade offers being stuck for too long when ASF API connection is down 2024-03-31 23:30:54 +02:00
Łukasz Domeradzki
79fb392a9a Update from ASFB 2024-03-30 04:03:16 +01:00
ArchiBot
7b490ae26a Automatic translations update 2024-03-30 02:03:23 +00:00
renovate[bot]
69b05f932f chore(deps): update asf-ui digest to 003d022 2024-03-29 19:00:22 +00:00
Łukasz Domeradzki
e0d614fe2f Bump 2024-03-29 14:48:09 +01:00
Łukasz Domeradzki
5e81c3fdef Closes #3175 2024-03-29 14:44:07 +01:00
ArchiBot
4707b60ee4 Automatic translations update 2024-03-29 02:04:44 +00:00
Łukasz Domeradzki
158b1a87b3 Bump 2024-03-29 01:05:40 +01:00
Łukasz Domeradzki
a72f833c67 Fix ASF crash when account is used as new family sharing kid 2024-03-29 01:04:41 +01:00
renovate[bot]
a9d0092bd2 chore(deps): update opentelemetry-dotnet monorepo to v1.8.0-rc.1 2024-03-28 11:46:37 +00:00
Łukasz Domeradzki
154655c35c Update from ASFB 2024-03-28 12:29:18 +01:00
renovate[bot]
2a2f9c27a4 chore(deps): update asf-ui digest to ab80b24 2024-03-28 04:48:23 +00:00
Łukasz Domeradzki
d50b8a7723 Update from ASFB 2024-03-28 03:11:16 +01:00
Łukasz Domeradzki
63421f7ed4 Update from ASFB 2024-03-28 03:08:50 +01:00
ArchiBot
8ad24e2f9f Automatic translations update 2024-03-28 02:06:02 +00:00
renovate[bot]
941539ce23 chore(deps): update asf-ui digest to 218f3b4 2024-03-27 22:53:07 +00:00
Łukasz Domeradzki
74c4a80e3b Bump 2024-03-27 23:52:32 +01:00
Łukasz Domeradzki
6e30b31e9e Sync inventory parsing with ASFB 2024-03-27 23:47:51 +01:00
Łukasz Domeradzki
b63161c73e Start logging AWH more extensively
We don't use it anymore, but it's beneficial to catch potential AH issues as well.

I'll make ASFB report potential issues.
2024-03-27 20:36:10 +01:00
Łukasz Domeradzki
9c362dced2 Bump 2024-03-27 19:57:26 +01:00
Łukasz Domeradzki
9a02c79e0a Closes #3174 2024-03-27 19:55:07 +01:00
renovate[bot]
0ae4b6ff18 chore(deps): update crowdin/github-action action to v1.20.1 2024-03-27 09:52:07 +00:00
Łukasz Domeradzki
7b4166f28d Bump 2024-03-27 09:23:33 +01:00
Łukasz Domeradzki
bd87673db3 Misc 2024-03-27 09:22:46 +01:00
Łukasz Domeradzki
4cb3eabd4c Add missing error-handling to GetMyInventoryAsync() 2024-03-27 09:19:22 +01:00
renovate[bot]
d3957b5604 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v7.5.0 2024-03-27 04:15:12 +00:00
ArchiBot
de072bc5dd Automatic translations update 2024-03-27 02:05:15 +00:00
Łukasz Domeradzki
7bb23efc2f Misc 2024-03-26 22:04:19 +01:00
Łukasz Domeradzki
88be284117 Misc 2024-03-26 18:51:11 +01:00
Łukasz Domeradzki
bc983e9f5d Bump 2024-03-26 17:51:16 +01:00
Łukasz Domeradzki
4c38de75ab Further enhance plugin updates selection 2024-03-26 17:44:42 +01:00
Łukasz Domeradzki
b58469ce40 Fix occassional failures by not publishing plugins in parallel 2024-03-26 17:12:50 +01:00
Łukasz Domeradzki
ab7f12058f Skip restore if possible 2024-03-26 16:50:12 +01:00
renovate[bot]
0dda5a93c9 chore(deps): update asf-ui digest to 8a550a2 2024-03-26 03:43:18 +00:00
Łukasz Domeradzki
30092cc326 Squashed commit of the following:
commit a5dd19643edd71ba3bcf9d120cc0ef20c1904104
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Tue Mar 26 03:43:50 2024 +0100

    How about this one

commit 7f44554a5433931339dc479a6101f942c5d5fb97
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Tue Mar 26 03:14:04 2024 +0100

    Here as well

commit 8593cd169949dc5876c1a3c4e4561d2ca38d7350
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Tue Mar 26 03:13:36 2024 +0100

    Okay

commit 9d17fee1f8f9bd3ae91f144761885d10e52b67ae
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Tue Mar 26 03:08:49 2024 +0100

    Restore everything first

commit 2835332dabf17a9dcdea3fc4f75e0c650add622c
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Tue Mar 26 03:00:33 2024 +0100

    Ah right

commit 85e2db40c8d6c184e5732724ea928486456767e4
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Tue Mar 26 02:59:31 2024 +0100

    And this?

commit 974cffb61782a4dbc83dfd93a66a627a69d04fd9
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Tue Mar 26 02:33:52 2024 +0100

    Docker improvements

commit 95f40803615f7056f59a522b068600dfbb87b4de
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Tue Mar 26 02:22:30 2024 +0100

    Misc

commit 0f5b526c603d5cfe0f29b4f4b8420d01f76161fc
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Tue Mar 26 02:09:42 2024 +0100

    Make bundled plugins variant-specific

    Since we're including them as part of OS-specific builds, we can also limit their dependencies to those OSes exclusively.

    Might help cut some unnecessary dependencies.
2024-03-26 04:42:31 +01:00
ArchiBot
721380b153 Automatic translations update 2024-03-26 02:07:25 +00:00
renovate[bot]
09a0f21506 chore(deps): update asf-ui digest to 5b599bc 2024-03-26 00:48:04 +00:00
Łukasz Domeradzki
c9f2fdc847 Bump 2024-03-26 01:47:35 +01:00
Łukasz Domeradzki
e326cc94d0 Misc 2024-03-26 01:43:15 +01:00
Łukasz Domeradzki
66237dab24 Back to .15... 2024-03-26 01:16:18 +01:00
Łukasz Domeradzki
53ec07a7f1 Correct plugin names we distribute outselves 2024-03-26 01:15:17 +01:00
Łukasz Domeradzki
bbad80ae0e Bump 2024-03-26 00:39:32 +01:00
Łukasz Domeradzki
e6021a4f11 Misc 2024-03-26 00:36:04 +01:00
Łukasz Domeradzki
b3f792a2f3 Misc 2024-03-26 00:31:35 +01:00
Łukasz Domeradzki
7083a397b8 Squashed commit of the following:
commit ea03c2dab0fe884ed2c2db1acc6ab003ef71a684
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Mar 25 23:59:50 2024 +0100

    Attempt 2

commit cb9e67d0d94df76f49ad58f225b35a2661b44100
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Mar 25 23:45:13 2024 +0100

    Ship monitoring plugin attempt 1
2024-03-26 00:29:23 +01:00
Łukasz Domeradzki
f98fd85fe9 Misc 2024-03-25 23:03:49 +01:00
Sebastian Göls
f9f6e207d4 Add official monitoring plugin (#3160)
* Add Monitoring plugin

* Prepare pipeline

* Fix Rider stupidity

* Fix Windows build

* Remove translation files

* Apply feedback

* Add steam id as additional tag to metrics

* Apply feedback

* Add runtime metrics

* Fix my brain not braining

* Use extension methods to add instrumentation and Add monitoring for outbound HTTP traffic

* Upgrade OpenTelemetry.Extensions.Hosting to prerelease due to runtime exception

* Remove config and add file that was supposed to be committed yesterday to fix the runtime exception

* Revert changes to publish.yml

* Remove localization

* Apply feedback

* Apply feedback

* Fix version number

* Revert use of property in Kestrel (even tho it's an outside caller to the source class)
2024-03-25 22:58:03 +01:00
Sebastian Göls
0c4e4e709f Add POST /Api/Plugins/Update (#3173) 2024-03-25 22:57:47 +01:00
renovate[bot]
d7f9ad4916 chore(deps): update asf-ui digest to b57627e 2024-03-25 17:40:33 +00:00
renovate[bot]
b04f92ca3c chore(deps): update jetbrains/qodana-action action to v2023.3.2 2024-03-25 09:55:54 +00:00
ArchiBot
16a0174cf1 Automatic translations update 2024-03-24 02:06:44 +00:00
renovate[bot]
c92d78e088 chore(deps): update asf-ui digest to bdb3808 2024-03-23 03:19:40 +00:00
ArchiBot
1f7b8d2416 Automatic translations update 2024-03-23 02:04:54 +00:00
renovate[bot]
7ca9b23aa3 chore(deps): update github/codeql-action action to v3.24.9 2024-03-22 16:16:04 +00:00
Archi
f0acd8ddfd Bump 2024-03-22 17:15:35 +01:00
Archi
c5009dad31 Decrease itemsCountPerRequest to 5000, optimize performance a bit, closes #3171 2024-03-22 16:34:46 +01:00
Archi
9682d1d5ef Down to 5000? 2024-03-22 16:16:38 +01:00
Archi
a4e8fca784 Keep decreasing itemsCountPerRequest 2024-03-22 15:50:29 +01:00
Archi
8f25040bf5 Decrease itemsCountPerRequest to help resolve #3171 2024-03-22 15:17:28 +01:00
renovate[bot]
34beec8d6b chore(deps): update asf-ui digest to 2f7a98e 2024-03-22 07:39:05 +00:00
ArchiBot
6c0fd638a5 Automatic translations update 2024-03-22 02:04:31 +00:00
Archi
0b94213af7 Misc
We originally had ifdefs here for netf, so const made sense, they don't anymore.
2024-03-22 01:10:39 +01:00
Archi
f874598fd8 Misc 2024-03-21 22:37:09 +01:00
Archi
a1adcd3a5a Misc refactor 2024-03-21 22:32:15 +01:00
Archi
1596b98e25 Misc 2024-03-21 21:55:46 +01:00
renovate[bot]
9b0ad5c545 chore(deps): update wiki digest to 4869495 2024-03-21 07:57:02 +00:00
renovate[bot]
6a47b30987 chore(deps): update asf-ui digest to 2b813a2 2024-03-21 03:31:32 +00:00
renovate[bot]
79594a9d00 chore(deps): update crowdin/github-action action to v1.20.0 2024-03-20 22:10:52 +00:00
renovate[bot]
38a9818482 chore(deps): update asf-ui digest to e91b9a0 2024-03-20 20:52:25 +00:00
Archi
a407d538f5 Bump 2024-03-20 21:52:03 +01:00
Archi
44bea85296 Fix and derequire type text in confirmation
Even if we have it always available, we don't need use it 99.9% of time, and even in 0.1% it's only supportive attribute for debugging. Make it optional, will help with robustness.
2024-03-20 21:51:28 +01:00
renovate[bot]
915d26adfa chore(deps): update wiki digest to 5e52590 2024-03-20 12:52:53 +00:00
Archi
3dd4248587 Bump 2024-03-20 13:52:15 +01:00
Archi
7969e58fbf Remove wrong failsafe 2024-03-20 13:51:43 +01:00
Archi
7043ebda23 Bump 2024-03-20 11:58:17 +01:00
Archi
4c0a5b7553 Make it possible to call updateplugins without args 2024-03-20 11:50:51 +01:00
Archi
533fbe0c2f Respect updateOverride when updating plugins 2024-03-20 11:36:14 +01:00
Archi
437dfd5f02 Allow forced plugin updates as well 2024-03-20 11:13:10 +01:00
Archi
5f4962ddcc Update IPluginUpdates.cs 2024-03-20 09:49:52 +01:00
Archi
7efa609a13 Update IPluginUpdates.cs 2024-03-20 04:47:12 +01:00
Archi
0d7049ea7c Misc 2024-03-20 04:46:09 +01:00
Archi
997e7f0420 Add bool asfUpdate to IPluginUpdates 2024-03-20 04:42:18 +01:00
Archi
96619b9565 Bump 2024-03-20 04:20:05 +01:00
Archi
4c2a786e54 Add downgrade possibility in update command 2024-03-20 04:16:22 +01:00
Archi
469b1571e1 Misc refactor of login results 2024-03-20 03:44:21 +01:00
Vita Chumakova
3bc66e0d27 Add family join confirmation type (#3166) 2024-03-20 03:20:23 +01:00
ArchiBot
9a4fac600a Automatic translations update 2024-03-20 02:04:23 +00:00
renovate[bot]
546ba8b68f chore(deps): update asf-ui digest to 25ce8ef 2024-03-19 19:28:12 +00:00
Archi
ed29c0633f Bump 2024-03-19 15:05:56 +01:00
Archi
35b1135b50 Update Bot.cs 2024-03-19 14:50:22 +01:00
Archi
90403c98c9 Bump 2024-03-19 13:55:34 +01:00
Archi
71a1c0574a Of course I had to forget about something important 2024-03-19 13:55:09 +01:00
Archi
ba64a50bb5 Bump 2024-03-19 13:28:52 +01:00
Archi
05131b2b76 Misc 2024-03-19 13:26:44 +01:00
Archi
0894eaee28 Closes #3162 2024-03-19 13:24:24 +01:00
Archi
6f2fd4eccc Closes #3163 2024-03-19 13:03:09 +01:00
Archi
04b534bda1 SK2 3.0 2024-03-19 12:40:54 +01:00
Archi
3620796d6d Misc 2024-03-19 11:07:50 +01:00
Archi
a321a38ccd Update publish.yml 2024-03-19 10:29:45 +01:00
Archi
ea965dfa85 Bump 2024-03-19 09:58:40 +01:00
Archi
f381106de2 Misc enhancements 2024-03-19 09:53:04 +01:00
Citrinate
b9ab3d6490 Fix GetTradeOffer exception (#3164) 2024-03-19 09:35:05 +01:00
renovate[bot]
4cf1d1e08b chore(deps): update asf-ui digest to a0ab4b2 2024-03-19 04:33:21 +00:00
ArchiBot
cba6e4df64 Automatic translations update 2024-03-19 02:05:23 +00:00
Archi
0dd6f38748 Move GetServerTime() from AWH to AH 2024-03-18 23:48:30 +01:00
renovate[bot]
970ba437a0 chore(deps): update github/codeql-action action to v3.24.8 2024-03-18 14:46:04 +00:00
Archi
e0bbbe3894 Update publish.yml 2024-03-18 15:45:37 +01:00
Archi
504791b5b6 Misc 2024-03-18 15:44:36 +01:00
Archi
6a6d0b48b9 Bump 2024-03-18 14:18:23 +01:00
Archi
84ff83bbe2 Improve performance when matching multiple users 2024-03-18 13:52:12 +01:00
Archi
787bcc3546 Extract ItemsMatcher-exclusively parts out of ASF core, decrease dependency on DeepClone() 2024-03-18 13:45:13 +01:00
Archi
fd811d8cf4 Implement DeepClone() for asset and description 2024-03-18 12:44:29 +01:00
Archi
3fa743f64b Add body for asset
It makes sense to expose entire underlying asset to the callers, as underlying body might have features they like, such as currencyid or est_usd - values that do not exist in json and we're not making use of them, but we still want to keep if provided e.g. by ArchiHandler.
2024-03-18 12:22:07 +01:00
Archi
ec374c050a Misc 2024-03-18 11:54:42 +01:00
Archi
5a07f8a2a3 Make descriptions optional, open constructors for plugins
In rare occurances, we might not have a description assigned to the item. This is most notable in inactive trade offers, but we permit this to happen even in inventory fetches.

Assigning "default" description is unwanted if caller wants to have a way to determine that description wasn't there to begin with. It makes more sense to make it nullable and *expect* it to be null, then caller can do appropriate checking and decide what they want to do with that.

Also open constructors for plugins usage in case they'd like to construct assets manually, e.g. for sending.
2024-03-18 11:53:14 +01:00
renovate[bot]
91b09dc43f chore(deps): update asf-ui digest to b112518 2024-03-18 04:33:16 +00:00
ArchiBot
8d6d355a3b Automatic translations update 2024-03-18 02:04:51 +00:00
renovate[bot]
da6fd69398 chore(deps): update wiki digest to be281d8 2024-03-17 21:07:32 +00:00
Archi
0e623cfd15 Bump 2024-03-17 22:06:55 +01:00
Archi
1c01d8f59f Fix tradableOnly/marketableOnly not working properly 2024-03-17 22:06:30 +01:00
Archi
5723ee7b19 Misc 2024-03-17 17:16:45 +01:00
Archi
1d85292451 Bump 2024-03-17 16:03:58 +01:00
renovate[bot]
0d65f5174b chore(deps): update asf-ui digest to b241705 2024-03-17 07:14:25 +00:00
Archi
b7f34f0d5d Misc 2024-03-17 03:47:08 +01:00
Archi
4ffcea72b0 Misc 2024-03-17 03:40:28 +01:00
Archi
9c5fade596 Final touches 2024-03-17 03:36:02 +01:00
Archi
331ecc1cc8 Add edge cases compatibility for plugins 2024-03-17 03:11:22 +01:00
ArchiBot
6428e5abd1 Automatic translations update 2024-03-17 02:05:53 +00:00
Archi
b86f83a634 Misc 2024-03-17 02:54:28 +01:00
Archi
ff55e09783 Apply guid json converter only where we need it 2024-03-17 02:44:49 +01:00
Archi
d7d24d5e47 Misc fix 2024-03-17 02:44:40 +01:00
Archi
48a14136a9 Update all file headers, again 2024-03-17 02:35:40 +01:00
Archi
c9acbb7bf2 Big post-PR cleanup 2024-03-17 02:29:04 +01:00
Archi
f98a159799 File header update 2024-03-17 00:06:13 +01:00
Vita Chumakova
184232995d Inventory fetching through CM (#3155)
* New inventory fetching

* use new method everywhere

* Store description in the asset, add protobuf body as a backing field for InventoryDescription, add properties to description

* parse trade offers as json, stub descriptions, fix build

* formatting, misc fixes

* fix pragma comments

* fix passing tradable property

* fix convesion of assets, add compatibility method

* fix fetching tradeoffers

* use 40k as default count per request

* throw an exception instead of silencing the error
2024-03-16 23:57:25 +01:00
Łukasz Domeradzki
aedede3ba4 Implement plugin updates with IPluginUpdates interface (#3151)
* Initial implementation of plugin updates

* Update PluginsCore.cs

* Update IPluginUpdates.cs

* Update PluginsCore.cs

* Make it work

* Misc

* Revert "Misc"

This reverts commit bccd1bb2b8.

* Proper fix

* Make plugin updates independent of GitHub

* Final touches

* Misc

* Allow plugin creators for more flexibility in picking from GitHub releases

* Misc rename

* Make changelog internal again

This is ASF implementation detail, make body available instead and let people implement changelogs themselves

* Misc

* Add missing localization

* Add a way to disable plugin updates

* Update PluginsCore.cs

* Update PluginsCore.cs

* Misc

* Update IGitHubPluginUpdates.cs

* Update IGitHubPluginUpdates.cs

* Update IGitHubPluginUpdates.cs

* Update IGitHubPluginUpdates.cs

* Make zip selection ignore case

* Update ArchiSteamFarm/Core/Utilities.cs

Co-authored-by: Vita Chumakova <me@ezhevita.dev>

* Misc error notify

* Add commands and finally call it a day

* Misc progress percentages text

* Misc

* Flip DefaultPluginsUpdateMode as per the voting

* Misc

---------

Co-authored-by: Vita Chumakova <me@ezhevita.dev>
2024-03-16 23:56:57 +01:00
renovate[bot]
c874779c0d chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v7.4.1 2024-03-16 00:47:06 +00:00
renovate[bot]
4a2457d571 chore(deps): update asf-ui digest to 8b1b833 2024-03-15 23:20:40 +00:00
ArchiBot
65fdd4196a Automatic translations update 2024-03-15 02:05:20 +00:00
renovate[bot]
19eefff525 chore(deps): update dependency markdig.signed to v0.36.2 2024-03-14 19:16:09 +00:00
renovate[bot]
626c18ba23 chore(deps): update docker/setup-buildx-action action to v3.2.0 2024-03-14 16:43:54 +00:00
renovate[bot]
d9c8dc1e2d chore(deps): update docker/build-push-action action to v5.3.0 2024-03-14 14:39:15 +00:00
renovate[bot]
25fa5cabbb chore(deps): update dependency markdig.signed to v0.36.0 2024-03-14 11:13:36 +00:00
Vita Chumakova
21c9dac593 Misc minimize fixes after #3158 (#3159)
* Misc minimize fixes after #3158

* only "iconify" escape sequence support is needed
2024-03-14 12:13:16 +01:00
renovate[bot]
617dccbd9a chore(deps): update asf-ui digest to 49f688e 2024-03-14 04:39:59 +00:00
ArchiBot
2f2665e2ad Automatic translations update 2024-03-14 02:04:37 +00:00
Archi
fcc0d70cd1 Fix build 2024-03-14 01:23:29 +01:00
Archi
06b2cf4ff5 Misc 2024-03-14 01:11:49 +01:00
Vita Chumakova
8642b0775e Flash console window on input request on Windows (#3158)
* Flash console window on input request

* Use BELL character instead of Beep, fix flash struct, add support for minimizing and flashing with Windows Terminal

* cross-platform minimization, use alert char instead of number, fix struct again

* remove console window

* formatting

* use MainWindowHandle if it's set (fix flashing winterm if ASF is launched in conhost)

* fix build

* remove support for flashing winterm
2024-03-14 01:08:00 +01:00
renovate[bot]
c193858973 chore(deps): update docker/login-action action to v3.1.0 2024-03-13 17:41:19 +00:00
renovate[bot]
362e921a27 chore(deps): update asf-ui digest to 9faaefe 2024-03-13 03:57:24 +00:00
ArchiBot
e21fa45718 Automatic translations update 2024-03-13 02:05:37 +00:00
renovate[bot]
caae270ea8 chore(deps): update github/codeql-action action to v3.24.7 2024-03-12 19:43:24 +00:00
ArchiBot
4843d539f0 Automatic translations update 2024-03-12 02:04:54 +00:00
Archi
fa8e649288 Fix JB header
Don't update all files just yet, wait for ongoing PRs to finish
2024-03-12 00:05:34 +01:00
Archi
20708ad900 Open ToSteamClientLanguage() for plugins usage 2024-03-11 23:56:47 +01:00
ArchiBot
5e0b9551da Automatic translations update 2024-03-11 02:04:50 +00:00
ArchiBot
e43adf4de7 Automatic translations update 2024-03-10 02:06:54 +00:00
Archi
afe16b8eb1 Bump 2024-03-09 22:15:22 +01:00
Archi
e9f9663714 Fix https crash for kestrel core 2024-03-09 21:54:14 +01:00
renovate[bot]
d514157903 chore(deps): update wiki digest to c156e89 2024-03-09 17:37:26 +00:00
Archi
56490f2d86 Bump 2024-03-09 18:36:48 +01:00
Archi
1fd6c8a477 Minimize dependencies for starting IPC server
Previously WebApplication didn't offer any advantages over generic Host, but with release of .NET 8 there is now slim and empty builders, which limit amount of initialized dependencies and allow us to skip some unnecessary features in default pipeline.
2024-03-09 18:24:15 +01:00
Archi
e7bdd408be Bump, misc 2024-03-09 16:59:05 +01:00
renovate[bot]
f73b4737b6 chore(deps): update docker/build-push-action action to v5.2.0 2024-03-08 10:22:24 +00:00
ArchiBot
14c905b8ef Automatic translations update 2024-03-07 01:56:16 +00:00
Łukasz Domeradzki
fa7849460c Update Bug-report.yml 2024-03-06 00:23:41 +01:00
renovate[bot]
4d12c9117f chore(deps): update actions/download-artifact action to v4.1.4 2024-03-02 04:14:53 +00:00
ArchiBot
e2f08fe35b Automatic translations update 2024-03-02 02:03:09 +00:00
Archi
0089a87018 Misc 2024-03-02 01:22:47 +01:00
ArchiBot
6325c454bc Automatic translations update 2024-03-01 02:06:50 +00:00
renovate[bot]
6b1f64579a chore(deps): update github/codeql-action action to v3.24.6 2024-02-29 17:05:50 +00:00
renovate[bot]
14cfd61615 chore(deps): update asf-ui digest to 3c96528 2024-02-29 04:11:33 +00:00
ArchiBot
f2a8768f80 Automatic translations update 2024-02-29 02:03:36 +00:00
Archi
556f3fdac0 Misc 2024-02-28 21:40:54 +01:00
renovate[bot]
59124fcf68 chore(deps): update asf-ui digest to bec199f 2024-02-28 17:47:01 +00:00
ArchiBot
71643446db Automatic translations update 2024-02-28 02:04:29 +00:00
renovate[bot]
a93ca58e9c chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v7.4.0 2024-02-27 23:03:52 +00:00
Archi
f12e87c2f4 Update SUPPORT.md 2024-02-27 23:58:35 +01:00
renovate[bot]
d48c96604b chore(deps): update docker/setup-buildx-action action to v3.1.0 2024-02-27 10:07:20 +00:00
renovate[bot]
0976bbfd2d chore(deps): update actions/download-artifact action to v4.1.3 2024-02-27 00:46:20 +00:00
Archi
6f66518607 Bump 2024-02-27 01:45:51 +01:00
Archi
e4c20df4a8 Misc 2024-02-27 01:44:21 +01:00
Archi
5135677360 Add back missing STJ feature of non-standard Guid deserialization 2024-02-27 01:34:56 +01:00
Archi
f6004f558b Closes #3147 2024-02-27 00:42:32 +01:00
renovate[bot]
ddf08c4dc0 chore(deps): update asf-ui digest to f916fb3 2024-02-26 19:35:51 +00:00
ArchiBot
388eaf614d Automatic translations update 2024-02-26 02:05:51 +00:00
renovate[bot]
3a0768f9ef chore(deps): update asf-ui digest to 05de7b9 2024-02-25 21:40:17 +00:00
ArchiBot
cb0e04c022 Automatic translations update 2024-02-25 02:05:54 +00:00
Archi
55cdac205d Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-02-24 18:39:16 +01:00
Archi
1bc0d6f16c Archi had too much coding lately 2024-02-24 18:39:09 +01:00
renovate[bot]
f7377a7043 chore(deps): update asf-ui digest to d0d90a5 2024-02-24 04:29:58 +00:00
ArchiBot
76f1ad45dd Automatic translations update 2024-02-24 02:03:45 +00:00
renovate[bot]
f21ffde803 chore(deps): update github/codeql-action action to v3.24.5 2024-02-23 16:55:14 +00:00
renovate[bot]
e9c96f175f chore(deps): update asf-ui digest to f2ef756 2024-02-23 14:02:04 +00:00
Archi
0f9a4c7c31 Update Commands.cs 2024-02-23 14:19:09 +01:00
Archi
87451615e8 Extract addlicense logic to actions 2024-02-23 14:14:16 +01:00
ArchiBot
fa19aaae2e Automatic translations update 2024-02-23 02:08:38 +00:00
Archi
6b8280fceb Bump 2024-02-23 02:49:20 +01:00
Archi
7a13895429 Fix false positives 2024-02-23 02:49:03 +01:00
Archi
75668ea099 Bump 2024-02-23 02:43:06 +01:00
Archi
d3aa881f55 Fix STD serialization after STJ changes 2024-02-23 02:42:18 +01:00
Archi
33a1fdf556 Misc 2024-02-23 01:18:09 +01:00
Archi
0c848ec366 Misc 2024-02-23 01:15:35 +01:00
Archi
21d4e46b81 Bump 2024-02-22 23:45:13 +01:00
Archi
7a21c7bc45 Don't copy all variant-specific files if ASFVariant is not declared 2024-02-22 23:44:06 +01:00
renovate[bot]
9358aa5d1f chore(deps): update github/codeql-action action to v3.24.4 2024-02-22 15:09:20 +00:00
Archi
6c9e9da740 Modernize unit tests 2024-02-22 16:08:54 +01:00
renovate[bot]
a78a607f73 chore(deps): update asf-ui digest to cd1173a 2024-02-22 03:20:14 +00:00
ArchiBot
879323ed20 Automatic translations update 2024-02-22 02:04:27 +00:00
renovate[bot]
4e081b26a1 chore(deps): update asf-ui digest to e055bd1 2024-02-21 13:02:17 +00:00
Archi
6cd3459dd4 Misc 2024-02-21 13:20:26 +01:00
Archi
482576f16d Add extra constructors also to other public collections 2024-02-21 13:18:23 +01:00
Archi
f63dbffee3 Add extra constructors 2024-02-21 13:08:32 +01:00
renovate[bot]
d9cdc806fe chore(deps): update wiki digest to 03614e1 2024-02-21 04:05:58 +00:00
Archi
36a78b55a4 Good idea 2024-02-21 03:46:25 +01:00
Archi
ab983099cc Misc 2024-02-21 03:32:14 +01:00
Archi
aab8f5f0b5 BIG BUMP 2024-02-21 03:11:32 +01:00
Łukasz Domeradzki
6b0bf0f9c1 Closes #3061 (#3145)
* Good start

* Misc

* Make ApiAuthenticationMiddleware use new json

* Remove first newtonsoft dependency

* Pull latest ASFB json enhancements

* Start reimplementing newtonsoft!

* One thing at a time

* Keep doing all kind of breaking changes which need to be tested later

* Add back ShouldSerialize() support

* Misc

* Eradicate remaining parts of newtonsoft

* WIP

* Workaround STJ stupidity in regards to derived types

STJ can't serialize derived type properties by default, so we'll use another approach in our serializable file function

* Make CI happy

* Bunch of further fixes

* Fix AddFreeLicense() after rewrite

* Add full support for JsonDisallowNullAttribute

* Optimize our json utilities even further

* Misc

* Add support for fields in disallow null

* Misc optimization

* Fix deserialization of GlobalCache in STD

* Fix non-public [JsonExtensionData]

* Fix IM missing method exception, correct db storage helpers

* Fix saving into generic databases

Thanks STJ

* Make Save() function abstract to force inheritors to implement it properly

* Correct ShouldSerializeAdditionalProperties to be a method

* Misc cleanup

* Code review

* Allow JSON comments in configs, among other

* Allow trailing commas in configs

Users very often add them accidentally, no reason to throw on them

* Fix confirmation ID

Probably needs further fixes, will need to check later

* Correct confirmations deserialization

* Use JsonNumberHandling

* Misc

* Misc

* [JsonDisallowNull] corrections

* Forbid [JsonDisallowNull] on non-nullable structs

* Not really but okay

* Add and use ToJson() helpers

* Misc

* Misc
2024-02-21 03:09:36 +01:00
ArchiBot
3968130e15 Automatic translations update 2024-02-21 02:04:51 +00:00
ArchiBot
dd488a1c9c Automatic translations update 2024-02-20 02:03:29 +00:00
renovate[bot]
de3c332803 chore(deps): update asf-ui digest to 0e9cf35 2024-02-19 22:19:08 +00:00
renovate[bot]
684b7b6e28 chore(deps): update asf-ui digest to 7b31664 2024-02-19 16:19:48 +00:00
ArchiBot
d36f16e205 Automatic translations update 2024-02-18 02:05:50 +00:00
renovate[bot]
c3ab3d767f chore(deps): update asf-ui digest to 82412dc 2024-02-17 22:55:28 +00:00
renovate[bot]
a790c34976 chore(deps): update dependency markdig.signed to v0.35.0 2024-02-17 06:16:26 +00:00
ArchiBot
be208eab92 Automatic translations update 2024-02-17 02:04:16 +00:00
renovate[bot]
c9598709d6 chore(deps): update asf-ui digest to 6eca08a 2024-02-16 09:31:51 +00:00
ArchiBot
367e7f841c Automatic translations update 2024-02-16 02:05:09 +00:00
renovate[bot]
8c988cfed6 chore(deps): update asf-ui digest to eebc86f 2024-02-15 21:33:19 +00:00
renovate[bot]
5b15535661 chore(deps): update github/codeql-action action to v3.24.3 2024-02-15 14:21:59 +00:00
renovate[bot]
e0c692e0ab chore(deps): update wiki digest to 5ea73d0 2024-02-15 04:18:35 +00:00
Archi
1ddf6b34e2 Misc lang correction 2024-02-15 03:50:27 +01:00
ArchiBot
8476c8c221 Automatic translations update 2024-02-14 02:04:50 +00:00
renovate[bot]
24ec938565 chore(deps): update mstest monorepo to v3.2.1 2024-02-13 22:23:04 +00:00
renovate[bot]
0dbfba275e chore(deps): update asf-ui digest to 661a7d1 2024-02-13 19:08:50 +00:00
renovate[bot]
55c5c70b52 chore(deps): update github/codeql-action action to v3.24.1 2024-02-13 15:20:35 +00:00
renovate[bot]
17aa8297da chore(deps): update crowdin/github-action action to v1.19.0 2024-02-13 10:47:17 +00:00
ArchiBot
b0aa2a9104 Automatic translations update 2024-02-13 02:04:51 +00:00
Archi
898c402dfc Misc 2024-02-12 19:20:53 +01:00
Archi
9258819c84 Misc 2024-02-12 15:24:41 +01:00
ArchiBot
b5db0b511c Automatic translations update 2024-02-12 02:05:33 +00:00
renovate[bot]
7c6804449c chore(deps): update wiki digest to e004808 2024-02-11 21:50:56 +00:00
ArchiBot
ff28e2bf8f Automatic translations update 2024-02-11 02:06:02 +00:00
Archi
3510cd1be0 Bump 2024-02-10 18:31:26 +01:00
Archi
5320e8d9cc Misc refactor after #3142 2024-02-10 18:03:32 +01:00
LRFLEW
6ab9e2958d Use FixedTimeEquals for IPC Password testing (#3142) 2024-02-10 17:42:45 +01:00
ArchiBot
e47f286bda Automatic translations update 2024-02-10 02:03:17 +00:00
ArchiBot
84b1599ca6 Automatic translations update 2024-02-09 02:04:10 +00:00
Archi
c5396a8ec8 Update publish.yml 2024-02-08 12:43:42 +01:00
Archi
9a9f18184b Misc 2024-02-08 12:37:50 +01:00
Archi
10d97e16e3 Closes #3140 2024-02-08 12:31:43 +01:00
renovate[bot]
5ece500396 chore(deps): update asf-ui digest to 7406f71 2024-02-08 04:42:12 +00:00
ArchiBot
1a311513ca Automatic translations update 2024-02-08 02:04:11 +00:00
renovate[bot]
6e0e4835d1 chore(deps): update ncipollo/release-action action to v1.14.0 2024-02-07 16:15:35 +00:00
renovate[bot]
ae4a784c3a chore(deps): update asf-ui digest to 558b879 2024-02-07 13:01:40 +00:00
renovate[bot]
287be65e7f chore(deps): update crowdin/github-action action to v1.18.0 2024-02-07 10:34:04 +00:00
renovate[bot]
476653a6cc chore(deps): update actions/setup-node action to v4.0.2 2024-02-07 07:24:21 +00:00
renovate[bot]
407496efd6 chore(deps): update dependency microsoft.net.test.sdk to v17.9.0 2024-02-07 04:18:59 +00:00
ArchiBot
9995b807f9 Automatic translations update 2024-02-07 02:04:09 +00:00
Archi
a6f4692b75 Update TrimmerRoots.xml 2024-02-07 00:16:45 +01:00
Archi
024b7ff824 Bump 2024-02-07 00:16:11 +01:00
Archi
68e46096ad Closes #3137 2024-02-07 00:15:50 +01:00
renovate[bot]
d9f5f60854 chore(deps): update wiki digest to 8f35971 2024-02-06 19:30:47 +00:00
Archi
82ccd4ddce Use different text for private apps 2024-02-06 20:08:21 +01:00
renovate[bot]
5f69b337a6 chore(deps): update actions/upload-artifact action to v4.3.1 2024-02-06 13:05:46 +00:00
Archi
dbbb6802d4 Misc 2024-02-06 12:16:16 +01:00
renovate[bot]
459cb44ff4 chore(deps): update actions/download-artifact action to v4.1.2 2024-02-06 07:31:32 +00:00
renovate[bot]
c1ebc813d5 chore(deps): update asf-ui digest to 630dbb8 2024-02-06 03:42:11 +00:00
ArchiBot
948c42055b Automatic translations update 2024-02-06 02:04:37 +00:00
Archi
06d049d882 Bump 2024-02-06 02:15:36 +01:00
Archi
04f5e91e92 Closes #3109 2024-02-06 02:14:54 +01:00
renovate[bot]
02a479ba13 chore(deps): update wiki digest to 024c6b4 2024-02-06 00:19:11 +00:00
Archi
01b99d20f6 Try to bulletproof against #3119 a bit 2024-02-05 20:49:34 +01:00
Archi
9c6cd7f692 Refactor FarmingResetSemaphore into FarmingResetEvent 2024-02-05 20:41:24 +01:00
Archi
7899829dc7 Refactor docker containers to use /asf
In order to keep compatibility with existing containers, we'll use the same paths for user-related overrides, that is, /app/config, /app/logs or /app/plugins. Instead, the only thing we'll do is moving ASF away from /app to new /asf directory, which will hopefully limit amount of screwups that users are doing within existing /app directory.

Also while at it, add symlink for a bit better integration.
2024-02-05 16:26:54 +01:00
ArchiBot
d0693d362a Automatic translations update 2024-02-05 02:07:18 +00:00
Archi
227066f355 Bump 2024-02-04 22:31:10 +01:00
Archi
348c43b259 Skip spamming ASFB with requests from unlicensed users
Check license prior to fetching inventory and sending data to ASFB, will also limit traffic on Steam side.
2024-02-04 22:28:59 +01:00
ArchiBot
a23b7e1594 Automatic translations update 2024-02-04 02:06:40 +00:00
Archi
1c7952f8dd Bump 2024-02-03 22:02:57 +01:00
Archi
f0ef4c6ba6 Implement basic crash protection
- On start, we create/load crash file, if previous startup was less than 5 minutes ago, we also increase the counter
- If counter reaches 5, we abort the process, that is, freeze the process by not loading anything other than auto-updates
- In order for user to recover from above, he needs to manually remove ASF.crash file
- If process exits normally without reaching counter of 5 yet, we remove crash file (reset the counter), normal exit includes SIGTERM, SIGINT, clicking [X], !exit, !restart, and anything else that allows ASF to gracefully quit
- If process exits abnormally, that includes SIGKILL, unhandled exceptions, as well as power outages and anything that prevents ASF from graceful quit, we keep crash file around
- Update procedure, as an exception, allows crash file removal even with counter of 5. This should allow crash file recovery for people that crashed before, without a need of manual removal.
2024-02-03 21:18:47 +01:00
renovate[bot]
eb71b640c5 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v7.3.1 2024-02-03 08:28:40 +00:00
renovate[bot]
6b7a0ff1ce chore(deps): update github/codeql-action action to v3.24.0 2024-02-02 19:35:45 +00:00
Archi
d08740b6d7 Schedule refresh of licenses for STD plugin with delay
This addresses two things:
- It allows for better load-balancing, as STD refresh can be postponed for a short while after bot logs in - it has more important matters to handle right away, and STD is optional/supportive plugin.
- It helps @xPaw sleep better at night working around fools with their ASFs crashing thirty times per second due to third-party plugins.
2024-02-02 13:17:55 +01:00
ArchiBot
70e3649e60 Automatic translations update 2024-02-02 02:04:28 +00:00
renovate[bot]
24d79f9b20 chore(deps): update asf-ui digest to 6ca9093 2024-02-01 22:02:19 +00:00
Archi
43c2ae6746 Remove obsolete stuff 2024-02-01 14:27:56 +01:00
Archi
4bd2a3ec7f Bump 2024-02-01 14:22:53 +01:00
renovate[bot]
a90b375a72 chore(deps): update asf-ui digest to e3fd680 2024-02-01 03:36:01 +00:00
renovate[bot]
9f1e562a19 chore(deps): update asf-ui digest to 7b4a361 2024-01-31 18:14:11 +00:00
renovate[bot]
4edfcff2e0 chore(deps): update asf-ui digest to 9607b07 2024-01-31 14:06:00 +00:00
renovate[bot]
d4b48ab235 chore(deps): update crowdin/github-action action to v1.17.0 2024-01-31 08:04:58 +00:00
ArchiBot
f1e5c31110 Automatic translations update 2024-01-31 02:04:51 +00:00
renovate[bot]
32c4522b47 chore(deps): update asf-ui digest to b207bca 2024-01-30 23:15:29 +00:00
Archi
fc760e1a84 Misc 2024-01-30 14:30:52 +01:00
Archi
2a92bf4dec Bump 2024-01-30 13:51:18 +01:00
Archi
716b253a04 Move from System.IdentityModel.Tokens.Jwt to Microsoft.IdentityModel.JsonWebTokens
> As of IdentityModel 7x, this is a legacy tool that should be replaced with Microsoft.IdentityModel.JsonWebTokens.

> This is a newer, faster version of System.IdentityModel.Tokens.Jwt that has additional functionality
2024-01-30 13:26:32 +01:00
renovate[bot]
0384365315 chore(deps): update dependency system.identitymodel.tokens.jwt to v7.3.0 2024-01-30 06:46:07 +00:00
renovate[bot]
45dc910e01 chore(deps): update asf-ui digest to b341e7f 2024-01-30 04:38:00 +00:00
ArchiBot
f7e57e7d39 Automatic translations update 2024-01-30 02:04:51 +00:00
Archi
ace4151bbc Remove dead code 2024-01-29 19:05:14 +01:00
Archi
088c3a35ed Bump 2024-01-29 18:57:54 +01:00
Archi
608bece8dc Misc 2024-01-29 18:49:29 +01:00
Archi
119caebfa8 Deprecate CachedAccessToken, move to Bot.AccessToken instead
Thanks to @xPaw findings, it seems that access token we get on logon can be used for all functionality we require in ASF. This means we no longer need to fetch the one from points shop in AWH and can safely remove that.

Since access token in AWH is public API, this commit:
- Makes Bot.AccessToken public API.
- Deprecates ArchiWebHandler.CachedAccessToken with intention of removal in the next version. Until then, it resolves to Bot.AccessToken internally so all plugins can keep working during transition period.
- Deprecates Utilities.ReadJwtToken(), probably nobody else than me used it, just switch over to Utilities.TryReadJwtToken(), much better design.
- Reverts ArchiCacheable parts back to stable API, as we no longer need the breaking change done in #3133
2024-01-29 18:42:21 +01:00
Archi
2e0771b8d9 Closes #3133
After investigation, it turns out that the token actually has correct scope (THANK GOD), it's the fact that Valve started issuing those on much shorter notice than our cache.

Up until now, we played it smartly by assuming cached access token should be valid for at least 6 hours, since every time we visited the page, we got a new token that was valid for 24h since issuing. This however is no longer the case and Valve seems to recycle the same token for every request now, probably until we get close to its expiration. This also means that with unlucky timing, we might be trying to use access token that has expired already even for up to 6 more hours, which is unwanted and causes all kind of issues, with 403 in trade offers being one of them.

I could make stupid solution and cache token for shorter, e.g. 1 minute, but instead I did 200 IQ move and rewrote the functionality in a way to actually parse that token, its validity, and set the cache to be valid for a brief moment before the token actually expires. This way, we're not only more efficient (we can cache the token even for 24h if needed), but we're also invalidating it as soon as it goes out of the scope.
2024-01-29 17:53:46 +01:00
Archi
a08080a2ce Do not treat NU190x as error
Selected NU190x warnings can happen retroactively when given library is found with vulnerabilities. While this is important for development and for building, we should not retroactively cause selected git tags fail to build purely because a package we references was found to be vulnerable - warning during build is sufficient.

Resolves https://aur.archlinux.org/packages/asf and other sources trying to build older tag such as 5.5.1.4 as of today. Will apply from future release naturally.
2024-01-28 16:05:10 +01:00
renovate[bot]
d4bcdfde3e chore(deps): update asf-ui digest to abebbe3 2024-01-28 03:59:05 +00:00
ArchiBot
249ebfb590 Automatic translations update 2024-01-28 02:06:03 +00:00
ArchiBot
56fc50e5ad Automatic translations update 2024-01-27 02:03:38 +00:00
renovate[bot]
5d8db36753 chore(deps): update github/codeql-action action to v3.23.2 2024-01-26 17:09:43 +00:00
renovate[bot]
54f493467e chore(deps): update asf-ui digest to 2111058 2024-01-26 02:15:52 +00:00
ArchiBot
7ed39db953 Automatic translations update 2024-01-26 02:05:48 +00:00
Archi
cc28d7520e Misc 2024-01-25 23:34:58 +01:00
renovate[bot]
109b307d0f chore(deps): update peter-evans/dockerhub-description action to v4 (#3132)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-25 22:11:27 +01:00
renovate[bot]
178ecc2e4a chore(deps): update asf-ui digest to 89945a1 2024-01-25 20:38:29 +00:00
renovate[bot]
ddfa7220d8 chore(deps): update mstest monorepo to v3.2.0 2024-01-25 06:39:34 +00:00
ArchiBot
812523baef Automatic translations update 2024-01-25 02:10:26 +00:00
renovate[bot]
c5fd423a78 chore(deps): update wiki digest to 1324210 2024-01-24 19:28:33 +00:00
Archi
0b6c308d2e Bump 2024-01-24 16:29:27 +01:00
renovate[bot]
d6ef5e5404 chore(deps): update actions/upload-artifact action to v4.3.0 2024-01-24 13:06:56 +00:00
Archi
9c304b8965 Actually make --ignore-unsupported-environment ignore the issue 2024-01-24 12:45:46 +01:00
Archi
05c5a7fc30 Closes #3128 2024-01-24 12:43:36 +01:00
renovate[bot]
2a2d4f09f1 chore(deps): update asf-ui digest to 97c6b06 2024-01-24 04:57:59 +00:00
ArchiBot
ce5cd7bc8f Automatic translations update 2024-01-24 02:09:10 +00:00
renovate[bot]
a072a7b7d6 chore(deps): update wiki digest to d8d3cd4 2024-01-23 22:59:22 +00:00
Archi
8a52f4fbbb Closes #3126
Smartly putting it in the middle making breaking change, since nobody managed to reference this public API yet! \o/
2024-01-23 23:01:22 +01:00
Archi
ba07405d9a Refactor selected boolean bot config properties
All of them are common enough to be contained into a single flags property, this will vastly improve readability of the bot config, among being ready to add more properties in the future without polluting it.

Also hooray for 6 bytes less of memory usage of each bot, glorious.
2024-01-23 22:49:33 +01:00
Archi
6239457f01 Closes #3127 2024-01-23 21:23:06 +01:00
renovate[bot]
584fe4bd37 chore(deps): update wiki digest to 01a1155 2024-01-23 06:32:47 +00:00
renovate[bot]
1f4fa2ed90 chore(deps): update asf-ui digest to 80c331a 2024-01-23 04:45:51 +00:00
renovate[bot]
d24731999a chore(deps): update jetbrains/qodana-action action to v2023.3.1 2024-01-22 23:04:28 +00:00
ArchiBot
1a3e82a1b0 Automatic translations update 2024-01-22 02:11:05 +00:00
ArchiBot
f45b10f2ff Automatic translations update 2024-01-21 02:11:05 +00:00
ArchiBot
2097fea6a0 Automatic translations update 2024-01-20 02:07:31 +00:00
renovate[bot]
c4bdb39c6d chore(deps): update crowdin/github-action action to v1.16.1 2024-01-19 15:58:09 +00:00
renovate[bot]
2f2b411293 chore(deps): update asf-ui digest to 9105e9b 2024-01-19 11:09:53 +00:00
renovate[bot]
860b979afb chore(deps): update actions/upload-artifact action to v4.2.0 2024-01-19 00:18:38 +00:00
renovate[bot]
401d3f65f5 chore(deps): update asf-ui digest to e77a557 2024-01-18 22:35:27 +00:00
renovate[bot]
051cf043f3 chore(deps): update asf-ui digest to d8b90fb 2024-01-18 07:09:47 +00:00
renovate[bot]
4ebb4cfd9e chore(deps): update github/codeql-action action to v3.23.1 2024-01-18 02:20:11 +00:00
ArchiBot
d58a2d2717 Automatic translations update 2024-01-18 02:08:26 +00:00
renovate[bot]
51b764a39f chore(deps): update asf-ui digest to 38f6759 2024-01-17 20:20:07 +00:00
renovate[bot]
0f94a05a69 chore(deps): update asf-ui digest to cd3a947 2024-01-17 06:54:52 +00:00
ArchiBot
16fd3c067f Automatic translations update 2024-01-17 02:08:36 +00:00
ArchiBot
e13881763c Automatic translations update 2024-01-16 02:08:17 +00:00
renovate[bot]
90241c6076 chore(deps): update asf-ui digest to 344cfcf 2024-01-15 04:06:46 +00:00
ArchiBot
d020a97209 Automatic translations update 2024-01-15 02:09:55 +00:00
renovate[bot]
d9ceea448f chore(deps): update asf-ui digest to 255221f 2024-01-14 11:09:25 +00:00
renovate[bot]
ec01846653 chore(deps): update asf-ui digest to 9919655 2024-01-13 10:20:06 +00:00
renovate[bot]
7d3c0a9d13 chore(deps): update asf-ui digest to e1b0524 2024-01-13 05:36:41 +00:00
ArchiBot
de88e3072b Automatic translations update 2024-01-13 02:07:46 +00:00
renovate[bot]
5e2ad8eb19 chore(deps): update actions/upload-artifact action to v4.1.0 2024-01-12 18:29:45 +00:00
renovate[bot]
127107a96c chore(deps): update asf-ui digest to fa12667 2024-01-12 07:29:26 +00:00
Archi
1587c6facb Bump 2024-01-11 16:51:05 +01:00
Archi
042fadca28 Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-01-11 16:46:48 +01:00
Archi
4a9e6f6cc6 Deprioritize bots with 1-game inventory
Those are usually stash accounts, and while we still want to match them, we can leave them only as a last resort if no other bots are available.

This decreases chance of hitting a bot that was just recently turned off or had its items traded away, as what usually happens with such accounts.
2024-01-11 16:46:45 +01:00
renovate[bot]
b7ac24eb7b chore(deps): update asf-ui digest to 392b585 2024-01-11 06:54:53 +00:00
renovate[bot]
c78d26a701 chore(deps): update dependency system.identitymodel.tokens.jwt to v7.2.0 2024-01-11 00:47:47 +00:00
renovate[bot]
53614661c1 chore(deps): update asf-ui digest to cd30e8d 2024-01-10 21:09:00 +00:00
renovate[bot]
ea8c300a1a chore(deps): update actions/download-artifact action to v4.1.1 2024-01-10 19:29:00 +00:00
renovate[bot]
bb91bf3918 chore(deps): update dependency system.identitymodel.tokens.jwt to v7.1.2 2024-01-09 18:38:55 +00:00
renovate[bot]
b9f72c293d chore(deps): update asf-ui digest to 701562c 2024-01-09 03:29:49 +00:00
renovate[bot]
7a14a394c2 chore(deps): update github/codeql-action action to v3.23.0 (#3122)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-08 18:31:49 +01:00
Sebastian Göls
dbf7148fbe Happy new year! (#3121)
Co-authored-by: Sebastian Göls <sebastian.goels@salvagninigroup.com>
2024-01-08 11:33:28 +01:00
ArchiBot
59d51d1b15 Automatic translations update 2024-01-08 02:08:23 +00:00
renovate[bot]
acff4602cd chore(deps): update asf-ui digest to 8a350cd 2024-01-07 03:34:22 +00:00
ArchiBot
44f135eb14 Automatic translations update 2024-01-07 02:10:04 +00:00
renovate[bot]
f4945c024e chore(deps): update asf-ui digest to f30f6ea 2024-01-06 04:22:52 +00:00
ArchiBot
a329e2a3da Automatic translations update 2024-01-06 02:06:55 +00:00
renovate[bot]
608edf2569 chore(deps): update asf-ui digest to e2a9bdb 2024-01-05 04:04:42 +00:00
ArchiBot
f203e02a45 Automatic translations update 2024-01-05 02:07:53 +00:00
renovate[bot]
bdcc00af1f chore(deps): update asf-ui digest to ede4734 2024-01-04 21:04:35 +00:00
renovate[bot]
21d004fb26 chore(deps): update crowdin/github-action action to v1.16.0 2024-01-04 13:47:19 +00:00
renovate[bot]
d4ae307676 chore(deps): update asf-ui digest to 6ce634f 2024-01-04 04:05:08 +00:00
ArchiBot
0a9993e85a Automatic translations update 2024-01-04 02:07:12 +00:00
Archi
1f2269dcf2 Misc code syntax 2024-01-03 15:06:08 +01:00
Archi
bb73916af0 Misc optimizations 2024-01-03 14:57:49 +01:00
Archi
12c4b7e924 Apply frozen collections optimizations 2024-01-03 13:46:54 +01:00
renovate[bot]
c6b78b118c chore(deps): update asf-ui digest to 8a2b86b 2024-01-03 07:37:18 +00:00
Archi
aaa6b6674a Bump 2024-01-03 00:34:34 +01:00
Archi
be2e173404 Misc followup 2024-01-03 00:34:12 +01:00
Archi
bfb189d55b Bump 2024-01-03 00:29:41 +01:00
Archi
3d503ed5ee Fix invalid heartbeats from inactive STM accounts
It was possible before if the inventory state was the same as previously announced, even if server purged the info long time ago. Also, add required logic for recovery if that happens regardless.
2024-01-03 00:23:27 +01:00
Archi
ab01733860 Bump 2024-01-02 01:21:00 +01:00
Archi
dd0949b58d Fix enum pointer failures in swagger schema 2024-01-02 01:19:28 +01:00
Archi
d825f74489 Bump 2024-01-01 23:25:50 +01:00
Archi
7f1ecdd585 Misc 2024-01-01 23:22:19 +01:00
Archi
01b2e205be Make std command return before refresh finishes 2024-01-01 23:16:52 +01:00
Archi
d398e84f25 Misc 2024-01-01 23:00:58 +01:00
Archi
ac427ed1ec Misc match improvements 2024-01-01 22:58:54 +01:00
ArchiBot
0118ccb614 Automatic translations update 2023-12-31 02:08:18 +00:00
renovate[bot]
697e059b66 chore(deps): update asf-ui digest to d9c38ab 2023-12-30 04:15:17 +00:00
renovate[bot]
45539018f5 chore(deps): update dependency nlog.web.aspnetcore to v5.3.8 2023-12-29 22:50:02 +00:00
renovate[bot]
1ebf2b6272 chore(deps): update asf-ui digest to 99254ec 2023-12-29 19:06:24 +00:00
Archi
800dae280a Bump 2023-12-29 13:24:44 +01:00
Archi
bccdf269f0 Closes #3115 2023-12-29 13:23:38 +01:00
renovate[bot]
757072cb01 chore(deps): update asf-ui digest to e52146a 2023-12-29 03:25:23 +00:00
renovate[bot]
b601d31d5c chore(deps): update asf-ui digest to 43ce08a 2023-12-28 18:49:37 +00:00
renovate[bot]
86ae501ce5 chore(deps): update asf-ui digest to bb4c28c 2023-12-27 04:47:07 +00:00
ArchiBot
c22e5c146f Automatic translations update 2023-12-27 02:06:17 +00:00
renovate[bot]
4a710b4ffe chore(deps): update crazy-max/ghaction-import-gpg action to v6.1.0 2023-12-26 20:02:14 +00:00
renovate[bot]
f6ad3747f4 chore(deps): update asf-ui digest to 3eb41f0 2023-12-26 04:04:41 +00:00
ArchiBot
ec205bb7a2 Automatic translations update 2023-12-26 02:06:22 +00:00
renovate[bot]
464edddacf chore(deps): update asf-ui digest to 2e91573 2023-12-25 04:12:10 +00:00
ArchiBot
e6c6bce8a7 Automatic translations update 2023-12-25 02:07:40 +00:00
renovate[bot]
6a413b4d29 chore(deps): update asf-ui digest to 2dbdfaa 2023-12-24 19:43:31 +00:00
ArchiBot
4f30e2e3c7 Automatic translations update 2023-12-24 02:08:02 +00:00
Archi
2bef94e3b4 Misc 2023-12-23 23:37:29 +01:00
Archi
cf94c417d2 Misc 2023-12-23 23:16:44 +01:00
ArchiBot
e82100308c Automatic translations update 2023-12-23 02:05:36 +00:00
renovate[bot]
ada67a0f97 chore(deps): update github/codeql-action action to v3.22.12 2023-12-22 06:50:53 +00:00
renovate[bot]
1bd20f7144 chore(deps): update asf-ui digest to 88a332c 2023-12-22 04:51:36 +00:00
ArchiBot
9b295ad85e Automatic translations update 2023-12-22 02:06:52 +00:00
Archi
d1953215e8 Bump 2023-12-22 00:21:25 +01:00
Archi
e480aca8b2 Use inventories items deduplication logic aligned with ASFB 2023-12-22 00:18:52 +01:00
Archi
2befe20f76 Use set parts also as inventories request optimization 2023-12-21 23:46:42 +01:00
ArchiBot
c16485ad0b Automatic translations update 2023-12-21 02:07:13 +00:00
Archi
f036e99450 Misc
Specifying target framework should no longer be needed, as we have only one left
2023-12-20 18:46:19 +01:00
renovate[bot]
2804a36920 chore(deps): update asf-ui digest to 295cb26 2023-12-20 04:08:32 +00:00
ArchiBot
30e62813c7 Automatic translations update 2023-12-20 01:57:07 +00:00
renovate[bot]
621ce390c2 chore(deps): update asf-ui digest to 53e75ab 2023-12-19 23:06:09 +00:00
renovate[bot]
8d40423d9d chore(deps): update asf-ui digest to 71014eb 2023-12-19 15:49:29 +00:00
renovate[bot]
1cf8959b92 chore(deps): update actions/download-artifact action to v4.1.0 2023-12-19 04:26:50 +00:00
ArchiBot
56aafe3374 Automatic translations update 2023-12-19 02:07:52 +00:00
renovate[bot]
5570bd2999 chore(deps): update actions/setup-node action to v4.0.1 2023-12-18 14:02:50 +00:00
ArchiBot
9bec394436 Automatic translations update 2023-12-18 02:08:05 +00:00
ArchiBot
3ae1a7ccfd Automatic translations update 2023-12-17 02:08:56 +00:00
renovate[bot]
e0b1c4c16f chore(deps): update asf-ui digest to 68c799a 2023-12-16 19:31:03 +00:00
Archi
eb5bc560a4 Misc 2023-12-16 14:33:32 +01:00
Archi
f9309b7c54 Bump 2023-12-16 14:28:13 +01:00
renovate[bot]
3c2a154b39 chore(deps): update asf-ui digest to b924e3b 2023-12-16 07:42:41 +00:00
ArchiBot
23d07eb43e Automatic translations update 2023-12-16 02:06:58 +00:00
Archi
20af0edd4d Misc 2023-12-15 14:22:22 +01:00
Archi
4b29daabd4 Fix possible NRE 2023-12-15 14:20:58 +01:00
renovate[bot]
a60513e998 chore(deps): update asf-ui digest to 531e8ec 2023-12-15 03:03:17 +00:00
ArchiBot
188b96b951 Automatic translations update 2023-12-15 02:08:24 +00:00
renovate[bot]
b8e9dca6d3 chore(deps): update dependency markdig.signed to v0.34.0 2023-12-14 21:15:35 +00:00
Archi
157537c6ec Bump 2023-12-14 22:15:07 +01:00
renovate[bot]
a363b92075 chore(deps): update actions/download-artifact action to v4 (#3099)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-14 21:44:05 +01:00
renovate[bot]
f993d3d365 chore(deps): update actions/upload-artifact action to v4 (#3100)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-14 21:43:56 +01:00
Jack Nolddor
3f4520edf3 chore: blacklist Winter Sale 2023 appid (#3098) 2023-12-14 21:09:56 +01:00
Archi
6e7041d8c5 Fix possible unhandled exception crash
We should throw ONLY when caller asked us to cancel, not when httpclient's timeout is reached.

Thanks @nolddor
2023-12-14 21:07:48 +01:00
Archi
e6cf5971a6 Update ArchiSteamFarm.sln.DotSettings 2023-12-14 14:22:53 +01:00
Archi
845af42080 Update qodana.yaml 2023-12-14 14:18:16 +01:00
Archi
c74481590b Update qodana.yaml 2023-12-14 14:10:14 +01:00
Archi
0ac5447198 Update qodana.yaml 2023-12-14 14:03:19 +01:00
ArchiBot
e0428f8a91 Automatic translations update 2023-12-14 02:07:39 +00:00
renovate[bot]
cc0d2cb1d4 Update wiki digest to e1c80a5 2023-12-13 23:16:06 +00:00
Archi
a0769eaf9a Bump 2023-12-14 00:15:37 +01:00
renovate[bot]
dc35545043 Update github/codeql-action action to v3 (#3097)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-13 18:15:41 +01:00
Archi
890709429c Misc 2023-12-13 10:02:19 +01:00
Archi
6f6a561b9e Update code-quality.yml 2023-12-13 09:46:20 +01:00
ArchiBot
91d314c861 Automatic translations update 2023-12-13 02:08:27 +00:00
renovate[bot]
8abae9d4be Update github/codeql-action action to v2.22.10 2023-12-12 18:36:05 +00:00
Archi
26a390760e Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2023-12-12 14:34:54 +01:00
Archi
87933a2c92 Update ArchiSteamFarm.sln.DotSettings 2023-12-12 14:34:50 +01:00
ArchiBot
1f843bb5d6 Automatic translations update 2023-12-12 02:08:22 +00:00
renovate[bot]
e87e78a372 Update ASF-ui digest to f84a296 2023-12-11 23:25:18 +00:00
Archi
91c82302bb Disable stack trace support in trimmed builds 2023-12-12 00:24:59 +01:00
Archi
d5a41dce1d Misc 2023-12-12 00:05:19 +01:00
Archi
40ab1d848c .NET 8 code enhancements 2023-12-11 23:55:13 +01:00
renovate[bot]
cc3a0a4144 Update JetBrains/qodana-action action to v2023.3.0 2023-12-11 16:31:06 +00:00
renovate[bot]
5448403f43 Update wiki digest to 15af6e4 2023-12-11 13:19:51 +00:00
Archi
636dd139c2 Misc 2023-12-11 11:42:19 +01:00
Archi
e7ad69be26 Closes #3093 2023-12-11 11:38:37 +01:00
ArchiBot
2f56b6dc3a Automatic translations update 2023-12-11 02:08:21 +00:00
renovate[bot]
ba7073df98 Update github/codeql-action action to v2.22.9 2023-12-10 12:22:37 +00:00
renovate[bot]
457bf6dfbb Update dependency NLog.Web.AspNetCore to v5.3.7 2023-12-10 11:22:34 +00:00
renovate[bot]
1e6279e1ca Update ASF-ui digest to 44cbd70 2023-12-10 08:40:06 +00:00
ArchiBot
6e455d0eba Automatic translations update 2023-12-09 02:06:46 +00:00
ArchiBot
9c9a74b448 Automatic translations update 2023-12-08 02:08:17 +00:00
ArchiBot
b7790961fc Automatic translations update 2023-12-07 02:08:13 +00:00
renovate[bot]
5ecc050b12 Update wiki digest to d849fb2 2023-12-06 12:31:12 +00:00
Sebastian Göls
c9819bde7f Add duplicate-check to issue templates (#3092)
* Update Bug-report.yml

* Update Enhancement-idea.yml

* Update Enhancement-idea.yml

* Update Bug-report.yml
2023-12-06 13:30:54 +01:00
ArchiBot
12660449ed Automatic translations update 2023-12-06 02:08:19 +00:00
renovate[bot]
7237e0affc Update wiki digest to 05c3655 2023-12-05 13:17:54 +00:00
ArchiBot
85bb68825b Automatic translations update 2023-12-05 02:08:13 +00:00
Archi
48b8a28c7a Bump 2023-12-05 01:55:23 +01:00
Archi
b16a459ab8 Misc 2023-12-05 01:53:14 +01:00
Archi
da2fd37aa1 Make STD work also in on-demand mode 2023-12-05 01:43:55 +01:00
Archi
8d1d508fe5 Use ASF's global database for STD package access tokens 2023-12-05 00:05:16 +01:00
Archi
92858de9e2 Misc 2023-12-05 00:04:38 +01:00
Archi
a7b1e01161 Revert "Disable server-side functionality in custom ASF builds"
This reverts commit 42ceb6d413.
2023-12-04 23:06:11 +01:00
renovate[bot]
e14d00b760 Update actions/setup-dotnet action to v4 (#3089)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-04 21:04:53 +01:00
ArchiBot
d737201ab5 Automatic translations update 2023-12-04 02:08:17 +00:00
Archi
5fcd5d51f9 Bump 2023-12-04 00:18:34 +01:00
Archi
fa74d98879 Kill API key leftovers 2023-12-03 21:51:32 +01:00
Archi
27f965d4af Kill API keys entirely
Economy bans we can handle ourselves server-side
2023-12-03 21:49:05 +01:00
Archi
ddd34d4a45 Bump 2023-12-03 17:01:55 +01:00
Archi
a3aa93fce8 Fix diff announcement with no items added/changed 2023-12-03 16:11:38 +01:00
Archi
0095d458e7 Handle new no requirements for API key 2023-12-03 14:08:24 +01:00
Archi
def3e26c92 Closes #3084 2023-12-03 13:48:51 +01:00
ArchiBot
10eb226722 Automatic translations update 2023-12-03 02:08:31 +00:00
renovate[bot]
3738ebed21 Update wiki digest to a9c7d7d 2023-12-02 20:06:57 +00:00
Archi
eff60bf307 Implement background announcements for ASF STM
This will be used exclusively by users with extraordinary large inventories, or if ASF backend will just be slower than usual.
2023-12-02 19:36:34 +01:00
Archi
b940af6e83 Misc 2023-12-02 18:49:32 +01:00
Archi
42ceb6d413 Disable server-side functionality in custom ASF builds 2023-12-02 18:37:40 +01:00
Archi
eef66cebf3 Add session data for SDA compatibility 2023-12-02 17:00:50 +01:00
Archi
fac8cb2c9a Misc 2023-12-02 15:16:26 +01:00
Archi
9ce195b4ec Use more correct way for resolving #3087 2023-12-02 15:14:19 +01:00
Archi
c4bcb679f9 Closes #3087 2023-12-02 15:08:59 +01:00
Archi
0d4871ca02 Fix delayed password input crash 2023-12-02 13:15:53 +01:00
renovate[bot]
8397a69130 Update ASF-ui digest to 62a5d46 2023-12-02 03:45:07 +00:00
ArchiBot
8515d72048 Automatic translations update 2023-12-02 02:06:10 +00:00
renovate[bot]
32af0abb6c Update ASF-ui digest to 7da00f0 2023-12-01 22:11:20 +00:00
renovate[bot]
e05f79b951 Update JetBrains/qodana-action action to v2023.2.9 2023-12-01 16:18:49 +00:00
renovate[bot]
9699686da5 Update ASF-ui digest to fe06a7c 2023-11-30 18:28:36 +00:00
ArchiBot
2052020d3d Automatic translations update 2023-11-30 02:08:00 +00:00
Archi
a894b7096a Bump 2023-11-29 20:36:24 +01:00
Archi
52b9d2d662 Revert market_fee_app
There are occurances where this is definitely wrong to use
2023-11-29 20:35:39 +01:00
Archi
f3cc0b938a Bump 2023-11-29 20:08:11 +01:00
Archi
80c362d5ed Fix regression in trades received now
Also improve that code while I'm at it
2023-11-29 19:52:43 +01:00
Archi
c7546194f8 Add handling of points shop items, and skip them for announcements 2023-11-29 19:17:02 +01:00
renovate[bot]
53993bfd34 Update ASF-ui digest to 3bea7c7 2023-11-29 13:36:45 +00:00
Archi
181bc28462 Bump 2023-11-29 14:36:25 +01:00
Archi
aea9dee4ea Further decrease server load
We can keep inventory checksum before deduplication in the cache. If it's determined to be the same, then our inventory state didn't change, so it also doesn't make much sense to ask server for set parts and announcement.
2023-11-29 14:26:57 +01:00
Archi
a3270e4081 Misc optimization 2023-11-29 13:21:12 +01:00
ArchiBot
ccf191f1ba Automatic translations update 2023-11-29 02:08:48 +00:00
Archi
a76b6fc32f Bump 2023-11-29 00:10:46 +01:00
Łukasz Domeradzki
36ae066c65 Closes #3073 (#3077)
* Initial implementation of announce with diff

* Add missing logic pieces

* Change in logic

* Fix checksums

* Add deduplication logic

* Update SetPart.cs

* Use standalone endpoint for diff

* Use different hashcode impl

* Update AssetForListing.cs

* Misc

* Push all the changes for this to finally work

* Use original index rather than self-calculated

ASFB makes some calculations based on index, it's better for us to have holes rather than hiding skipped items.

* Handle edge case of no assets after deduplication

* Remove dead code

* Address trim warnings

* Misc optimization
2023-11-29 00:08:16 +01:00
ArchiBot
8cf2d1bc94 Automatic translations update 2023-11-28 02:08:22 +00:00
Archi
d4e8182ffc Update Startup.cs 2023-11-27 15:51:21 +01:00
Archi
96239a97f3 Address trim warnings 2023-11-27 15:39:30 +01:00
Archi
70d3ca47d7 Update TypeController.cs 2023-11-27 14:15:33 +01:00
Archi
a59087b574 Resolve some warnings 2023-11-27 13:01:52 +01:00
Archi
306fbef3c2 Update code-quality.yml 2023-11-27 11:12:35 +01:00
Archi
2b7fc937ad Update code-quality.yml 2023-11-27 10:50:36 +01:00
ArchiBot
3c338e05df Automatic translations update 2023-11-27 02:07:55 +00:00
ArchiBot
dcf38c1357 Automatic translations update 2023-11-26 02:08:13 +00:00
renovate[bot]
500499ec19 Update ASF-ui digest to 853672c 2023-11-25 04:14:31 +00:00
ArchiBot
d84c15b26c Automatic translations update 2023-11-25 02:06:13 +00:00
renovate[bot]
9597f21cd7 Update wiki digest to e782280 2023-11-24 13:06:48 +00:00
Archi
fedf477241 Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2023-11-24 10:34:28 +01:00
Archi
2291321173 Handle ASF_PATH first
ASF_CRYPTKEY_FILE might reference relative path, we should evaluate ASF_PATH first due to that.
2023-11-24 10:34:20 +01:00
renovate[bot]
2529ee301e Update ASF-ui digest to 085af69 2023-11-24 03:53:37 +00:00
ArchiBot
ba1313f44f Automatic translations update 2023-11-24 02:06:46 +00:00
renovate[bot]
d640671640 Update github/codeql-action action to v2.22.8 2023-11-23 11:13:08 +00:00
renovate[bot]
f0a54875ed Update ASF-ui digest to eb74516 2023-11-23 03:54:46 +00:00
ArchiBot
acca0a7a52 Automatic translations update 2023-11-23 02:07:40 +00:00
renovate[bot]
fa26f31d95 Update dessant/lock-threads action to v5.0.1 2023-11-22 15:51:44 +00:00
renovate[bot]
2851cffbc5 Update wiki digest to 2b65e86 2023-11-22 14:16:36 +00:00
renovate[bot]
33649f95a8 Update ASF-ui digest to 5a3687d 2023-11-22 11:14:35 +00:00
Archi
d3142d077c Misc 2023-11-22 12:09:35 +01:00
ArchiBot
dda62f6db6 Automatic translations update 2023-11-22 02:08:55 +00:00
renovate[bot]
578cb95b43 Update wiki digest to 904d4b6 2023-11-21 18:56:56 +00:00
ArchiBot
81118633e0 Automatic translations update 2023-11-21 02:09:39 +00:00
ArchiBot
5ab84286dc Automatic translations update 2023-11-20 02:08:10 +00:00
renovate[bot]
b5e33c041a Update ASF-ui digest to 2360415 2023-11-19 18:34:01 +00:00
Archi
f4f73bcadc Apply CI permissions 2023-11-19 19:33:42 +01:00
ArchiBot
4f459e21f2 Automatic translations update 2023-11-19 02:08:56 +00:00
Archi
69352db431 Bump 2023-11-19 02:49:40 +01:00
Archi
120f7e36d6 Further enhancements for #3075 and #3051 2023-11-19 02:41:22 +01:00
Archi
2e9791faa3 Closes #3075 2023-11-19 02:25:47 +01:00
Archi
fe8e125b86 Bump 2023-11-18 22:09:06 +01:00
Archi
16f4dff0c2 CI: Remove --no-restore where not needed
--no-restore seems to cause trimming to not run when it wasn't originally specified when doing build. Originally we were building ASFs in parallel for each variant, so it made sense, now with better CI-powered parallelism, --no-restore makes only sense when publishing plugins, as indeed in those places we're doing stuff in parallel which restore doesn't like.

This should resolve trimming not triggering for OS-specific builds.
2023-11-18 21:24:58 +01:00
renovate[bot]
915693d7fa Update ASF-ui digest to 8b1afc3 2023-11-18 03:48:20 +00:00
ArchiBot
52adac7cab Automatic translations update 2023-11-18 02:07:01 +00:00
renovate[bot]
a066b952d7 Update docker/build-push-action action to v5.1.0 2023-11-17 13:35:49 +00:00
ArchiBot
cb0e2218a6 Automatic translations update 2023-11-17 02:07:52 +00:00
renovate[bot]
f9949967dc Update github/codeql-action action to v2.22.7 2023-11-16 23:04:21 +00:00
renovate[bot]
0bf1b7af91 Update ASF-ui digest to a6af7da 2023-11-16 20:49:32 +00:00
Sebastian Göls
193f0e3c08 Use generic ProducesResponseTypeAttribute instead of typeof(...) (#3074) 2023-11-16 21:49:15 +01:00
renovate[bot]
5cbe11241c Update crowdin/github-action action to v1.15.2 2023-11-16 16:26:01 +00:00
ArchiBot
03fc9cb4be Automatic translations update 2023-11-16 02:08:16 +00:00
renovate[bot]
2ed7cdf98e Update ASF-ui digest to 0b53178 2023-11-15 11:11:26 +00:00
renovate[bot]
305d6a2d17 Update crowdin/github-action action to v1.15.1 2023-11-15 07:02:34 +00:00
renovate[bot]
6f784621ed Update github/codeql-action action to v2.22.6 2023-11-15 03:45:42 +00:00
ArchiBot
83d6d43845 Automatic translations update 2023-11-15 02:07:36 +00:00
Archi
90e9f47899 Add default implementation for IBotsComparer 2023-11-15 00:02:26 +01:00
Archi
185d7adccf Misc 2023-11-14 23:51:28 +01:00
Archi
977f571db6 Closes #3072 2023-11-14 23:50:36 +01:00
Archi
1c22a45cb6 Add win-arm64 as recognized supported platform for issue template 2023-11-14 23:45:54 +01:00
Archi
608229f962 Kill netf leftovers 2023-11-14 22:17:12 +01:00
Archi
3f04144e41 Use cancellation in more places 2023-11-14 21:20:51 +01:00
Archi
ac9d4a7783 Actually make ArchiCacheable catch cancellation
We intend to give the caller best result, operation canceled has no value for him, he can check if cancellation token he provided himself got canceled or not
2023-11-14 21:15:18 +01:00
Archi
adbf0748f8 Closes #3066 2023-11-14 21:10:35 +01:00
Archi
263c77da12 We don't target multiple frameworks anymore 2023-11-14 21:04:40 +01:00
Archi
103c543eea Closes #3067 2023-11-14 20:58:02 +01:00
Archi
0ae03c7cd5 Syntax improvements 2023-11-14 20:21:02 +01:00
Archi
f2ff2f4929 Closes #3060 2023-11-14 20:01:29 +01:00
Łukasz Domeradzki
b34f18497d .NET 8 (#3005)
* Initial .NET 8

* Make it compile in release mode ignoring warnings for now

* First round of improvements

* Second round of improvements

* Third round of improvements

* Use new throws

* Fix .NET Framework, YAY, thanks madness!

Madness devs are awesome

* Misc

* Misc

* AF_NETLINK might be required for some http calls

No clue why

* Fix service files

Doesn't do what it should

* Update CardsFarmer.cs

* New improvements

* Address feedback

* Misc

* Misc

* Misc refactor

* Misc
2023-11-14 19:12:33 +01:00
renovate[bot]
1e04acb904 Update dotnet monorepo to v8 (#3071)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-14 17:25:06 +01:00
Archi
2b06153fa2 Add additional test case 2023-11-14 16:25:40 +01:00
Archi
e1c364cf7a Fix wrong Bosnian language mapping 2023-11-14 15:38:10 +01:00
renovate[bot]
e281a04450 Update dessant/lock-threads action to v5 (#3070)
* Update dessant/lock-threads action to v5

* Update lock-threads.yml

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Archi <JustArchi@JustArchi.net>
2023-11-14 10:05:53 +01:00
ArchiBot
b40d55c2e4 Automatic translations update 2023-11-13 02:07:15 +00:00
Archi
3e96f37979 BUMPO 2023-11-12 03:16:07 +01:00
ArchiBot
72703dc61d Automatic translations update 2023-11-12 02:07:51 +00:00
renovate[bot]
4ba2f16907 Update wiki digest to 4b67f91 2023-11-12 00:09:43 +00:00
Archi
d6a7c9a843 Misc 2023-11-11 21:31:37 +01:00
Archi
9a304a3992 Misc code cleanup 2023-11-11 21:30:44 +01:00
tre3p
be4a625dc2 Add ability to send group messages for plugin developers (#3069)
* Add GetClanChatInfo as public API function

* make JoinChatRoomGroup public API. add LeaveChatRoomGroup as public API

* Rename GetClanChatRoomInfo method. Change return type of GetClanChatRoomInfo method
2023-11-11 21:29:57 +01:00
Archi
e44b7d3248 Fix wrong access for version command
FamilySharing is alright, as per the wiki
2023-11-11 14:53:44 +01:00
Archi
fc13f2c488 Handle further linux terminal edge case
We handled a situation where linux terminal is closing STDIN durng interactive console. This handles even further edge case where linux terminal is closing STDIN during user masked input.
2023-11-11 14:37:08 +01:00
renovate[bot]
494b1dfd1b Update ASF-ui digest to c582499 2023-11-10 18:25:41 +00:00
Archi
eb41dace9f Run code quality also in push though 2023-11-10 19:25:24 +01:00
Archi
2b2607cfcd Disable qodana for remote PRs
We don't have a token for them
2023-11-10 19:03:21 +01:00
Archi
bde696124b Misc optimization 2023-11-10 19:02:03 +01:00
renovate[bot]
1f4f50591a Update dependency Microsoft.NET.Test.Sdk to v17.8.0 2023-11-09 23:03:58 +00:00
renovate[bot]
5377598226 Update ASF-ui digest to 3384658 2023-11-09 16:38:19 +00:00
renovate[bot]
050d8dca12 Update ASF-ui digest to 8fb3c49 2023-11-08 19:27:50 +00:00
renovate[bot]
54e31504d5 Update dependency JetBrains.Annotations to v2023.3.0 2023-11-08 00:43:16 +00:00
ArchiBot
d3d8a6ffcb Automatic translations update 2023-11-07 02:06:41 +00:00
renovate[bot]
4518547543 Update dependency SteamKit2 to v2.5.0 2023-11-06 16:04:24 +00:00
ArchiBot
1061676462 Automatic translations update 2023-11-06 02:07:17 +00:00
Archi
1d7794590e Bump 2023-11-05 23:38:29 +01:00
Archi
5d32eb6325 Fix netf as usual 2023-11-05 23:27:45 +01:00
Archi
3a9e9de596 Closes #2980 2023-11-05 23:22:15 +01:00
renovate[bot]
b46e936ac6 Update ASF-ui digest to 8884585 2023-11-05 01:49:14 +00:00
renovate[bot]
fc46c65bdf Update ASF-ui digest to 8651392 2023-11-03 03:46:46 +00:00
ArchiBot
57de1f3c10 Automatic translations update 2023-11-03 02:06:09 +00:00
renovate[bot]
a59c3d8fd2 Update crowdin/github-action action to v1.14.1 2023-11-02 09:48:27 +00:00
ArchiBot
6c774f5980 Automatic translations update 2023-11-02 02:05:47 +00:00
Archi
b126c5fd75 Bump 2023-11-02 01:19:32 +01:00
Archi
c21e4fbdb8 Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2023-11-02 00:43:13 +01:00
Archi
ad4c81ac02 Closes #3058 2023-11-02 00:43:11 +01:00
Leet
17796c3466 Use gender neutral language (#3057) 2023-10-31 18:21:34 +01:00
Archi
09804a5032 Misc 2023-10-31 13:33:40 +01:00
ArchiBot
e4a650c8e0 Automatic translations update 2023-10-31 02:06:01 +00:00
Archi
5490539480 netf brain damage as usual 2023-10-30 22:46:43 +01:00
Archi
2a231982ed Misc 2023-10-30 22:44:07 +01:00
Archi
5219fc8958 Add additional bulletproofing 2023-10-30 22:41:45 +01:00
Archi
2f5fdf3185 Closes #3054 2023-10-30 22:33:06 +01:00
Archi
5a5a6e2074 Closes #2978 2023-10-30 22:17:16 +01:00
renovate[bot]
a1cf8291b4 Update dependency SteamKit2 to v2.5.0-Beta.2 (#3056)
* Update dependency SteamKit2 to v2.5.0-Beta.2

* Fix breaking changes

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Archi <JustArchi@JustArchi.net>
2023-10-30 22:11:33 +01:00
ArchiBot
1a16589c0a Automatic translations update 2023-10-30 02:06:28 +00:00
renovate[bot]
7372601064 Update wiki digest to ec80079 2023-10-29 13:29:20 +00:00
renovate[bot]
651d0bdb4b Update ASF-ui digest to 4068ece 2023-10-29 04:11:28 +00:00
ArchiBot
25e43d61e6 Automatic translations update 2023-10-29 02:06:37 +00:00
renovate[bot]
dfc3c0eef3 Update wiki digest to 7281ab4 2023-10-28 23:04:27 +00:00
Archi
c20b0c2c5b Bump 2023-10-29 01:04:07 +02:00
Archi
4a57e3a9c1 Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2023-10-29 01:03:45 +02:00
Archi
1cde3afcbf Bump 2023-10-29 01:03:38 +02:00
ArchiBot
b6274958bd Automatic translations update 2023-10-28 02:04:04 +00:00
renovate[bot]
2023103ed6 Update ASF-ui digest to f2eefb1 2023-10-27 16:04:00 +00:00
renovate[bot]
d5cb0baf1f Update github/codeql-action action to v2.22.5 2023-10-27 10:39:05 +00:00
renovate[bot]
3b7a766ce4 Update ASF-ui digest to 7f6181c 2023-10-27 03:55:21 +00:00
ArchiBot
ac8fa21c90 Automatic translations update 2023-10-27 02:05:21 +00:00
renovate[bot]
4abf0388d6 Update ASF-ui digest to f726f34 2023-10-26 06:46:18 +00:00
ArchiBot
82c294bc85 Automatic translations update 2023-10-26 02:05:10 +00:00
renovate[bot]
f7ebc4acd5 Update ASF-ui digest to f39b7a7 2023-10-25 21:36:28 +00:00
renovate[bot]
910ec7ad29 Update crowdin/github-action action to v1.14.0 2023-10-25 14:17:47 +00:00
ArchiBot
6aaac31da0 Automatic translations update 2023-10-25 02:05:43 +00:00
renovate[bot]
0708199a59 Update ASF-ui digest to f54788e 2023-10-24 15:29:59 +00:00
renovate[bot]
907f6e4b33 Update actions/setup-node action to v4 (#3052)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-24 10:19:51 +02:00
renovate[bot]
78e30343f7 Update actions/setup-node action to v3.8.2 2023-10-23 18:09:05 +00:00
renovate[bot]
058e9fca77 Update ASF-ui digest to f55e29f 2023-10-23 15:24:00 +00:00
ArchiBot
e97c660b08 Automatic translations update 2023-10-23 02:05:53 +00:00
ArchiBot
b4dcc8621a Automatic translations update 2023-10-22 02:07:04 +00:00
renovate[bot]
a50bc1e13b Update dependency JustArchiNET.Madness to v3.17.0 2023-10-21 21:22:52 +00:00
Archi
502af043df Closes #3051 2023-10-21 22:42:11 +02:00
renovate[bot]
f3ef7d0397 Update wiki digest to 922617f 2023-10-21 16:23:52 +00:00
renovate[bot]
8d3edb7d60 Update ASF-ui digest to e56f7c0 2023-10-21 03:36:20 +00:00
ArchiBot
8bae812ae5 Automatic translations update 2023-10-21 02:04:24 +00:00
renovate[bot]
b4db6584e8 Update github/codeql-action action to v2.22.4 2023-10-20 16:31:22 +00:00
Archi
77f6fabbc7 Bump 2023-10-20 16:35:39 +02:00
477 changed files with 29178 additions and 15303 deletions

View File

@@ -36,7 +36,7 @@ csharp_prefer_simple_default_expression = true:warning
csharp_prefer_simple_using_statement = true:warning
csharp_prefer_static_local_function = true:warning
csharp_preferred_modifier_order = public, protected, internal, private, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, volatile, async:warning
csharp_preferred_modifier_order = public, protected, internal, private, file, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, required, volatile, async:warning
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = false
@@ -61,7 +61,6 @@ csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = none
csharp_space_between_square_brackets = false
csharp_style_conditional_delegate_call = true:warning
@@ -79,15 +78,27 @@ csharp_style_expression_bodied_properties = true:warning
csharp_style_implicit_object_creation_when_type_is_apparent = true:warning
csharp_style_inlined_variable_declaration = true:warning
csharp_style_pattern_local_over_anonymous_function = true:warning
csharp_style_namespace_declarations = file_scoped:warning
csharp_style_pattern_matching_over_as_with_null_check = true:warning
csharp_style_pattern_matching_over_is_with_cast_check = true:warning
csharp_style_prefer_extended_property_pattern = true:warning
dotnet_style_prefer_foreach_explicit_cast_in_source = always:warning
csharp_style_prefer_index_operator = true:warning
csharp_style_prefer_local_over_anonymous_function = true:warning
csharp_style_prefer_method_group_conversion = true:warning
csharp_style_prefer_not_pattern = true:warning
csharp_style_prefer_null_check_over_type_check = true:warning
csharp_style_prefer_pattern_matching = true:warning
csharp_style_prefer_primary_constructors = true:warning
csharp_style_prefer_range_operator = true:warning
csharp_style_prefer_readonly_struct = true:warning
csharp_style_prefer_readonly_struct_member = true:warning
csharp_style_prefer_switch_expression = true:warning
csharp_style_prefer_top_level_statements = false:warning
csharp_style_prefer_tuple_swap = true:warning
csharp_style_prefer_utf8_string_literals = true:warning
csharp_style_throw_expression = true:warning
@@ -98,13 +109,12 @@ csharp_style_var_elsewhere = false:warning
csharp_style_var_for_built_in_types = false:warning
csharp_style_var_when_type_is_apparent = false:warning
csharp_using_directive_placement = outside_namespace
csharp_using_directive_placement = outside_namespace:warning
###############################
# .NET Coding Conventions #
###############################
[*.{cs,vb}]
dotnet_analyzer_diagnostic.severity = warning
dotnet_code_quality.ca3003.excluded_symbol_names = BotController
@@ -112,9 +122,6 @@ dotnet_code_quality.ca3012.excluded_symbol_names = BotController|CommandControll
dotnet_code_quality_unused_parameters = all:warning
dotnet_diagnostic.ca1028.severity = silent
dotnet_diagnostic.ca1031.severity = silent
# Rule - almost everything
dotnet_naming_rule.almost_everything_must_be_pascal_case.severity = warning
dotnet_naming_rule.almost_everything_must_be_pascal_case.style = pascal_case
@@ -185,6 +192,7 @@ dotnet_sort_system_directives_first = true
dotnet_style_coalesce_expression = true:warning
dotnet_style_collection_initializer = true:warning
dotnet_style_explicit_tuple_names = true:warning
dotnet_style_namespace_match_folder = true:warning
dotnet_style_null_propagation = true:warning
dotnet_style_object_initializer = true:warning
@@ -214,11 +222,15 @@ dotnet_style_qualification_for_property = false:warning
dotnet_style_readonly_field = true:warning
dotnet_style_require_accessibility_modifiers = always:warning
[ArchiSteamFarm/**.cs]
# ASF project includes plugin system, therefore CA1515 typically doesn't make sense there
dotnet_diagnostic.CA1515.severity = silent
###############################
# JetBrains, IntelliJ/Rider #
###############################
[*.{csproj,props,xml}]
[*.{csproj,props,resx,xml}]
ij_xml_keep_blank_lines = 1
ij_xml_keep_line_breaks = false
ij_xml_keep_line_breaks_in_text = false

6
.gitattributes vendored
View File

@@ -1,7 +1,11 @@
# Auto detect text files and perform LF normalization
* text=auto
# Unix files that are always LF
*.sh text eol=lf
# Custom for Visual Studio
# Windows files that are always CRLF
[Dd]esktop.ini text eol=crlf
# Diff settings
*.cs diff=csharp

4
.github/FUNDING.yml vendored
View File

@@ -1,4 +1,2 @@
# These are supported funding model platforms
github: JustArchi
custom: ["https://paypal.me/JustArchi", "https://pay.revolut.com/justarchi", "https://commerce.coinbase.com/checkout/0c23b844-c51b-45f4-9135-8db7c6fcf98e", "https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_"]
custom: ["https://paypal.me/JustArchi", "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HD2P2P3WGS5Y4", "https://pay.revolut.com/justarchi", "https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_"]

View File

@@ -12,6 +12,8 @@ body:
required: true
- label: I also read **[Setting-up](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Setting-up)** and **[FAQ](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/FAQ)**, I don't need **[help](https://github.com/JustArchiNET/ArchiSteamFarm/blob/main/.github/SUPPORT.md)**, this is a bug report
required: true
- label: This is not a **[duplicate](https://github.com/JustArchiNET/ArchiSteamFarm/issues?q=is%3Aissue)** of an existing issue
required: true
- label: I don't own more than **[10 accounts in total](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/FAQ#how-many-bots-can-i-run-with-asf)**
required: true
- label: I'm not using **[custom plugins](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Plugins)**
@@ -42,12 +44,12 @@ body:
- docker-linux/arm/v7
- docker-linux/arm64
- generic (with latest .NET runtime)
- generic-netf (with latest Mono runtime)
- linux-arm
- linux-arm64
- linux-x64
- osx-arm64
- osx-x64
- win-arm64
- win-x64
validations:
required: true
@@ -147,6 +149,7 @@ body:
Ensure that your config has redacted (but NOT removed) potentially-sensitive properties, such as:
- IPCPassword (recommended)
- LicenseID (mandatory)
- SteamOwnerID (optionally)
- WebProxy (optionally, if exposing private details)
- WebProxyPassword (optionally, if exposing private details)

View File

@@ -12,6 +12,8 @@ body:
required: true
- label: I also read **[Setting-up](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Setting-up)** and **[FAQ](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/FAQ)**, I don't need **[help](https://github.com/JustArchiNET/ArchiSteamFarm/blob/main/.github/SUPPORT.md)**, this is an enhancement idea
required: true
- label: This is not a **[duplicate](https://github.com/JustArchiNET/ArchiSteamFarm/issues?q=is%3Aissue)** of an existing issue
required: true
- label: My idea doesn't duplicate existing ASF functionality described on the **[wiki](https://github.com/JustArchiNET/ArchiSteamFarm/wiki)**
required: true
- label: I believe that my idea falls into ASF's scope and should be offered as part of ASF built-in functionality

View File

@@ -7,8 +7,8 @@ contact_links:
url: https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Localization
about: Please use our crowdin platform
- name: ❓ Support question or technical issue
url: https://github.com/JustArchiNET/ArchiSteamFarm/blob/main/.github/SUPPORT.md
about: Please review our support guidelines
url: https://github.com/JustArchiNET/ArchiSteamFarm/discussions/categories/support-english
about: Please use GitHub discussions or other support channels
- name: 🗯️ Negative feedback, complaints and demands
url: https://www.youtube.com/watch?v=dQw4w9WgXcQ
about: We're taking those very seriously

View File

@@ -1,6 +1,6 @@
### 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](https://github.com/JustArchiNET/ArchiSteamFarm/releases/latest)** 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](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Release-cycle)** if you'd like to learn more.**
**Pre-releases are test 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](https://github.com/JustArchiNET/ArchiSteamFarm/releases/latest)** 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](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Release-cycle)** if you'd like to learn more.**
---
@@ -14,4 +14,6 @@ This is automated GitHub deployment, human-readable changelog should be availabl
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!
[![GitHub sponsor](https://img.shields.io/badge/GitHub-sponsor-ea4aaa.svg?logo=github-sponsors)](https://github.com/sponsors/JustArchi) [![Crypto donate](https://img.shields.io/badge/Crypto-donate-f7931a.svg?logo=bitcoin)](https://commerce.coinbase.com/checkout/0c23b844-c51b-45f4-9135-8db7c6fcf98e) [![PayPal.me donate](https://img.shields.io/badge/PayPal.me-donate-00457c.svg?logo=paypal)](https://paypal.me/JustArchi) [![PayPal donate](https://img.shields.io/badge/PayPal-donate-00457c.svg?logo=paypal)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HD2P2P3WGS5Y4) [![Revolut donate](https://img.shields.io/badge/Revolut-donate-0075eb.svg?logo=revolut)](https://pay.revolut.com/justarchi) [![Steam donate](https://img.shields.io/badge/Steam-donate-000000.svg?logo=steam)](https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_)
[![GitHub sponsor](https://img.shields.io/badge/GitHub-sponsor-ea4aaa.svg?logo=github-sponsors)](https://github.com/sponsors/JustArchi) [![PayPal.me donate](https://img.shields.io/badge/PayPal.me-donate-00457c.svg?logo=paypal)](https://paypal.me/JustArchi) [![PayPal donate](https://img.shields.io/badge/PayPal-donate-00457c.svg?logo=paypal)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HD2P2P3WGS5Y4) [![Revolut donate](https://img.shields.io/badge/Revolut-donate-0075eb.svg?logo=revolut)](https://pay.revolut.com/justarchi) [![Steam donate](https://img.shields.io/badge/Steam-donate-000000.svg?logo=steam)](https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_)
[![BTC donate](https://img.shields.io/badge/BTC-donate-f7931a.svg?logo=bitcoin)](https://www.blockchain.com/explorer/addresses/btc/3HwcgZbtoF5vSxJkNUvThVSJipKi7r5EqU) [![ETH donate](https://img.shields.io/badge/ETH-donate-3c3c3d.svg?logo=ethereum)](https://www.blockchain.com/explorer/addresses/eth/0xA1F7Ba62C5a3A8b93Fe6656936192432F328a366) [![LTC donate](https://img.shields.io/badge/LTC-donate-a6a9aa.svg?logo=litecoin)](https://live.blockcypher.com/ltc/address/MJCeBEZUsNgDhRhqbLFfPiDcf7CSrdvmZ3) [![USDC donate](https://img.shields.io/badge/USDC-donate-2775ca.svg?logo=cashapp)](https://etherscan.io/address/0xCf42D9F53F974CBd7c304eF0243CAe8e029885A8)

2
.github/SUPPORT.md vendored
View File

@@ -2,6 +2,6 @@
Our **[wiki](https://github.com/JustArchiNET/ArchiSteamFarm/wiki)** is the official online documentation which covers at least a significant majority (if not all) of ASF subjects you could be interested in. We recommend to start with **[setting up](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Setting-up)**, **[configuration](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Configuration)** and our **[FAQ](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/FAQ)** which should help you with setting up ASF, configuring it, as well as answering the most common questions that you might have. For more advanced matters, as well as further elaboration, we have other pages available on our **[wiki](https://github.com/JustArchiNET/ArchiSteamFarm/wiki)** that you can visit.
We also have three independent support channels dedicated to our ASF users, in case you couldn't manage to solve the issue yourself. We answer all support and technical matters in our **[GitHub discussions](https://github.com/JustArchiNET/ArchiSteamFarm/discussions/categories/support)**, **[Steam group](https://steamcommunity.com/groups/archiasf/discussions/1)**, and on our **[Discord server](https://discord.gg/hSQgt8j)**. You're free to use the support channel that matches your preferences, although keep in mind that you have a higher chance solving your issue on the GitHub or Steam, where we're doing our best to answer all questions that couldn't be answered by our community itself (as opposed to Discord server where we're not active 24/7 and therefore not always able to answer).
We also have three independent support channels dedicated to our ASF users, in case you couldn't manage to solve the issue yourself. We answer all support and technical matters in our **[GitHub discussions](https://github.com/JustArchiNET/ArchiSteamFarm/discussions/categories/support-english)**, **[Steam group](https://steamcommunity.com/groups/archiasf/discussions/1)**, and on our **[Discord server](https://discord.gg/hSQgt8j)**. You're free to use the support channel that matches your preferences, although keep in mind that you have a higher chance solving your issue on the GitHub or Steam, where we're doing our best to answer all questions that couldn't be answered by our community itself (as opposed to Discord server where we're not active 24/7 and therefore not always able to answer).
GitHub **issues** (unlike discussions), are being used solely for ASF development, especially in regards to bugs and enhancements. We have a very strict policy regarding that, as GitHub issues is **not** a general support channel, it's dedicated exclusively to ASF development and we're not answering common ASF matters there, as we have appropriate support channels (mentioned above) for that. Common matters include not only general questions or issues that are obviously related to program usage, but also users reporting "bugs" that are clearly considered intended behaviour coming for example (and mainly) from misconfiguration or lack of understanding how the program works. If you're not sure whether your matter relates to ASF development or not, especially if you're not sure if it's a bug or intended behaviour, we recommend to use a support channel instead, where we'll answer you in calm atmosphere and forward your matter as GitHub issue if deemed appropriate. Invalid GitHub issues will be closed immediately and won't be answered.

4
.github/crowdin.yml vendored
View File

@@ -5,6 +5,7 @@
"source": "/ArchiSteamFarm/Localization/Strings.resx",
"translation": "/ArchiSteamFarm/Localization/Strings.%locale%.resx",
"translation_replace": {
".bs-BA.resx": ".bs-Latn.resx",
".lol-US.resx": ".qps-Ploc.resx",
".sr-CS.resx": ".sr-Latn.resx",
".zh-CN.resx": ".zh-Hans.resx",
@@ -16,6 +17,7 @@
"source": "/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Localization/Strings.resx",
"translation": "/ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Localization/Strings.%locale%.resx",
"translation_replace": {
".bs-BA.resx": ".bs-Latn.resx",
".lol-US.resx": ".qps-Ploc.resx",
".sr-CS.resx": ".sr-Latn.resx",
".zh-CN.resx": ".zh-Hans.resx",
@@ -27,6 +29,7 @@
"source": "/ArchiSteamFarm.OfficialPlugins.MobileAuthenticator/Localization/Strings.resx",
"translation": "/ArchiSteamFarm.OfficialPlugins.MobileAuthenticator/Localization/Strings.%locale%.resx",
"translation_replace": {
".bs-BA.resx": ".bs-Latn.resx",
".lol-US.resx": ".qps-Ploc.resx",
".sr-CS.resx": ".sr-Latn.resx",
".zh-CN.resx": ".zh-Hans.resx",
@@ -38,6 +41,7 @@
"source": "/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.resx",
"translation": "/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.%locale%.resx",
"translation_replace": {
".bs-BA.resx": ".bs-Latn.resx",
".lol-US.resx": ".qps-Ploc.resx",
".sr-CS.resx": ".sr-Latn.resx",
".zh-CN.resx": ".zh-Hans.resx",

View File

@@ -9,7 +9,14 @@ exclude:
- ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Localization
- ArchiSteamFarm.OfficialPlugins.MobileAuthenticator/Localization
- ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization
- name: AsyncVoidMethod
- name: CA1515
paths:
- ArchiSteamFarm
- name: InternalOrPrivateMemberNotDocumented
- name: InvertIf
- name: NullableWarningSuppressionIsUsed
- name: ReplaceAsyncWithTaskReturn
- name: SwitchExpressionHandlesSomeKnownEnumValuesWithExceptionInDefault
- name: SwitchStatementHandlesSomeKnownEnumValuesWithDefault
- name: SwitchStatementMissingSomeEnumCasesNoDefault

View File

@@ -1,7 +1,8 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base",
"config:best-practices",
":assignee(JustArchi)",
":automergeBranch",
":automergeDigest",
@@ -10,15 +11,17 @@
":disableRateLimiting",
":label(🤖 Automatic)"
],
"git-submodules": {
"enabled": true
},
"packageRules": [
{
// TODO: <= 3.1 for Mono support, last failed version 6.12, https://steamcommunity.com/groups/archiasf/discussions/1/2997673517556002529
"allowedVersions": "<= 3.1",
// TODO: Allow updates of selected packages with no stable release (yet) to latest versions
"matchManagers": [ "nuget" ],
"matchPackageNames": [ "Microsoft.Extensions.Configuration.Json", "Microsoft.Extensions.Logging.Configuration" ]
"matchPackageNames": [ "Microsoft.CodeAnalysis.ResxSourceGenerator", "OpenTelemetry.Exporter.Prometheus.AspNetCore" ],
"ignoreUnstable": false
}
]
}

View File

@@ -5,7 +5,9 @@ on: [push, pull_request]
env:
DOTNET_CLI_TELEMETRY_OPTOUT: true
DOTNET_NOLOGO: true
DOTNET_SDK_VERSION: 7.0.x
DOTNET_SDK_VERSION: 10.0
permissions: {}
jobs:
main:
@@ -13,19 +15,19 @@ jobs:
fail-fast: false
matrix:
configuration: [Debug, Release]
os: [macos-latest, ubuntu-latest, windows-latest]
os: [macos-latest, macos-15-intel, ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
show-progress: false
submodules: recursive
- name: Setup .NET Core
uses: actions/setup-dotnet@v3.2.0
uses: actions/setup-dotnet@2016bd2012dba4e32de620c46fe006a3ac9f0602 # v5.0.1
with:
dotnet-version: ${{ env.DOTNET_SDK_VERSION }}
@@ -36,13 +38,4 @@ jobs:
run: dotnet build -c "${{ matrix.configuration }}" -p:ContinuousIntegrationBuild=true -p:UseAppHost=false --nologo
- name: Run ${{ matrix.configuration }} ArchiSteamFarm.Tests
run: dotnet test ArchiSteamFarm.Tests -c "${{ matrix.configuration }}" -p:ContinuousIntegrationBuild=true -p:UseAppHost=false --nologo
- name: Upload latest strings for translation on Crowdin
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && matrix.configuration == 'Release' && startsWith(matrix.os, 'ubuntu-') }}
uses: crowdin/github-action@v1.13.1
with:
crowdin_branch_name: main
config: '.github/crowdin.yml'
project_id: ${{ secrets.ASF_CROWDIN_PROJECT_ID }}
token: ${{ secrets.ASF_CROWDIN_API_TOKEN }}
run: dotnet test ArchiSteamFarm.Tests -c "${{ matrix.configuration }}" -p:ContinuousIntegrationBuild=true -p:UseAppHost=false --filter TestCategory!=Manual --nologo

View File

@@ -1,44 +0,0 @@
name: ASF-code-quality
on: [push, pull_request]
env:
DOTNET_CLI_TELEMETRY_OPTOUT: true
DOTNET_NOLOGO: true
jobs:
main:
runs-on: ubuntu-latest
permissions:
checks: write
contents: write
pull-requests: write
security-events: write
steps:
- name: Checkout code
if: github.event_name != 'pull_request'
uses: actions/checkout@v4.1.1
with:
show-progress: false
- name: Checkout code (for PR)
if: github.event_name == 'pull_request'
uses: actions/checkout@v4.1.1
with:
fetch-depth: 100 # History is required for pull request analysis
ref: ${{ github.event.pull_request.head.sha }} # To check out the actual pull request commit, not the merge commit
show-progress: false
- name: Run Qodana scan
uses: JetBrains/qodana-action@v2023.2.8
with:
args: --property=idea.headless.enable.statistics=false
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
- name: Report Qodana results to GitHub
uses: github/codeql-action/upload-sarif@v2.22.3
with:
sarif_file: ${{ runner.temp }}/qodana/results/qodana.sarif.json

28
.github/workflows/crowdin-ci.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
name: ASF-crowdin-ci
on:
push:
branches:
- main
permissions: {}
jobs:
upload:
environment: dev-crowdin
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
show-progress: false
submodules: recursive
- name: Upload latest strings for translation on Crowdin
uses: crowdin/github-action@60debf382ee245b21794321190ad0501db89d8c1 # v2.13.0
with:
crowdin_branch_name: main
config: '.github/crowdin.yml'
project_id: ${{ secrets.ASF_CROWDIN_PROJECT_ID }}
token: ${{ secrets.ASF_CROWDIN_API_TOKEN }}

View File

@@ -5,6 +5,8 @@ on: [push, pull_request]
env:
PLATFORMS: linux/amd64,linux/arm,linux/arm64
permissions: {}
jobs:
main:
strategy:
@@ -17,20 +19,20 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
show-progress: false
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.0.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Build ${{ matrix.configuration }} Docker image from ${{ matrix.file }}
uses: docker/build-push-action@v5.0.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
build-args: CONFIGURATION=${{ matrix.configuration }}
context: .
file: ${{ matrix.file }}
platforms: ${{ env.PLATFORMS }}
build-args: |
CONFIGURATION=${{ matrix.configuration }}
STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
provenance: true
sbom: true

View File

@@ -5,46 +5,40 @@ on:
types: [released]
env:
ASF_PRIVATE_SNK: ${{ secrets.ASF_PRIVATE_SNK }}
PLATFORMS: linux/amd64,linux/arm,linux/arm64
TAG: latest
permissions:
packages: write
jobs:
main:
environment: release-docker
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
show-progress: false
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.0.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Login to ghcr.io
uses: docker/login-action@v3.0.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v3.0.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Prepare private key for signing
shell: sh
run: |
set -eu
if [ -n "${ASF_PRIVATE_SNK-}" ]; then
echo "$ASF_PRIVATE_SNK" | base64 -d > "resources/ArchiSteamFarm.snk"
fi
- name: Prepare environment outputs
shell: sh
run: |
@@ -56,12 +50,16 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile.Service
uses: docker/build-push-action@v5.0.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
file: Dockerfile.Service
platforms: ${{ env.PLATFORMS }}
build-args: STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
provenance: true
sbom: true
secrets: |
ASF_PRIVATE_SNK=${{ secrets.ASF_PRIVATE_SNK }}
STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
labels: |
org.opencontainers.image.created=${{ env.DATE_ISO8601 }}
org.opencontainers.image.version=${{ env.FIXED_TAG }}

View File

@@ -6,46 +6,40 @@ on:
- main
env:
ASF_PRIVATE_SNK: ${{ secrets.ASF_PRIVATE_SNK }}
PLATFORMS: linux/amd64,linux/arm,linux/arm64
TAG: main
permissions:
packages: write
jobs:
main:
environment: release-docker
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
show-progress: false
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.0.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Login to ghcr.io
uses: docker/login-action@v3.0.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v3.0.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Prepare private key for signing
shell: sh
run: |
set -eu
if [ -n "${ASF_PRIVATE_SNK-}" ]; then
echo "$ASF_PRIVATE_SNK" | base64 -d > "resources/ArchiSteamFarm.snk"
fi
- name: Prepare environment outputs
shell: sh
run: |
@@ -56,11 +50,15 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile
uses: docker/build-push-action@v5.0.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
platforms: ${{ env.PLATFORMS }}
build-args: STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
provenance: true
sbom: true
secrets: |
ASF_PRIVATE_SNK=${{ secrets.ASF_PRIVATE_SNK }}
STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
labels: |
org.opencontainers.image.created=${{ env.DATE_ISO8601 }}
org.opencontainers.image.version=${{ github.sha }}
@@ -71,9 +69,9 @@ jobs:
push: true
- name: Update DockerHub repository description
uses: peter-evans/dockerhub-description@v3.4.2
uses: peter-evans/dockerhub-description@1b9a80c056b620d92cedb9d9b5a223409c68ddfa # v5.0.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
repository: ${{ env.DH_REPOSITORY }}
short-description: ${{ github.event.repository.description }}

View File

@@ -6,46 +6,40 @@ on:
- '*'
env:
ASF_PRIVATE_SNK: ${{ secrets.ASF_PRIVATE_SNK }}
PLATFORMS: linux/amd64,linux/arm,linux/arm64
TAG: released
permissions:
packages: write
jobs:
main:
environment: release-docker
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
show-progress: false
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.0.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Login to ghcr.io
uses: docker/login-action@v3.0.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v3.0.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Prepare private key for signing
shell: sh
run: |
set -eu
if [ -n "${ASF_PRIVATE_SNK-}" ]; then
echo "$ASF_PRIVATE_SNK" | base64 -d > "resources/ArchiSteamFarm.snk"
fi
- name: Prepare environment outputs
shell: sh
run: |
@@ -57,11 +51,15 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile
uses: docker/build-push-action@v5.0.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
platforms: ${{ env.PLATFORMS }}
build-args: STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
provenance: true
sbom: true
secrets: |
ASF_PRIVATE_SNK=${{ secrets.ASF_PRIVATE_SNK }}
STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
labels: |
org.opencontainers.image.created=${{ env.DATE_ISO8601 }}
org.opencontainers.image.version=${{ env.FIXED_TAG }}

View File

@@ -3,13 +3,23 @@ name: ASF-lock-threads
on:
schedule:
- cron: '0 1 * * *'
workflow_dispatch:
permissions:
discussions: write
issues: write
pull-requests: write
concurrency:
group: lock-threads
jobs:
lock:
runs-on: ubuntu-latest
steps:
- name: Lock inactive threads
uses: dessant/lock-threads@v4.0.1
uses: dessant/lock-threads@1bf7ec25051fe7c00bdd17e6a7cf3d7bfb7dc771 # v5.0.1
with:
discussion-inactive-days: 90
issue-inactive-days: 60
pr-inactive-days: 60

View File

@@ -4,11 +4,14 @@ on: [push, pull_request]
env:
CONFIGURATION: Release
DOTNET_SDK_VERSION: 7.0.x
NET_CORE_VERSION: net7.0
NET_FRAMEWORK_VERSION: net481
DOTNET_CLI_TELEMETRY_OPTOUT: true
DOTNET_NOLOGO: true
DOTNET_SDK_VERSION: 10.0
NODE_JS_VERSION: 'lts/*'
PLUGINS: ArchiSteamFarm.OfficialPlugins.ItemsMatcher ArchiSteamFarm.OfficialPlugins.MobileAuthenticator ArchiSteamFarm.OfficialPlugins.SteamTokenDumper
PLUGINS_BUNDLED: ArchiSteamFarm.OfficialPlugins.ItemsMatcher ArchiSteamFarm.OfficialPlugins.MobileAuthenticator ArchiSteamFarm.OfficialPlugins.SteamTokenDumper
PLUGINS_INCLUDED: ArchiSteamFarm.OfficialPlugins.Monitoring # Apart from declaring them here, there is certain amount of hardcoding needed below for uploading
permissions: {}
jobs:
publish-asf-ui:
@@ -16,13 +19,13 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
show-progress: false
submodules: recursive
- name: Setup Node.js with npm
uses: actions/setup-node@v3.8.1
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
check-latest: true
node-version: ${{ env.NODE_JS_VERSION }}
@@ -40,8 +43,10 @@ jobs:
run: npm run-script deploy --no-progress --prefix ASF-ui
- name: Upload ASF-ui
uses: actions/upload-artifact@v3.1.3
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
compression-level: 1
if-no-files-found: error
name: ASF-ui
path: ASF-ui/dist
@@ -54,8 +59,6 @@ jobs:
include:
- os: ubuntu-latest
variant: generic
- os: windows-latest
variant: generic-netf
- os: ubuntu-latest
variant: linux-arm
- os: ubuntu-latest
@@ -73,18 +76,18 @@ jobs:
runs-on: ${{ matrix.os }}
env:
DOTNET_CLI_TELEMETRY_OPTOUT: true
DOTNET_NOLOGO: true
permissions:
attestations: write
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
show-progress: false
- name: Setup .NET Core
uses: actions/setup-dotnet@v3.2.0
uses: actions/setup-dotnet@2016bd2012dba4e32de620c46fe006a3ac9f0602 # v5.0.1
with:
dotnet-version: ${{ env.DOTNET_SDK_VERSION }}
@@ -92,7 +95,7 @@ jobs:
run: dotnet --info
- name: Download previously built ASF-ui
uses: actions/download-artifact@v3.0.2
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: ASF-ui
path: ASF-ui/dist
@@ -129,30 +132,6 @@ jobs:
}
}
- name: Prepare for publishing on Unix
if: startsWith(matrix.os, 'macos-') || startsWith(matrix.os, 'ubuntu-')
env:
TARGET_FRAMEWORK: ${{ (endsWith(matrix.variant, '-netf') && env.NET_FRAMEWORK_VERSION) || env.NET_CORE_VERSION }}
shell: bash
run: |
set -euo pipefail
dotnet restore
dotnet build ArchiSteamFarm -c "$CONFIGURATION" -f "$TARGET_FRAMEWORK" -p:ContinuousIntegrationBuild=true -p:TargetLatestRuntimePatch=false -p:UseAppHost=false --no-restore --nologo
- name: Prepare for publishing on Windows
if: startsWith(matrix.os, 'windows-')
env:
TARGET_FRAMEWORK: ${{ (endsWith(matrix.variant, '-netf') && env.NET_FRAMEWORK_VERSION) || env.NET_CORE_VERSION }}
shell: pwsh
run: |
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$ProgressPreference = 'SilentlyContinue'
dotnet restore
dotnet build ArchiSteamFarm -c "$env:CONFIGURATION" -f "$env:TARGET_FRAMEWORK" -p:ContinuousIntegrationBuild=true -p:TargetLatestRuntimePatch=false -p:UseAppHost=false --no-restore --nologo
- name: Prepare ArchiSteamFarm.OfficialPlugins.SteamTokenDumper on Unix
if: startsWith(matrix.os, 'macos-') || startsWith(matrix.os, 'ubuntu-')
env:
@@ -180,75 +159,9 @@ jobs:
(Get-Content "ArchiSteamFarm.OfficialPlugins.SteamTokenDumper\SharedInfo.cs").Replace('STEAM_TOKEN_DUMPER_TOKEN', "$env:STEAM_TOKEN_DUMPER_TOKEN") | Set-Content "ArchiSteamFarm.OfficialPlugins.SteamTokenDumper\SharedInfo.cs"
}
- name: Publish official plugins on Unix
if: startsWith(matrix.os, 'macos-') || startsWith(matrix.os, 'ubuntu-')
env:
MAX_JOBS: 4
TARGET_FRAMEWORK: ${{ (endsWith(matrix.variant, '-netf') && env.NET_FRAMEWORK_VERSION) || env.NET_CORE_VERSION }}
shell: bash
run: |
set -euo pipefail
publish() {
dotnet publish "$1" -c "$CONFIGURATION" -f "$TARGET_FRAMEWORK" -o "out/${1}/${TARGET_FRAMEWORK}" -p:ContinuousIntegrationBuild=true -p:TargetLatestRuntimePatch=false -p:UseAppHost=false --no-restore --nologo
}
for plugin in $PLUGINS; do
while [ "$(jobs -p | wc -l)" -ge "$MAX_JOBS" ]; do
sleep 1
done
publish "$plugin" &
done
wait
- name: Publish official plugins on Windows
if: startsWith(matrix.os, 'windows-')
env:
MAX_JOBS: 4
TARGET_FRAMEWORK: ${{ (endsWith(matrix.variant, '-netf') && env.NET_FRAMEWORK_VERSION) || env.NET_CORE_VERSION }}
shell: pwsh
run: |
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$ProgressPreference = 'SilentlyContinue'
$PublishBlock = {
param($plugin)
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$ProgressPreference = 'SilentlyContinue'
Set-Location "$env:GITHUB_WORKSPACE"
dotnet publish "$plugin" -c "$env:CONFIGURATION" -f "$env:TARGET_FRAMEWORK" -o "out\$plugin\$env:TARGET_FRAMEWORK" -p:ContinuousIntegrationBuild=true -p:TargetLatestRuntimePatch=false -p:UseAppHost=false --no-restore --nologo
if ($LastExitCode -ne 0) {
throw "Last command failed."
}
}
foreach ($plugin in $env:PLUGINS.Split([char[]] $null, [System.StringSplitOptions]::RemoveEmptyEntries)) {
# Limit active jobs in parallel to help with memory usage
$jobs = $(Get-Job -State Running)
while (@($jobs).Count -ge $env:MAX_JOBS) {
Wait-Job -Job $jobs -Any | Out-Null
$jobs = $(Get-Job -State Running)
}
Start-Job -Name "$plugin" $PublishBlock -ArgumentList "$plugin"
}
Get-Job | Receive-Job -Wait
- name: Publish ASF-${{ matrix.variant }} on Unix
if: startsWith(matrix.os, 'macos-') || startsWith(matrix.os, 'ubuntu-')
env:
TARGET_FRAMEWORK: ${{ (endsWith(matrix.variant, '-netf') && env.NET_FRAMEWORK_VERSION) || env.NET_CORE_VERSION }}
VARIANT: ${{ matrix.variant }}
shell: bash
run: |
@@ -260,30 +173,14 @@ jobs:
variantArgs="-p:PublishSingleFile=true -p:PublishTrimmed=true -r $VARIANT --self-contained"
fi
dotnet publish ArchiSteamFarm -c "$CONFIGURATION" -f "$TARGET_FRAMEWORK" -o "out/${VARIANT}" "-p:ASFVariant=${VARIANT}" -p:ContinuousIntegrationBuild=true --no-restore --nologo $variantArgs
# If we're including official plugins for this framework, copy them to output directory
for plugin in $PLUGINS; do
if [ -d "out/${plugin}/${TARGET_FRAMEWORK}" ]; then
mkdir -p "out/${VARIANT}/plugins/${plugin}"
cp -pR "out/${plugin}/${TARGET_FRAMEWORK}/"* "out/${VARIANT}/plugins/${plugin}"
fi
done
dotnet publish ArchiSteamFarm -c "$CONFIGURATION" -o "out/${VARIANT}" "-p:ASFVariant=${VARIANT}" -p:ContinuousIntegrationBuild=true --nologo $variantArgs
# Include .ico file for all platforms, since only Windows script can bundle it inside the exe
cp "resources/ASF.ico" "out/${VARIANT}/ArchiSteamFarm.ico"
# By default use fastest compression
seven_zip_args="-mx=1"
zip_args="-1"
# Include extra logic for builds marked for release
case "$GITHUB_REF" in
"refs/tags/"*)
# Tweak compression args for release publishing
seven_zip_args="-mx=9 -mfb=258 -mpass=15"
zip_args="-9"
# Update link in Changelog.html accordingly
if [ -f "out/${VARIANT}/Changelog.html" ]; then
tag="$(echo "$GITHUB_REF" | cut -c 11-)"
@@ -294,41 +191,9 @@ jobs:
;;
esac
# Create the final zip file
case "$(uname -s)" in
"Darwin")
# We prefer to use zip on macOS as 7z implementation on that OS doesn't handle file permissions (chmod +x)
if command -v zip >/dev/null; then
(
cd "${GITHUB_WORKSPACE}/out/${VARIANT}"
zip -q -r $zip_args "../ASF-${VARIANT}.zip" .
)
elif command -v 7z >/dev/null; then
7z a -bd -slp -tzip -mm=Deflate $seven_zip_args "out/ASF-${VARIANT}.zip" "${GITHUB_WORKSPACE}/out/${VARIANT}/*"
else
echo "ERROR: No supported zip tool!"
return 1
fi
;;
*)
if command -v 7z >/dev/null; then
7z a -bd -slp -tzip -mm=Deflate $seven_zip_args "out/ASF-${VARIANT}.zip" "${GITHUB_WORKSPACE}/out/${VARIANT}/*"
elif command -v zip >/dev/null; then
(
cd "${GITHUB_WORKSPACE}/out/${VARIANT}"
zip -q -r $zip_args "../ASF-${VARIANT}.zip" .
)
else
echo "ERROR: No supported zip tool!"
return 1
fi
;;
esac
- name: Publish ASF-${{ matrix.variant }} on Windows
if: startsWith(matrix.os, 'windows-')
env:
TARGET_FRAMEWORK: ${{ (endsWith(matrix.variant, '-netf') && env.NET_FRAMEWORK_VERSION) || env.NET_CORE_VERSION }}
VARIANT: ${{ matrix.variant }}
shell: pwsh
run: |
@@ -342,36 +207,19 @@ jobs:
$variantArgs = '-p:PublishSingleFile=true', '-p:PublishTrimmed=true', '-r', "$env:VARIANT", '--self-contained'
}
dotnet publish ArchiSteamFarm -c "$env:CONFIGURATION" -f "$env:TARGET_FRAMEWORK" -o "out\$env:VARIANT" "-p:ASFVariant=$env:VARIANT" -p:ContinuousIntegrationBuild=true --no-restore --nologo $variantArgs
dotnet publish ArchiSteamFarm -c "$env:CONFIGURATION" -o "out\$env:VARIANT" "-p:ASFVariant=$env:VARIANT" -p:ContinuousIntegrationBuild=true --nologo $variantArgs
if ($LastExitCode -ne 0) {
throw "Last command failed."
}
# If we're including official plugins for this framework, copy them to output directory
foreach ($plugin in $env:PLUGINS.Split([char[]] $null, [System.StringSplitOptions]::RemoveEmptyEntries)) {
if (Test-Path "out\$plugin\$env:TARGET_FRAMEWORK" -PathType Container) {
if (!(Test-Path "out\$env:VARIANT\plugins\$plugin" -PathType Container)) {
New-Item -ItemType Directory -Path "out\$env:VARIANT\plugins\$plugin" > $null
}
Copy-Item "out\$plugin\$env:TARGET_FRAMEWORK\*" "out\$env:VARIANT\plugins\$plugin" -Recurse
}
}
# Icon is available only in .exe Windows builds, we'll bundle the .ico file for other flavours
if (!(Test-Path "out\$env:VARIANT\ArchiSteamFarm.exe" -PathType Leaf)) {
Copy-Item 'resources\ASF.ico' "out\$env:VARIANT\ArchiSteamFarm.ico"
}
# By default use fastest compression
$compressionArgs = '-mx=1'
# Include extra logic for builds marked for release
if ($env:GITHUB_REF -like 'refs/tags/*') {
# Tweak compression args for release publishing
$compressionArgs = '-mx=9', '-mfb=258', '-mpass=15'
# Update link in Changelog.html accordingly
if (Test-Path "out\$env:VARIANT\Changelog.html" -PathType Leaf) {
$tag = $env:GITHUB_REF.Substring(10)
@@ -380,6 +228,111 @@ jobs:
}
}
- name: Publish bundled plugins on Unix
if: startsWith(matrix.os, 'macos-') || startsWith(matrix.os, 'ubuntu-')
env:
VARIANT: ${{ matrix.variant }}
shell: bash
run: |
set -euo pipefail
if [ "$VARIANT" = 'generic' ]; then
variantArgs="-p:TargetLatestRuntimePatch=false -p:UseAppHost=false"
else
variantArgs="-r $VARIANT"
fi
for plugin in $PLUGINS_BUNDLED; do
dotnet publish "$plugin" -c "$CONFIGURATION" -o "out/${VARIANT}/plugins/${plugin}" "-p:ASFVariant=${VARIANT}" -p:ContinuousIntegrationBuild=true --nologo $variantArgs
done
- name: Publish bundled plugins on Windows
if: startsWith(matrix.os, 'windows-')
env:
VARIANT: ${{ matrix.variant }}
shell: pwsh
run: |
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$ProgressPreference = 'SilentlyContinue'
if ($env:VARIANT -like 'generic*') {
$variantArgs = '-p:TargetLatestRuntimePatch=false', '-p:UseAppHost=false'
} else {
$variantArgs = '-r', "$env:VARIANT"
}
foreach ($plugin in $env:PLUGINS_BUNDLED.Split([char[]] $null, [System.StringSplitOptions]::RemoveEmptyEntries)) {
dotnet publish "$plugin" -c "$env:CONFIGURATION" -o "out\$env:VARIANT\plugins\$plugin" "-p:ASFVariant=$env:VARIANT" -p:ContinuousIntegrationBuild=true --nologo $variantArgs
if ($LastExitCode -ne 0) {
throw "Last command failed."
}
}
- name: Zip ASF-${{ matrix.variant }} on Unix
if: startsWith(matrix.os, 'macos-') || startsWith(matrix.os, 'ubuntu-')
env:
VARIANT: ${{ matrix.variant }}
shell: bash
run: |
set -euo pipefail
# By default use fastest compression
seven_zip_args="-mx=1"
zip_args="-1"
# Tweak compression args for release publishing
case "$GITHUB_REF" in
"refs/tags/"*)
seven_zip_args="-mx=9 -mfb=258 -mpass=15"
zip_args="-9"
;;
esac
# Create the final zip file
case "$(uname -s)" in
"Darwin")
# We prefer to use zip on macOS as 7z implementation on that OS doesn't handle file permissions (chmod +x)
if command -v zip >/dev/null; then
(
cd "${GITHUB_WORKSPACE}/out/${VARIANT}"
zip -q -r $zip_args "../ASF-${VARIANT}.zip" .
)
else
7z a -bd -slp -tzip -mm=Deflate $seven_zip_args "out/ASF-${VARIANT}.zip" "${GITHUB_WORKSPACE}/out/${VARIANT}/*"
fi
;;
*)
if command -v 7z >/dev/null; then
7z a -bd -slp -tzip -mm=Deflate $seven_zip_args "out/ASF-${VARIANT}.zip" "${GITHUB_WORKSPACE}/out/${VARIANT}/*"
else
(
cd "${GITHUB_WORKSPACE}/out/${VARIANT}"
zip -q -r $zip_args "../ASF-${VARIANT}.zip" .
)
fi
;;
esac
- name: Zip ASF-${{ matrix.variant }} on Windows
if: startsWith(matrix.os, 'windows-')
env:
VARIANT: ${{ matrix.variant }}
shell: pwsh
run: |
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$ProgressPreference = 'SilentlyContinue'
# By default use fastest compression
$compressionArgs = '-mx=1'
# Tweak compression args for release publishing
if ($env:GITHUB_REF -like 'refs/tags/*') {
$compressionArgs = '-mx=9', '-mfb=258', '-mpass=15'
}
# Create the final zip file
7z a -bd -slp -tzip -mm=Deflate $compressionArgs "out\ASF-$env:VARIANT.zip" "$env:GITHUB_WORKSPACE\out\$env:VARIANT\*"
@@ -407,112 +360,190 @@ jobs:
}
}
- name: Upload ASF-${{ matrix.variant }}
uses: actions/upload-artifact@v3.1.3
- name: Generate artifact attestation for ASF-${{ matrix.variant }}.zip
if: ${{ github.event_name == 'push' }}
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
with:
subject-path: out/ASF-${{ matrix.variant }}.zip
- name: Upload ASF-${{ matrix.variant }}
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
compression-level: 1
if-no-files-found: error
name: ${{ matrix.os }}_ASF-${{ matrix.variant }}
path: out/ASF-${{ matrix.variant }}.zip
- name: Publish included plugins on Unix
if: ${{ matrix.os == 'ubuntu-latest' && matrix.variant == 'generic' }}
env:
VARIANT: ${{ matrix.variant }}
shell: bash
run: |
set -euo pipefail
# By default use fastest compression
seven_zip_args="-mx=1"
zip_args="-1"
# Tweak compression args for release publishing
case "$GITHUB_REF" in
"refs/tags/"*)
seven_zip_args="-mx=9 -mfb=258 -mpass=15"
zip_args="-9"
;;
esac
for plugin in $PLUGINS_INCLUDED; do
dotnet publish "$plugin" -c "$CONFIGURATION" -o "out/${plugin}" "-p:ASFVariant=${VARIANT}" -p:ContinuousIntegrationBuild=true -p:TargetLatestRuntimePatch=false -p:UseAppHost=false --nologo
# Create the final zip file
if command -v 7z >/dev/null; then
7z a -bd -slp -tzip -mm=Deflate $seven_zip_args "out/${plugin}.zip" "${GITHUB_WORKSPACE}/out/${plugin}/*"
else
(
cd "${GITHUB_WORKSPACE}/out/${plugin}"
zip -q -r $zip_args "../${plugin}.zip" .
)
fi
done
- name: Generate artifact attestation for ArchiSteamFarm.OfficialPlugins.Monitoring
if: ${{ github.event_name == 'push' && matrix.os == 'ubuntu-latest' && matrix.variant == 'generic' }}
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
with:
subject-path: out/ArchiSteamFarm.OfficialPlugins.Monitoring.zip
- name: Upload ArchiSteamFarm.OfficialPlugins.Monitoring
if: ${{ matrix.os == 'ubuntu-latest' && matrix.variant == 'generic' }}
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
compression-level: 1
if-no-files-found: error
name: ArchiSteamFarm.OfficialPlugins.Monitoring
path: out/ArchiSteamFarm.OfficialPlugins.Monitoring.zip
release:
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
needs: publish-asf
environment: release-github
runs-on: ubuntu-latest
permissions:
attestations: write
contents: write
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
show-progress: false
- name: Download ASF-generic artifact from ubuntu-latest
uses: actions/download-artifact@v3.0.2
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: ubuntu-latest_ASF-generic
path: out
- name: Download ASF-generic-netf artifact from windows-latest
uses: actions/download-artifact@v3.0.2
with:
name: windows-latest_ASF-generic-netf
path: out
- name: Download ASF-linux-arm artifact from ubuntu-latest
uses: actions/download-artifact@v3.0.2
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: ubuntu-latest_ASF-linux-arm
path: out
- name: Download ASF-linux-arm64 artifact from ubuntu-latest
uses: actions/download-artifact@v3.0.2
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: ubuntu-latest_ASF-linux-arm64
path: out
- name: Download ASF-linux-x64 artifact from ubuntu-latest
uses: actions/download-artifact@v3.0.2
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: ubuntu-latest_ASF-linux-x64
path: out
- name: Download ASF-osx-arm64 artifact from macos-latest
uses: actions/download-artifact@v3.0.2
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: macos-latest_ASF-osx-arm64
path: out
- name: Download ASF-osx-x64 artifact from macos-latest
uses: actions/download-artifact@v3.0.2
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: macos-latest_ASF-osx-x64
path: out
- name: Download ASF-win-arm64 artifact from windows-latest
uses: actions/download-artifact@v3.0.2
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: windows-latest_ASF-win-arm64
path: out
- name: Download ASF-win-x64 artifact from windows-latest
uses: actions/download-artifact@v3.0.2
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: windows-latest_ASF-win-x64
path: out
- name: Download ArchiSteamFarm.OfficialPlugins.Monitoring artifact
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: ArchiSteamFarm.OfficialPlugins.Monitoring
path: out
- name: Import GPG key for signing
uses: crazy-max/ghaction-import-gpg@v6.0.0
uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec # v6.3.0
with:
gpg_private_key: ${{ secrets.ARCHIBOT_GPG_PRIVATE_KEY }}
- name: Generate SHA-512 checksums and signature
shell: sh
working-directory: out
run: |
set -eu
(
cd "out"
sha512sum *.zip > SHA512SUMS
gpg -a -b -o SHA512SUMS.sign SHA512SUMS
sha512sum *.zip > SHA512SUMS
gpg -a -b -o SHA512SUMS.sign SHA512SUMS
)
- name: Generate artifact attestation for SHA512SUMS
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
with:
subject-path: out/SHA512SUMS
- name: Upload SHA512SUMS
uses: actions/upload-artifact@v3.1.3
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
compression-level: 1
if-no-files-found: error
name: SHA512SUMS
path: out/SHA512SUMS
- name: Upload SHA512SUMS.sign
uses: actions/upload-artifact@v3.1.3
- name: Generate artifact attestation for SHA512SUMS.sign
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
with:
subject-path: out/SHA512SUMS.sign
- name: Upload SHA512SUMS.sign
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
compression-level: 1
if-no-files-found: error
name: SHA512SUMS.sign
path: out/SHA512SUMS.sign
- name: Create ArchiSteamFarm GitHub release
uses: ncipollo/release-action@v1.13.0
uses: ncipollo/release-action@b7eabc95ff50cbeeedec83973935c8f306dfcd0b # v1.20.0
with:
allowUpdates: true
artifactErrorsFailBuild: true
artifacts: "out/*"
bodyFile: .github/RELEASE_TEMPLATE.md
immutableCreate: true
makeLatest: false
name: ArchiSteamFarm V${{ github.ref_name }}
prerelease: true
token: ${{ secrets.ARCHIBOT_GITHUB_TOKEN }}
updateOnlyUnreleased: true

View File

@@ -3,14 +3,19 @@ name: ASF-translations
on:
schedule:
- cron: '55 1 * * *'
workflow_dispatch:
permissions:
contents: write
jobs:
update:
environment: dev-crowdin
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
show-progress: false
submodules: recursive
@@ -18,16 +23,15 @@ jobs:
- name: Reset wiki to follow origin
shell: sh
working-directory: wiki
run: |
set -eu
cd wiki
git fetch --depth=1 origin master
git fetch origin master
git reset --hard origin/master
- name: Download latest translations from Crowdin
uses: crowdin/github-action@v1.13.1
uses: crowdin/github-action@60debf382ee245b21794321190ad0501db89d8c1 # v2.13.0
with:
upload_sources: false
download_translations: true
@@ -39,35 +43,28 @@ jobs:
token: ${{ secrets.ASF_CROWDIN_API_TOKEN }}
- name: Import GPG key for signing
uses: crazy-max/ghaction-import-gpg@v6.0.0
uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec # v6.3.0
with:
gpg_private_key: ${{ secrets.ARCHIBOT_GPG_PRIVATE_KEY }}
git_config_global: true
git_user_signingkey: true
git_commit_gpgsign: true
- name: Commit the changes to wiki
- name: Commit and push the changes to wiki
shell: sh
working-directory: wiki
run: |
set -eu
cd wiki
git add -A "locale"
if ! git diff --cached --quiet; then
git commit -m "Automatic translations update"
git push origin HEAD:master
fi
- name: Push changes to wiki
uses: ad-m/github-push-action@v0.8.0
with:
github_token: ${{ secrets.ARCHIBOT_GITHUB_TOKEN }}
branch: master
directory: wiki
repository: ${{ github.repository }}.wiki
- name: Commit the changes to ASF
- name: Commit and push the changes to ASF
shell: sh
run: |
set -eu
@@ -76,10 +73,6 @@ jobs:
if ! git diff --cached --quiet; then
git commit -m "Automatic translations update"
fi
- name: Push changes to ASF
uses: ad-m/github-push-action@v0.8.0
with:
github_token: ${{ secrets.ARCHIBOT_GITHUB_TOKEN }}
branch: ${{ github.ref }}
git push
fi

9
.gitignore vendored
View File

@@ -543,3 +543,12 @@ $RECYCLE.BIN/
# Windows shortcuts
*.lnk
# _ ____ _____
# / \ / ___| | ___|
# / _ \ \___ \ | |_
# / ___ \ ___) || _|
# /_/ \_\|____/ |_|
# Files that could be ignored by above rules, that we want to ship
!ArchiSteamFarm/overlay/**

2
ASF-ui

Submodule ASF-ui updated: fceb2fb828...c703223091

View File

@@ -4,20 +4,12 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ConfigureAwaitChecker.Analyzer" PrivateAssets="all" />
<PackageReference Include="JetBrains.Annotations" PrivateAssets="all" />
<PackageReference Include="Newtonsoft.Json" IncludeAssets="compile" />
<PackageReference Include="JetBrains.Annotations.Sources" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" IncludeAssets="compile" />
<PackageReference Include="SteamKit2" IncludeAssets="compile" />
<PackageReference Include="System.Composition.AttributedModel" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net481' OR '$(TargetFramework)' == 'netstandard2.1'">
<!-- Madness is already included in netf build of ASF, so we don't need to emit it ourselves -->
<PackageReference Update="JustArchiNET.Madness" IncludeAssets="compile" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ArchiSteamFarm\ArchiSteamFarm.csproj" ExcludeAssets="all" Private="false" />
</ItemGroup>

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,6 +24,7 @@
using System;
using System.Collections.Immutable;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using ArchiSteamFarm.Web;
using ArchiSteamFarm.Web.Responses;
@@ -34,12 +37,12 @@ namespace ArchiSteamFarm.CustomPlugins.ExamplePlugin;
internal static class CatAPI {
private const string URL = "https://api.thecatapi.com";
internal static async Task<Uri?> GetRandomCatURL(WebBrowser webBrowser) {
internal static async Task<Uri?> GetRandomCatURL(WebBrowser webBrowser, CancellationToken cancellationToken = default) {
ArgumentNullException.ThrowIfNull(webBrowser);
Uri request = new($"{URL}/v1/images/search");
ObjectResponse<ImmutableList<MeowResponse>>? response = await webBrowser.UrlGetToJsonObject<ImmutableList<MeowResponse>>(request).ConfigureAwait(false);
ObjectResponse<ImmutableList<MeowResponse>>? response = await webBrowser.UrlGetToJsonObject<ImmutableList<MeowResponse>>(request, cancellationToken: cancellationToken).ConfigureAwait(false);
return response?.Content?.FirstOrDefault()?.URL;
}

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,6 +23,7 @@
using System;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
using ArchiSteamFarm.Core;
using ArchiSteamFarm.IPC.Controllers.Api;
@@ -38,14 +41,16 @@ public sealed class CatController : ArchiController {
/// Fetches URL of a random cat picture.
/// </summary>
[HttpGet]
[ProducesResponseType(typeof(GenericResponse<Uri>), (int) HttpStatusCode.OK)]
[ProducesResponseType(typeof(GenericResponse), (int) HttpStatusCode.ServiceUnavailable)]
[ProducesResponseType<GenericResponse<Uri>>((int) HttpStatusCode.OK)]
[ProducesResponseType<GenericResponse>((int) HttpStatusCode.ServiceUnavailable)]
public async Task<ActionResult<GenericResponse>> CatGet() {
if (ASF.WebBrowser == null) {
throw new InvalidOperationException(nameof(ASF.WebBrowser));
}
Uri? url = await CatAPI.GetRandomCatURL(ASF.WebBrowser).ConfigureAwait(false);
CancellationToken cancellationToken = HttpContext.RequestAborted;
Uri? url = await CatAPI.GetRandomCatURL(ASF.WebBrowser, cancellationToken).ConfigureAwait(false);
return url != null ? Ok(new GenericResponse<Uri>(url)) : StatusCode((int) HttpStatusCode.ServiceUnavailable, new GenericResponse(false));
}

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,16 +23,18 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Composition;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using ArchiSteamFarm.Core;
using ArchiSteamFarm.Plugins.Interfaces;
using ArchiSteamFarm.Steam;
using ArchiSteamFarm.Steam.Data;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using ArchiSteamFarm.Steam.Exchange;
using SteamKit2;
namespace ArchiSteamFarm.CustomPlugins.ExamplePlugin;
@@ -42,34 +46,37 @@ namespace ArchiSteamFarm.CustomPlugins.ExamplePlugin;
// If you do not want to handle a particular action (e.g. OnBotMessage that is offered in IBotMessage), it's the best idea to not inherit it at all
// This will keep your code compact, efficient and less dependent. You can always add additional interfaces when you'll need them, this example project will inherit quite a bit of them to show you potential usage
[SuppressMessage("ReSharper", "MemberCanBeFileLocal")]
internal sealed class ExamplePlugin : IASF, IBot, IBotCommand2, IBotConnection, IBotFriendRequest, IBotMessage, IBotModules, IBotTradeOffer {
internal sealed class ExamplePlugin : IASF, IBot, IBotCommand2, IBotConnection, IBotFriendRequest, IBotMessage, IBotModules, IBotTradeOffer2 {
// This is used for identification purposes, typically you want to use a friendly name of your plugin here, such as the name of your main class
// Please note that this property can have direct dependencies only on structures that were initialized by the constructor, as it's possible to be called before OnLoaded() takes place
[JsonInclude]
public string Name => nameof(ExamplePlugin);
// This will be displayed to the user and written in the log file, typically you should point it to the version of your library, but alternatively you can do some more advanced logic if you'd like to
// Please note that this property can have direct dependencies only on structures that were initialized by the constructor, as it's possible to be called before OnLoaded() takes place
[JsonInclude]
public Version Version => typeof(ExamplePlugin).Assembly.GetName().Version ?? throw new InvalidOperationException(nameof(Version));
// Plugins can expose custom properties for our GET /Api/Plugins API call, simply annotate them with [JsonProperty] (or keep public)
[JsonProperty]
public bool CustomIsEnabledField { get; private set; } = true;
// Plugins can expose custom properties for our GET /Api/Plugins API call, simply annotate them with [JsonInclude] (or keep public)
[JsonInclude]
[JsonRequired]
[Required]
public bool CustomIsEnabledField { get; private init; } = true;
// This method, apart from being called before any bot initialization takes place, allows you to read custom global config properties that are not recognized by ASF
// Thanks to that, you can extend default ASF config with your own stuff, then parse it here in order to customize your plugin during runtime
// Keep in mind that, as noted in the interface, additionalConfigProperties can be null if no custom, unrecognized properties are found by ASF, you should handle that case appropriately
// In addition to that, this method also guarantees that all plugins were already OnLoaded(), which allows cross-plugins-communication to be possible
public Task OnASFInit(IReadOnlyDictionary<string, JToken>? additionalConfigProperties = null) {
public Task OnASFInit(IReadOnlyDictionary<string, JsonElement>? additionalConfigProperties = null) {
if (additionalConfigProperties == null) {
return Task.CompletedTask;
}
foreach ((string configProperty, JToken configValue) in additionalConfigProperties) {
foreach ((string configProperty, JsonElement configValue) in additionalConfigProperties) {
// It's a good idea to prefix your custom properties with the name of your plugin, so there will be no possible conflict of ASF or other plugins using the same name, neither now or in the future
switch (configProperty) {
case $"{nameof(ExamplePlugin)}TestProperty" when configValue.Type == JTokenType.Boolean:
bool exampleBooleanValue = configValue.Value<bool>();
ASF.ArchiLogger.LogGenericInfo($"{nameof(ExamplePlugin)}TestProperty boolean property has been found with a value of: {exampleBooleanValue}");
case $"{nameof(ExamplePlugin)}TestProperty" when configValue.ValueKind == JsonValueKind.True:
ASF.ArchiLogger.LogGenericInfo($"{nameof(ExamplePlugin)}TestProperty boolean property has been found with a value of true");
break;
}
@@ -133,9 +140,9 @@ internal sealed class ExamplePlugin : IASF, IBot, IBotCommand2, IBotConnection,
// This method, apart from being called during bot modules initialization, allows you to read custom bot config properties that are not recognized by ASF
// Thanks to that, you can extend default bot config with your own stuff, then parse it here in order to customize your plugin during runtime
// Keep in mind that, as noted in the interface, additionalConfigProperties can be null if no custom, unrecognized properties are found by ASF, you should handle that case appropriately
// Also keep in mind that this function can be called multiple times, e.g. when user edits his bot configs during runtime
// Also keep in mind that this function can be called multiple times, e.g. when user edits their bot configs during runtime
// Take a look at OnASFInit() for example parsing code
public async Task OnBotInitModules(Bot bot, IReadOnlyDictionary<string, JToken>? additionalConfigProperties = null) {
public async Task OnBotInitModules(Bot bot, IReadOnlyDictionary<string, JsonElement>? additionalConfigProperties = null) {
// For example, we'll ensure that every bot starts paused regardless of Paused property, in order to do this, we'll just call Pause here in InitModules()
// Thanks to the fact that this method is called with each bot config reload, we'll ensure that our bot stays paused even if it'd get unpaused otherwise
bot.ArchiLogger.LogGenericInfo("Pausing this bot as asked from the plugin");
@@ -166,14 +173,14 @@ internal sealed class ExamplePlugin : IASF, IBot, IBotCommand2, IBotConnection,
// If this message doesn't come from one of our bots, we can reply to the user in some pre-defined way
bot.ArchiLogger.LogGenericTrace("Hey boss, we got some unknown message here!");
return Task.FromResult((string?) "I didn't get that, did you mean to use a command?");
return Task.FromResult<string?>("I didn't get that, did you mean to use a command?");
}
// This method is called when bot receives a trade offer that ASF isn't willing to accept (ignored and rejected trades)
// It allows you not only to analyze such trades, but generate a response whether ASF should accept it (true), or proceed like usual (false)
// Thanks to that, you can implement custom rules for all trades that aren't handled by ASF, for example cross-set trading on your own custom rules
// You'd implement your own logic here, as an example we'll allow all trades to be accepted if the bot's name starts from "TrashBot"
public Task<bool> OnBotTradeOffer(Bot bot, TradeOffer tradeOffer) => Task.FromResult(bot.BotName.StartsWith("TrashBot", StringComparison.OrdinalIgnoreCase));
public Task<bool> OnBotTradeOffer(Bot bot, TradeOffer tradeOffer, ParseTradeResult.EResult asfResult) => Task.FromResult(bot.BotName.StartsWith("TrashBot", StringComparison.OrdinalIgnoreCase));
// This is the earliest method that will be called, right after loading the plugin, long before any bot initialization takes place
// It's a good place to initialize all potential (non-bot-specific) structures that you will need across lifetime of your plugin, such as global timers, concurrent dictionaries and alike

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,15 +23,17 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Newtonsoft.Json;
using System.Text.Json.Serialization;
namespace ArchiSteamFarm.CustomPlugins.ExamplePlugin;
#pragma warning disable CA1812 // False positive, the class is used during json deserialization
[SuppressMessage("ReSharper", "ClassCannotBeInstantiated")]
internal sealed class MeowResponse {
[JsonProperty("url", Required = Required.Always)]
internal readonly Uri URL = null!;
[JsonInclude]
[JsonPropertyName("url")]
[JsonRequired]
internal Uri URL { get; private init; } = null!;
[JsonConstructor]
private MeowResponse() { }

View File

@@ -4,16 +4,11 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ConfigureAwaitChecker.Analyzer" PrivateAssets="all" />
<PackageReference Include="JetBrains.Annotations" PrivateAssets="all" />
<PackageReference Include="JetBrains.Annotations.Sources" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" IncludeAssets="compile" />
<PackageReference Include="System.Composition.AttributedModel" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net481' OR '$(TargetFramework)' == 'netstandard2.1'">
<!-- Madness is already included in netf build of ASF, so we don't need to emit it ourselves -->
<PackageReference Update="JustArchiNET.Madness" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ArchiSteamFarm\ArchiSteamFarm.csproj" ExcludeAssets="all" Private="false" />
</ItemGroup>

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,6 +24,7 @@
using System;
using System.Composition;
using System.Runtime;
using System.Text.Json.Serialization;
using System.Threading;
using System.Threading.Tasks;
using ArchiSteamFarm.Core;
@@ -35,11 +38,13 @@ namespace ArchiSteamFarm.CustomPlugins.PeriodicGC;
internal sealed class PeriodicGCPlugin : IPlugin {
private const byte GCPeriod = 60; // In seconds
private static readonly object LockObject = new();
private static readonly Lock Lock = new();
private static readonly Timer PeriodicGCTimer = new(PerformGC);
[JsonInclude]
public string Name => nameof(PeriodicGCPlugin);
[JsonInclude]
public Version Version => typeof(PeriodicGCPlugin).Assembly.GetName().Version ?? throw new InvalidOperationException(nameof(Version));
public Task OnLoaded() {
@@ -47,7 +52,7 @@ internal sealed class PeriodicGCPlugin : IPlugin {
ASF.ArchiLogger.LogGenericWarning($"Periodic GC will occur every {timeSpan.ToHumanReadable()}. Please keep in mind that this plugin should be used for debugging tests only.");
lock (LockObject) {
lock (Lock) {
PeriodicGCTimer.Change(timeSpan, timeSpan);
}
@@ -57,7 +62,7 @@ internal sealed class PeriodicGCPlugin : IPlugin {
private static void PerformGC(object? state = null) {
ASF.ArchiLogger.LogGenericWarning($"Performing GC, current memory: {GC.GetTotalMemory(false) / 1024} KB.");
lock (LockObject) {
lock (Lock) {
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced, true, true);
}

View File

@@ -4,24 +4,12 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AngleSharp.XPath" IncludeAssets="compile" />
<PackageReference Include="ConfigureAwaitChecker.Analyzer" PrivateAssets="all" />
<PackageReference Include="JetBrains.Annotations" PrivateAssets="all" />
<PackageReference Include="Newtonsoft.Json" IncludeAssets="compile" />
<PackageReference Include="AngleSharp" IncludeAssets="compile" />
<PackageReference Include="JetBrains.Annotations.Sources" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" IncludeAssets="compile" />
<PackageReference Include="System.Composition.AttributedModel" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net481' OR '$(TargetFramework)' == 'netstandard2.1'">
<!-- Madness is already included in netf build of ASF, so we don't need to emit it ourselves -->
<PackageReference Update="JustArchiNET.Madness" IncludeAssets="compile" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net481'">
<Reference Include="System.Net.Http" HintPath="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8.1\System.Net.Http.dll" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ArchiSteamFarm\ArchiSteamFarm.csproj" ExcludeAssets="all" Private="false" />
</ItemGroup>

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,11 +22,12 @@
// limitations under the License.
using System;
using Newtonsoft.Json;
using System.Text.Json.Serialization;
namespace ArchiSteamFarm.CustomPlugins.SignInWithSteam.Data;
public sealed class SignInWithSteamRequest {
[JsonProperty(Required = Required.Always)]
public Uri RedirectURL { get; private set; } = null!;
[JsonInclude]
[JsonRequired]
public Uri RedirectURL { get; private init; } = null!;
}

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,13 +22,18 @@
// limitations under the License.
using System;
using Newtonsoft.Json;
using System.Text.Json.Serialization;
namespace ArchiSteamFarm.CustomPlugins.SignInWithSteam.Data;
public sealed class SignInWithSteamResponse {
[JsonProperty(Required = Required.Always)]
public Uri ReturnURL { get; private set; }
[JsonInclude]
[JsonRequired]
public Uri ReturnURL { get; private init; }
internal SignInWithSteamResponse(Uri returnURL) => ReturnURL = returnURL ?? throw new ArgumentNullException(nameof(returnURL));
internal SignInWithSteamResponse(Uri returnURL) {
ArgumentNullException.ThrowIfNull(returnURL);
ReturnURL = returnURL;
}
}

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +22,6 @@
// limitations under the License.
using System;
using System.Globalization;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
@@ -41,20 +42,17 @@ namespace ArchiSteamFarm.CustomPlugins.SignInWithSteam;
[Route("/Api/Bot/{botName:required}/SignInWithSteam")]
public sealed class SignInWithSteamController : ArchiController {
[HttpPost]
[ProducesResponseType(typeof(GenericResponse<SignInWithSteamResponse>), (int) HttpStatusCode.OK)]
[ProducesResponseType(typeof(GenericResponse), (int) HttpStatusCode.BadRequest)]
[ProducesResponseType(typeof(GenericResponse), (int) HttpStatusCode.ServiceUnavailable)]
[ProducesResponseType<GenericResponse<SignInWithSteamResponse>>((int) HttpStatusCode.OK)]
[ProducesResponseType<GenericResponse>((int) HttpStatusCode.BadRequest)]
[ProducesResponseType<GenericResponse>((int) HttpStatusCode.ServiceUnavailable)]
public async Task<ActionResult<GenericResponse>> Post(string botName, [FromBody] SignInWithSteamRequest request) {
if (string.IsNullOrEmpty(botName)) {
throw new ArgumentNullException(nameof(botName));
}
ArgumentException.ThrowIfNullOrEmpty(botName);
ArgumentNullException.ThrowIfNull(request);
Bot? bot = Bot.GetBot(botName);
if (bot == null) {
return BadRequest(new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.BotNotFound, botName)));
return BadRequest(new GenericResponse(false, Strings.FormatBotNotFound(botName)));
}
if (!bot.IsConnectedAndLoggedOn) {
@@ -65,39 +63,39 @@ public sealed class SignInWithSteamController : ArchiController {
using HtmlDocumentResponse? challengeResponse = await bot.ArchiWebHandler.UrlGetToHtmlDocumentWithSession(request.RedirectURL).ConfigureAwait(false);
if (challengeResponse?.Content == null) {
return StatusCode((int) HttpStatusCode.ServiceUnavailable, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorRequestFailedTooManyTimes, WebBrowser.MaxTries)));
return StatusCode((int) HttpStatusCode.ServiceUnavailable, new GenericResponse(false, Strings.FormatErrorRequestFailedTooManyTimes(WebBrowser.MaxTries)));
}
IAttr? paramsNode = challengeResponse.Content.SelectSingleNode<IAttr>("//input[@name='openidparams']/@value");
IElement? paramsNode = challengeResponse.Content.QuerySelector("input[name='openidparams'][value]");
if (paramsNode == null) {
ASF.ArchiLogger.LogNullError(paramsNode);
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(paramsNode))));
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, Strings.FormatErrorObjectIsNull(nameof(paramsNode))));
}
string paramsValue = paramsNode.Value;
string? paramsValue = paramsNode.GetAttribute("value");
if (string.IsNullOrEmpty(paramsValue)) {
ASF.ArchiLogger.LogNullError(paramsValue);
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(paramsValue))));
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, Strings.FormatErrorObjectIsNull(nameof(paramsValue))));
}
IAttr? nonceNode = challengeResponse.Content.SelectSingleNode<IAttr>("//input[@name='nonce']/@value");
IElement? nonceNode = challengeResponse.Content.QuerySelector("input[name='nonce'][value]");
if (nonceNode == null) {
ASF.ArchiLogger.LogNullError(nonceNode);
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(nonceNode))));
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, Strings.FormatErrorObjectIsNull(nameof(nonceNode))));
}
string nonceValue = nonceNode.Value;
string? nonceValue = nonceNode.GetAttribute("value");
if (string.IsNullOrEmpty(nonceValue)) {
ASF.ArchiLogger.LogNullError(nonceValue);
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(nonceValue))));
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, Strings.FormatErrorObjectIsNull(nameof(nonceValue))));
}
Uri loginRequest = new(ArchiWebHandler.SteamCommunityURL, "/openid/login");
@@ -117,6 +115,6 @@ public sealed class SignInWithSteamController : ArchiController {
// Accept OpenID request presented and follow redirection back to the data we initially expected
BasicResponse? loginResponse = await bot.ArchiWebHandler.WebBrowser.UrlPost(loginRequest, data: data, requestOptions: WebBrowser.ERequestOptions.ReturnRedirections).ConfigureAwait(false);
return loginResponse != null ? Ok(new GenericResponse<SignInWithSteamResponse>(new SignInWithSteamResponse(loginResponse.FinalUri))) : StatusCode((int) HttpStatusCode.ServiceUnavailable, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorRequestFailedTooManyTimes, WebBrowser.MaxTries)));
return loginResponse != null ? Ok(new GenericResponse<SignInWithSteamResponse>(new SignInWithSteamResponse(loginResponse.FinalUri))) : StatusCode((int) HttpStatusCode.ServiceUnavailable, new GenericResponse(false, Strings.FormatErrorRequestFailedTooManyTimes(WebBrowser.MaxTries)));
}
}

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,6 +23,7 @@
using System;
using System.Composition;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using ArchiSteamFarm.Core;
using ArchiSteamFarm.Plugins.Interfaces;
@@ -31,8 +34,10 @@ namespace ArchiSteamFarm.CustomPlugins.SignInWithSteam;
[Export(typeof(IPlugin))]
[UsedImplicitly]
internal sealed class SignInWithSteamPlugin : IPlugin {
[JsonInclude]
public string Name => nameof(SignInWithSteamPlugin);
[JsonInclude]
public Version Version => typeof(SignInWithSteamPlugin).Assembly.GetName().Version ?? throw new InvalidOperationException(nameof(Version));
public Task OnLoaded() {

View File

@@ -4,22 +4,11 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ConfigureAwaitChecker.Analyzer" PrivateAssets="all" />
<PackageReference Include="JetBrains.Annotations" PrivateAssets="all" />
<PackageReference Include="Newtonsoft.Json" IncludeAssets="compile" />
<PackageReference Include="JetBrains.Annotations.Sources" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" IncludeAssets="compile" />
<PackageReference Include="Microsoft.CodeAnalysis.ResxSourceGenerator" PrivateAssets="all" />
<PackageReference Include="SteamKit2" IncludeAssets="compile" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" IncludeAssets="compile" />
<PackageReference Include="System.Composition.AttributedModel" IncludeAssets="compile" />
<PackageReference Include="System.Linq.Async" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net481' OR '$(TargetFramework)' == 'netstandard2.1'">
<!-- Madness is already included in netf build of ASF, so we don't need to emit it ourselves -->
<PackageReference Update="JustArchiNET.Madness" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net481'">
<Reference Include="System.Net.Http" HintPath="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8.1\System.Net.Http.dll" />
</ItemGroup>
<ItemGroup>
@@ -27,17 +16,10 @@
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Localization\Strings.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Update="Localization\Strings.resx" EmitFormatMethods="true" />
</ItemGroup>
<ItemGroup>
<Compile Update="Localization\Strings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Strings.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Copy SourceFolders="$(TargetDir)" DestinationFolder="..\ArchiSteamFarm\bin\$(Configuration)\$(TargetFramework)\plugins\$(AssemblyName)\" SkipUnchangedFiles="true" />
</Target>
</Project>

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +24,10 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using ArchiSteamFarm.Core;
using ArchiSteamFarm.IPC.Responses;
@@ -38,45 +43,96 @@ using SteamKit2;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher;
internal static class Backend {
internal static async Task<BasicResponse?> AnnounceForListing(ulong steamID, WebBrowser webBrowser, IReadOnlyList<AssetForListing> inventory, IReadOnlyCollection<Asset.EType> acceptedMatchableTypes, uint totalInventoryCount, bool matchEverything, string tradeToken, string? nickname = null, string? avatarHash = null) {
internal static async Task<ObjectResponse<GenericResponse<BackgroundTaskResponse>>?> AnnounceDiffForListing(WebBrowser webBrowser, ulong steamID, IReadOnlyCollection<AssetForListing> inventory, string inventoryChecksum, IReadOnlyCollection<EAssetType> acceptedMatchableTypes, uint totalInventoryCount, bool matchEverything, string tradeToken, IReadOnlyCollection<AssetForListing> inventoryRemoved, string? previousInventoryChecksum, string? nickname = null, string? avatarHash = null) {
ArgumentNullException.ThrowIfNull(webBrowser);
if ((steamID == 0) || !new SteamID(steamID).IsIndividualAccount) {
throw new ArgumentOutOfRangeException(nameof(steamID));
}
ArgumentNullException.ThrowIfNull(webBrowser);
if ((inventory == null) || (inventory.Count == 0)) {
throw new ArgumentNullException(nameof(inventory));
}
ArgumentNullException.ThrowIfNull(inventory);
ArgumentException.ThrowIfNullOrEmpty(inventoryChecksum);
if ((acceptedMatchableTypes == null) || (acceptedMatchableTypes.Count == 0)) {
throw new ArgumentNullException(nameof(acceptedMatchableTypes));
}
if (totalInventoryCount == 0) {
throw new ArgumentOutOfRangeException(nameof(totalInventoryCount));
}
if (string.IsNullOrEmpty(tradeToken)) {
throw new ArgumentNullException(nameof(tradeToken));
}
ArgumentOutOfRangeException.ThrowIfZero(totalInventoryCount);
ArgumentException.ThrowIfNullOrEmpty(tradeToken);
if (tradeToken.Length != BotConfig.SteamTradeTokenLength) {
throw new ArgumentOutOfRangeException(nameof(tradeToken));
}
Uri request = new(ArchiNet.URL, "/Api/Listing/Announce/v3");
ArgumentNullException.ThrowIfNull(inventoryRemoved);
ArgumentException.ThrowIfNullOrEmpty(previousInventoryChecksum);
AnnouncementRequest data = new(ASF.GlobalDatabase?.Identifier ?? Guid.NewGuid(), steamID, tradeToken, inventory, acceptedMatchableTypes, totalInventoryCount, matchEverything, ASF.GlobalConfig?.MaxTradeHoldDuration ?? GlobalConfig.DefaultMaxTradeHoldDuration, nickname, avatarHash);
Uri request = new(ArchiNet.URL, "/Api/Listing/AnnounceDiff/v2");
return await webBrowser.UrlPost(request, data: data, requestOptions: WebBrowser.ERequestOptions.ReturnRedirections | WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.CompressRequest).ConfigureAwait(false);
AnnouncementDiffRequest data = new(ASF.GlobalDatabase?.Identifier ?? Guid.NewGuid(), steamID, inventory, inventoryChecksum, acceptedMatchableTypes, totalInventoryCount, matchEverything, ASF.GlobalConfig?.MaxTradeHoldDuration ?? GlobalConfig.DefaultMaxTradeHoldDuration, tradeToken, inventoryRemoved, previousInventoryChecksum, nickname, avatarHash);
return await webBrowser.UrlPostToJsonObject<GenericResponse<BackgroundTaskResponse>, AnnouncementDiffRequest>(request, data: data, requestOptions: WebBrowser.ERequestOptions.ReturnRedirections | WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors | WebBrowser.ERequestOptions.CompressRequest).ConfigureAwait(false);
}
internal static async Task<(HttpStatusCode StatusCode, ImmutableHashSet<ListedUser> Users)?> GetListedUsersForMatching(Guid licenseID, Bot bot, WebBrowser webBrowser, IReadOnlyCollection<Asset> inventory, IReadOnlyCollection<Asset.EType> acceptedMatchableTypes) {
if (licenseID == Guid.Empty) {
throw new ArgumentOutOfRangeException(nameof(licenseID));
internal static async Task<ObjectResponse<GenericResponse<BackgroundTaskResponse>>?> AnnounceForListing(WebBrowser webBrowser, ulong steamID, IReadOnlyCollection<AssetForListing> inventory, string inventoryChecksum, IReadOnlyCollection<EAssetType> acceptedMatchableTypes, uint totalInventoryCount, bool matchEverything, string tradeToken, string? nickname = null, string? avatarHash = null) {
ArgumentNullException.ThrowIfNull(webBrowser);
if ((steamID == 0) || !new SteamID(steamID).IsIndividualAccount) {
throw new ArgumentOutOfRangeException(nameof(steamID));
}
if ((inventory == null) || (inventory.Count == 0)) {
throw new ArgumentNullException(nameof(inventory));
}
ArgumentException.ThrowIfNullOrEmpty(inventoryChecksum);
if ((acceptedMatchableTypes == null) || (acceptedMatchableTypes.Count == 0)) {
throw new ArgumentNullException(nameof(acceptedMatchableTypes));
}
ArgumentOutOfRangeException.ThrowIfZero(totalInventoryCount);
ArgumentException.ThrowIfNullOrEmpty(tradeToken);
if (tradeToken.Length != BotConfig.SteamTradeTokenLength) {
throw new ArgumentOutOfRangeException(nameof(tradeToken));
}
Uri request = new(ArchiNet.URL, "/Api/Listing/Announce/v5");
AnnouncementRequest data = new(ASF.GlobalDatabase?.Identifier ?? Guid.NewGuid(), steamID, inventory, inventoryChecksum, acceptedMatchableTypes, totalInventoryCount, matchEverything, ASF.GlobalConfig?.MaxTradeHoldDuration ?? GlobalConfig.DefaultMaxTradeHoldDuration, tradeToken, nickname, avatarHash);
return await webBrowser.UrlPostToJsonObject<GenericResponse<BackgroundTaskResponse>, AnnouncementRequest>(request, data: data, requestOptions: WebBrowser.ERequestOptions.ReturnRedirections | WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors | WebBrowser.ERequestOptions.CompressRequest).ConfigureAwait(false);
}
internal static string GenerateChecksumFor(IList<AssetForListing> assetsForListings) {
if ((assetsForListings == null) || (assetsForListings.Count == 0)) {
throw new ArgumentNullException(nameof(assetsForListings));
}
string text = string.Join('|', assetsForListings.Select(static asset => asset.BackendHashCode));
byte[] bytes = Encoding.UTF8.GetBytes(text);
return Utilities.GenerateChecksumFor(bytes);
}
internal static async Task<HttpStatusCode?> GetLicenseStatus(Guid licenseID, WebBrowser webBrowser) {
ArgumentOutOfRangeException.ThrowIfEqual(licenseID, Guid.Empty);
ArgumentNullException.ThrowIfNull(webBrowser);
Uri request = new(ArchiNet.URL, "/Api/Licenses/Status");
Dictionary<string, string> headers = new(1, StringComparer.Ordinal) {
{ "X-License-Key", licenseID.ToString("N") }
};
ObjectResponse<GenericResponse>? response = await webBrowser.UrlGetToJsonObject<GenericResponse>(request, headers, requestOptions: WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors).ConfigureAwait(false);
return response?.StatusCode;
}
internal static async Task<(HttpStatusCode StatusCode, ImmutableHashSet<ListedUser> Users)?> GetListedUsersForMatching(Guid licenseID, Bot bot, WebBrowser webBrowser, IReadOnlyCollection<Asset> inventory, IReadOnlyCollection<EAssetType> acceptedMatchableTypes) {
ArgumentOutOfRangeException.ThrowIfEqual(licenseID, Guid.Empty);
ArgumentNullException.ThrowIfNull(bot);
ArgumentNullException.ThrowIfNull(webBrowser);
@@ -102,7 +158,29 @@ internal static class Backend {
return null;
}
return (response.StatusCode, response.Content?.Result ?? ImmutableHashSet<ListedUser>.Empty);
return (response.StatusCode, response.Content?.Result ?? []);
}
internal static async Task<ObjectResponse<GenericResponse<ImmutableHashSet<SetPart>>>?> GetSetParts(WebBrowser webBrowser, ulong steamID, IReadOnlyCollection<EAssetType> matchableTypes, IReadOnlyCollection<uint> realAppIDs, CancellationToken cancellationToken = default) {
ArgumentNullException.ThrowIfNull(webBrowser);
if ((steamID == 0) || !new SteamID(steamID).IsIndividualAccount) {
throw new ArgumentOutOfRangeException(nameof(steamID));
}
if ((matchableTypes == null) || (matchableTypes.Count == 0)) {
throw new ArgumentNullException(nameof(matchableTypes));
}
if ((realAppIDs == null) || (realAppIDs.Count == 0)) {
throw new ArgumentNullException(nameof(realAppIDs));
}
Uri request = new(ArchiNet.URL, "/Api/SetParts/Request");
SetPartsRequest data = new(ASF.GlobalDatabase?.Identifier ?? Guid.NewGuid(), steamID, matchableTypes, realAppIDs);
return await webBrowser.UrlPostToJsonObject<GenericResponse<ImmutableHashSet<SetPart>>, SetPartsRequest>(request, data: data, requestOptions: WebBrowser.ERequestOptions.ReturnRedirections | WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors | WebBrowser.ERequestOptions.CompressRequest, cancellationToken: cancellationToken).ConfigureAwait(false);
}
internal static async Task<BasicResponse?> HeartBeatForListing(Bot bot, WebBrowser webBrowser) {
@@ -115,4 +193,22 @@ internal static class Backend {
return await webBrowser.UrlPost(request, data: data, requestOptions: WebBrowser.ERequestOptions.ReturnRedirections | WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.CompressRequest).ConfigureAwait(false);
}
internal static async Task<ObjectResponse<GenericResponse<BackgroundTaskResponse>>?> PollResult(WebBrowser webBrowser, ulong steamID, Guid requestID) {
ArgumentNullException.ThrowIfNull(webBrowser);
if ((steamID == 0) || !new SteamID(steamID).IsIndividualAccount) {
throw new ArgumentOutOfRangeException(nameof(steamID));
}
ArgumentOutOfRangeException.ThrowIfEqual(requestID, Guid.Empty);
if (BuildInfo.IsCustomBuild) {
return null;
}
Uri request = new(ArchiNet.URL, $"/Api/Listing/PollResult/{steamID}/{requestID:N}");
return await webBrowser.UrlGetToJsonObject<GenericResponse<BackgroundTaskResponse>>(request, requestOptions: WebBrowser.ERequestOptions.ReturnRedirections | WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors).ConfigureAwait(false);
}
}

View File

@@ -0,0 +1,165 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// |
// http://www.apache.org/licenses/LICENSE-2.0
// |
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
using System;
using System.IO;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using ArchiSteamFarm.Collections;
using ArchiSteamFarm.Core;
using ArchiSteamFarm.Helpers;
using ArchiSteamFarm.Helpers.Json;
using ArchiSteamFarm.Localization;
using ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
using JetBrains.Annotations;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher;
internal sealed class BotCache : SerializableFile {
[JsonDisallowNull]
[JsonInclude]
[JsonObjectCreationHandling(JsonObjectCreationHandling.Populate)]
internal ConcurrentList<AssetForListing> LastAnnouncedAssetsForListing { get; private init; } = [];
[JsonInclude]
[JsonPropertyName("BackingLastAnnouncedTradeToken")]
internal string? LastAnnouncedTradeToken {
get;
set {
if (field == value) {
return;
}
field = value;
Utilities.InBackground(Save);
}
}
[JsonInclude]
[JsonPropertyName("BackingLastInventoryChecksumBeforeDeduplication")]
internal string? LastInventoryChecksumBeforeDeduplication {
get;
set {
if (field == value) {
return;
}
field = value;
Utilities.InBackground(Save);
}
}
[JsonInclude]
[JsonPropertyName("BackingLastRequestAt")]
internal DateTime? LastRequestAt {
get;
set {
if (field == value) {
return;
}
field = value;
Utilities.InBackground(Save);
}
}
private BotCache(string filePath) : this() {
ArgumentException.ThrowIfNullOrEmpty(filePath);
FilePath = filePath;
}
[JsonConstructor]
private BotCache() => LastAnnouncedAssetsForListing.OnModified += OnObjectModified;
[UsedImplicitly]
public bool ShouldSerializeLastAnnouncedAssetsForListing() => LastAnnouncedAssetsForListing.Count > 0;
[UsedImplicitly]
public bool ShouldSerializeLastAnnouncedTradeToken() => !string.IsNullOrEmpty(LastAnnouncedTradeToken);
[UsedImplicitly]
public bool ShouldSerializeLastInventoryChecksumBeforeDeduplication() => !string.IsNullOrEmpty(LastInventoryChecksumBeforeDeduplication);
[UsedImplicitly]
public bool ShouldSerializeLastRequestAt() => LastRequestAt.HasValue;
protected override void Dispose(bool disposing) {
if (disposing) {
// Events we registered
LastAnnouncedAssetsForListing.OnModified -= OnObjectModified;
}
// Base dispose
base.Dispose(disposing);
}
protected override Task Save() => Save(this);
internal static async Task<BotCache> CreateOrLoad(string filePath) {
ArgumentException.ThrowIfNullOrEmpty(filePath);
if (!File.Exists(filePath)) {
return new BotCache(filePath);
}
BotCache? botCache;
try {
string json = await File.ReadAllTextAsync(filePath).ConfigureAwait(false);
if (string.IsNullOrEmpty(json)) {
ASF.ArchiLogger.LogGenericError(Strings.FormatErrorIsEmpty(nameof(json)));
return new BotCache(filePath);
}
botCache = json.ToJsonObject<BotCache>();
} catch (Exception e) {
ASF.ArchiLogger.LogGenericException(e);
return new BotCache(filePath);
}
if (botCache == null) {
ASF.ArchiLogger.LogNullError(botCache);
return new BotCache(filePath);
}
botCache.FilePath = filePath;
return botCache;
}
private async void OnObjectModified(object? sender, EventArgs e) {
if (string.IsNullOrEmpty(FilePath)) {
return;
}
await Save().ConfigureAwait(false);
}
}

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +24,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using ArchiSteamFarm.Core;
@@ -80,12 +81,20 @@ internal static class Commands {
return access > EAccess.None ? bot.Commands.FormatBotResponse(Strings.ErrorAccessDenied) : null;
}
if ((ASF.GlobalConfig?.LicenseID == null) || (ASF.GlobalConfig.LicenseID == Guid.Empty)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(ASF.GlobalConfig.LicenseID)));
if (!bot.IsConnectedAndLoggedOn) {
return bot.Commands.FormatBotResponse(Strings.BotNotConnected);
}
if (!bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.MatchActively) || !ItemsMatcherPlugin.RemoteCommunications.TryGetValue(bot, out RemoteCommunication? remoteCommunication)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(BotConfig.ETradingPreferences.MatchActively)));
if (bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.MatchEverything)) {
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(BotConfig.ETradingPreferences.MatchEverything)));
}
if ((ASF.GlobalConfig?.LicenseID == null) || (ASF.GlobalConfig.LicenseID == Guid.Empty)) {
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(ASF.GlobalConfig.LicenseID)));
}
if (!ItemsMatcherPlugin.RemoteCommunications.TryGetValue(bot, out RemoteCommunication? remoteCommunication)) {
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(remoteCommunication)));
}
remoteCommunication.TriggerMatchActivelyEarlier();
@@ -98,9 +107,7 @@ internal static class Commands {
throw new InvalidEnumArgumentException(nameof(access), (int) access, typeof(EAccess));
}
if (string.IsNullOrEmpty(botNames)) {
throw new ArgumentNullException(nameof(botNames));
}
ArgumentException.ThrowIfNullOrEmpty(botNames);
if ((steamID != 0) && !new SteamID(steamID).IsIndividualAccount) {
throw new ArgumentOutOfRangeException(nameof(steamID));
@@ -109,12 +116,12 @@ internal static class Commands {
HashSet<Bot>? bots = Bot.GetBots(botNames);
if ((bots == null) || (bots.Count == 0)) {
return access >= EAccess.Owner ? Steam.Interaction.Commands.FormatStaticResponse(string.Format(CultureInfo.CurrentCulture, Strings.BotNotFound, botNames)) : null;
return access >= EAccess.Owner ? Steam.Interaction.Commands.FormatStaticResponse(Strings.FormatBotNotFound(botNames)) : null;
}
IList<string?> results = await Utilities.InParallel(bots.Select(bot => Task.Run(() => ResponseMatch(Steam.Interaction.Commands.GetProxyAccess(bot, access, steamID), bot)))).ConfigureAwait(false);
List<string> responses = new(results.Where(static result => !string.IsNullOrEmpty(result))!);
List<string> responses = [..results.Where(static result => !string.IsNullOrEmpty(result)).Select(static result => result!)];
return responses.Count > 0 ? string.Join(Environment.NewLine, responses) : null;
}

View File

@@ -0,0 +1,70 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// |
// http://www.apache.org/licenses/LICENSE-2.0
// |
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Text.Json.Serialization;
using ArchiSteamFarm.Steam.Data;
using ArchiSteamFarm.Steam.Storage;
using SteamKit2;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
internal sealed class AnnouncementDiffRequest : AnnouncementRequest {
[JsonInclude]
[JsonRequired]
private ImmutableHashSet<AssetForListing> InventoryRemoved { get; init; }
[JsonInclude]
[JsonRequired]
private string PreviousInventoryChecksum { get; init; }
internal AnnouncementDiffRequest(Guid guid, ulong steamID, IReadOnlyCollection<AssetForListing> inventory, string inventoryChecksum, IReadOnlyCollection<EAssetType> matchableTypes, uint totalInventoryCount, bool matchEverything, byte maxTradeHoldDuration, string tradeToken, IReadOnlyCollection<AssetForListing> inventoryRemoved, string previousInventoryChecksum, string? nickname = null, string? avatarHash = null) : base(guid, steamID, inventory, inventoryChecksum, matchableTypes, totalInventoryCount, matchEverything, maxTradeHoldDuration, tradeToken, nickname, avatarHash) {
ArgumentOutOfRangeException.ThrowIfEqual(guid, Guid.Empty);
if ((steamID == 0) || !new SteamID(steamID).IsIndividualAccount) {
throw new ArgumentOutOfRangeException(nameof(steamID));
}
ArgumentNullException.ThrowIfNull(inventory);
ArgumentException.ThrowIfNullOrEmpty(inventoryChecksum);
if ((matchableTypes == null) || (matchableTypes.Count == 0)) {
throw new ArgumentNullException(nameof(matchableTypes));
}
ArgumentOutOfRangeException.ThrowIfZero(totalInventoryCount);
ArgumentException.ThrowIfNullOrEmpty(tradeToken);
if (tradeToken.Length != BotConfig.SteamTradeTokenLength) {
throw new ArgumentOutOfRangeException(nameof(tradeToken));
}
ArgumentNullException.ThrowIfNull(inventoryRemoved);
ArgumentException.ThrowIfNullOrEmpty(previousInventoryChecksum);
InventoryRemoved = inventoryRemoved.ToImmutableHashSet();
PreviousInventoryChecksum = previousInventoryChecksum;
}
}

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,78 +24,83 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Text.Json.Serialization;
using ArchiSteamFarm.Steam.Data;
using ArchiSteamFarm.Steam.Storage;
using JetBrains.Annotations;
using Newtonsoft.Json;
using SteamKit2;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
internal sealed class AnnouncementRequest {
[JsonProperty]
private readonly string? AvatarHash;
internal class AnnouncementRequest {
[JsonInclude]
private string? AvatarHash { get; init; }
[JsonProperty(Required = Required.Always)]
private readonly Guid Guid;
[JsonInclude]
[JsonRequired]
private Guid Guid { get; init; }
[JsonProperty(Required = Required.Always)]
private readonly ImmutableList<AssetForListing> Inventory;
[JsonInclude]
[JsonRequired]
private ImmutableHashSet<AssetForListing> Inventory { get; init; }
[JsonProperty(Required = Required.Always)]
private readonly ImmutableHashSet<Asset.EType> MatchableTypes;
[JsonInclude]
[JsonRequired]
private string InventoryChecksum { get; init; }
[JsonProperty(Required = Required.Always)]
private readonly bool MatchEverything;
[JsonInclude]
[JsonRequired]
private ImmutableHashSet<EAssetType> MatchableTypes { get; init; }
[JsonProperty(Required = Required.Always)]
private readonly byte MaxTradeHoldDuration;
[JsonInclude]
[JsonRequired]
private bool MatchEverything { get; init; }
[JsonProperty]
private readonly string? Nickname;
[JsonInclude]
[JsonRequired]
private byte MaxTradeHoldDuration { get; init; }
[JsonProperty(Required = Required.Always)]
private readonly ulong SteamID;
[JsonInclude]
private string? Nickname { get; init; }
[JsonProperty(Required = Required.Always)]
private readonly uint TotalInventoryCount;
[JsonInclude]
[JsonRequired]
private ulong SteamID { get; init; }
[JsonProperty(Required = Required.Always)]
private readonly string TradeToken;
[JsonInclude]
[JsonRequired]
private uint TotalInventoryCount { get; init; }
internal AnnouncementRequest(Guid guid, ulong steamID, string tradeToken, IReadOnlyList<AssetForListing> inventory, IReadOnlyCollection<Asset.EType> matchableTypes, uint totalInventoryCount, bool matchEverything, byte maxTradeHoldDuration, string? nickname = null, string? avatarHash = null) {
if (guid == Guid.Empty) {
throw new ArgumentOutOfRangeException(nameof(guid));
}
[JsonInclude]
[JsonRequired]
private string TradeToken { get; init; }
internal AnnouncementRequest(Guid guid, ulong steamID, IReadOnlyCollection<AssetForListing> inventory, string inventoryChecksum, IReadOnlyCollection<EAssetType> matchableTypes, uint totalInventoryCount, bool matchEverything, byte maxTradeHoldDuration, string tradeToken, string? nickname = null, string? avatarHash = null) {
ArgumentOutOfRangeException.ThrowIfEqual(guid, Guid.Empty);
if ((steamID == 0) || !new SteamID(steamID).IsIndividualAccount) {
throw new ArgumentOutOfRangeException(nameof(steamID));
}
if (string.IsNullOrEmpty(tradeToken)) {
throw new ArgumentNullException(nameof(tradeToken));
}
if (tradeToken.Length != BotConfig.SteamTradeTokenLength) {
throw new ArgumentOutOfRangeException(nameof(tradeToken));
}
if ((inventory == null) || (inventory.Count == 0)) {
throw new ArgumentNullException(nameof(inventory));
}
ArgumentNullException.ThrowIfNull(inventory);
ArgumentException.ThrowIfNullOrEmpty(inventoryChecksum);
if ((matchableTypes == null) || (matchableTypes.Count == 0)) {
throw new ArgumentNullException(nameof(matchableTypes));
}
if (totalInventoryCount == 0) {
throw new ArgumentOutOfRangeException(nameof(totalInventoryCount));
ArgumentOutOfRangeException.ThrowIfZero(totalInventoryCount);
ArgumentException.ThrowIfNullOrEmpty(tradeToken);
if (tradeToken.Length != BotConfig.SteamTradeTokenLength) {
throw new ArgumentOutOfRangeException(nameof(tradeToken));
}
Guid = guid;
SteamID = steamID;
TradeToken = tradeToken;
Inventory = inventory.ToImmutableList();
Inventory = inventory.ToImmutableHashSet();
InventoryChecksum = inventoryChecksum;
MatchableTypes = matchableTypes.ToImmutableHashSet();
MatchEverything = matchEverything;
MaxTradeHoldDuration = maxTradeHoldDuration;

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,18 +22,31 @@
// limitations under the License.
using System;
using System.Text.Json.Serialization;
using ArchiSteamFarm.Steam.Data;
using Newtonsoft.Json;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
internal sealed class AssetForListing : AssetInInventory {
[JsonProperty("l", Required = Required.Always)]
internal readonly ulong PreviousAssetID;
internal string BackendHashCode => $"{Index}-{PreviousAssetID}-{AssetID}-{ClassID}-{Rarity}-{RealAppID}-{Tradable}-{Type}-{Amount}";
internal AssetForListing(Asset asset, ulong previousAssetID) : base(asset) {
[JsonInclude]
[JsonPropertyName("i")]
[JsonRequired]
internal uint Index { get; private init; }
[JsonInclude]
[JsonPropertyName("l")]
[JsonRequired]
internal ulong PreviousAssetID { get; private init; }
internal AssetForListing(Asset asset, uint index, ulong previousAssetID) : base(asset) {
ArgumentNullException.ThrowIfNull(asset);
Index = index;
PreviousAssetID = previousAssetID;
}
[JsonConstructor]
private AssetForListing() { }
}

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,29 +22,41 @@
// limitations under the License.
using System;
using System.Text.Json.Serialization;
using ArchiSteamFarm.Steam.Data;
using Newtonsoft.Json;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
internal class AssetForMatching {
[JsonProperty("a", Required = Required.Always)]
internal readonly uint Amount;
[JsonInclude]
[JsonPropertyName("a")]
[JsonRequired]
internal uint Amount { get; set; }
[JsonProperty("c", Required = Required.Always)]
internal readonly ulong ClassID;
[JsonInclude]
[JsonPropertyName("c")]
[JsonRequired]
internal ulong ClassID { get; private init; }
[JsonProperty("r", Required = Required.Always)]
internal readonly Asset.ERarity Rarity;
[JsonInclude]
[JsonPropertyName("r")]
[JsonRequired]
internal EAssetRarity Rarity { get; private init; }
[JsonProperty("e", Required = Required.Always)]
internal readonly uint RealAppID;
[JsonInclude]
[JsonPropertyName("e")]
[JsonRequired]
internal uint RealAppID { get; private init; }
[JsonProperty("t", Required = Required.Always)]
internal readonly bool Tradable;
[JsonInclude]
[JsonPropertyName("t")]
[JsonRequired]
internal bool Tradable { get; private init; }
[JsonProperty("p", Required = Required.Always)]
internal readonly Asset.EType Type;
[JsonInclude]
[JsonPropertyName("p")]
[JsonRequired]
internal EAssetType Type { get; private init; }
[JsonConstructor]
protected AssetForMatching() { }

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,14 +22,19 @@
// limitations under the License.
using System;
using System.Text.Json.Serialization;
using ArchiSteamFarm.Steam.Data;
using Newtonsoft.Json;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
internal class AssetInInventory : AssetForMatching {
[JsonProperty("d", Required = Required.Always)]
internal readonly ulong AssetID;
[JsonInclude]
[JsonPropertyName("d")]
[JsonRequired]
internal ulong AssetID { get; private init; }
[JsonConstructor]
protected AssetInInventory() { }
internal AssetInInventory(Asset asset) : base(asset) {
ArgumentNullException.ThrowIfNull(asset);
@@ -35,8 +42,5 @@ internal class AssetInInventory : AssetForMatching {
AssetID = asset.AssetID;
}
[JsonConstructor]
private AssetInInventory() { }
internal Asset ToAsset() => new(Asset.SteamAppID, Asset.SteamCommunityContextID, ClassID, Amount, tradable: Tradable, assetID: AssetID, realAppID: RealAppID, type: Type, rarity: Rarity);
internal Asset ToAsset() => new(Asset.SteamAppID, Asset.SteamCommunityContextID, ClassID, Amount, new InventoryDescription(Asset.SteamAppID, ClassID, tradable: Tradable, realAppID: RealAppID, type: Type, rarity: Rarity), AssetID);
}

View File

@@ -0,0 +1,44 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// |
// http://www.apache.org/licenses/LICENSE-2.0
// |
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
#pragma warning disable CA1812 // False positive, the class is used during json deserialization
[SuppressMessage("ReSharper", "ClassCannotBeInstantiated")]
internal sealed class BackgroundTaskResponse {
[JsonInclude]
[JsonRequired]
internal bool Finished { get; private init; }
[JsonInclude]
[JsonRequired]
internal Guid RequestID { get; private init; }
[JsonConstructor]
private BackgroundTaskResponse() { }
}
#pragma warning restore CA1812 // False positive, the class is used during json deserialization

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,22 +22,22 @@
// limitations under the License.
using System;
using Newtonsoft.Json;
using System.Text.Json.Serialization;
using SteamKit2;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
internal sealed class HeartBeatRequest {
[JsonProperty(Required = Required.Always)]
internal readonly Guid Guid;
[JsonInclude]
[JsonRequired]
internal Guid Guid { get; private init; }
[JsonProperty(Required = Required.Always)]
internal readonly ulong SteamID;
[JsonInclude]
[JsonRequired]
internal ulong SteamID { get; private init; }
internal HeartBeatRequest(Guid guid, ulong steamID) {
if (guid == Guid.Empty) {
throw new ArgumentOutOfRangeException(nameof(guid));
}
ArgumentOutOfRangeException.ThrowIfEqual(guid, Guid.Empty);
if ((steamID == 0) || !new SteamID(steamID).IsIndividualAccount) {
throw new ArgumentOutOfRangeException(nameof(steamID));

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,29 +25,31 @@ using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Text.Json.Serialization;
using ArchiSteamFarm.Steam.Data;
using Newtonsoft.Json;
using SteamKit2;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
internal sealed class InventoriesRequest {
[JsonProperty(Required = Required.Always)]
internal readonly Guid Guid;
[JsonInclude]
[JsonRequired]
internal Guid Guid { get; private init; }
[JsonProperty(Required = Required.Always)]
internal readonly ImmutableHashSet<AssetForMatching> Inventory;
[JsonInclude]
[JsonRequired]
internal ImmutableHashSet<AssetForMatching> Inventory { get; private init; }
[JsonProperty(Required = Required.Always)]
internal readonly ImmutableHashSet<Asset.EType> MatchableTypes;
[JsonInclude]
[JsonRequired]
internal ImmutableHashSet<EAssetType> MatchableTypes { get; private init; }
[JsonProperty(Required = Required.Always)]
internal readonly ulong SteamID;
[JsonInclude]
[JsonRequired]
internal ulong SteamID { get; private init; }
internal InventoriesRequest(Guid guid, ulong steamID, IReadOnlyCollection<Asset> inventory, IReadOnlyCollection<Asset.EType> matchableTypes) {
if (guid == Guid.Empty) {
throw new ArgumentOutOfRangeException(nameof(guid));
}
internal InventoriesRequest(Guid guid, ulong steamID, IReadOnlyCollection<Asset> inventory, IReadOnlyCollection<EAssetType> matchableTypes) {
ArgumentOutOfRangeException.ThrowIfEqual(guid, Guid.Empty);
if ((steamID == 0) || !new SteamID(steamID).IsIndividualAccount) {
throw new ArgumentOutOfRangeException(nameof(steamID));

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,47 +23,48 @@
using System.Collections.Immutable;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
using ArchiSteamFarm.Steam.Data;
using Newtonsoft.Json;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
#pragma warning disable CA1812 // False positive, the class is used during json deserialization
[SuppressMessage("ReSharper", "ClassCannotBeInstantiated")]
internal sealed class ListedUser {
[JsonProperty(Required = Required.Always)]
internal readonly ImmutableHashSet<AssetInInventory> Assets = ImmutableHashSet<AssetInInventory>.Empty;
[JsonInclude]
[JsonRequired]
internal ImmutableHashSet<AssetInInventory> Assets { get; private init; } = [];
[JsonProperty(Required = Required.Always)]
internal readonly ImmutableHashSet<Asset.EType> MatchableTypes = ImmutableHashSet<Asset.EType>.Empty;
[JsonInclude]
[JsonRequired]
internal ImmutableHashSet<EAssetType> MatchableTypes { get; private init; } = [];
#pragma warning disable CS0649 // False positive, the field is used during json deserialization
[JsonProperty(Required = Required.Always)]
internal readonly bool MatchEverything;
#pragma warning restore CS0649 // False positive, the field is used during json deserialization
[JsonInclude]
[JsonRequired]
internal bool MatchEverything { get; private init; }
#pragma warning disable CS0649 // False positive, the field is used during json deserialization
[JsonProperty(Required = Required.Always)]
internal readonly byte MaxTradeHoldDuration;
#pragma warning restore CS0649 // False positive, the field is used during json deserialization
[JsonInclude]
[JsonRequired]
internal byte MaxTradeHoldDuration { get; private init; }
#pragma warning disable CS0649 // False positive, the field is used during json deserialization
[JsonProperty(Required = Required.AllowNull)]
internal readonly string? Nickname;
#pragma warning restore CS0649 // False positive, the field is used during json deserialization
[JsonInclude]
internal string? Nickname { get; private init; }
#pragma warning disable CS0649 // False positive, the field is used during json deserialization
[JsonProperty(Required = Required.Always)]
internal readonly ulong SteamID;
#pragma warning restore CS0649 // False positive, the field is used during json deserialization
[JsonInclude]
[JsonRequired]
internal ulong SteamID { get; private init; }
#pragma warning disable CS0649 // False positive, the field is used during json deserialization
[JsonProperty(Required = Required.Always)]
internal readonly uint TotalInventoryCount;
#pragma warning restore CS0649 // False positive, the field is used during json deserialization
[JsonInclude]
[JsonRequired]
internal uint TotalGamesCount { get; private init; }
[JsonProperty(Required = Required.Always)]
internal readonly string TradeToken = "";
[JsonInclude]
[JsonRequired]
internal uint TotalInventoryCount { get; private init; }
[JsonInclude]
[JsonRequired]
internal string TradeToken { get; private init; } = "";
[JsonConstructor]
private ListedUser() { }

View File

@@ -0,0 +1,56 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// |
// http://www.apache.org/licenses/LICENSE-2.0
// |
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
using ArchiSteamFarm.Steam.Data;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
#pragma warning disable CA1812 // False positive, the class is used during json deserialization
[SuppressMessage("ReSharper", "ClassCannotBeInstantiated")]
internal sealed class SetPart {
[JsonInclude]
[JsonPropertyName("c")]
[JsonRequired]
internal ulong ClassID { get; private init; }
[JsonInclude]
[JsonPropertyName("r")]
[JsonRequired]
internal EAssetRarity Rarity { get; private init; }
[JsonInclude]
[JsonPropertyName("e")]
[JsonRequired]
internal uint RealAppID { get; private init; }
[JsonInclude]
[JsonPropertyName("p")]
[JsonRequired]
internal EAssetType Type { get; private init; }
[JsonConstructor]
private SetPart() { }
}
#pragma warning restore CA1812 // False positive, the class is used during json deserialization

View File

@@ -0,0 +1,70 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// |
// http://www.apache.org/licenses/LICENSE-2.0
// |
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Text.Json.Serialization;
using ArchiSteamFarm.Steam.Data;
using SteamKit2;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Data;
internal sealed class SetPartsRequest {
[JsonInclude]
[JsonRequired]
internal Guid Guid { get; private init; }
[JsonInclude]
[JsonRequired]
internal ImmutableHashSet<EAssetType> MatchableTypes { get; private init; }
[JsonInclude]
[JsonRequired]
internal ImmutableHashSet<uint> RealAppIDs { get; private init; }
[JsonInclude]
[JsonRequired]
internal ulong SteamID { get; private init; }
internal SetPartsRequest(Guid guid, ulong steamID, IReadOnlyCollection<EAssetType> matchableTypes, IReadOnlyCollection<uint> realAppIDs) {
ArgumentOutOfRangeException.ThrowIfEqual(guid, Guid.Empty);
if ((steamID == 0) || !new SteamID(steamID).IsIndividualAccount) {
throw new ArgumentOutOfRangeException(nameof(steamID));
}
if ((matchableTypes == null) || (matchableTypes.Count == 0)) {
throw new ArgumentNullException(nameof(matchableTypes));
}
if ((realAppIDs == null) || (realAppIDs.Count == 0)) {
throw new ArgumentNullException(nameof(realAppIDs));
}
Guid = guid;
SteamID = steamID;
MatchableTypes = matchableTypes.ToImmutableHashSet();
RealAppIDs = realAppIDs.ToImmutableHashSet();
}
}

View File

@@ -1,10 +1,12 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2023 Łukasz "JustArchi" Domeradzki
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,6 +27,8 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Composition;
using System.Linq;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using ArchiSteamFarm.Core;
using ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Localization;
@@ -33,8 +37,6 @@ using ArchiSteamFarm.Plugins.Interfaces;
using ArchiSteamFarm.Steam;
using ArchiSteamFarm.Steam.Exchange;
using ArchiSteamFarm.Steam.Integration.Callbacks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SteamKit2;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher;
@@ -43,10 +45,10 @@ namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher;
internal sealed class ItemsMatcherPlugin : OfficialPlugin, IBot, IBotCommand2, IBotIdentity, IBotModules, IBotTradeOfferResults, IBotUserNotifications {
internal static readonly ConcurrentDictionary<Bot, RemoteCommunication> RemoteCommunications = new();
[JsonProperty]
[JsonInclude]
public override string Name => nameof(ItemsMatcherPlugin);
[JsonProperty]
[JsonInclude]
public override Version Version => typeof(ItemsMatcherPlugin).Assembly.GetName().Version ?? throw new InvalidOperationException(nameof(Version));
public async Task<string?> OnBotCommand(Bot bot, EAccess access, string message, string[] args, ulong steamID = 0) {
@@ -56,9 +58,7 @@ internal sealed class ItemsMatcherPlugin : OfficialPlugin, IBot, IBotCommand2, I
throw new InvalidEnumArgumentException(nameof(access), (int) access, typeof(EAccess));
}
if (string.IsNullOrEmpty(message)) {
throw new ArgumentNullException(nameof(message));
}
ArgumentException.ThrowIfNullOrEmpty(message);
if ((args == null) || (args.Length == 0)) {
throw new ArgumentNullException(nameof(args));
@@ -85,7 +85,7 @@ internal sealed class ItemsMatcherPlugin : OfficialPlugin, IBot, IBotCommand2, I
return Task.CompletedTask;
}
public async Task OnBotInitModules(Bot bot, IReadOnlyDictionary<string, JToken>? additionalConfigProperties = null) {
public async Task OnBotInitModules(Bot bot, IReadOnlyDictionary<string, JsonElement>? additionalConfigProperties = null) {
ArgumentNullException.ThrowIfNull(bot);
if (RemoteCommunications.TryRemove(bot, out RemoteCommunication? remoteCommunication)) {

View File

@@ -1,78 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Localization {
using System;
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Strings {
private static System.Resources.ResourceManager resourceMan;
private static System.Globalization.CultureInfo resourceCulture;
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Strings() {
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
internal static System.Resources.ResourceManager ResourceManager {
get {
if (object.Equals(null, resourceMan)) {
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Localization.Strings", typeof(Strings).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
internal static System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
internal static string ActivelyMatchingItemsRound {
get {
return ResourceManager.GetString("ActivelyMatchingItemsRound", resourceCulture);
}
}
internal static string ListingAnnouncing {
get {
return ResourceManager.GetString("ListingAnnouncing", resourceCulture);
}
}
internal static string MatchingFound {
get {
return ResourceManager.GetString("MatchingFound", resourceCulture);
}
}
internal static string TradeOfferFailed {
get {
return ResourceManager.GetString("TradeOfferFailed", resourceCulture);
}
}
internal static string ActivelyMatchingSomeConfirmationsFailed {
get {
return ResourceManager.GetString("ActivelyMatchingSomeConfirmationsFailed", resourceCulture);
}
}
}
}

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Neke konfirmacije su neuspješne, odprilike {0} od {1} razmjena je poslano uspješno.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,17 +53,31 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>Matched totalt {0} sæt denne runde.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Annoncerer {0} ({1}) med inventar lavet af {2} varer i alt på listen...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Matchede i alt {0} varer med bot {1} ({2}), sender handelstilbud...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Mislykkedes at sende et handelstilbud til bot {0} ({1}), går videre...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Nogle bekræftelser mislykkedes, ca. {0} ud af {1} handler blev sendt med succes.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,17 +53,27 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>Ο τελικός αριθμός συνόλων που έχουν ταιριάξει είναι {0}, αυτόν τον γύρο.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Ανακοίνωση {0} ({1}) με απογραφή από στοιχεία {2} συνολικά στην καταχώρηση...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Ταίριαξε ένα σύνολο αντικειμένων {0} με bot {1} ({2}), στέλνοντας προσφορά συναλλαγής...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Αποτυχία αποστολής μιας προσφοράς συναλλαγής στο bot {0} ({1}), με κίνηση...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,19 +53,21 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>در این دور جمعاً {0} ست مطابقت داده شد.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>اینونتوری {0}({1}) دارای {2} آیتم است...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>در مجموع {0} مورد با ربات {1} ({2}) مطابقت داده شد، درحال ارسال ترید...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,17 +53,31 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>{0} sets ont été matché pendant ce round.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Annonce de {0} ({1}) avec l'inventaire réalisé à partir de {2} au total sur la liste...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Correspondance totale de {0} éléments avec le bot {1} ({2}), envoi de l'offre d'échange...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Impossible d'envoyer une offre d'échange au bot {0} ({1}), en cours ...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Certaines confirmations ont échoué, environ {0} sur les transactions {1} ont été envoyées avec succès.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,31 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>Berhasil mencocokkan total {0} set pada putaran ini.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Mengumumkan {0} ({1}) dengan inventaris yang terdiri dari {2} item di total pada daftar...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Berhasil mencocokkan total {0} item dengan bot {1} ({2}), mengirimkan penawaran perdagangan...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Gagal mengirimkan penawaran perdagangan ke bot {0} ({1}), melanjutkan...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Beberapa konfirmasi gagal, sekitar {0} dari {1} penawaran perdagangan berhasil dikirim.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -53,17 +53,31 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>Abbinati un totale di {0} set questo round.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Annuncio {0} ({1}) con inventario fatto di elementi {2} in totale sulla lista...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Abbinato un totale di {0} elementi tramite bot {1} ({2}), inviando un'offerta commerciale...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Impossibile inviare un'offerta di scambio al bot {0} ({1}), proseguendo...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Alcune conferme non sono riuscite, circa {0} su {1} sono state inviate con successo.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -53,17 +53,31 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>すべてのうち、{0} セットにマッチしたためこのラウンドを終了します。</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>{0}{1})をリスト上でアナウンス中です。インベントリには合計 {2} 個のアイテムが含まれています…</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>ボット {1}{2})と合計 {0} 個のアイテムが一致しました。トレードオファーを送信しています…</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>ボット {0} ({1})にトレードオファーを送信できませんでした。次に進みます…</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>いくつかの確認に失敗しました。 {0} の取引から約 {1} が正常に送信されました。</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,25 +53,23 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>{0} conjunto(s) foi(foram) associado(s) nessa rodada.</value>
<value>Total de {0} conjunto(s) correspondido(s) nesta rodada.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Anunciando {0} ({1}) com um inventário composto pelo total de {2} itens listados...</value>
<value>Anunciando {0} ({1}) com um inventário de {2} itens no total na listagem...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>{0} item(ns) correspondidos(s) com o bot {1} ({2}), enviando oferta de troca...</value>
<value>{0} item(ns) correspondido(s) com o bot {1} ({2}), enviando proposta de troca...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
@@ -79,7 +77,7 @@
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Algumas confirmações falharam, cerca de {0} de {1} operações foram enviadas com sucesso.</value>
<value>Algumas confirmações falharam, aproximadamente {0} de {1} trocas foram enviadas com sucesso.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,17 +53,31 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>Potivim un total de {0} in această rundă.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Anunțând {0} ({1}) cu inventarul făcut din {2} articole în total pe listă...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Se potrivește cu un total de {0} elemente cu botul {1} ({2}), se trimite oferta de schimb...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Nu s-a putut trimite o cerere de schimb bot-ului {0} ({1}), trecem peste...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Unele confirmări au eșuat, aproximativ {0} din {1} de schimburi au fost trimise cu succes.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,17 +53,31 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>Celkovo porovnaných {0} sad karet.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Oznámenie {0} ({1}) s inventárom v ktorom je {2} položiek na zozname...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Zhodné s celkom {0} položiek s botom {1} ({2}), posielanie obchodnej ponuky...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Nepodarilo se odoslať obchodnú ponuku pre bota {0} ({1}), pokračujem...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Niektoré potvrdenia sa nepodarili, úspešne bolo poslaných približne {0} z {1} obchodov.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,31 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>Matchade totalt {0} sets denna runda.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Meddela {0} ({1}) med lager gjorda av {2} objekt totalt på listan...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Matchade totalt {0} objekt med bot {1} ({2}), skickar handels-erbjudande...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Det gick inte att skicka ett byteserbjudande till bot {0} ({1}), går vidare...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Vissa bekräftelser har misslyckats, cirka {0} av {1} skickades framgångsrikt.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -0,0 +1,191 @@
// ----------------------------------------------------------------------------------------------
// _ _ _ ____ _ _____
// / \ _ __ ___ | |__ (_)/ ___| | |_ ___ __ _ _ __ ___ | ___|__ _ _ __ _ __ ___
// / _ \ | '__|/ __|| '_ \ | |\___ \ | __|/ _ \ / _` || '_ ` _ \ | |_ / _` || '__|| '_ ` _ \
// / ___ \ | | | (__ | | | || | ___) || |_| __/| (_| || | | | | || _|| (_| || | | | | | | |
// /_/ \_\|_| \___||_| |_||_||____/ \__|\___| \__,_||_| |_| |_||_| \__,_||_| |_| |_| |_|
// ----------------------------------------------------------------------------------------------
// |
// Copyright 2015-2025 Łukasz "JustArchi" Domeradzki
// Contact: JustArchi@JustArchi.net
// |
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// |
// http://www.apache.org/licenses/LICENSE-2.0
// |
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
using System;
using System.Collections.Generic;
using System.Linq;
using ArchiSteamFarm.Steam.Data;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher;
internal static class MatchingUtilities {
internal static (Dictionary<(uint RealAppID, EAssetType Type, EAssetRarity Rarity), Dictionary<ulong, uint>> FullState, Dictionary<(uint RealAppID, EAssetType Type, EAssetRarity Rarity), Dictionary<ulong, uint>> TradableState) GetDividedInventoryState(IReadOnlyCollection<Asset> inventory) {
if ((inventory == null) || (inventory.Count == 0)) {
throw new ArgumentNullException(nameof(inventory));
}
Dictionary<(uint RealAppID, EAssetType Type, EAssetRarity Rarity), Dictionary<ulong, uint>> fullState = new();
Dictionary<(uint RealAppID, EAssetType Type, EAssetRarity Rarity), Dictionary<ulong, uint>> tradableState = new();
foreach (Asset item in inventory) {
(uint RealAppID, EAssetType Type, EAssetRarity Rarity) key = (item.RealAppID, item.Type, item.Rarity);
if (fullState.TryGetValue(key, out Dictionary<ulong, uint>? fullSet)) {
fullSet[item.ClassID] = fullSet.GetValueOrDefault(item.ClassID) + item.Amount;
} else {
fullState[key] = new Dictionary<ulong, uint> { { item.ClassID, item.Amount } };
}
if (!item.Tradable) {
continue;
}
if (tradableState.TryGetValue(key, out Dictionary<ulong, uint>? tradableSet)) {
tradableSet[item.ClassID] = tradableSet.GetValueOrDefault(item.ClassID) + item.Amount;
} else {
tradableState[key] = new Dictionary<ulong, uint> { { item.ClassID, item.Amount } };
}
}
return (fullState, tradableState);
}
internal static Dictionary<(uint RealAppID, EAssetType Type, EAssetRarity Rarity), Dictionary<ulong, uint>> GetTradableInventoryState(IReadOnlyCollection<Asset> inventory) {
if ((inventory == null) || (inventory.Count == 0)) {
throw new ArgumentNullException(nameof(inventory));
}
Dictionary<(uint RealAppID, EAssetType Type, EAssetRarity Rarity), Dictionary<ulong, uint>> tradableState = new();
foreach (Asset item in inventory.Where(static item => item.Tradable)) {
(uint RealAppID, EAssetType Type, EAssetRarity Rarity) key = (item.RealAppID, item.Type, item.Rarity);
if (tradableState.TryGetValue(key, out Dictionary<ulong, uint>? tradableSet)) {
tradableSet[item.ClassID] = tradableSet.GetValueOrDefault(item.ClassID) + item.Amount;
} else {
tradableState[key] = new Dictionary<ulong, uint> { { item.ClassID, item.Amount } };
}
}
return tradableState;
}
internal static HashSet<Asset> GetTradableItemsFromInventory(IReadOnlyCollection<Asset> inventory, IReadOnlyDictionary<ulong, uint> classIDs, bool randomize = false) {
if ((inventory == null) || (inventory.Count == 0)) {
throw new ArgumentNullException(nameof(inventory));
}
if ((classIDs == null) || (classIDs.Count == 0)) {
throw new ArgumentNullException(nameof(classIDs));
}
// We need a copy of classIDs passed since we're going to manipulate them
Dictionary<ulong, uint> classIDsState = classIDs.ToDictionary();
HashSet<Asset> result = [];
IEnumerable<Asset> items = inventory.Where(static item => item.Tradable);
// Randomization helps to decrease "items no longer available" in regards to sending offers to other users
if (randomize) {
#pragma warning disable CA5394 // This call isn't used in a security-sensitive manner
items = items.Where(item => classIDsState.ContainsKey(item.ClassID)).OrderBy(static _ => Random.Shared.Next());
#pragma warning restore CA5394 // This call isn't used in a security-sensitive manner
}
foreach (Asset item in items) {
if (!classIDsState.TryGetValue(item.ClassID, out uint amount)) {
continue;
}
if (amount >= item.Amount) {
result.Add(item);
if (amount > item.Amount) {
classIDsState[item.ClassID] = amount - item.Amount;
} else {
classIDsState.Remove(item.ClassID);
if (classIDsState.Count == 0) {
return result;
}
}
} else {
Asset itemToAdd = item.DeepClone();
itemToAdd.Amount = amount;
result.Add(itemToAdd);
classIDsState.Remove(itemToAdd.ClassID);
if (classIDsState.Count == 0) {
return result;
}
}
}
// If we got here it means we still have classIDs to match
throw new InvalidOperationException(nameof(classIDs));
}
internal static bool IsEmptyForMatching(IReadOnlyDictionary<(uint RealAppID, EAssetType Type, EAssetRarity Rarity), Dictionary<ulong, uint>> fullState, IReadOnlyDictionary<(uint RealAppID, EAssetType Type, EAssetRarity Rarity), Dictionary<ulong, uint>> tradableState) {
ArgumentNullException.ThrowIfNull(fullState);
ArgumentNullException.ThrowIfNull(tradableState);
foreach (((uint RealAppID, EAssetType Type, EAssetRarity Rarity) set, IReadOnlyDictionary<ulong, uint> state) in tradableState) {
if (!fullState.TryGetValue(set, out Dictionary<ulong, uint>? fullSet) || (fullSet.Count == 0)) {
throw new InvalidOperationException(nameof(fullSet));
}
if (!IsEmptyForMatching(fullSet, state)) {
return false;
}
}
// We didn't find any matchable combinations, so this inventory is empty
return true;
}
internal static bool IsEmptyForMatching(IReadOnlyDictionary<ulong, uint> fullSet, IReadOnlyDictionary<ulong, uint> tradableSet) {
ArgumentNullException.ThrowIfNull(fullSet);
ArgumentNullException.ThrowIfNull(tradableSet);
foreach ((ulong classID, uint amount) in tradableSet) {
switch (amount) {
case 0:
// No tradable items, this should never happen, dictionary should not have this key to begin with
throw new InvalidOperationException(nameof(amount));
case 1:
// Single tradable item, can be matchable or not depending on the rest of the inventory
if (!fullSet.TryGetValue(classID, out uint fullAmount) || (fullAmount == 0)) {
throw new InvalidOperationException(nameof(fullAmount));
}
if (fullAmount > 1) {
// If we have a single tradable item but more than 1 in total, this is matchable
return false;
}
// A single exclusive tradable item is not matchable, continue
continue;
default:
// Any other combination of tradable items is always matchable
return false;
}
}
// We didn't find any matchable combinations, so this inventory is empty
return true;
}
}

View File

@@ -4,34 +4,22 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ConfigureAwaitChecker.Analyzer" PrivateAssets="all" />
<PackageReference Include="JetBrains.Annotations" PrivateAssets="all" />
<PackageReference Include="Newtonsoft.Json" IncludeAssets="compile" />
<PackageReference Include="JetBrains.Annotations.Sources" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" IncludeAssets="compile" />
<PackageReference Include="Microsoft.CodeAnalysis.ResxSourceGenerator" PrivateAssets="all" />
<PackageReference Include="SteamKit2" IncludeAssets="compile" />
<PackageReference Include="System.Composition.AttributedModel" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net481' OR '$(TargetFramework)' == 'netstandard2.1'">
<!-- Madness is already included in netf build of ASF, so we don't need to emit it ourselves -->
<PackageReference Update="JustArchiNET.Madness" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ArchiSteamFarm\ArchiSteamFarm.csproj" ExcludeAssets="all" Private="false" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Localization\Strings.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Update="Localization\Strings.resx" EmitFormatMethods="true" />
</ItemGroup>
<ItemGroup>
<Compile Update="Localization\Strings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Strings.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Copy SourceFolders="$(TargetDir)" DestinationFolder="..\ArchiSteamFarm\bin\$(Configuration)\$(TargetFramework)\plugins\$(AssemblyName)\" SkipUnchangedFiles="true" />
</Target>
</Project>

Some files were not shown because too many files have changed in this diff Show More