Skip to content

Commit bdc1b75

Browse files
committed
Merge branch 'release/0.7.6' into main
2 parents 9961852 + 8e6261e commit bdc1b75

File tree

771 files changed

+14804
-2460
lines changed

Some content is hidden

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

771 files changed

+14804
-2460
lines changed

.github/workflows/generate_github_pages.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
1313
steps:
1414
- name: ⏬ Checkout with LFS
15-
uses: nschloe/[email protected].2
15+
uses: nschloe/[email protected].3
1616
- name: Use JDK 21
1717
uses: actions/setup-java@v4
1818
with:

.github/workflows/nightlyReports.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
if: ${{ github.repository == 'element-hq/element-x-android' }}
1919
steps:
2020
- name: ⏬ Checkout with LFS
21-
uses: nschloe/[email protected].2
21+
uses: nschloe/[email protected].3
2222

2323
- name: Use JDK 21
2424
uses: actions/setup-java@v4

.github/workflows/recordScreenshots.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ jobs:
2424
labels: Record-Screenshots
2525
- name: ⏬ Checkout with LFS (PR)
2626
if: github.event.label.name == 'Record-Screenshots'
27-
uses: nschloe/[email protected].2
27+
uses: nschloe/[email protected].3
2828
with:
2929
persist-credentials: false
3030
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || github.ref }}
3131
- name: ⏬ Checkout with LFS (Branch)
3232
if: github.event_name == 'workflow_dispatch'
33-
uses: nschloe/[email protected].2
33+
uses: nschloe/[email protected].3
3434
with:
3535
persist-credentials: false
3636
- name: ☕️ Use JDK 21

.github/workflows/tests.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
sudo swapon /mnt/swapfile
3434
sudo swapon --show
3535
- name: ⏬ Checkout with LFS
36-
uses: nschloe/[email protected].2
36+
uses: nschloe/[email protected].3
3737
with:
3838
# Ensure we are building the branch and not the branch after being merged on develop
3939
# https://github.com/actions/checkout/issues/881

.github/workflows/validate-lfs.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ jobs:
77
runs-on: ubuntu-latest
88
name: Validate
99
steps:
10-
- uses: nschloe/[email protected].2
10+
- uses: nschloe/[email protected].3
1111

1212
- run: |
1313
./tools/git/validate_lfs.sh

.idea/kotlinc.xml

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.maestro/tests/roomList/createAndDeleteRoom.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,6 @@ appId: ${MAESTRO_APP_ID}
3030
# assert there's 1 member and 2 invitees
3131
- tapOn: "Back"
3232
- scroll
33+
- scroll
3334
- tapOn: "Leave room"
3435
- tapOn: "Leave"

CHANGES.md

