Releases: supabase-community/supabase-kt
3.1.0-beta-2
3.1.0-beta-1
Changes
Auth
- Fix OAuth linking on JS/Wasm JS by @jan-tennert in d7dd01a
Realtime
- Improve behavior for realtime channel creation and improve docs by @jan-tennert in #831
If a channel with the samechannelId
exists,Realtime#channel()
will return it instead of creating a new one. The channel will now also be saved after callingRealtime#channel()
instead at subscribing. - Add pull token approach to realtime by @jan-tennert in #807
- Prevent sending expired tokens to realtime by @jan-tennert in #808
PostgREST
- Add custom exception for PostgREST API errors and include
HttpResponse
inRestException
s by @jan-tennert in #789- All PostgREST rest exceptions are a
PostgrestRestException
, which contain PostgREST fields likehint
,code
. - All
RestException
s now contain the fullHttpResponse
as a property.
- All PostgREST rest exceptions are a
Docs
- Update
supabaseModule.kt
references by @emmanuel-ferdman in #823
Compose Auth
- Make the dialog type for the Native Google Sign In configurable by @jan-tennert in #832
Newtype
parameter forrememberSignInWithGoogle()
, only functional on Android.
New Contributors
- @emmanuel-ferdman made their first contribution in #823
3.0.3
3.0.2
Changes
Core
- Add support for Ktor
3.0.1
by @jan-tennert in #780
Auth
- Add IDToken support for the
Kakao
OAuthProvider
by @jan-tennert in #776 - Add missing
AuthErrorCode
s:SessionExpired
,RefreshTokenNotFound
,RefreshTokenAlreadyUsed
by @jan-tennert in #775
Compose Auth & Compose Auth UI
- Add support for Compose
1.7.0
by @jan-tennert in #759
Realtime
- Remove additional
toMap()
call forRealtime#subscriptions
to prevent rare exceptions by @jan-tennert in #779
Coil3 Integration
- Add support for Coil3 version
3.0.2
by @jan-tennert in #780
3.0.1
Changes
Core
- Add support for Kotlin
2.0.21
- Add support for Ktor
3.0.0
Auth
- Add HTTP Callback Server support for
mingwx64
(untested)
Coil3 Integration
- Add support for Coil3 version
3.0.0-rc01
3.0.0
Note
Documentation will update shortly.
Migration guide
Ktor 3
Starting with 3.0.0
, supabase-kt now uses Ktor 3. This brings WASM support, but projects using Ktor 2 will be incompatible.
Ktor 3.0.0-rc-1
is used in this release.
Changes
Rename gotrue-kt to auth-kt and rename the package name
- The
gotrue-kt
module is no longer being published starting with version3.0.0
. Use the newauth-kt
module. - Rename
auth-kt
package name fromio.github.jan.supabase.gotrue
toio.github.jan.supabase.auth
.
Support for WASM-JS
New wasm-js
target for supabase-kt, auth-kt, storage-kt, functions-kt, postgrest-kt, realtime-kt, compose-auth, compose-auth-ui, apollo-graphql and the new coil3-integration by @jan-tennert in #311
New plugin: coil3-integration
Support for Coil3 and all Compose Multiplatform targets under a new plugin by @jan-tennert in #428. Checkout the documentation.
The "old" coil 2 integration is still available and hasn't changed.
Auth
- Remove
Auth#modifyUser()
- Remove
MfaApi#loggedInUsingMfa
,MfaApi#loggedInUsingMfaFlow
,MfaApi#isMfaEnabled
,MfaApi#isMfaEnabledFlow
- Refactor SessionStatus by @jan-tennert in #725
- Move
SessionStatus
to its ownstatus
package - Rename
SessionStatus#LoadingFromStorage
toSessionStatus#Initializing
- Rename and refactor
SessionStatus#NetworkError
toSessionStatus#RefreshFailure(cause)
Note: The cause can be eitherRefreshFailureCause#NetworkError
orRefreshFailureCause#InternalServerError
. In both cases the refreshing will be retried and the session not cleared from storage. During that time, the session is obviously not usable.
- Move
Apollo GraphQL
- Migrate to Apollo GraphQL 4.0.0 by @jan-tennert in #692
Storage
Rework the uploading & downloading methods by @jan-tennert in #729
- Each uploading method (upload, update, uploadAsFlow ...) now has a
options
DSL. Currently, you can configure three things:
- Whether to upsert or not
- The content type (will still be inferred like in 2.X if null)
- Additional HTTP request configurations
Example:
supabase.storage.from("test").upload("test.txt", "Hello World!".encodeToByteArray()) {
contentType = ContentType.Text.Plain
upsert = true
}
- Each downloading method (downloadPublic, downloadAuthenticated, downloadPublicAsFlow, ...) now has a
options
DSL. Currently you can only configure the image transformation
Example:
supabase.storage.from("test").downloadAuthenticated("test.jpg") {
transform {
size(100, 100)
}
}
- Uploading options such as
upsert
orcontentType
for resumable uploads are now getting cached. If an upload is resumed, the options from the initial upload will be used.
Postgrest
- Move all optional function parameters for
PostgrestQueryBuilder#select()
,insert()
,upsert()
andPostgrest#rpc()
to the request DSL by @jan-tennert in #716
Example:
supabase.from("table").upsert(myValue) {
defaultToNull = false
ignoreDuplicates = false
}
- Move the non-parameter variant of
Postgrest#rpc()
to thePostgrest
interface. It was an extension function before by @jan-tennert in #726 - Add a non-generic parameter variant of
Postgrest#rpc()
to thePostgrest
interface. This function will be called from the existing generic variant by @jan-tennert in #726 - Add a
schema
property to thePostgrest#rpc
DSL by @jan-tennert in #716 - Fix
insert
andupsert
requests failing when providing an emptyJsonObject
by @jan-tennert in #742
Realtime
- Refactor internal event system for maintainability and readability by @jan-tennert #696
RealtimeChannel#presenceChangeFlow
is now a member function ofRealtimeChannel
. (It was an extension function before) by @jan-tennert in #697- Move the implementation for
RealtimeChannel#broadcastFlow
andRealtimeChannel#postgresChangeFlow
to a member function ofRealtimeChannel
. (Doesn't change anything in the public API) by @jan-tennert in #697 - Make the setter of
PostgresChangeFilter
private
3.0.0-rc-2
Changes
Storage
- Add missing option builders for resumable uploads and cache
upsert
andcontentType
options by @jan-tennert in #739
Postgrest
- Fix postgrest request failing when providing an empty
JsonObject
forinsert
orupsert
by @jan-tennert in #742
3.0.0-rc-1
Changes
Auth
- Refactor SessionStatus by @jan-tennert in #725
- Move
SessionStatus
to its ownstatus
package - Rename
SessionStatus#LoadingFromStorage
toSessionStatus#Initializing
- Rename and refactor
SessionStatus#NetworkError
toSessionStatus#RefreshFailure(cause)
Note: The cause can be eitherRefreshFailureCause#NetworkError
orRefreshFailureCause#InternalServerError
. In both cases the refreshing will be retried and the session not cleared from storage. During that time, the session is obviously not usable.
- Move
3.0.0-beta-1
Note
Because of the amount of breaking changes in the 2.7.0
beta, I decided to merge this version into the planned 3.0.0
version.
2.7.0
will no longer release.
This changelog is a combination of 2.7.0-beta-1
and new breaking changes.
Ktor 3
Starting with 2.7.0
, supabase-kt now uses Ktor 3. This brings WASM support, but projects using Ktor 2 will be incompatible.
Ktor 3.0.0-rc-1
is used in this release.
Changes
Rename gotrue-kt to auth-kt and rename the package name
- The
gotrue-kt
module is no longer being published starting with version3.0.0
. Use the newauth-kt
module. - Rename
auth-kt
package name fromio.github.jan.supabase.gotrue
toio.github.jan.supabase.auth
.
Support for WASM-JS
New wasm-js
target for supabase-kt, auth-kt, storage-kt, functions-kt, postgrest-kt, realtime-kt, compose-auth, compose-auth-ui, apollo-graphql and the new coil3-integration by @jan-tennert in #311
New plugin: coil3-integration
Support for Coil3 and all Compose Multiplatform targets under a new plugin by @jan-tennert in #428. Checkout the documentation.
The "old" coil 2 integration is still available and hasn't changed.
Auth
- Remove
Auth#modifyUser()
- Remove
MfaApi#loggedInUsingMfa
,MfaApi#loggedInUsingMfaFlow
,MfaApi#isMfaEnabled
,MfaApi#isMfaEnabledFlow
Apollo GraphQL
- Migrate to Apollo GraphQL 4.0.0 by @jan-tennert in #692
Storage
Rework the uploading & downloading methods by @jan-tennert in #729
- Each uploading method (upload, update, uploadAsFlow ...) now has a
options
DSL. Currently you can configure three things:
- Whether to upsert or not
- The content type (will still be inferred like in 2.X if null)
- Additional HTTP request configurations
Example:
supabase.storage.from("test").upload("test.txt", "Hello World!".encodeToByteArray()) {
contentType = ContentType.Text.Plain
upsert = true
}
- Each downloading method (downloadPublic, downloadAuthenticated, downloadPublicAsFlow, ...) now has a
options
DSL. Currently you can only configure the image transformation
Example:
supabase.storage.from("test").downloadAuthenticated("test.jpg") {
transform {
size(100, 100)
}
}
Postgrest
- Move all optional function parameters for
PostgrestQueryBuilder#select()
,insert()
,upsert()
andPostgrest#rpc()
to the request DSL by @jan-tennert in #716
Example:
supabase.from("table").upsert(myValue) {
defaultToNull = false
ignoreDuplicates = false
}
- Move the non-parameter variant of
Postgrest#rpc()
to thePostgrest
interface. It was an extension function before by @jan-tennert in #726 - Add a non-generic parameter variant of
Postgrest#rpc()
to thePostgrest
interface. This function will be called from the existing generic variant by @jan-tennert in #726 - Add a
schema
property to thePostgrest#rpc
DSL by @jan-tennert in #716
Realtime
- Refactor internal event system for maintainability and readability by @jan-tennert #696
RealtimeChannel#presenceChangeFlow
is now a member function ofRealtimeChannel
. (It was an extension function before) by @jan-tennert in #697- Move the implementation for
RealtimeChannel#broadcastFlow
andRealtimeChannel#postgresChangeFlow
to a member function ofRealtimeChannel
. (Doesn't change anything in the public API) by @jan-tennert in #697 - Make the setter of
PostgresChangeFilter
private
2.6.1
Changes
Postgrest
- Fix custom headers being ignored by
Postgrest#rpc