Skip to content

Commit bad30b8

Browse files
committed
Merge branch 'release/25.06.1'
2 parents 4dbfa90 + 771d131 commit bad30b8

File tree

490 files changed

+3232
-3171
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

490 files changed

+3232
-3171
lines changed

CHANGES.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,57 @@
1+
Changes in Element X v25.06.0
2+
=============================
3+
4+
Rust SDK: https://github.com/matrix-org/matrix-rust-sdk/releases/tag/matrix-sdk-ffi%2F20250603
5+
6+
## What's Changed
7+
### ✨ Features
8+
* Add support for login link by @bmarty in https://github.com/element-hq/element-x-android/pull/4752
9+
### 🙌 Improvements
10+
* On boarding flow: add a screen to select account provider among a fixed list by @bmarty in https://github.com/element-hq/element-x-android/pull/4769
11+
* Change : RoomMember moderation by @ganfra in https://github.com/element-hq/element-x-android/pull/4779
12+
### 🐛 Bugfixes
13+
* Fix left room membership change by @ganfra in https://github.com/element-hq/element-x-android/pull/4765
14+
* fix: exclude more domains from being backed up by the system by @lucasmz-dev in https://github.com/element-hq/element-x-android/pull/4773
15+
* Make sure HeaderFooterPage contents can be scrolled by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4704
16+
* Fix mobile link by @bmarty in https://github.com/element-hq/element-x-android/pull/4805
17+
### 🗣 Translations
18+
* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/4775
19+
* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/4804
20+
### 🧱 Build
21+
* Maestro: fix MAS and EC breaking the tests by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4762
22+
* Update Gradle Wrapper from 8.14 to 8.14.1 by @ElementBot in https://github.com/element-hq/element-x-android/pull/4766
23+
* Stronger lambda error by @bmarty in https://github.com/element-hq/element-x-android/pull/4771
24+
* Use Localazy's `langAliases` for Indonesian language by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4801
25+
### Dependency upgrades
26+
* fix(deps): update datastore to v1.1.7 by @renovate in https://github.com/element-hq/element-x-android/pull/4754
27+
* fix(deps): update dependency org.maplibre.gl:android-sdk to v11.8.8 by @renovate in https://github.com/element-hq/element-x-android/pull/4721
28+
* chore(deps): update plugin ktlint to v12.3.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4767
29+
* fix(deps): update dependency com.google.firebase:firebase-bom to v33.14.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4755
30+
* Update UnifiedPush library by @bmarty in https://github.com/element-hq/element-x-android/pull/4358
31+
* fix(deps): update sqldelight to v2.1.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4735
32+
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.5.26 by @renovate in https://github.com/element-hq/element-x-android/pull/4781
33+
* fix(deps): update dependency com.posthog:posthog-android to v3.15.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4787
34+
* fix(deps): update dependency com.posthog:posthog-android to v3.16.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4789
35+
* fix(deps): update dependency io.element.android:element-call-embedded to v0.12.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4743
36+
* fix(deps): update dependencyanalysis to v2.18.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4796
37+
* fix(deps): update android.gradle.plugin to v8.10.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4795
38+
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.5.29 by @renovate in https://github.com/element-hq/element-x-android/pull/4799
39+
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.6.3 by @renovate in https://github.com/element-hq/element-x-android/pull/4810
40+
### Others
41+
* fix(deps): update media3 to v1.7.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4733
42+
* fix: Ignore global proxy settings if system thinks there's none by @ShadowRZ in https://github.com/element-hq/element-x-android/pull/4744
43+
* Add `ActiveRoomHolder` to manage the active room for a session by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4758
44+
* Notification events resolving and rendering in batches by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4722
45+
* Hide Element Call entry point if Element Call service is not available. by @bmarty in https://github.com/element-hq/element-x-android/pull/4783
46+
* Fix dependencies on test by @bmarty in https://github.com/element-hq/element-x-android/pull/4790
47+
* Update _developer_onboarding.md by @lex-neufeld in https://github.com/element-hq/element-x-android/pull/4570
48+
49+
## New Contributors
50+
* @lucasmz-dev made their first contribution in https://github.com/element-hq/element-x-android/pull/4773
51+
* @lex-neufeld made their first contribution in https://github.com/element-hq/element-x-android/pull/4570
52+
53+
**Full Changelog**: https://github.com/element-hq/element-x-android/compare/v25.05.4...v25.06.0
54+
155
<!-- Release notes generated using configuration in .github/release.yml at v25.05.4 -->
256