+69
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,72 @@
1+
Changes in Element X v0.7.5 (2024-12-06)
2+
========================================
3+
4+
## What's Changed
5+
### ✨ Features
6+
* Allow to set caption when uploading file and audio files, and allow adding / edit / remove caption on Event with attachment (also works on local echo) by @bmarty in https://github.com/element-hq/element-x-android/pull/3902
7+
* Enable all notification actions: quick reply, accept/decline invite, mark as read from notification. by @bmarty in https://github.com/element-hq/element-x-android/pull/3916
8+
* Video player controller by @bmarty in https://github.com/element-hq/element-x-android/pull/3959
9+
### 🙌 Improvements
10+
* change : confirm biometric before allowing biometric unlock. by @ganfra in https://github.com/element-hq/element-x-android/pull/3930
11+
* Hide media preprocessing by @bmarty in https://github.com/element-hq/element-x-android/pull/3943
12+
* changes: iterate on room create screen by @ganfra in https://github.com/element-hq/element-x-android/pull/3966
13+
* change : knock message supporting text display number of characters by @ganfra in https://github.com/element-hq/element-x-android/pull/3970
14+
* feat(design) : update send button background by @ganfra in https://github.com/element-hq/element-x-android/pull/4000
15+
### 🐛 Bugfixes
16+
* Min size for hidden media by @bmarty in https://github.com/element-hq/element-x-android/pull/3906
17+
* fix : use RoomMembershipObserver to close room screen when leaving by @ganfra in https://github.com/element-hq/element-x-android/pull/3887
18+
* fix : protect some usages of client to avoid crashes by @bmarty in https://github.com/element-hq/element-x-android/pull/3886
19+
* Fix long click not working on pinned events timeline by @jmartinesp in https://github.com/element-hq/element-x-android/pull/3940
20+
* Element Call: display error dialog only when loading the main URL by @jmartinesp in https://github.com/element-hq/element-x-android/pull/3962
21+
* Fix navigation issue when entering recovery key after navigating from the banner by @bmarty in https://github.com/element-hq/element-x-android/pull/3961
22+
* navigation : clear backstack when opening room from outer node by @ganfra in https://github.com/element-hq/element-x-android/pull/3984
23+
* fix : hide keyboard when TextComposer is removed from composition by @ganfra in https://github.com/element-hq/element-x-android/pull/3985
24+
* fix(room_preview) : catch all exception instead by @ganfra in https://github.com/element-hq/element-x-android/pull/3989
25+
* fix(room_detail) : hide room avatar preview by @ganfra in https://github.com/element-hq/element-x-android/pull/3992
26+
* fix(composer) : use HideKeyboardWhenDisposed only in MessagesView by @ganfra in https://github.com/element-hq/element-x-android/pull/3993
27+
### 🗣 Translations
28+
* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/3936
29+
* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/3975
30+
### Dependency upgrades
31+
* Update dependency io.sentry:sentry-android to v7.18.0 by @renovate in https://github.com/element-hq/element-x-android/pull/3891
32+
* Update plugin sonarqube to v6 - autoclosed by @renovate in https://github.com/element-hq/element-x-android/pull/3895
33+
* Update dependency org.matrix.rustcomponents:sdk-android to v0.2.64 by @renovate in https://github.com/element-hq/element-x-android/pull/3907
34+
* Update dependency com.autonomousapps.dependency-analysis to v2.5.0 by @renovate in https://github.com/element-hq/element-x-android/pull/3909
35+
* Update dependency org.robolectric:robolectric to v4.14.1 by @renovate in https://github.com/element-hq/element-x-android/pull/3924
36+
* Update dependency io.element.android:compound-android to v0.2.0 by @renovate in https://github.com/element-hq/element-x-android/pull/3915
37+
* Update dependency org.matrix.rustcomponents:sdk-android to v0.2.65 by @renovate in https://github.com/element-hq/element-x-android/pull/3932
38+
* Update media3 to v1.5.0 by @renovate in https://github.com/element-hq/element-x-android/pull/3942
39+
* Update plugin ktlint to v12.1.2 by @renovate in https://github.com/element-hq/element-x-android/pull/3944
40+
* Update wysiwyg to v2.37.14 by @renovate in https://github.com/element-hq/element-x-android/pull/3948
41+
* Update mobile-dev-inc/action-maestro-cloud action to v1.9.7 by @renovate in https://github.com/element-hq/element-x-android/pull/3914
42+
* Update dependency com.lemonappdev:konsist to v0.17.0 by @renovate in https://github.com/element-hq/element-x-android/pull/3947
43+
* deps : update rust sdk to 0.2.67 and fix breaking changes by @ganfra in https://github.com/element-hq/element-x-android/pull/3957
44+
* Update dependency com.lemonappdev:konsist to v0.17.1 by @renovate in https://github.com/element-hq/element-x-android/pull/3983
45+
* Update plugin sonarqube to v6.0.1.5171 by @renovate in https://github.com/element-hq/element-x-android/pull/3958
46+
* Update dagger to v2.53 by @renovate in https://github.com/element-hq/element-x-android/pull/3986
47+
* Update dependency com.sigpwned:emoji4j-core to v16 by @renovate in https://github.com/element-hq/element-x-android/pull/3899
48+
* dependencies : update rust sdk to 0.2.68 by @ganfra in https://github.com/element-hq/element-x-android/pull/3988
49+
* Update plugin dependencycheck to v11.1.1 by @renovate in https://github.com/element-hq/element-x-android/pull/3994
50+
* chore(dependencies) : update rust sdk to 0.2.69 by @ganfra in https://github.com/element-hq/element-x-android/pull/3999
51+
### Others
52+
* Send button iteration by @bmarty in https://github.com/element-hq/element-x-android/pull/3901
53+
* Fix photo / video name by @bmarty in https://github.com/element-hq/element-x-android/pull/3903
54+
* Render edited caption. by @bmarty in https://github.com/element-hq/element-x-android/pull/3904
55+
* Rely on the SDK to decide if a caption is editable or not by @bmarty in https://github.com/element-hq/element-x-android/pull/3917
56+
* Remove AttachmentsState and use the MessagesNavigator by @bmarty in https://github.com/element-hq/element-x-android/pull/3918
57+
* Fix element call crash when resuming from notification by @bmarty in https://github.com/element-hq/element-x-android/pull/3926
58+
* Ensure that the SDK is syncing during an incoming call so that the app can cancel the notification by @bmarty in https://github.com/element-hq/element-x-android/pull/3931
59+
* Add feature flag to temporary disable sending caption by default in production by @bmarty in https://github.com/element-hq/element-x-android/pull/3953
60+
* Add timeline action item to copy caption by @bmarty in https://github.com/element-hq/element-x-android/pull/3963
61+
* Fix wrong name of classes and method by @bmarty in https://github.com/element-hq/element-x-android/pull/3971
62+
* Rework on media module by @bmarty in https://github.com/element-hq/element-x-android/pull/3967
63+
* Add warning when adding a caption. by @bmarty in https://github.com/element-hq/element-x-android/pull/3977
64+
* Do not auto-play videos. by @bmarty in https://github.com/element-hq/element-x-android/pull/3978
65+
* MediaViewer: iterate on design by @bmarty in https://github.com/element-hq/element-x-android/pull/3979
66+
* feat(crypto): Support new expected UTD causes UX + Analytics by @BillCarsonFr in https://github.com/element-hq/element-x-android/pull/3980
67+
* increase ringing timeout from 15 seconds to 90 seconds by @fkwp in https://github.com/element-hq/element-x-android/pull/3991
68+
* MediaViewer: Align title to left and move action bottom to top bar. by @bmarty in https://github.com/element-hq/element-x-android/pull/4003
69+
170
Changes in Element X v0.7.4 (2024-11-20)
271
========================================
372

