Skip to content

Commit bee248e

Browse files
committed
Merge branch 'release/25.03.2' into main
2 parents 232f1db + a3ab1db commit bee248e

File tree

942 files changed

+9088
-3510
lines changed

Some content is hidden

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

942 files changed

+9088
-3510
lines changed

.github/workflows/blocked.yml

-17
This file was deleted.

.github/workflows/build.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ jobs:
6565
retention-days: 5
6666
overwrite: true
6767
if-no-files-found: error
68-
- uses: rnkdsh/[email protected].6
68+
- uses: rnkdsh/[email protected].7
6969
id: diawi
7070
# Do not fail the whole build if Diawi upload fails
7171
continue-on-error: true
@@ -89,7 +89,7 @@ jobs:
8989
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
9090
- name: Compile release sources
9191
if: ${{ matrix.variant == 'release' }}
92-
run: ./gradlew compileReleaseSources -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
92+
run: ./gradlew bundleGplayRelease -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
9393
- name: Compile nightly sources
9494
if: ${{ matrix.variant == 'nightly' }}
9595
run: ./gradlew compileGplayNightlySources -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES

.github/workflows/build_enterprise.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
# https://github.com/actions/checkout/issues/881
3434
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }}
3535
- name: Add SSH private keys for submodule repositories
36-
uses: webfactory/[email protected].0
36+
uses: webfactory/[email protected].1
3737
with:
3838
ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }}
3939
- name: Clone submodules

.github/workflows/danger.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
steps:
1212
- uses: actions/checkout@v4
1313
- name: Add SSH private keys for submodule repositories
14-
uses: webfactory/[email protected].0
14+
uses: webfactory/[email protected].1
1515
with:
1616
ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }}
1717
- name: Clone submodules

.github/workflows/nightly_enterprise.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
steps:
1919
- uses: actions/checkout@v4
2020
- name: Add SSH private keys for submodule repositories
21-
uses: webfactory/[email protected].0
21+
uses: webfactory/[email protected].1
2222
with:
2323
ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }}
2424
- name: Clone submodules

.github/workflows/pull_request.yml

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: Pull Request
2+
on:
3+
pull_request:
4+
types: [ opened, edited, labeled, unlabeled, synchronize ]
5+
workflow_call:
6+
secrets:
7+
ELEMENT_BOT_TOKEN:
8+
required: true
9+
10+
jobs:
11+
prevent-blocked:
12+
name: Prevent blocked
13+
runs-on: ubuntu-latest
14+
permissions:
15+
pull-requests: read
16+
steps:
17+
- name: Add notice
18+
uses: actions/github-script@v7
19+
if: contains(github.event.pull_request.labels.*.name, 'X-Blocked')
20+
with:
21+
script: |
22+
core.setFailed("PR has been labeled with X-Blocked; it cannot be merged.");
23+
24+
community-prs:
25+
name: Label Community PRs
26+
runs-on: ubuntu-latest
27+
if: github.event.action == 'opened'
28+
permissions:
29+
pull-requests: write
30+
steps:
31+
- name: Check membership
32+
if: github.event.pull_request.user.login != 'renovate[bot]'
33+
uses: tspascoal/get-user-teams-membership@57e9f42acd78f4d0f496b3be4368fc5f62696662 # v3
34+
id: teams
35+
with:
36+
username: ${{ github.event.pull_request.user.login }}
37+
organization: element-hq
38+
team: Vector Core
39+
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN_READ_ORG }}
40+
- name: Add label
41+
if: steps.teams.outputs.isTeamMember == 'false'
42+
uses: actions/github-script@v7
43+
with:
44+
script: |
45+
github.rest.issues.addLabels({
46+
issue_number: context.issue.number,
47+
owner: context.repo.owner,
48+
repo: context.repo.repo,
49+
labels: ['Z-Community-PR']
50+
});
51+
52+
close-if-fork-develop:
53+
name: Forbid develop branch fork contributions
54+
runs-on: ubuntu-latest
55+
if: >
56+
github.event.action == 'opened' &&
57+
github.event.pull_request.head.ref == 'develop' &&
58+
github.event.pull_request.head.repo.full_name != github.repository
59+
steps:
60+
- name: Close pull request
61+
uses: actions/github-script@v7
62+
with:
63+
script: |
64+
github.rest.issues.createComment({
65+
issue_number: context.issue.number,
66+
owner: context.repo.owner,
67+
repo: context.repo.repo,
68+
body: "Thanks for opening this pull request, unfortunately we do not accept contributions from the main" +
69+
" branch of your fork, please re-open once you switch to an alternative branch for everyone's sanity.",
70+
});
71+
72+
github.rest.pulls.update({
73+
pull_number: context.issue.number,
74+
owner: context.repo.owner,
75+
repo: context.repo.repo,
76+
state: 'closed'
77+
});

