- kSteam Library Queries! This all-new system interops with Steam Library Collections (while adding new filters), allowing to fetch user's game library with play time and license support.
- Multi-license support! Now kSteam understands package licenses and can apply them to app queries - you can easily get information about multiple copies and who own them.
- [breaking change]:
ExtendedSteamClient
now implements the new abstractSteamClient
interface, while the oldSteamClient
is now internal and namedSteamClientImpl
. - [breaking change]:
extension-client/published-files
: all-newPublishedFile
class that features more mapped variables and improved code style - [breaking change]:
core
: gRPC clientauthenticationClient
renamed toauthentication
core
: move gRPC clients fromextension-client
'sExtendedSteamGrpcClients
toSteamGrpcClients
extension-client/published-files
: implementedgetFilesAppList
andgetFiles
extension-client/published-files
: implementedEPublishedFileInfoMatchingFileType
andEWorkshopFileType
enumsproto-common
: merge protobuf files fromcore
andextension-client
extension-client
: implementedClientCommunication
for remote operationscore
: addClientCommService
,FamilyGroupsService
,GameNotesService
,StoreService
,MobileDeviceService
,UserGameNotesService
toSteamGrpcClients
proto-common
: update to latest protobufsproto-common
: don't embed .proto files in JAR
- [breaking change]
extension-client/guard
:getActiveSessions
now returns anActiveSessions
object that separates current kSteam session and others - [breaking change]
extension-client
: implemented separate databases, "ks_shared.realm" for PICS and "ks_.realm" for user-specific items (personas, for example) - [breaking change]
extension-client
:Persona
is now rebuilt, featuring built-in relationship indicator and newStatus
interface - [breaking change]
core
:trySignInSaved
is now separated intotrySignInSaved(SteamId)
andtrySignInSavedDefault()
core
,extension-client/guard
: replacedwhile (true)
in flows withwhile (currentCoroutineContext().isActive)
extension-client/guard
: fixed generation of revocation signaturecore
: addAccount.getWebCookies
for fetching required cookies to access secured Steam pages in a WebViewextension-client/guard
: makeMobileConfirmationItem.icon
nullable to fix parsing when a confirmation does not have it (phone number changes)дcore-persistence
: addsecureGetSteamIds
and improvesecureContainsIdentity
core
: implemented support for expired sessionscore
: implemented auto-restoration of autologinextension-client
: implemented new rich presence formatter that automatically updates the databaseextension-client
: provideSteamRegexes
to help QR scanning implementations
- [breaking change]
core
: handler system was removed out in favour for static injection of subsystems - [breaking change]
extension-client
: due to handler system being removed, extension is now installed as a Kotlin extension forSteamClient
(seeextendToClient
function) - [breaking change]
extension-client/guard-management
:AwaitingSession
is nowIncomingSession
- [breaking change]
extension-client/guard-management
:IncomingSession
andActiveSession
are nowSerializable
- [breaking change]
extension-client/guard-management
: reworked API to be more consistent - [breaking change]
extension-client/guard
: major refactor of creation/moving process, removing the state system core
: implement shared gRPC client storagecore
: streamlined coroutines scope creation/usagecore
: remove embedded libdeflate for native platforms multi-message support because Okio has support for gzip streams for K/Ncore
: improved performance by using an enum cache forEMsg
andEResult
extension-client
: implement shared gRPC client storage for easy invoking of supported autogenerated RPC interfacesextension-client/guard
: fixed generating signature for revoking sessionsextension-client/guard-management
: added a method to revoke current session- update dependencies
core/account
now tries to search Steam Guard code for all bound extensions- [breaking change]
extension-client
handler extensions for PICS/Library/Guard are now moved back tobruhcollective.itaysonlab.ksteam.handlers
package
Literally everything here is changed, more like a rewrite from scratch, leaving ~25% of original codebase
- [breaking change] massive persistence rework, saved storage from earlier kSteam versions IS NOT COMPATIBLE (including Steam Guard)
- re-enable support for macOS/iOS compilation
- [breaking change] massive rework of extension architecture, simplifying everything to "core"-"implementation" model
- [breaking change] introduce
core-persistence
for managing saved user data core/unifiedmessages
: provide a custom Wire client implementation for simplifying API requests- [breaking change]
core/account
: now uses secure persistence extension-client
: introduce Realm Mobile Database for persisting personas, collections, game metadataextension-client/persona
: optimize flows by using Realm queries- [breaking change]
extension-client/pics
: key-value DB is not required anymore - [breaking change]
extension-client/pics
: massive rework of querying, caching and storing to minimize extra requests extension-client/guard
: now uses secure persistence
- [breaking change] Disable support for macOS/iOS compilation, effectively making kSteam a JVM/Android-only library
- [breaking change] RPC calls now use Wire's gRPC custom client implementation instead of manually passing request/response adapters. This also enables usage of Steam-defined services directly.
extension-pics
: support for 64-bit app IDs, making the client not crashing if providing folders with non-Steam applications- update dependencies
- streamline the version updating procedure by introducing version catalogs
- synchronized protobufs with the latest provided by Steam
- Matches Cobalt
1.0-prototype
build
extension-core/news
: implementgetUpcomingEvents
andgetUpcomingEvents
extension-core/news
: extract friend activity toUserNews
handlerextension-core/news
: reworkActivityFeedEntry
to be more UI-compliantextension-core/news
: other fixes and improvementscore/webapi
: reworked API wrappers to be more modern and Kotlin-friendly- rewrite logging transport, now message value computation is done lazily (and is more likely to be removed by R8/Proguard)
- streamline build process
- provide
android
artifacts as well, with Compose stability bindings and logcat output
- [breaking change] redone
CMClientState
featuring newAwaitingAuthorization
state (connected as a guest) and renamedLogging
toAuthorizing
+Idle
toOffline
core
: improvedCMClientState
exposingcore
: introduceextractAccountIdFromSteam
andtoSteamId
extensions forLong
andInt
core
: fixed rare Web API call crashcore/player
: makegetAchievementsProgress
andgetTopAchievements
public (proto API only for now)extension-pics
: optimized database lists, fixingCallbackSuspendableMap must be initialized first!
crashextension-core/news
: finalized parameters forgetUserNews
, introducedUserNewsFilterScenario
extension-core/news
- updated
kotlin
from1.8.20
to1.8.21
- updated
kotlinx-coroutines
from1.7.0-RC
to1.7.1
- updated
kotlinx-serialization
from1.5.0
to1.5.1
- updated
wire
from4.6.0
to4.7.2
- updated
ktor
from2.3.0
to2.3.1
- [breaking change] updated
wire
from 4.5.3 to 4.6.0 (library consumers must also updatewire
to avoid issues) - [breaking change]
extension-pics
: fixed JSON exception when Steam can give absolutely random order values for collections (Int
->Double
) core
: redone sign in process to extract Steam ID from JWT token (fixes QR login - btw I think that there is an easier way to know SteamID in QR logins...)- synchronized protobufs
- updated
ktor
,kotlinx-serialization
andcoroutines
- [breaking change] Kotlin Multiplatform support for
jvm
,ios
(arm64/simulatorArm64/x64),tvos
(arm64/simulatorArm64/x64) andmacos
(arm64/x64) - [breaking change]
core
:rootFolder
is replaced fromFile
of JVM toPath
of okio - [breaking change]
core
,extension-core
,extension-guard
,extension-pics
: removed AndroidX @Immutable/@Stable annotations from models, this will lead to recomposition issues if used directly in Jetpack Compose (wrap them in UI state objects) - [breaking change]
extension-guard
: migrated from custom protobuf to .mafile-style JSON files (migration tools are provided in a separate module namedextension-guard-proto-migration
) - [breaking change]
core
:ktorProxyConfig
removed in favor of specifying your own KtorHttpClient
usingktor { }
function inkSteam { }
initializator core
: refactored a lot of internal I/O-related codecore
: addedSteamClientConfiguration.AuthPrivateIpLogic.Generate
option for signing in (enabled by default on Apple platforms)extension-guard
: rewritten java.nio/javax.crypto (bytebuffer/hmac) usages with okioextension-pics
: collections are now filtered based on actual owned appidsextension-pics
: optimize metadata updating- replaced
implementation
withapi
inside kSteam modules to preventClassNotFoundException