README.md

+6-3
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ Element X Android supports many languages. You can help us to translate the app
5959

6060
Note that for now, we keep control on the French and German translations.
6161

62-
Translations can be checked screen per screen using our tool Element X Android Gallery, available at https://element-hq.github.io/element-x-android/. Note that this page is updated every Tuesday.
62+
Translations can be checked screen per screen using our tool Element X Android Gallery, available at https://element-hq.github.io/element-x-android/. Note that this page is updated every Tuesday.
6363

6464
More instructions about translating the application can be found at [CONTRIBUTING.md](CONTRIBUTING.md#strings).
6565

@@ -83,8 +83,11 @@ You can also come chat with the community in the Matrix [room](https://matrix.to
8383

8484
## Build instructions
8585

86-
Just clone the project and open it in Android Studio.
87-
Makes sure to select the `app` configuration when building (as we also have sample apps in the project).
86+
Just clone the project and open it in Android Studio. Make sure to select the
87+
`app` configuration when building (as we also have sample apps in the project).
88+
89+
To build against a local copy of the Rust SDK, see the [Developer
90+
onboarding](docs/_developer_onboarding.md#build-the-sdk-locally) instructions.
8891

8992
## Support
9093

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

+5
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ import kotlinx.coroutines.flow.combine
8888
import kotlinx.coroutines.flow.debounce
8989
import kotlinx.coroutines.flow.launchIn
9090
import kotlinx.coroutines.flow.onEach
91+
import kotlinx.coroutines.flow.onStart
9192
import kotlinx.coroutines.launch
9293
import kotlinx.parcelize.Parcelize
9394
import timber.log.Timber
@@ -196,6 +197,10 @@ class LoggedInFlowNode @AssistedInject constructor(
196197
) { syncState, networkStatus ->
197198
Pair(syncState, networkStatus)
198199
}
200+
.onStart {
201+
// Temporary fix to ensure that the sync is started even if the networkStatus is offline.
202+
syncService.startSync()
203+
}
199204
.collect { (syncState, networkStatus) ->
200205
Timber.d("Sync state: $syncState, network status: $networkStatus")
201206
if (syncState != SyncState.Running && networkStatus == NetworkStatus.Online) {

build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ allprojects {
4949
config.from(files("$rootDir/tools/detekt/detekt.yml"))
5050
}
5151
dependencies {
52-
detektPlugins("io.nlopez.compose.rules:detekt:0.4.19")
52+
detektPlugins("io.nlopez.compose.rules:detekt:0.4.22")
5353
}
5454

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

docs/_developer_onboarding.md

+39-37
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ From these kotlin bindings we can generate native libs (.so files) and kotlin cl
102102

103103
#### Matrix Rust Component Kotlin
104104

105-
To use these bindings in an android project, we need to wrap this up into an android library (as the form of an .aar file).
106-
This is the goal of https://github.com/matrix-org/matrix-rust-components-kotlin.
105+
To use these bindings in an android project, we need to wrap this up into an android library (as the form of an .aar file).
106+
This is the goal of https://github.com/matrix-org/matrix-rust-components-kotlin.
107107
This repository is used for distributing kotlin releases of the Matrix Rust SDK.
108108
It'll provide the corresponding aar and also publish them on maven.
109109

@@ -117,41 +117,43 @@ You can also have access to the aars through the [release](https://github.com/ma
117117

118118
#### Build the SDK locally
119119

120-
Easiest way: run the script [../tools/sdk/build_rust_sdk.sh](../tools/sdk/build_rust_sdk.sh) and just answer the questions.
121-
122-
Legacy way:
123-
124-
If you need to locally build the sdk-android you can use
125-
the [build](https://github.com/matrix-org/matrix-rust-components-kotlin/blob/main/scripts/build.sh) script.
126-
127-
For this please check the [prerequisites](https://github.com/matrix-org/matrix-rust-components-kotlin/blob/main/README.md#prerequisites) from the repo.
128-
129-
Checkout both [matrix-rust-sdk](https://github.com/matrix-org/matrix-rust-sdk) and [matrix-rust-components-kotlin](https://github.com/matrix-org/matrix-rust-components-kotlin) repositories
130-
```shell
131-
git clone [email protected]:matrix-org/matrix-rust-sdk.git
132-
git clone [email protected]:matrix-org/matrix-rust-components-kotlin.git
133-
```
134-
135-
Then you can launch the build script from the matrix-rust-components-kotlin repository with the following params:
136-
137-
- `-p` Local path to the rust-sdk repository
138-
- `-o` Optional output path with the expected name of the aar file. By default the aar will be located in the corresponding build/outputs/aar directory.
139-
- `-r` Flag to build in release mode
140-
- `-m` Option to select the gradle module to build. Default is sdk.
141-
- `-t` Option to to select an android target to build against. Default will build for all targets.
142-
143-
So for example to build the sdk against aarch64-linux-android target and copy the generated aar to Element X project:
144-
145-
```shell
146-
./scripts/build.sh -p [YOUR MATRIX RUST SDK PATH] -t aarch64-linux-android -o [YOUR element-x-android PATH]/libraries/rustsdk/matrix-rust-sdk.aar
147-
```
120+
Prerequisites:
121+
* Install the Android NDK (Native Development Kit). To do this from within
122+
Android Studio:
123+
1. **Tools > SDK Manager**
124+
2. Click the **SDK Tools** tab.
125+
3. Select the **NDK (Side by side)** checkbox
126+
4. Click **OK**.
127+
5. Click **OK**.
128+
6. When the installation is complete, click **Finish**.
129+
* Install `cargo-ndk`:
130+
```
131+
cargo install cargo-ndk
132+
```
133+
* Install the Android Rust toolchain for your machine's hardware:
134+
```
135+
rustup target add aarch64-linux-android x86_64-linux-android
136+
```
137+
* Depending on the location of the Android SDK, you may need to set
138+
`ANDROID_HOME`:
139+
```
140+
export ANDROID_HOME=$HOME/android/sdk
141+
```
142+
143+
You can then build the Rust SDK by running the script
144+
[`tools/sdk/build_rust_sdk.sh`](../tools/sdk/build_rust_sdk.sh) and just answering
145+
the questions.
146+
147+
This will prompt you for the path to the Rust SDK, then build it and
148+
`matrix-rust-components-kotlin`, eventually producing an aar file at
149+
`./libraries/rustsdk/matrix-rust-sdk.aar`, which will be picked up
150+
automatically by the Element X Android build.
148151

149152
Troubleshooting:
150153
- You may need to set `ANDROID_NDK_HOME` e.g `export ANDROID_NDK_HOME=~/Library/Android/sdk/ndk`.
151154
- If you get the error `thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', .cargo/registry/src/index.crates.io-6f17d22bba15001f/cargo-ndk-2.11.0/src/cli.rs:345:18` try updating your Cargo NDK version. In this case, 2.11.0 is too old so `cargo install cargo-ndk` to install a newer version.
152-
- If you get the error `Unsupported class file major version 64` try changing your JVM version. In this case, Java 20 is not supported in Gradle yet, so downgrade to an earlier version (Java 17 worked in this case).
153-
154-
You are good to test your local rust development now!
155+
- If you get the error `Unsupported class file major version <n>`, try changing your JVM version by setting
156+
`JAVA_HOME` and, if building via Android Studio, "File | Settings | Build, Execution, Deployment | Build Tools | Gradle | Gradle JDK".
155157

156158
### The Android project
157159

@@ -262,7 +264,7 @@ Here are the main points:
262264

263265
#### Template and naming
264266

265-
This documentation provides you with the steps to install and use the AS plugin for generating modules in your project.
267+
This documentation provides you with the steps to install and use the AS plugin for generating modules in your project.
266268
The plugin and templates will help you quickly create new features with a standardized structure.
267269

268270
A. Installation
@@ -276,7 +278,7 @@ Follow these steps to install and configure the plugin and templates:
276278
- Navigate to File/Manage IDE Settings/Import Settings
277279
- Pick the `tmp/file_templates.zip` files
278280
- Click on OK
279-
4. Configure generate-module-from-template plugin :
281+
4. Configure generate-module-from-template plugin :
280282
- Navigate to AS/Settings/Tools/Module Template Settings
281283
- Click on + / Import From File
282284
- Pick the `tools/templates/FeatureModule.json`
@@ -296,9 +298,9 @@ Example for a new feature called RoomDetails:
296298
5. The modules api/impl should be created under `features/roomdetails` directory.
297299
6. Sync project with Gradle so the modules are recognized (no need to add them to settings.gradle).
298300
7. You can now add more Presentation classes (Events, State, StateProvider, View, Presenter) in the impl module with the `Template Presentation Classes`.
299-
To use it, just right click on the package where you want to generate classes, and click on `Template Presentation Classes`.
301+
To use it, just right click on the package where you want to generate classes, and click on `Template Presentation Classes`.
300302
Fill the text field with the base name of the classes, ie `RootRoomDetails` in the `root` package.
301-
303+
302304

303305
Note that naming of files and classes is important, since those names are used to set up code coverage rules. For instance, presenters MUST have a
304306
suffix `Presenter`,states MUST have a suffix `State`, etc. Also we want to have a common naming along all the modules.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Main changes in this version: media browser and bug fixes.
2+
Full changelog: https://github.com/element-hq/element-x-android/releases

0 commit comments

Comments
 (0)