Skip to content

Releases: supabase-community/supabase-kt

3.1.0-beta-2

18 Jan 10:03
fa6acd7
Compare
Choose a tag to compare
3.1.0-beta-2 Pre-release
Pre-release

Changes

Storage

3.1.0-beta-1

13 Jan 20:56
c84967a
Compare
Choose a tag to compare
3.1.0-beta-1 Pre-release
Pre-release

Changes

Auth

Realtime

  • Improve behavior for realtime channel creation and improve docs by @jan-tennert in #831
    If a channel with the same channelId exists, Realtime#channel() will return it instead of creating a new one. The channel will now also be saved after calling Realtime#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 in RestExceptions by @jan-tennert in #789
    • All PostgREST rest exceptions are a PostgrestRestException, which contain PostgREST fields like hint, code.
    • All RestExceptions now contain the full HttpResponse as a property.

Docs

Compose Auth

  • Make the dialog type for the Native Google Sign In configurable by @jan-tennert in #832
    New type parameter for rememberSignInWithGoogle(), only functional on Android.

New Contributors

3.0.3

04 Dec 18:49
4f822b7
Compare
Choose a tag to compare

Changes

Core

  • Add support for Kotlin 2.1.0
  • Fix build errors on certain targets like wasm-js

Compose Auth & Auth

  • Use okio for hashing instead of krypto
    Let me know if there are any issues!

3.0.2

11 Nov 20:01
e2047f4
Compare
Choose a tag to compare

Changes

Core

Auth

  • Add IDToken support for the Kakao OAuthProvider by @jan-tennert in #776
  • Add missing AuthErrorCodes: SessionExpired, RefreshTokenNotFound, RefreshTokenAlreadyUsed by @jan-tennert in #775

Compose Auth & Compose Auth UI

Realtime

  • Remove additional toMap() call for Realtime#subscriptions to prevent rare exceptions by @jan-tennert in #779

Coil3 Integration

3.0.1

10 Oct 19:09
eafba42
Compare
Choose a tag to compare

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

01 Oct 18:50
21a7779
Compare
Choose a tag to compare

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 version 3.0.0. Use the new auth-kt module.
  • Rename auth-kt package name from io.github.jan.supabase.gotrue to io.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 own status package
    • Rename SessionStatus#LoadingFromStorage to SessionStatus#Initializing
    • Rename and refactor SessionStatus#NetworkError to SessionStatus#RefreshFailure(cause)
      Note: The cause can be either RefreshFailureCause#NetworkError or RefreshFailureCause#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.

Apollo GraphQL

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:
  1. Whether to upsert or not
  2. The content type (will still be inferred like in 2.X if null)
  3. 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 or contentType 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() and Postgrest#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 the Postgrest interface. It was an extension function before by @jan-tennert in #726
  • Add a non-generic parameter variant of Postgrest#rpc() to the Postgrest interface. This function will be called from the existing generic variant by @jan-tennert in #726
  • Add a schema property to the Postgrest#rpc DSL by @jan-tennert in #716
  • Fix insert and upsert requests failing when providing an empty JsonObject 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 of RealtimeChannel. (It was an extension function before) by @jan-tennert in #697
  • Move the implementation for RealtimeChannel#broadcastFlow and RealtimeChannel#postgresChangeFlow to a member function of RealtimeChannel. (Doesn't change anything in the public API) by @jan-tennert in #697
  • Make the setter of PostgresChangeFilter private

3.0.0-rc-2

30 Sep 16:39
28f3c33
Compare
Choose a tag to compare
3.0.0-rc-2 Pre-release
Pre-release

Changes

Storage

  • Add missing option builders for resumable uploads and cache upsert and contentType options by @jan-tennert in #739

Postgrest

  • Fix postgrest request failing when providing an empty JsonObject for insert or upsert by @jan-tennert in #742

3.0.0-rc-1

24 Sep 18:37
97eb197
Compare
Choose a tag to compare
3.0.0-rc-1 Pre-release
Pre-release

Changes

Auth

  • Refactor SessionStatus by @jan-tennert in #725
    • Move SessionStatus to its own status package
    • Rename SessionStatus#LoadingFromStorage to SessionStatus#Initializing
    • Rename and refactor SessionStatus#NetworkError to SessionStatus#RefreshFailure(cause)
      Note: The cause can be either RefreshFailureCause#NetworkError or RefreshFailureCause#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.

3.0.0-beta-1

18 Sep 17:37
5e42c27
Compare
Choose a tag to compare
3.0.0-beta-1 Pre-release
Pre-release

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 version 3.0.0. Use the new auth-kt module.
  • Rename auth-kt package name from io.github.jan.supabase.gotrue to io.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

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:
  1. Whether to upsert or not
  2. The content type (will still be inferred like in 2.X if null)
  3. 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() and Postgrest#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 the Postgrest interface. It was an extension function before by @jan-tennert in #726
  • Add a non-generic parameter variant of Postgrest#rpc() to the Postgrest interface. This function will be called from the existing generic variant by @jan-tennert in #726
  • Add a schema property to the Postgrest#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 of RealtimeChannel. (It was an extension function before) by @jan-tennert in #697
  • Move the implementation for RealtimeChannel#broadcastFlow and RealtimeChannel#postgresChangeFlow to a member function of RealtimeChannel. (Doesn't change anything in the public API) by @jan-tennert in #697
  • Make the setter of PostgresChangeFilter private

2.6.1

05 Sep 09:38
bfdef00
Compare
Choose a tag to compare

Changes

Postgrest

  • Fix custom headers being ignored by Postgrest#rpc