Releases: supabase-community/supabase-kt
Release list
3.7.0-beta-1
A small note
Sorry that the library has been moving slow lately, we currently have some internal stuff to figure out, once that is sorted there will be coming a lot of new features and quality of life changes to the library.
Changes
Core
- Fix append tag by @jan-tennert in #1284
- Add Star History section to README by @hieuwu in #1290
- Fix chat-demo-mpp example not compiling by @cmelchior in #1296
- fix(integration-test): grant table privileges on test_items to PostgREST roles by @PierreVieira in #1333
- implement structured X-Client-Info header by @jan-tennert in #1300
Auth
- Add support for custom OAuth provider by @jan-tennert in #1236
- feat(auth): expose public getter for AuthConfig.httpCallbackConfig on Desktop by @PierreVieira in #1322
- fix(auth): don't throw an error when there is no stored session by @PierreVieira in #1320
- Add API support for Passkeys by @jan-tennert in #1327 under
supabase.auth.passkeys- Note, there is currently no sign-in method. We are still deciding how to move on with Native APIs. Compose Auth support may come as a temporary solution. - Add PKCE support for resend by @jan-tennert in #1337
Realtime
-
Add support for binary broadcasts, httpSend and VSN 2.0.0 by @jan-tennert in #1325
Either use the
ByteArraytype in broadcastFlow:channel.broadcastFlow<ByteArray>("test").collect { println(it.decodeToString()) }
Or use
broadcastFlowwithout a type to receive both types:channel.broadcastFlow("test").collect { when(it.payload) { is BroadcastPayload.Binary -> println(it.payload.data.decodeToString()) is BroadcastPayload.Json -> println(it.payload.value) } }
New method to broadcast messages (the old ones are using this in the implementation if not connected)':
channel.httpSend("myEvent", BroadcastPayload.Binary(byteArrayOf(1,2,3)))
-
Implement deferred disconnect after removing last channel by @jan-tennert in #1276
-
docs(realtime): clarify that maxAttempts governs channel rejoin attempts by @PierreVieira in #1331
-
fix(realtime): log transient websocket reconnects at WARN instead of ERROR by @PierreVieira in #1329
Postgrest
Storage
- test(storage): add download-as-flow tests by @Ehsanul-Hoque in #1317
New Contributors
- @cmelchior made their first contribution in #1296
- @Ehsanul-Hoque made their first contribution in #1317
- @PierreVieira made their first contribution in #1331
3.6.0
Changes
Core
- Fix JS test by @jan-tennert in #1255
- Use inject-based logging approach for configurability and mocking by @jan-tennert in #1254 - You can now provide a custom
SupabaseLoggingProcessorviaSupabaseClientBuilder#defaultLoggingFactory, and also override per plugin. This processor is used to actually log the messages
Realtime
Storage
- fix(storage): preserve full nested path in FileUploadResponse by @Sirelon in #1239
- Fix flaky testUnauthenticatedUploadDenied in CI by @thagikura in #1240
Auth
- fix(auth): Use configured httpPort instead of random port for OAuth callback server by @CristianMG in #1237
- feat: Add support for OAuth 2.1 client admin API by @thagikura in #1222
- Deprecate data property on IDToken.Config by @thagikura in #1249
- fix(auth): don't emit spurious NotAuthenticated on Android lifecycle onStart by @alexeysfh in #1267
Postgrest
- feat: Add automatic retries for transient Postgrest errors by @thagikura in #1246
- fix: expand Cloudflare error codes in retryable status codes by @jan-tennert in #1262
- Refactor PostgrestRequests and add
stripNulls()by @jan-tennert in #1264
Storage
- Add url options to
download,publicUrl,createSignedUrl... by @jan-tennert in #1263 - Note that the transform builder for some methods has been moved e.g.:
supabase.storage.from("bucket").createSignedUrl(..) {
transform { }
}New Contributors
- @Sirelon made their first contribution in #1239
- @CristianMG made their first contribution in #1237
- @alexeysfh made their first contribution in #1267
3.5.0
Changes
Core
- Fix indentation on error lines by @sproctor in #1184
- Separate sub-APIs from parent APIs by @jan-tennert in #1216
- Add integration testing infrastructure with local Supabase by @thagikura in #1217
- Use new unix serializer for timestamps by @jan-tennert in #1215
- Documentation improvements by @jan-tennert in supabase/supabase#44141
Storage
- [Fix] Use options parameter in createOrContinueUpload by @vojta-horanek in #1188
- Add experimental support for vector, analytic buckets & storage, auth improvements by @jan-tennert in #1196
- do not rewrite signed URL to render endpoint for empty transform object by @jan-tennert in #1212
Postgrest
- Add
urlLengthLimitandtimeoutoption to postgrest by @jan-tennert in #1190 - Rename regex match method and add match method by @jan-tennert in #1213
Auth
- Add
currentPasswordtoUserUpdateBuilderby @jan-tennert in #1211 - Fix flaky JS browser test timeout in testLoadingSessionFromStorage by @thagikura in #1233
Functions
- Add streaming support for Edge Function responses by @thagikura in #1228
Realtime
- Add presenceState() query API to RealtimeChannel by @thagikura in #1221
Compose Auth
Because I forgot to put it in the previous changelog:
- The credentials when successfully signing in via native auth are now exposed, so you can access data like name, phone number, etc. This is currently only supported for Native Google Auth on Android and Native Apple Auth on iOS:
is NativeSignInResult.Success -> {
val credential = result.data.google.credential
credential.displayName
credential.phoneNumber
// ...
}New Contributors
- @vojta-horanek made their first contribution in #1188
- @thagikura made their first contribution in #1217
3.4.1
3.4.0
Changes
Core
- Allow nullable types in SupabaseSerializer and Postgrest decoding by @ferhatwi in #1175
- Switch log level for network issue related logs to DEBUG by @jan-tennert in #1159
- Temporary fix for the log level by @jan-tennert in #1169
Auth
- Add redirectUrl to resendEmail by @hieuwu in #1138
- Add X provider by @jan-tennert in #1140
- Add missing properties to
UserInfoandUserMFAFactorby @jan-tennert in #1139 - Add further debug information to requests with an expired token by @jan-tennert in #1149
- Add channel parameter to OTP provider for WhatsApp support by @JOsacky in #1158
- Add
Auth#getClaims()API and migrate to KotlinX IO by @jan-tennert in #1141
Functions
- Fix invalid default rest exception in
Functions#parseErrorResponse()by @jan-tennert in #1142
Storage
- Add
setHeader()to BucketApi by @jan-tennert in #1177
Realtime
- Teardown channels after disconnecting from realtime by @jan-tennert in #1178
3.3.0
Changes
Core
- Update Kotlin to version
3.3.0 - fix: Make OS version optional in headers by @rafsanjani in #1088
- Implement Native Google OAuth iOS in sample by @hieuwu in #1093
- Mask sensitive information in
RestExceptionby @jan-tennert in #1113 - Migrate to new Multiplatform Android Plugin by @jan-tennert in #1013
- Change
body()calls tosafeBody()by @jan-tennert in #1131
Auth
- Refactor platform specific auth initialization by @jan-tennert in #1100
- Add session failsafe and option to require a session for requests by @jan-tennert in #1071
- When trying to make a request with an expired access token, the client will try to force-refresh the session
- There is a new option for all plugins to require the user to be authenticated to make requests with that plugin (instead of falling back to the api key as the access token). Note that some methods ignore this option.
- Add
onErrorparameter tohandleDeeplinkmethods by @jan-tennert in #1136
This is meant to handle exceptions happening when verifying the PKCE code contained in the deeplink - Handle secure email changes in
Auth#verifyby @jan-tennert in #1130
Auth#verifyEmailOtp()will now return anOtpVerifyResult, depending on if the response contains a session. - Expose
Auth#defaultRedirectUrl()by @jan-tennert in #1134 - Fix infinite recursion for expired sessions by @jan-tennert in #1133
- Fix a bug causing the sessionStatus to be set earlier than loading from storage by @jan-tennert in #1128
- Fix
redirect_tourl parameter forresetPasswordForEmail()andgetOAuthUrl()values not being encoded by @jan-tennert in #1125
Realtime
- Classify events with error status code as error events by @jan-tennert in #1123
Compose Auth
- Implement Native Google OAuth for Apple targets by @hieuwu in supabase-community/supabase-kt-plugins#45 also big thanks to @dosier!
Checkout the README for more information
Postgrest
Storage
- Add support for bucket pagination and sorting by @jan-tennert in #1087
New Contributors
- @rafsanjani made their first contribution in #1088
3.3.0-rc-1
Changes
Core
- Update Kotlin to version
3.3.0 - fix: Make OS version optional in headers by @rafsanjani in #1088
- Implement Native Google OAuth iOS in sample by @hieuwu in #1093
- Mask sensitive information in
RestExceptionby @jan-tennert in #1113
Auth
- Refactor platform specific auth initialization by @jan-tennert in #1100
- Add session failsafe and option to require a session for requests by @jan-tennert in #1071
Compose Auth
- Implement Native Google OAuth for Apple targets by @hieuwu in supabase-community/supabase-kt-plugins#45 also big thanks to @dosier!
Checkout the README for more information
Postgrest
Storage
- Add support for bucket pagination and sorting by @jan-tennert in #1087
New Contributors
- @rafsanjani made their first contribution in #1088
3.3.0-beta-1
Changes
Publishing a beta version just to get the Native Google Auth on iOS out for testing & I'm not done implementing features for this version
Core
- fix: Make OS version optional in headers by @rafsanjani in #1088
Compose Auth
- Implement Native Google OAuth for Apple targets by @hieuwu in supabase-community/supabase-kt-plugins#45 also big thanks to @dosier!
Checkout the README for more information
Postgrest
Storage
- Add support for bucket pagination and sorting by @jan-tennert in #1087
New Contributors
- @rafsanjani made their first contribution in #1088
3.2.6
Changes
- Update Kotlin to version
2.2.21
Postgrest
- Do not escape numbers in Postgrest & escape
filterNotby @jan-tennert in #1084
3.2.5
Changes
Auth
- Fix a bug causing auto-refresh to continue in the background (Android) #1060 by @jozefv-git in #1062
- Fix
Auth#linkIdentityWithIdToken()not working correctly by @jan-tennert in 31be2bd
Postgrest
- fix: add presence flag to join payload by @filipecabaco in #1064
- quote and/or escape special characters in all postrest filters by @sproctor in #1066
Docs / README
New Contributors
- @jozefv-git made their first contribution in #1062
- @filipecabaco made their first contribution in #1064