357
Changes in Element X v25.05.4

app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
android:theme="@style/Theme.ElementX"
2626
tools:targetApi="33">
2727

28+
<meta-data
29+
android:name="com.google.android.gms.car.application"
30+
android:resource="@xml/automotive_app_desc" />
31+
2832
<provider
2933
android:name="androidx.startup.InitializationProvider"
3034
android:authorities="${applicationId}.androidx-startup"

app/src/main/kotlin/io/element/android/x/di/AppModule.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import io.element.android.libraries.di.AppScope
2727
import io.element.android.libraries.di.ApplicationContext
2828
import io.element.android.libraries.di.CacheDirectory
2929
import io.element.android.libraries.di.SingleIn
30+
import io.element.android.libraries.di.annotations.AppCoroutineScope
3031
import io.element.android.x.BuildConfig
3132
import io.element.android.x.R
3233
import kotlinx.coroutines.CoroutineName
@@ -56,6 +57,7 @@ object AppModule {
5657
}
5758

5859
@Provides
60+
@AppCoroutineScope
5961
@SingleIn(AppScope::class)
6062
fun providesAppCoroutineScope(): CoroutineScope {
6163
return MainScope() + CoroutineName("ElementX Scope")
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?><!--
2+
~ Copyright 2025 New Vector Ltd.
3+
~
4+
~ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
5+
~ Please see LICENSE files in the repository root for full details.
6+
-->
7+
<automotiveApp>
8+
<uses name="notification" />
9+
</automotiveApp>

appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ import io.element.android.libraries.architecture.waitForNavTargetAttached
6565
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
6666
import io.element.android.libraries.di.AppScope
6767
import io.element.android.libraries.di.SessionScope
68+
import io.element.android.libraries.di.annotations.SessionCoroutineScope
6869
import io.element.android.libraries.matrix.api.MatrixClient
6970
import io.element.android.libraries.matrix.api.core.EventId
7071
import io.element.android.libraries.matrix.api.core.MAIN_SPACE
@@ -104,7 +105,8 @@ class LoggedInFlowNode @AssistedInject constructor(
104105
private val secureBackupEntryPoint: SecureBackupEntryPoint,
105106
private val userProfileEntryPoint: UserProfileEntryPoint,
106107
private val ftueEntryPoint: FtueEntryPoint,
107-
private val coroutineScope: CoroutineScope,
108+
@SessionCoroutineScope
109+
private val sessionCoroutineScope: CoroutineScope,
108110
private val ftueService: FtueService,
109111
private val roomDirectoryEntryPoint: RoomDirectoryEntryPoint,
110112
private val shareEntryPoint: ShareEntryPoint,
@@ -175,7 +177,7 @@ class LoggedInFlowNode @AssistedInject constructor(
175177
appNavigationStateService.onNavigateToSession(id, matrixClient.sessionId)
176178
// TODO We do not support Space yet, so directly navigate to main space
177179
appNavigationStateService.onNavigateToSpace(id, MAIN_SPACE)
178-
loggedInFlowProcessor.observeEvents(coroutineScope)
180+
loggedInFlowProcessor.observeEvents(sessionCoroutineScope)
179181
matrixClient.sessionVerificationService().setListener(verificationListener)
180182

181183
ftueService.state
@@ -313,7 +315,7 @@ class LoggedInFlowNode @AssistedInject constructor(
313315
}
314316

315317
override fun onForwardedToSingleRoom(roomId: RoomId) {
316-
coroutineScope.launch { attachRoom(roomId.toRoomIdOrAlias(), clearBackstack = false) }
318+
sessionCoroutineScope.launch { attachRoom(roomId.toRoomIdOrAlias(), clearBackstack = false) }
317319
}
318320

319321
override fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) {

appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import im.vector.app.features.analytics.plan.CryptoSessionStateChange
2121
import im.vector.app.features.analytics.plan.UserProperties
2222
import io.element.android.libraries.architecture.AsyncData
2323
import io.element.android.libraries.architecture.Presenter
24+
import io.element.android.libraries.core.extensions.runCatchingExceptions
2425
import io.element.android.libraries.core.log.logger.LoggerTag
2526
import io.element.android.libraries.core.meta.BuildMeta
2627
import io.element.android.libraries.matrix.api.MatrixClient
@@ -125,7 +126,7 @@ class LoggedInPresenter @Inject constructor(
125126
}
126127

127128
// Force the user to log out if they were using the proxy sliding sync as it's no longer supported by the SDK
128-
private suspend fun MatrixClient.needsForcedNativeSlidingSyncMigration(): Result<Boolean> = runCatching {
129+
private suspend fun MatrixClient.needsForcedNativeSlidingSyncMigration(): Result<Boolean> = runCatchingExceptions {
129130
val currentSlidingSyncVersion = currentSlidingSyncVersion().getOrThrow()
130131
currentSlidingSyncVersion == SlidingSyncVersion.Proxy
131132
}

appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ import io.element.android.libraries.matrix.api.MatrixClient
4242
import io.element.android.libraries.matrix.api.core.RoomAlias
4343
import io.element.android.libraries.matrix.api.core.RoomId
4444
import io.element.android.libraries.matrix.api.core.RoomIdOrAlias
45-
import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias
46-
import io.element.android.libraries.matrix.api.getRoomInfoFlow
4745
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
4846
import io.element.android.libraries.matrix.api.room.RoomMembershipObserver
4947
import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias
@@ -124,7 +122,7 @@ class RoomFlowNode @AssistedInject constructor(
124122
}
125123

126124
private fun subscribeToRoomInfoFlow(roomId: RoomId, serverNames: List<String>) {
127-
val roomInfoFlow = client.getRoomInfoFlow(roomIdOrAlias = roomId.toRoomIdOrAlias())
125+
val roomInfoFlow = client.getRoomInfoFlow(roomId)
128126
val isSpaceFlow = roomInfoFlow.map { it.getOrNull()?.isSpace.orFalse() }.distinctUntilChanged()
129127
val currentMembershipFlow = roomInfoFlow.map { it.getOrNull()?.currentUserMembership }.distinctUntilChanged()
130128
combine(currentMembershipFlow, isSpaceFlow) { membership, isSpace ->

appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import io.element.android.libraries.architecture.NodeInputs
3030
import io.element.android.libraries.architecture.inputs
3131
import io.element.android.libraries.di.DaggerComponentOwner
3232
import io.element.android.libraries.di.SessionScope
33+
import io.element.android.libraries.di.annotations.SessionCoroutineScope
3334
import io.element.android.libraries.matrix.api.MatrixClient
3435
import io.element.android.libraries.matrix.api.core.EventId
3536
import io.element.android.libraries.matrix.api.core.RoomId
@@ -50,7 +51,8 @@ class JoinedRoomLoadedFlowNode @AssistedInject constructor(
5051
private val messagesEntryPoint: MessagesEntryPoint,
5152
private val roomDetailsEntryPoint: RoomDetailsEntryPoint,
5253
private val appNavigationStateService: AppNavigationStateService,
53-
private val appCoroutineScope: CoroutineScope,
54+
@SessionCoroutineScope
55+
private val sessionCoroutineScope: CoroutineScope,
5456
private val matrixClient: MatrixClient,
5557
private val activeRoomsHolder: ActiveRoomsHolder,
5658
roomComponentFactory: RoomComponentFactory,
@@ -92,7 +94,7 @@ class JoinedRoomLoadedFlowNode @AssistedInject constructor(
9294
trackVisitedRoom()
9395
},
9496
onResume = {
95-
appCoroutineScope.launch {
97+
sessionCoroutineScope.launch {
9698
inputs.room.subscribeToSync()
9799
}
98100
},

appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ class JoinedRoomLoadedFlowNodeTest {
109109
messagesEntryPoint = messagesEntryPoint,
110110
roomDetailsEntryPoint = roomDetailsEntryPoint,
111111
appNavigationStateService = FakeAppNavigationStateService(),
112-
appCoroutineScope = this,
112+
sessionCoroutineScope = this,
113113
roomComponentFactory = FakeRoomComponentFactory(),
114114
matrixClient = FakeMatrixClient(),
115115
activeRoomsHolder = activeRoomsHolder,

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ allprojects {
5050
}
5151
dependencies {
5252
detektPlugins("io.nlopez.compose.rules:detekt:0.4.22")
53+
detektPlugins(project(":tests:detekt-rules"))
5354
}
5455

5556
tasks.withType<io.gitlab.arturbosch.detekt.Detekt>().configureEach {

0 commit comments

Comments
 (0)