.github/workflows/quality.yml

+6-6
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
steps:
2020
- uses: actions/checkout@v4
2121
- name: Add SSH private keys for submodule repositories
22-
uses: webfactory/[email protected].0
22+
uses: webfactory/[email protected].1
2323
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
2424
with:
2525
ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }}
@@ -77,7 +77,7 @@ jobs:
7777
# https://github.com/actions/checkout/issues/881
7878
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }}
7979
- name: Add SSH private keys for submodule repositories
80-
uses: webfactory/[email protected].0
80+
uses: webfactory/[email protected].1
8181
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
8282
with:
8383
ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }}
@@ -117,7 +117,7 @@ jobs:
117117
# https://github.com/actions/checkout/issues/881
118118
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }}
119119
- name: Add SSH private keys for submodule repositories
120-
uses: webfactory/[email protected].0
120+
uses: webfactory/[email protected].1
121121
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
122122
with:
123123
ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }}
@@ -161,7 +161,7 @@ jobs:
161161
# https://github.com/actions/checkout/issues/881
162162
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }}
163163
- name: Add SSH private keys for submodule repositories
164-
uses: webfactory/[email protected].0
164+
uses: webfactory/[email protected].1
165165
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
166166
with:
167167
ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }}
@@ -201,7 +201,7 @@ jobs:
201201
# https://github.com/actions/checkout/issues/881
202202
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }}
203203
- name: Add SSH private keys for submodule repositories
204-
uses: webfactory/[email protected].0
204+
uses: webfactory/[email protected].1
205205
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
206206
with:
207207
ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }}
@@ -241,7 +241,7 @@ jobs:
241241
# https://github.com/actions/checkout/issues/881
242242
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }}
243243
- name: Add SSH private keys for submodule repositories
244-
uses: webfactory/[email protected].0
244+
uses: webfactory/[email protected].1
245245
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
246246
with:
247247
ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }}

.github/workflows/release.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050
steps:
5151
- uses: actions/checkout@v4
5252
- name: Add SSH private keys for submodule repositories
53-
uses: webfactory/[email protected].0
53+
uses: webfactory/[email protected].1
5454
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
5555
with:
5656
ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }}

.github/workflows/tests.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
# https://github.com/actions/checkout/issues/881
4040
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }}
4141
- name: Add SSH private keys for submodule repositories
42-
uses: webfactory/[email protected].0
42+
uses: webfactory/[email protected].1
4343
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
4444
with:
4545
ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }}

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ captures/
4343
.idea/.name
4444
.idea/androidTestResultsUserPreferences.xml
4545
.idea/assetWizardSettings.xml
46+
.idea/AndroidProjectSystem.xml
4647
.idea/compiler.xml
4748
.idea/deploymentTargetDropDown.xml
4849
.idea/deploymentTargetSelector.xml

CHANGES.md

