From 3e1d2f6d10b75873bb66f73718e6adc3e24862f8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 4 Mar 2026 15:37:49 +0000 Subject: [PATCH 1/8] Update dependency org.matrix.rustcomponents:sdk-android to v26.03.4 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 07b852ff96..7e42af3778 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -178,7 +178,7 @@ test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version # https://github.com/matrix-org/matrix-rust-components-kotlin/commits/main/sdk/sdk-android/src/main/kotlin/org/matrix/rustcomponents/sdk/matrix_sdk_ffi.kt # All new features should not be implemented in the pull request that upgrades the version, developers should # only fix API breaks and may add some TODOs. -matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.03.1" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.03.4" # Others coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } From 576b8d84849bfd43654c5405a5d11eeeffa2ee01 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 4 Mar 2026 17:12:25 +0100 Subject: [PATCH 2/8] Fix API break. --- .../libraries/matrix/impl/oidc/AccountManagementAction.kt | 6 +++--- .../matrix/impl/oidc/AccountManagementActionKtTest.kt | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementAction.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementAction.kt index f998126e17..76e60e90f4 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementAction.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementAction.kt @@ -14,8 +14,8 @@ import org.matrix.rustcomponents.sdk.AccountManagementAction as RustAccountManag fun AccountManagementAction.toRustAction(): RustAccountManagementAction { return when (this) { AccountManagementAction.Profile -> RustAccountManagementAction.Profile - is AccountManagementAction.SessionEnd -> RustAccountManagementAction.SessionEnd(deviceId.value) - is AccountManagementAction.SessionView -> RustAccountManagementAction.SessionView(deviceId.value) - AccountManagementAction.SessionsList -> RustAccountManagementAction.SessionsList + is AccountManagementAction.SessionEnd -> RustAccountManagementAction.DeviceDelete(deviceId.value) + is AccountManagementAction.SessionView -> RustAccountManagementAction.DeviceView(deviceId.value) + AccountManagementAction.SessionsList -> RustAccountManagementAction.DevicesList } } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementActionKtTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementActionKtTest.kt index 8115465679..0e0cab414e 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementActionKtTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementActionKtTest.kt @@ -20,10 +20,10 @@ class AccountManagementActionKtTest { assertThat(AccountManagementAction.Profile.toRustAction()) .isEqualTo(RustAccountManagementAction.Profile) assertThat(AccountManagementAction.SessionEnd(A_DEVICE_ID).toRustAction()) - .isEqualTo(RustAccountManagementAction.SessionEnd(A_DEVICE_ID.value)) + .isEqualTo(RustAccountManagementAction.DeviceDelete(A_DEVICE_ID.value)) assertThat(AccountManagementAction.SessionView(A_DEVICE_ID).toRustAction()) - .isEqualTo(RustAccountManagementAction.SessionView(A_DEVICE_ID.value)) + .isEqualTo(RustAccountManagementAction.DeviceView(A_DEVICE_ID.value)) assertThat(AccountManagementAction.SessionsList.toRustAction()) - .isEqualTo(RustAccountManagementAction.SessionsList) + .isEqualTo(RustAccountManagementAction.DevicesList) } } From 1682ae88e7dd7f497174ad3bf770f996e78ba73b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 4 Mar 2026 17:41:44 +0100 Subject: [PATCH 3/8] Rename our classes too. --- .../io/element/android/appnav/loggedin/LoggedInPresenter.kt | 2 +- .../android/appnav/loggedin/LoggedInPresenterTest.kt | 2 +- .../preferences/impl/root/PreferencesRootPresenter.kt | 2 +- .../preferences/impl/root/PreferencesRootPresenterTest.kt | 2 +- .../libraries/matrix/api/oidc/AccountManagementAction.kt | 6 +++--- .../libraries/matrix/impl/oidc/AccountManagementAction.kt | 6 +++--- .../matrix/impl/oidc/AccountManagementActionKtTest.kt | 6 +++--- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt index 184766e323..757dd73395 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt @@ -167,6 +167,6 @@ class LoggedInPresenter( private fun CoroutineScope.preloadAccountManagementUrl() = launch { matrixClient.getAccountManagementUrl(AccountManagementAction.Profile) - matrixClient.getAccountManagementUrl(AccountManagementAction.SessionsList) + matrixClient.getAccountManagementUrl(AccountManagementAction.DevicesList) } } diff --git a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt index 849dfa85b2..f1759eab3e 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt @@ -81,7 +81,7 @@ class LoggedInPresenterTest { accountManagementUrlResult.assertions().isCalledExactly(2) .withSequence( listOf(value(AccountManagementAction.Profile)), - listOf(value(AccountManagementAction.SessionsList)), + listOf(value(AccountManagementAction.DevicesList)), ) } } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt index 59aa6ece8e..3d6a829167 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt @@ -165,6 +165,6 @@ class PreferencesRootPresenter( devicesManagementUrl: MutableState, ) = launch { accountManagementUrl.value = matrixClient.getAccountManagementUrl(AccountManagementAction.Profile).getOrNull() - devicesManagementUrl.value = matrixClient.getAccountManagementUrl(AccountManagementAction.SessionsList).getOrNull() + devicesManagementUrl.value = matrixClient.getAccountManagementUrl(AccountManagementAction.DevicesList).getOrNull() } } diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt index d10f860f0d..c41550134a 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt @@ -98,7 +98,7 @@ class PreferencesRootPresenterTest { accountManagementUrlResult.assertions().isCalledExactly(2) .withSequence( listOf(value(AccountManagementAction.Profile)), - listOf(value(AccountManagementAction.SessionsList)), + listOf(value(AccountManagementAction.DevicesList)), ) assertThat(finalState.accountManagementUrl).isEqualTo("Profile url") assertThat(finalState.devicesManagementUrl).isEqualTo("SessionsList url") diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/oidc/AccountManagementAction.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/oidc/AccountManagementAction.kt index 77e8854417..e1c7764e58 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/oidc/AccountManagementAction.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/oidc/AccountManagementAction.kt @@ -12,7 +12,7 @@ import io.element.android.libraries.matrix.api.core.DeviceId sealed interface AccountManagementAction { data object Profile : AccountManagementAction - data object SessionsList : AccountManagementAction - data class SessionView(val deviceId: DeviceId) : AccountManagementAction - data class SessionEnd(val deviceId: DeviceId) : AccountManagementAction + data object DevicesList : AccountManagementAction + data class DeviceView(val deviceId: DeviceId) : AccountManagementAction + data class DeviceDelete(val deviceId: DeviceId) : AccountManagementAction } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementAction.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementAction.kt index 76e60e90f4..f86c57543a 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementAction.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementAction.kt @@ -14,8 +14,8 @@ import org.matrix.rustcomponents.sdk.AccountManagementAction as RustAccountManag fun AccountManagementAction.toRustAction(): RustAccountManagementAction { return when (this) { AccountManagementAction.Profile -> RustAccountManagementAction.Profile - is AccountManagementAction.SessionEnd -> RustAccountManagementAction.DeviceDelete(deviceId.value) - is AccountManagementAction.SessionView -> RustAccountManagementAction.DeviceView(deviceId.value) - AccountManagementAction.SessionsList -> RustAccountManagementAction.DevicesList + is AccountManagementAction.DeviceDelete -> RustAccountManagementAction.DeviceDelete(deviceId.value) + is AccountManagementAction.DeviceView -> RustAccountManagementAction.DeviceView(deviceId.value) + AccountManagementAction.DevicesList -> RustAccountManagementAction.DevicesList } } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementActionKtTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementActionKtTest.kt index 0e0cab414e..3637ef78cc 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementActionKtTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/oidc/AccountManagementActionKtTest.kt @@ -19,11 +19,11 @@ class AccountManagementActionKtTest { fun `test AccountManagementAction to RustAccountManagementAction`() { assertThat(AccountManagementAction.Profile.toRustAction()) .isEqualTo(RustAccountManagementAction.Profile) - assertThat(AccountManagementAction.SessionEnd(A_DEVICE_ID).toRustAction()) + assertThat(AccountManagementAction.DeviceDelete(A_DEVICE_ID).toRustAction()) .isEqualTo(RustAccountManagementAction.DeviceDelete(A_DEVICE_ID.value)) - assertThat(AccountManagementAction.SessionView(A_DEVICE_ID).toRustAction()) + assertThat(AccountManagementAction.DeviceView(A_DEVICE_ID).toRustAction()) .isEqualTo(RustAccountManagementAction.DeviceView(A_DEVICE_ID.value)) - assertThat(AccountManagementAction.SessionsList.toRustAction()) + assertThat(AccountManagementAction.DevicesList.toRustAction()) .isEqualTo(RustAccountManagementAction.DevicesList) } } From 4b61bb1e421b306378fdd5a9a0267abf7c7812d9 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 4 Mar 2026 21:02:37 +0100 Subject: [PATCH 4/8] Fix test --- .../preferences/impl/root/PreferencesRootPresenterTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt index c41550134a..f0dc58ef22 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt @@ -101,7 +101,7 @@ class PreferencesRootPresenterTest { listOf(value(AccountManagementAction.DevicesList)), ) assertThat(finalState.accountManagementUrl).isEqualTo("Profile url") - assertThat(finalState.devicesManagementUrl).isEqualTo("SessionsList url") + assertThat(finalState.devicesManagementUrl).isEqualTo("DevicesList url") } } From f1058365cc9515f346bef9a1a5c4f5220a14c58c Mon Sep 17 00:00:00 2001 From: Timur Gilfanov Date: Thu, 5 Mar 2026 10:43:31 +0400 Subject: [PATCH 5/8] Fix Markdown text input losing scroll position while typing --- .../textcomposer/components/markdown/MarkdownTextInput.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/markdown/MarkdownTextInput.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/markdown/MarkdownTextInput.kt index 725abe3dae..e3c1fb5dd3 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/markdown/MarkdownTextInput.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/markdown/MarkdownTextInput.kt @@ -103,6 +103,9 @@ fun MarkdownTextInput( } addTextChangedListener { editable -> onTyping(!editable.isNullOrEmpty()) + if (state.lineCount != lineCount) { + post { bringPointIntoView(selectionStart) } + } state.text.update(editable, false) state.lineCount = lineCount From 84164ccad1be414a1ff41ca76619436f5524f21d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2026 09:48:30 +0000 Subject: [PATCH 6/8] Update dependency org.unifiedpush.android:connector to v3.3.2 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 537203e6b3..e4fcfb7583 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -202,7 +202,7 @@ sqldelight-driver-jvm = { module = "app.cash.sqldelight:sqlite-driver", version. sqldelight-coroutines = { module = "app.cash.sqldelight:coroutines-extensions", version.ref = "sqldelight" } sqlcipher = "net.zetetic:sqlcipher-android:4.13.0" sqlite = "androidx.sqlite:sqlite-ktx:2.6.2" -unifiedpush = "org.unifiedpush.android:connector:3.3.1" +unifiedpush = "org.unifiedpush.android:connector:3.3.2" vanniktech_blurhash = "com.vanniktech:blurhash:0.3.0" telephoto_zoomableimage = { module = "me.saket.telephoto:zoomable-image-coil", version.ref = "telephoto" } telephoto_flick = { module = "me.saket.telephoto:flick-android", version.ref = "telephoto" } From 4b1a3ac326bbb9a848359a8e30948bffe9f07aaa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2026 15:48:52 +0000 Subject: [PATCH 7/8] Update dependency org.matrix.rustcomponents:sdk-android to v26.03.05 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8e189d9025..236846169c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -178,7 +178,7 @@ test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version # https://github.com/matrix-org/matrix-rust-components-kotlin/commits/main/sdk/sdk-android/src/main/kotlin/org/matrix/rustcomponents/sdk/matrix_sdk_ffi.kt # All new features should not be implemented in the pull request that upgrades the version, developers should # only fix API breaks and may add some TODOs. -matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.03.4" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.03.05" # Others coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } From cb94ff8c01e3bd9e93da31f046307a8cfc1c5858 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2026 15:49:02 +0000 Subject: [PATCH 8/8] Update plugin ktlint to v14.1.0 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8e189d9025..21cd4e903b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -258,7 +258,7 @@ ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } # Note: used in DependencyInjectionExtensions.kt metro = { id = "dev.zacsweers.metro", version.ref = "metro" } detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } -ktlint = "org.jlleitschuh.gradle.ktlint:14.0.1" +ktlint = "org.jlleitschuh.gradle.ktlint:14.1.0" dependencygraph = "com.savvasdalkitsis.module-dependency-graph:0.12" dependencycheck = "org.owasp.dependencycheck:12.2.0" dependencyanalysis = { id = "com.autonomousapps.dependency-analysis", version.ref = "dependencyAnalysis" }