diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fb14c3cee6..cf7f262cee 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -69,7 +69,7 @@ jobs: retention-days: 5 overwrite: true if-no-files-found: error - - uses: rnkdsh/action-upload-diawi@26292a7b424bdc9f4ab4ccea6202fc513f571370 # v1.5.11 + - uses: rnkdsh/action-upload-diawi@4e1421305be7cfc510d05f47850262eeaf345108 # v1.5.12 id: diawi # Do not fail the whole build if Diawi upload fails continue-on-error: true diff --git a/.github/workflows/generate_github_pages.yml b/.github/workflows/generate_github_pages.yml index 0d03d1a928..008ac299c7 100644 --- a/.github/workflows/generate_github_pages.yml +++ b/.github/workflows/generate_github_pages.yml @@ -25,7 +25,7 @@ jobs: - name: Set up Python 3.12 uses: actions/setup-python@v6 with: - python-version: 3.13 + python-version: 3.14 - name: Run World screenshots generation script run: | ./tools/test/generateWorldScreenshots.py diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 773bc02d93..5277cbdf05 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -37,7 +37,7 @@ jobs: - name: Set up Python 3.12 uses: actions/setup-python@v6 with: - python-version: 3.13 + python-version: 3.14 - name: Search for invalid screenshot files run: ./tools/test/checkInvalidScreenshots.py @@ -58,7 +58,7 @@ jobs: - name: Set up Python 3.12 uses: actions/setup-python@v6 with: - python-version: 3.13 + python-version: 3.14 - name: Search for invalid dependencies run: ./tools/dependencies/checkDependencies.py @@ -103,6 +103,39 @@ jobs: path: | **/build/reports/**/*.* + compose: + name: Compose tests + runs-on: ubuntu-latest + # Allow all jobs on main and develop. Just one per PR. + concurrency: + group: ${{ github.ref == 'refs/heads/main' && format('check-compose-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('check-compose-develop-{0}', github.sha) || format('check-compose-{0}', github.ref) }} + cancel-in-progress: true + steps: + - uses: actions/checkout@v5 + with: + # Ensure we are building the branch and not the branch after being merged on develop + # https://github.com/actions/checkout/issues/881 + ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} + - name: Add SSH private keys for submodule repositories + uses: webfactory/ssh-agent@a6f90b1f127823b31d4d4a8d96047790581349bd # v0.9.1 + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + with: + ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} + - name: Clone submodules + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + run: git submodule update --init --recursive + - name: Use JDK 21 + uses: actions/setup-java@v5 + with: + distribution: 'temurin' # See 'Supported distributions' for available options + java-version: '21' + - name: Configure gradle + uses: gradle/actions/setup-gradle@v5 + with: + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} + - name: Run compose tests + run: ./tools/compose/check_stability.sh + lint: name: Android lint check runs-on: ubuntu-latest diff --git a/.github/workflows/sync-localazy.yml b/.github/workflows/sync-localazy.yml index 7740af4064..1f22bf2868 100644 --- a/.github/workflows/sync-localazy.yml +++ b/.github/workflows/sync-localazy.yml @@ -24,7 +24,7 @@ jobs: - name: Set up Python 3.12 uses: actions/setup-python@v6 with: - python-version: 3.13 + python-version: 3.14 - name: Setup Localazy run: | curl -sS https://dist.localazy.com/debian/pubkey.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/localazy.gpg diff --git a/.github/workflows/sync-sas-strings.yml b/.github/workflows/sync-sas-strings.yml index 84b0cb521c..a73592466e 100644 --- a/.github/workflows/sync-sas-strings.yml +++ b/.github/workflows/sync-sas-strings.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Python 3.12 uses: actions/setup-python@v6 with: - python-version: 3.13 + python-version: 3.14 - name: Install Prerequisite dependencies run: | pip install requests diff --git a/CHANGES.md b/CHANGES.md index e4d138bfd5..cbc1db0032 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,83 @@ +Changes in Element X v25.10.0 +============================= + + + +## What's Changed +### ✨ Features +* Use shared recent emoji reactions from account data by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5402 +* Follow permalinks to and from threads by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5414 +* Add support for Spaces by @bmarty in https://github.com/element-hq/element-x-android/pull/5462 +* Add Labs screen for beta testing of public features by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5465 +### 🙌 Improvements +* Update the strings for the device verification flow by @andybalaam in https://github.com/element-hq/element-x-android/pull/5419 +* Set a notification sound by @bmarty in https://github.com/element-hq/element-x-android/pull/5469 +* Improve current push provider test: give info about the distributor. by @bmarty in https://github.com/element-hq/element-x-android/pull/5471 +* Improve AnnouncementService. by @bmarty in https://github.com/element-hq/element-x-android/pull/5482 +### 🐛 Bugfixes +* Improvement and bugfix on incoming verification request screen by @bmarty in https://github.com/element-hq/element-x-android/pull/5426 +* Space : makes sure to use room heroes for avatar by @ganfra in https://github.com/element-hq/element-x-android/pull/5488 +* Filter out direct room in the leave space screen. by @bmarty in https://github.com/element-hq/element-x-android/pull/5498 +### 🗣 Translations +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/5427 +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/5460 +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/5486 +### 🧱 Build +* Remove unused dependency on `javax.inject:javax.inject` by @bmarty in https://github.com/element-hq/element-x-android/pull/5445 +* Internalize compound-android by @bmarty in https://github.com/element-hq/element-x-android/pull/5457 +### 🚧 In development 🚧 +* Sdk : use latest apis for space by @ganfra in https://github.com/element-hq/element-x-android/pull/5404 +* Multi accounts - experimental first implementation by @bmarty in https://github.com/element-hq/element-x-android/pull/5285 +* Leave space - UI by @bmarty in https://github.com/element-hq/element-x-android/pull/5354 +* Leave spave: iteration on string value. by @bmarty in https://github.com/element-hq/element-x-android/pull/5425 +* Feature : space list join action by @ganfra in https://github.com/element-hq/element-x-android/pull/5431 +* Room list space invite by @ganfra in https://github.com/element-hq/element-x-android/pull/5449 +* Leave space: use SDK API. by @bmarty in https://github.com/element-hq/element-x-android/pull/5432 +* Space annoucement by @bmarty in https://github.com/element-hq/element-x-android/pull/5451 +* feature(space) : keep space children in the presenter by @ganfra in https://github.com/element-hq/element-x-android/pull/5456 +* Spaces : some tweaks around ui by @ganfra in https://github.com/element-hq/element-x-android/pull/5468 +* Use "BETA" word from Localazy and ensure layout is correct by @bmarty in https://github.com/element-hq/element-x-android/pull/5470 +* Disable avatar cluster for now by @bmarty in https://github.com/element-hq/element-x-android/pull/5492 +### Dependency upgrades +* Update dependency com.posthog:posthog-android to v3.21.3 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5360 +* Update dependency io.element.android:element-call-embedded to v0.16.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5408 +* Update dependency net.java.dev.jna:jna to v5.18.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5398 +* Update plugin dependencycheck to v12.1.6 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5405 +* Update dependency org.matrix.rustcomponents:sdk-android to v25.9.25 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5412 +* Update dependency androidx.sqlite:sqlite-ktx to v2.6.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5409 +* Update kotlin by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5317 +* Update metro to v0.6.7 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5416 +* Update dependency app.cash.molecule:molecule-runtime to v2.2.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5413 +* Update dependency com.posthog:posthog-android to v3.22.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5415 +* Update metro to v0.6.8 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5422 +* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5438 +* fix(deps): update dependency net.java.dev.jna:jna to v5.18.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5437 +* fix(deps): update dependency io.mockk:mockk to v1.14.6 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5441 +* Update gradle/actions action to v5 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5444 +* fix(deps): update dependency io.sentry:sentry-android to v8.23.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5442 +* fix(deps): update dependency org.maplibre.gl:android-sdk to v12 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5455 +* fix(deps): update dependency com.posthog:posthog-android to v3.23.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5463 +* fix(deps): update roborazzi to v1.50.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5464 +* fix(deps): update telephoto to v0.18.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5459 +### Others +* Ensure Metro `@AssistedInject` is used. by @bmarty in https://github.com/element-hq/element-x-android/pull/5420 +* Misc : destroy SpaceRoomList by @ganfra in https://github.com/element-hq/element-x-android/pull/5436 +* Remove CurrentSessionIdHolder and inject SessionId instead. by @bmarty in https://github.com/element-hq/element-x-android/pull/5440 +* Only offer to verify if a cross-signed device is available by @uhoreg in https://github.com/element-hq/element-x-android/pull/5433 +* Replace fun by val in MatrixClient by @bmarty in https://github.com/element-hq/element-x-android/pull/5466 +* Space : makes sure to use SpaceRoom.displayName from sdk by @ganfra in https://github.com/element-hq/element-x-android/pull/5476 +* Add preview with all icons in the Showkase browser by @bmarty in https://github.com/element-hq/element-x-android/pull/5485 +* Ensure that we are using Immutable instead of Persistent by @bmarty in https://github.com/element-hq/element-x-android/pull/5490 +* Reduce number of Previews for Avatar. by @bmarty in https://github.com/element-hq/element-x-android/pull/5495 +* Fix error when attempting to verify with recovery key with missing backup key by @uhoreg in https://github.com/element-hq/element-x-android/pull/5314 +* Sync strings by @bmarty in https://github.com/element-hq/element-x-android/pull/5499 +* feature(space): make sure to handle topic properly by @ganfra in https://github.com/element-hq/element-x-android/pull/5493 + +## New Contributors +* @uhoreg made their first contribution in https://github.com/element-hq/element-x-android/pull/5433 + +**Full Changelog**: https://github.com/element-hq/element-x-android/compare/v25.09.2...v25.10.0 + Changes in Element X v25.09.2 ============================= diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9be152e9e7..2019407657 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -197,6 +197,12 @@ android { buildConfigFieldStr("FLAVOR_DESCRIPTION", "FDroid") } } + + packaging { + resources.pickFirsts += setOf( + "META-INF/versions/9/OSGI-INF/MANIFEST.MF", + ) + } } androidComponents { @@ -318,6 +324,7 @@ licensee { allowUrl("https://jsoup.org/license") allowUrl("https://asm.ow2.io/license.html") allowUrl("https://www.gnu.org/licenses/agpl-3.0.txt") + allowUrl("https://github.com/mhssn95/compose-color-picker/blob/main/LICENSE") ignoreDependencies("com.github.matrix-org", "matrix-analytics-events") // Ignore dependency that are not third-party licenses to us. ignoreDependencies(groupId = "io.element.android") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26e8c7dc23..bcfcd71b94 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,10 +34,17 @@ + android:exported="false" + tools:node="merge"> + + +