+40
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,43 @@
1+
Changes in Element X v25.03.1
2+
=============================
3+
4+
<!-- Release notes generated using configuration in .github/release.yml at v25.03.1 -->
5+
6+
## What's Changed
7+
### ✨ Features
8+
* Enable the Event cache by default. by @bmarty in https://github.com/element-hq/element-x-android/pull/4373
9+
### 🙌 Improvements
10+
* change(create room) : use history visibility "invited" by @ganfra in https://github.com/element-hq/element-x-android/pull/4335
11+
* change(room directory) : move the the room directory entry by @ganfra in https://github.com/element-hq/element-x-android/pull/4348
12+
* [Change] Invited state room preview by @ganfra in https://github.com/element-hq/element-x-android/pull/4353
13+
* change(left room snackbar) : manage cancel knock and decline invite by @ganfra in https://github.com/element-hq/element-x-android/pull/4360
14+
### 🐛 Bugfixes
15+
* Restore manual `Client` cleanup on session logout by @jmartinesp in https://github.com/element-hq/element-x-android/pull/4333
16+
### 🗣 Translations
17+
* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/4346
18+
### 🧱 Build
19+
* Fix typo on job name. by @bmarty in https://github.com/element-hq/element-x-android/pull/4352
20+
### Dependency upgrades
21+
* chore(deps): update plugin ktlint to v12.2.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4338
22+
* fix(deps): update dependency org.maplibre.gl:android-sdk to v11.8.2 by @renovate in https://github.com/element-hq/element-x-android/pull/4340
23+
* fix(deps): update dependency io.mockk:mockk to v1.13.17 by @renovate in https://github.com/element-hq/element-x-android/pull/4334
24+
* fix(deps): update kotlin to v2.1.10-1.0.31 by @renovate in https://github.com/element-hq/element-x-android/pull/4337
25+
* fix(deps): update dependency com.google.firebase:firebase-bom to v33.10.0 by @renovate in https://github.com/element-hq/element-x-android/pull/4339
26+
* Migrate to coil3 by @bmarty in https://github.com/element-hq/element-x-android/pull/4347
27+
* fix(deps): update dependency org.jsoup:jsoup to v1.19.1 by @renovate in https://github.com/element-hq/element-x-android/pull/4351
28+
* deps(rust sdk) : update to 25.03.05 by @ganfra in https://github.com/element-hq/element-x-android/pull/4370
29+
* Update dependency org.matrix.rustcomponents:sdk-android to v25.3.6 by @renovate in https://github.com/element-hq/element-x-android/pull/4371
30+
### Others
31+
* Prevent PRs with the X-Blocked label from being merged by @robintown in https://github.com/element-hq/element-x-android/pull/4350
32+
* Fix some icon colors by @bmarty in https://github.com/element-hq/element-x-android/pull/4365
33+
* Remove PreferenceText, replace by ListItem. by @bmarty in https://github.com/element-hq/element-x-android/pull/4369
34+
* Show error screens in group calls by @robintown in https://github.com/element-hq/element-x-android/pull/4297
35+
36+
## New Contributors
37+
* @robintown made their first contribution in https://github.com/element-hq/element-x-android/pull/4350
38+
39+
**Full Changelog**: https://github.com/element-hq/element-x-android/compare/v25.03.0...v25.03.1
40+
141
Changes in Element X v25.03.0
242
=============================
343

app/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.android.build.api.variant.FilterConfiguration.FilterType.ABI
1111
import com.android.build.gradle.internal.tasks.factory.dependsOn
1212
import com.android.build.gradle.tasks.GenerateBuildConfig
13+
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution
1314
import config.BuildTimeConfig
1415
import extension.AssetCopyTask
1516
import extension.ComponentMergingStrategy

app/src/main/kotlin/io/element/android/x/ElementXApplication.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import io.element.android.x.di.AppComponent
1515
import io.element.android.x.di.DaggerAppComponent
1616
import io.element.android.x.info.logApplicationInfo
1717
import io.element.android.x.initializer.CrashInitializer
18-
import io.element.android.x.initializer.TracingInitializer
18+
import io.element.android.x.initializer.PlatformInitializer
1919

2020
class ElementXApplication : Application(), DaggerComponentOwner {
2121
override val daggerComponent: AppComponent = DaggerAppComponent.factory().create(this)
@@ -24,7 +24,7 @@ class ElementXApplication : Application(), DaggerComponentOwner {
2424
super.onCreate()
2525
AppInitializer.getInstance(this).apply {
2626
initializeComponent(CrashInitializer::class.java)
27-
initializeComponent(TracingInitializer::class.java)
27+
initializeComponent(PlatformInitializer::class.java)
2828
initializeComponent(CacheCleanerInitializer::class.java)
2929
}
3030
logApplicationInfo(this)

app/src/main/kotlin/io/element/android/x/MainActivity.kt

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class MainActivity : NodeActivity() {
6464
ElementThemeApp(
6565
appPreferencesStore = appBindings.preferencesStore(),
6666
enterpriseService = appBindings.enterpriseService(),
67+
buildMeta = appBindings.buildMeta()
6768
) {
6869
CompositionLocalProvider(
6970
LocalSnackbarDispatcher provides appBindings.snackbarDispatcher(),

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

+9
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ import io.element.android.features.enterprise.api.EnterpriseService
1313
import io.element.android.features.lockscreen.api.LockScreenEntryPoint
1414
import io.element.android.features.lockscreen.api.LockScreenService
1515
import io.element.android.features.rageshake.api.reporter.BugReporter
16+
import io.element.android.libraries.core.meta.BuildMeta
1617
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
1718
import io.element.android.libraries.di.AppScope
19+
import io.element.android.libraries.featureflag.api.FeatureFlagService
20+
import io.element.android.libraries.matrix.api.platform.InitPlatformService
1821
import io.element.android.libraries.matrix.api.tracing.TracingService
1922
import io.element.android.libraries.preferences.api.store.AppPreferencesStore
2023
import io.element.android.services.analytics.api.AnalyticsService
@@ -25,6 +28,8 @@ interface AppBindings {
2528

2629
fun tracingService(): TracingService
2730

31+
fun platformService(): InitPlatformService
32+
2833
fun bugReporter(): BugReporter
2934

3035
fun lockScreenService(): LockScreenService
@@ -38,4 +43,8 @@ interface AppBindings {
3843
fun analyticsService(): AnalyticsService
3944

4045
fun enterpriseService(): EnterpriseService
46+
47+
fun featureFlagService(): FeatureFlagService
48+
49+
fun buildMeta(): BuildMeta
4150
}

app/src/main/kotlin/io/element/android/x/initializer/TracingInitializer.kt renamed to app/src/main/kotlin/io/element/android/x/initializer/PlatformInitializer.kt

+6-4
Original file line numberDiff line numberDiff line change
@@ -12,32 +12,34 @@ import android.system.Os
1212
import androidx.startup.Initializer
1313
import io.element.android.features.rageshake.api.reporter.BugReporter
1414
import io.element.android.libraries.architecture.bindings
15+
import io.element.android.libraries.featureflag.api.FeatureFlags
1516
import io.element.android.libraries.matrix.api.tracing.TracingConfiguration
1617
import io.element.android.libraries.matrix.api.tracing.WriteToFilesConfiguration
17-
import io.element.android.x.BuildConfig
1818
import io.element.android.x.di.AppBindings
1919
import kotlinx.coroutines.flow.first
2020
import kotlinx.coroutines.runBlocking
2121
import timber.log.Timber
2222

2323
private const val ELEMENT_X_TARGET = "elementx"
2424

25-
class TracingInitializer : Initializer<Unit> {
25+
class PlatformInitializer : Initializer<Unit> {
2626
override fun create(context: Context) {
2727
val appBindings = context.bindings<AppBindings>()
2828
val tracingService = appBindings.tracingService()
29+
val platformService = appBindings.platformService()
2930
val bugReporter = appBindings.bugReporter()
3031
Timber.plant(tracingService.createTimberTree(ELEMENT_X_TARGET))
3132
val preferencesStore = appBindings.preferencesStore()
33+
val featureFlagService = appBindings.featureFlagService()
3234
val logLevel = runBlocking { preferencesStore.getTracingLogLevelFlow().first() }
3335
val tracingConfiguration = TracingConfiguration(
34-
writesToLogcat = BuildConfig.DEBUG,
36+
writesToLogcat = runBlocking { featureFlagService.isFeatureEnabled(FeatureFlags.PrintLogsToLogcat) },
3537
writesToFilesConfiguration = defaultWriteToDiskConfiguration(bugReporter),
3638
logLevel = logLevel,
3739
extraTargets = listOf(ELEMENT_X_TARGET),
3840
)
3941
bugReporter.setCurrentTracingLogLevel(logLevel.name)
40-
tracingService.setupTracing(tracingConfiguration)
42+
platformService.init(tracingConfiguration)
4143
// Also set env variable for rust back trace
4244
Os.setenv("RUST_BACKTRACE", "1", true)
4345
}

app/src/main/res/xml/locales_config.xml

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<locale android:name="en_US"/>
1010
<locale android:name="es"/>
1111
<locale android:name="et"/>
12+
<locale android:name="eu"/>
1213
<locale android:name="fa"/>
1314
<locale android:name="fi"/>
1415
<locale android:name="fr"/>

0 commit comments

Comments
 (0)